added the rest of the relational operators to Approx - fixes #52
diff --git a/doctest/doctest.h b/doctest/doctest.h
index 32e753f..d747240 100644
--- a/doctest/doctest.h
+++ b/doctest/doctest.h
@@ -515,10 +515,20 @@
         return approx;
     }
 
+    // clang-format off
     friend bool operator==(double lhs, Approx const& rhs);
     friend bool operator==(Approx const& lhs, double rhs) { return operator==(rhs, lhs); }
     friend bool operator!=(double lhs, Approx const& rhs) { return !operator==(lhs, rhs); }
     friend bool operator!=(Approx const& lhs, double rhs) { return !operator==(rhs, lhs); }
+    friend bool operator<=(double lhs, Approx const& rhs) { return lhs < rhs.m_value || lhs == rhs; }
+    friend bool operator<=(Approx const& lhs, double rhs) { return lhs.m_value < rhs || lhs == rhs; }
+    friend bool operator>=(double lhs, Approx const& rhs) { return lhs > rhs.m_value || lhs == rhs; }
+    friend bool operator>=(Approx const& lhs, double rhs) { return lhs.m_value > rhs || lhs == rhs; }
+    friend bool operator< (double lhs, Approx const& rhs) { return lhs < rhs.m_value && lhs != rhs; }
+    friend bool operator< (Approx const& lhs, double rhs) { return lhs.m_value < rhs && lhs != rhs; }
+    friend bool operator> (double lhs, Approx const& rhs) { return lhs > rhs.m_value && lhs != rhs; }
+    friend bool operator> (Approx const& lhs, double rhs) { return lhs.m_value > rhs && lhs != rhs; }
+    // clang-format on
 
     Approx& epsilon(double newEpsilon) {
         m_epsilon = newEpsilon;
diff --git a/doctest/parts/doctest_fwd.h b/doctest/parts/doctest_fwd.h
index 6a47a0b..2a38ca7 100644
--- a/doctest/parts/doctest_fwd.h
+++ b/doctest/parts/doctest_fwd.h
@@ -512,10 +512,20 @@
         return approx;
     }
 
+    // clang-format off
     friend bool operator==(double lhs, Approx const& rhs);
     friend bool operator==(Approx const& lhs, double rhs) { return operator==(rhs, lhs); }
     friend bool operator!=(double lhs, Approx const& rhs) { return !operator==(lhs, rhs); }
     friend bool operator!=(Approx const& lhs, double rhs) { return !operator==(rhs, lhs); }
+    friend bool operator<=(double lhs, Approx const& rhs) { return lhs < rhs.m_value || lhs == rhs; }
+    friend bool operator<=(Approx const& lhs, double rhs) { return lhs.m_value < rhs || lhs == rhs; }
+    friend bool operator>=(double lhs, Approx const& rhs) { return lhs > rhs.m_value || lhs == rhs; }
+    friend bool operator>=(Approx const& lhs, double rhs) { return lhs.m_value > rhs || lhs == rhs; }
+    friend bool operator< (double lhs, Approx const& rhs) { return lhs < rhs.m_value && lhs != rhs; }
+    friend bool operator< (Approx const& lhs, double rhs) { return lhs.m_value < rhs && lhs != rhs; }
+    friend bool operator> (double lhs, Approx const& rhs) { return lhs > rhs.m_value && lhs != rhs; }
+    friend bool operator> (Approx const& lhs, double rhs) { return lhs.m_value > rhs && lhs != rhs; }
+    // clang-format on
 
     Approx& epsilon(double newEpsilon) {
         m_epsilon = newEpsilon;