myxlib/src/myx/math/almost_equal_relative.hpp

32 lines
1.2 KiB
C++

#ifndef MYX_MATH_ALMOST_EQUAL_RELATIVE_HPP_
#define MYX_MATH_ALMOST_EQUAL_RELATIVE_HPP_
#include <cfloat>
// https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
namespace myx {
namespace math {
/**
* @brief Проверка на равенство двух аргументов типа float.
* Параметр maxRelDiff определяет максимальную относительную допустимую разницу,
* при которой аргументы считаются равными.
*/
bool almost_equal_relative( float a, float b,
const float maxRelDiff = FLT_EPSILON );
/**
* @brief Проверка на равенство двух аргументов типа double.
* Параметр maxRelDiff определяет максимальную относительную допустимую разницу,
* при которой аргументы считаются равными.
*/
bool almost_equal_relative( double a, double b,
const double maxRelDiff = DBL_EPSILON );
} // namespace math
} // namespace myx
#endif // MYX_MATH_ALMOST_EQUAL_RELATIVE_HPP_