X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flower%2Finclude%2Frational.hh;h=7394af6aa5c79269d9fb56562577321dc097258d;hb=59ed0cee2aae58a3f0483f21261c68aee406fa10;hp=115d5f85c7555fc34ff59d00f5ac69dab1379d92;hpb=0d1109b28ecf554b7656e0018c0c9fbeec8258a8;p=lilypond.git diff --git a/flower/include/rational.hh b/flower/include/rational.hh index 115d5f85c7..7394af6aa5 100644 --- a/flower/include/rational.hh +++ b/flower/include/rational.hh @@ -20,7 +20,18 @@ #include "arithmetic-operator.hh" #include "fproto.hh" +/** + Rational numbers. Included is support for + and - infinity. + */ class Rational { + /** + Sign of rational. + -2, .. 2 + + -2,2 is - and + infinity. + -1,1 is negative and positive. + 0 if *this is zero. + */ int sign_; unsigned int num_, den_; void normalise (); @@ -32,12 +43,17 @@ public: void invert (); int num () const { return sign_ * num_; } int den () const { return den_; } + int num_i () const { return sign_ * num_; } + int den_i () const { return den_; } Rational truncated () const; void negate (); operator bool () const; operator int () const; operator double () const; Rational operator - () const; + /** + Initialize to 0. + */ Rational (); Rational (int, int =1); Rational (double); @@ -45,9 +61,9 @@ public: Rational &operator = (Rational const &); Rational &operator *= (Rational); - Rational &operator /= (Rational); - Rational &operator += (Rational); - Rational &operator -= (Rational); + Rational &operator /= (Rational); + Rational &operator += (Rational); + Rational &operator -= (Rational); static int compare (Rational const&, Rational const&); int sign () const; String str () const;