}
Rational
-Rational::truncated () const
+Rational::trunc_rat () const
{
return Rational(num_ - (num_ % den_), den_);
}
normalise ();
}
-Rational::Rational (Rational const &r)
-{
- copy (r);
-}
-
static
int gcd (int a, int b)
{
return r;
}
+Rational
+Rational::div_rat (Rational div) const
+{
+ Rational r (*this);
+ r /= div;
+ return r.trunc_rat ();
+}
+
+Rational
+Rational::mod_rat (Rational div) const
+{
+ Rational r (*this);
+ r = (r / div - r.div_rat (div)) * div;
+ return r;
+}
+
void
Rational::normalise ()
{
return Rational::compare (r, s );
}
+Rational &
+Rational::operator %= (Rational r)
+{
+ *this = r.mod_rat (r);
+ return *this;
+}
+
Rational &
Rational::operator += (Rational r)
{