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};