diff --git a/src/rational.h b/src/rational.h index 364c75f9f02b923b6413c8ca4fe839d31a8168a0..c9263e263b27bc0885ef486332017a2b884bed32 100644 --- a/src/rational.h +++ b/src/rational.h @@ -64,16 +64,16 @@ public: // operators are available - see operators.hpp // Arithmetic operators - rational operator+ (const rational& r) { + rational operator+ (const rational& r) const { return {num_*r.den_ + r.num_*den_, den_*r.den_}; } - rational operator- (const rational& r) { + rational operator- (const rational& r) const { return {num_*r.den_ - r.num_*den_, den_*r.den_}; } - rational operator* (const rational& r) { + rational operator* (const rational& r) const { return {num_*r.num_, den_*r.den_}; } - rational operator/ (const rational& r) { + rational operator/ (const rational& r) const { return {num_*r.den_, den_*r.num_}; } @@ -117,12 +117,18 @@ public: bool inv = (den_ > 0) != (r.den_ > 0); return inv != (num_ * r.den_ < den_ * r.num_); } + bool operator> (const rational& r) const { + bool inv = (den_ > 0) != (r.den_ > 0); + return inv != (num_ * r.den_ > den_ * r.num_); + } bool operator== (const rational& r) const { return num_ * r.den_ == den_ * r.num_; } + bool operator!= (const rational& r) const { return num_ * r.den_ != den_ * r.num_; } // Comparison with integers bool operator< (I i) const { return num_ < i * den_; } bool operator> (I i) const { return num_ > i * den_; } bool operator== (I i) const { return num_ == i * den_; } + bool operator!= (I i) const { return num_ != i * den_; } private: I num_ {0}; I den_ {1};