]> git.donarmstrong.com Git - lilypond.git/blobdiff - flower/rational.cc
release: 1.1.51
[lilypond.git] / flower / rational.cc
index bab115c9e37e33f797a146a1d341df52662bba57..15c576c686494a9beadb7fcb6689252b6f75dc97 100644 (file)
@@ -34,7 +34,7 @@ operator << (ostream &o, Rational r)
 }
 
 Rational
-Rational::truncated () const
+Rational::trunc_rat () const
 {
   return Rational(num_ - (num_ % den_), den_);
 }
@@ -53,11 +53,6 @@ Rational::Rational (int n, int d)
   normalise ();
 }
 
-Rational::Rational (Rational const &r)
-{
-  copy (r);
-}
-
 static
 int gcd (int a, int b)
 {
@@ -90,6 +85,22 @@ Rational::operator - () const
   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 ()
 {
@@ -141,6 +152,13 @@ compare (Rational const &r, Rational const &s)
   return Rational::compare (r, s );
 }
 
+Rational &
+Rational::operator %= (Rational r)
+{
+  *this = r.mod_rat (r);
+  return *this;
+}
+
 Rational &
 Rational::operator += (Rational r)
 {