13 #ifndef VMCMC_NUMERIC_H_ 14 #define VMCMC_NUMERIC_H_ 18 #include <type_traits> 24 template <
typename T =
double>
27 return std::numeric_limits<T>::quiet_NaN();
30 template <
typename T =
double>
33 return std::numeric_limits<T>::infinity();
37 class =
typename std::enable_if<std::is_integral<T>::value>::type>
38 inline int numberOfDigits(T number)
62 return std::abs(a - b) <= ( (std::abs(a) < std::abs(b) ? std::abs(b) : std::abs(a)) * epsilon);
66 inline bool approxLessOrEqual(T a, T b, T epsilon)
68 return a < b || approximatelyEqual(a, b, epsilon);
72 inline bool approxGreaterOrEqual(T a, T b, T epsilon)
74 return a > b || approximatelyEqual(a, b, epsilon);
87 return std::abs(a - b) <= ( (std::abs(a) > std::abs(b) ? std::abs(b) : std::abs(a)) * epsilon);
91 inline bool essentLessOrEqual(T a, T b, T epsilon)
93 return a < b || essentiallyEqual(a, b, epsilon);
97 inline bool essentGreaterOrEqual(T a, T b, T epsilon)
99 return a > b || essentiallyEqual(a, b, epsilon);
Definition: algorithm.cpp:28
bool essentEqual(T a, T b, T epsilon)
Check whether two float values differ by a given epsilon.
Definition: numeric.hpp:85
bool approxEqual(T a, T b, T epsilon)
Check whether two float values differ by a given epsilon.
Definition: numeric.hpp:60