123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- ///////////////////////////////////////////////////////////////
- // Copyright 2011 John Maddock. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt
- #include <boost/multiprecision/tommath.hpp>
- #include <iostream>
- void t1()
- {
- //[tommath_eg
- //=#include <boost/multiprecision/tommath.hpp>
- //=#include <iostream>
- //=
- //=int main()
- //={
- 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;
- }
- //= return 0;
- //=}
- //]
- }
- void t3()
- {
- //[mp_rat_eg
- //=#include <boost/multiprecision/tommath.hpp>
- //=#include <iostream>
- //=
- //=int main()
- //={
- 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
- //= return 0;
- //=}
- //]
- }
- int main()
- {
- t1();
- t3();
- return 0;
- }
|