X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flower%2Frational.cc;h=54ac55bdaf8cdc04b75a9a099e6e895afc7a237e;hb=5eb0dcad3749583e8e182feab07b07d16046cbb7;hp=b2b7c898ee5f2a4491194c05d558e2d593c3f2e0;hpb=a192db4f077c3f819eea4156eb72c3385a2ffc2a;p=lilypond.git diff --git a/flower/rational.cc b/flower/rational.cc index b2b7c898ee..54ac55bdaf 100644 --- a/flower/rational.cc +++ b/flower/rational.cc @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--2000 Han-Wen Nienhuys + (c) 1997--2004 Han-Wen Nienhuys */ #include #include @@ -17,12 +17,15 @@ Rational::operator double () const return (double)sign_ * num_ / den_; } +#ifdef STREAM_SUPPORT ostream & operator << (ostream &o, Rational r) { - o << r.str (); + o << r.string (); return o; } +#endif + Rational Rational::trunc_rat () const @@ -63,11 +66,13 @@ int gcd (int a, int b) return b; } +#if 0 static int lcm (int a, int b) { return abs (a*b / gcd (a,b)); } +#endif void Rational::set_infinite (int s) @@ -138,7 +143,7 @@ Rational::compare (Rational const &r, Rational const &s) return -1; else if (r.sign_ > s.sign_) return 1; - else if (r.infty_b ()) + else if (r.is_infinity ()) return 0; else if (r.sign_ == 0) return 0; @@ -164,9 +169,9 @@ Rational::operator %= (Rational r) Rational & Rational::operator += (Rational r) { - if (infty_b ()) + if (is_infinity ()) ; - else if (r.infty_b ()) + else if (r.is_infinity ()) { *this = r; } @@ -237,7 +242,7 @@ Rational & Rational::operator *= (Rational r) { sign_ *= ::sign (r.sign_); - if (r.infty_b ()) + if (r.is_infinity ()) { sign_ = sign () * 2; goto exit_func; @@ -271,27 +276,18 @@ Rational::operator -= (Rational r) return (*this += r); } -/* - be paranoid about overiding libg++ stuff - */ -Rational & -Rational::operator = (Rational const &r) -{ - copy (r); - return *this; -} - String -Rational::str () const +Rational::to_string () const { - if (infty_b ()) + if (is_infinity ()) { String s (sign_ > 0 ? "" : "-" ); return String (s + "infinity"); } - String s = to_str (num ()); + + String s = ::to_string (num ()); if (den () != 1 && num ()) - s += "/" + to_str (den ()); + s += "/" + ::to_string (den ()); return s; } @@ -306,3 +302,9 @@ sign (Rational r) { return r.sign (); } + +bool +Rational::is_infinity () const +{ + return sign_ == 2 || sign_ == -2; +}