// // double_equals.h // limit // // Created by Sam Jaffe on 12/9/23. // #pragma once #include namespace math { inline bool approx_equal(double lhs, double rhs, double eps) { double const a = std::abs(lhs); double const b = std::abs(rhs); return std::abs(lhs - rhs) <= (std::max(a, b) * eps); } inline bool essentially_equal(double lhs, double rhs, double eps) { double const a = std::abs(lhs); double const b = std::abs(rhs); return std::abs(lhs - rhs) <= (std::min(a, b) * eps); } inline bool definitely_greater(double lhs, double rhs, double eps) { double const a = std::abs(lhs); double const b = std::abs(rhs); return (lhs - rhs) > (std::max(a, b) * eps); } inline bool definitely_less(double lhs, double rhs, double eps) { double const a = std::abs(lhs); double const b = std::abs(rhs); return (rhs - lhs) > (std::max(a, b) * eps); } }