Safe numerical comparison

The library provide every function needed for numerical comparison. They are available in the following file.

(safe) floating point comparator

namespace safecomp

Contains a complete list of safe numercial comparison, eg. :

ASSERT_TRUE( safecomp::eq(1e-6, 0.) );
ASSERT_FALSE( safecomp::gt(1e-6, 0.) );

Functions

template<typename T>
inline bool lt(T lhs_p, T rhs_p)
Returns:

lhs_p is < rhs_p - \(\epsilon\)

template<typename T>
inline bool gt(T lhs_p, T rhs_p)
Returns:

lhs_p is > rhs_p + \(\epsilon\)

template<typename T>
inline bool eq(T lhs_p, T rhs_p)
Returns:

|lhs_p - rhs_p| \(\leq \epsilon\)

template<typename T>
inline bool le(T lhs_p, T rhs_p)
Returns:

lhs_p + rhs_p \(\leq \epsilon\)

template<typename T>
inline bool ge(T lhs_p, T rhs_p)
Returns:

lhs_p - rhs_p \(\geq - \epsilon\)

template<typename T>
inline bool neq(T lhs_p, T rhs_p)
Returns:

lhs_p - rhs_p > \( \epsilon\)

template<typename T>
inline T round(T val_p)
Returns:

the closest integer value of p

template<typename T>
inline bool lt(T lhs_p, T rhs_p, T epsilon_p = 1e-6)
Returns:

lhs_p is < rhs_p - \(\epsilon\)

template<typename T>
inline bool gt(T lhs_p, T rhs_p, T epsilon_p = 1e-6)
Returns:

lhs_p is > rhs_p + \(\epsilon\)

template<typename T>
inline bool eq(T lhs_p, T rhs_p, T epsilon_p = 1e-6)
Returns:

|lhs_p - rhs_p| \(\leq \epsilon\)

template<typename T>
inline bool le(T lhs_p, T rhs_p, T epsilon_p = 1e-6)
Returns:

lhs_p + rhs_p \(\leq \epsilon\)

template<typename T>
inline bool ge(T lhs_p, T rhs_p, T epsilon_p = 1e-6)
Returns:

lhs_p - rhs_p \(\geq - \epsilon\)

template<typename T>
inline bool neq(T lhs_p, T rhs_p, T epsilon_p = 1e-6)
Returns:

lhs_p - rhs_p > \( \epsilon\)

template<typename T>
inline bool isnull(T val_p, T epsilon_p = 1e-6)
Returns:

lhs_p \(\in [-\epsilon, \epsilon ]\)

template<typename T>
inline bool isneg(T val_p, T epsilon_p = 1e-6)
Returns:

lhs_p < \( -\epsilon\)

template<typename T>
inline bool ispos(T val_p, T epsilon_p = 1e-6)
Returns:

lhs_p > \( \epsilon\)

template<typename T>
inline bool isint(T val_p, T epsilon_p = 1e-6)
Returns:

is the difference between lhs_p and the closest integer \(\leq \epsilon\)

template<typename T>
inline bool isnan(T val_p)
Returns:

true if val_p is not a number

template<typename T>
inline int isinf(T val_p)
Returns:

true if val_p represents infinity