diff --git a/src/rational.h b/src/rational.h index c9263e263b27bc0885ef486332017a2b884bed32..bab02e12130ae0e51730b2c2387a30c5efa3f55a 100644 --- a/src/rational.h +++ b/src/rational.h @@ -125,8 +125,8 @@ public: 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 den_ < 0 ? (num_ > i * den_) : (num_ < i * den_); } + bool operator> (I i) const { return den_ < 0 ? (num_ < i * den_) : (num_ > i * den_); } bool operator== (I i) const { return num_ == i * den_; } bool operator!= (I i) const { return num_ != i * den_; } private: