Files
multiprecision/example/tommath_snips.cpp
John Maddock 8433c69175 Disable expression templates for fixed precision types.
Restrict integer functions to integer types.
Improve Miller Rabin performance by filtering out small primes etc.
Improve Miller Rabin tests.
Change mp_int to tom_int to avoid conflict with global ::mp_Int type.

[SVN r77471]
2012-03-22 10:29:30 +00:00

74 lines
1.6 KiB
C++

///////////////////////////////////////////////////////////////
// Copyright 2011 John Maddock. Distributed under the Boost
// Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
#include <boost/multiprecision/tommath.hpp>
#include <iostream>
void t1()
{
//[tommath_eg
//=#include <boost/multiprecision/tommath.hpp>
boost::multiprecision::tom_int v = 1;
// Do some arithmetic:
for(unsigned i = 1; i <= 1000; ++i)
v *= i;
std::cout << v << std::endl; // prints 1000!
std::cout << std::hex << v << std::endl; // prints 1000! in hex format
try{
std::cout << std::hex << -v << std::endl; // Ooops! can't print a negative value in hex format!
}
catch(const std::runtime_error& e)
{
std::cout << e.what() << std::endl;
}
try{
// v is not a 2's complement type, bitwise operations are only supported
// on positive values:
v = -v & 2;
}
catch(const std::runtime_error& e)
{
std::cout << e.what() << std::endl;
}
//]
}
void t3()
{
//[mp_rat_eg
//=#include <boost/multiprecision/tommath.hpp>
using namespace boost::multiprecision;
tom_rational v = 1;
// Do some arithmetic:
for(unsigned i = 1; i <= 1000; ++i)
v *= i;
v /= 10;
std::cout << v << std::endl; // prints 1000! / 10
std::cout << numerator(v) << std::endl;
std::cout << denominator(v) << std::endl;
tom_rational w(2, 3); // Component wise constructor
std::cout << w << std::endl; // prints 2/3
//]
}
int main()
{
t1();
return 0;
}