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