// FIXME: Make sure that zero has the same floating point // semantics as x. inline Real operator-(Real const& x) { Real zero; return zero - x.impl(); }
inline Real operator*(Real const& a, Real const& b) { return a.impl() * b.impl(); }
inline Real operator/(Real const& a, Real const& b) { return a.impl() / b.impl(); }
inline Real operator-(Real const& a, Real const& b) { return a.impl() - b.impl(); }
// Arithmetic inline Real operator+(Real const& a, Real const& b) { return a.impl() + b.impl(); }
inline bool operator>(Real const& a, Real const& b) { return a.impl().compare(b.impl()) == llvm::APFloat::cmpGreaterThan; }
// Ordering, defined for signed floating point values by default. inline bool operator<(Real const& a, Real const& b) { return a.impl().compare(b.impl()) == llvm::APFloat::cmpLessThan; }
// Equality comparison // Returns true when the two floating point values have the same value. inline bool operator==(Real const& a, Real const& b) { return a.impl().compare(b.impl()) == llvm::APFloat::cmpEqual; }