#ifndef MYX_MATH_ALMOST_EQUAL_RELATIVE_INL_HPP_ #define MYX_MATH_ALMOST_EQUAL_RELATIVE_INL_HPP_ #pragma once #ifndef MYXLIB_HEADER_ONLY #include #endif #include namespace myx { namespace math { MYXLIB_INLINE bool almost_equal_relative( const float a, const float b, const float maxRelDiff ) { float diff = fabsf( a - b ); float aN = fabsf( a ); float bN = fabsf( b ); float largest = ( bN > aN ) ? bN : aN; if ( diff <= largest * maxRelDiff ) { return( true ); } return( false ); } MYXLIB_INLINE bool almost_equal_relative( const double a, const double b, const double maxRelDiff ) { double diff = fabs( a - b ); double aN = fabs( a ); double bN = fabs( b ); double largest = ( bN > aN ) ? bN : aN; if ( diff <= largest * maxRelDiff ) { return( true ); } return( false ); } } // namespace math } // namespace myx #endif // ifndef MYX_MATH_ALMOST_EQUAL_RELATIVE_INL_HPP_