Imported Upstream version 1.72.0
[platform/upstream/boost.git] / boost / geometry / policies / robustness / segment_ratio.hpp
index 9b313fd..59ac79e 100644 (file)
@@ -53,8 +53,10 @@ struct less<Type, false>
     {
         BOOST_GEOMETRY_ASSERT(lhs.denominator() != 0);
         BOOST_GEOMETRY_ASSERT(rhs.denominator() != 0);
-        return lhs.numerator() * rhs.denominator()
-             < rhs.numerator() * lhs.denominator();
+        Type const a = lhs.numerator() / lhs.denominator();
+        Type const b = rhs.numerator() / rhs.denominator();
+        return ! geometry::math::equals(a, b)
+            && a < b;
     }
 };
 
@@ -84,11 +86,9 @@ struct equal<Type, false>
     {
         BOOST_GEOMETRY_ASSERT(lhs.denominator() != 0);
         BOOST_GEOMETRY_ASSERT(rhs.denominator() != 0);
-        return geometry::math::equals
-            (
-                lhs.numerator() * rhs.denominator(),
-                rhs.numerator() * lhs.denominator()
-            );
+        Type const a = lhs.numerator() / lhs.denominator();
+        Type const b = rhs.numerator() / rhs.denominator();
+        return geometry::math::equals(a, b);
     }
 };