/* * Copyright (c) 2012 Yoann Blein * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #pragma once #include #include namespace Swift { bool approximatelyEqual(float a, float b, float epsilon = std::numeric_limits::epsilon()) { return std::fabs(a - b) <= ( (std::fabs(a) < std::fabs(b) ? std::fabs(b) : std::fabs(a)) * epsilon); } bool essentiallyEqual(float a, float b, float epsilon = std::numeric_limits::epsilon()) { return std::fabs(a - b) <= ( (std::fabs(a) > std::fabs(b) ? std::fabs(b) : std::fabs(a)) * epsilon); } bool definitelyGreaterThan(float a, float b, float epsilon = std::numeric_limits::epsilon()) { return (a - b) > ( (std::fabs(a) < std::fabs(b) ? std::fabs(b) : std::fabs(a)) * epsilon); } bool definitelyLessThan(float a, float b, float epsilon = std::numeric_limits::epsilon()) { return (b - a) > ( (std::fabs(a) < std::fabs(b) ? std::fabs(b) : std::fabs(a)) * epsilon); } }