9 template<
typename FloatingType>
10 inline void makeNumDen( FloatingType d,
long &num_,
long &den_)
16 long den=0L, num=1L, prev_den=1L, prev_num=0L;
18 while (d*num < 1e9 && d*den < 1e9) {
21 long temp = num; num = a*num + prev_num; prev_num = temp;
22 temp = den; den = a*den + prev_den; prev_den = temp;
26 num_ = num; den_ = den;
27 if (sign) num_ = -num_;
57 double n = double(a) * double(
num_),
58 d = double(b) * double(
den_);
73 double n = double(r) * double(
num_);
92 double n = double(b) * double(
num_),
93 d = double(a) * double(
den_);
106 assert(
num_!=0 || r != 0);
110 double d = double(r) * double(
den_);
long num_
Numerator portion.
static long gcd(long l1, long l2)
Calculate greatest common divisor of two integers.
vnl_rational & operator *=(vnl_rational const &r)
Multiply/assign: replace lhs by lhs * rhs.
Templated zero/one/precision.
vnl_rational & operator/=(vnl_rational const &r)
Divide/assign: replace lhs by lhs / rhs.
void makeNumDen(FloatingType d, long &num_, long &den_)
long numerator() const
Return the numerator of the (simplified) rational number representation.
long den_
Denominator portion.
long denominator() const
Return the denominator of the (simplified) rational number representation.
void normalize()
Private function to normalize numerator/denominator of rational number.
High-precision rational numbers.
vnl_rational()
Creates a rational with given numerator and denominator.
High-precision rational numbers.