![]() |
Home | Libraries | People | FAQ | More |
boost::units::static_rational
// In header: <boost/units/static_rational.hpp> template< N, D = > class static_rational { public: // types typedef ; typedef static_rational< ; // static_rational<N,D> reduced by GCD // construct/copy/destruct (); // public static functions BOOST_CONSTEXPR (); BOOST_CONSTEXPR (); // public data members BOOST_STATIC_CONSTEXPR Numerator; BOOST_STATIC_CONSTEXPR Denominator; };
This is an implementation of a compile time rational number, where static_rational<N,D>
represents a rational number with numerator N
and denominator D
. Because of the potential for ambiguity arising from multiple equivalent values of static_rational
(e.g. static_rational<6,2>==static_rational<3>
), static rationals should always be accessed through static_rational<N,D>::type
. Template specialization prevents instantiation of zero denominators (i.e. static_rational<N,0>
). The following compile-time arithmetic operators are provided for static_rational variables only (no operators are defined between long and static_rational):
mpl::negate
mpl::plus
mpl::minus
mpl::times
mpl::divides
Neither static_power
nor static_root
are defined for static_rational
. This is because template types may not be floating point values, while powers and roots of rational numbers can produce floating point values.