ratio_test.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. // ratio_test.cpp ----------------------------------------------------------//
  2. // Copyright 2008 Howard Hinnant
  3. // Copyright 2008 Beman Dawes
  4. // Distributed under the Boost Software License, Version 1.0.
  5. // See http://www.boost.org/LICENSE_1_0.txt
  6. #include <boost/ratio/ratio.hpp>
  7. #include <iostream>
  8. typedef boost::ratio<5, 3> five_thirds; // five_thirds::num == 5, five_thirds::den == 3
  9. typedef boost::ratio<25, 15> also_five_thirds; // also_five_thirds::num == 5, also_five_thirds::den == 3
  10. typedef boost::ratio_divide<five_thirds, also_five_thirds>::type one; // one::num == 1, one::den == 1
  11. typedef boost::ratio_multiply<boost::ratio<5>, boost::giga>::type _5giga; // _5giga::num == 5000000000, _5giga::den == 1
  12. typedef boost::ratio_multiply<boost::ratio<5>, boost::nano>::type _5nano; // _5nano::num == 1, _5nano::den == 200000000
  13. // Test the case described in library working group issue 948.
  14. typedef boost::ratio<BOOST_RATIO_INTMAX_T_MAX, BOOST_RATIO_INTMAX_T_MAX-16> R1;
  15. typedef boost::ratio<8, 7> R2;
  16. typedef boost::ratio_multiply<R1, R2>::type RT;
  17. int main()
  18. {
  19. typedef boost::ratio<8, BOOST_RATIO_INTMAX_C(0x7FFFFFFFD)> R1;
  20. typedef boost::ratio<3, BOOST_RATIO_INTMAX_C(0x7FFFFFFFD)> R2;
  21. typedef boost::ratio_subtract<R1, R2>::type RS;
  22. std::cout << RS::num << '/' << RS::den << '\n';
  23. return 0;
  24. }