40 lines
1.3 KiB
C++
40 lines
1.3 KiB
C++
#ifndef MYX_MATH_ALMOST_EQUAL_RELATIVE_HPP_
|
|
#define MYX_MATH_ALMOST_EQUAL_RELATIVE_HPP_
|
|
|
|
#pragma once
|
|
|
|
#include <myx/base/config.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,
|
|
float maxRelDiff = FLT_EPSILON );
|
|
/**
|
|
* @brief Проверка на равенство двух аргументов типа double.
|
|
* Параметр maxRelDiff определяет максимальную относительную допустимую разницу,
|
|
* при которой аргументы считаются равными.
|
|
*/
|
|
bool almost_equal_relative( double a, double b,
|
|
double maxRelDiff = DBL_EPSILON );
|
|
|
|
} // namespace math
|
|
|
|
} // namespace myx
|
|
|
|
#ifdef MYXLIB_HEADER_ONLY
|
|
#include "almost_equal_relative-inl.hpp"
|
|
#endif
|
|
|
|
#endif // MYX_MATH_ALMOST_EQUAL_RELATIVE_HPP_
|