605a606,633 > > // Specialise lcm for rational > // This will return the least common *rational* multiple > template > inline rational rational_lcm(const rational& a, const rational& b) > { > return rational( > a.numerator()*b.numerator()*math::lcm(a.denominator(),b.denominator()) > , a.denominator()*b.denominator() > ); > } > > // Specialise gcd for rational > // This will return the greatest common *rational* divisor > template > inline rational rational_gcd(const rational& a, const rational& b) > { > IntType denominator_lcm(math::lcm(a.denominator(),b.denominator())); > return rational( > math::gcd( > a.numerator()*denominator_lcm/a.denominator() > , b.numerator()*denominator_lcm/b.denominator() > ) > , denominator_lcm > ); > } > >