diff options
Diffstat (limited to 'include/rtl')
-rw-r--r-- | include/rtl/math.h | 8 | ||||
-rw-r--r-- | include/rtl/math.hxx | 14 |
2 files changed, 11 insertions, 11 deletions
diff --git a/include/rtl/math.h b/include/rtl/math.h index 41047e139d01..1217e65adb20 100644 --- a/include/rtl/math.h +++ b/include/rtl/math.h @@ -422,6 +422,14 @@ SAL_DLLPUBLIC double SAL_CALL rtl_math_pow10Exp(double fValue, int nExp) SAL_THR */ SAL_DLLPUBLIC double SAL_CALL rtl_math_approxValue(double fValue) SAL_THROW_EXTERN_C(); +/** Test equality of two values with an accuracy of the magnitude of the + given values scaled by 2^-48 (4 bits roundoff stripped). + + @attention + approxEqual( value!=0.0, 0.0 ) _never_ yields true. + */ +SAL_DLLPUBLIC bool SAL_CALL rtl_math_approxEqual(double a, double b) SAL_THROW_EXTERN_C(); + /** Returns more accurate e^x-1 for x near 0 than calculating directly. expm1 is part of the C99 standard, but not provided by some compilers. diff --git a/include/rtl/math.hxx b/include/rtl/math.hxx index 642763dfc2d7..fed674fdd210 100644 --- a/include/rtl/math.hxx +++ b/include/rtl/math.hxx @@ -239,20 +239,11 @@ inline double acosh(double fValue) return rtl_math_acosh(fValue); } - -/** Test equality of two values with an accuracy of the magnitude of the - given values scaled by 2^-48 (4 bits roundoff stripped). - - @attention - approxEqual( value!=0.0, 0.0 ) _never_ yields true. +/** A wrapper around rtl_math_approxEqual. */ inline bool approxEqual(double a, double b) { - if ( a == b ) - return true; - double x = a - b; - return (x < 0.0 ? -x : x) - < ((a < 0.0 ? -a : a) * (1.0 / (16777216.0 * 16777216.0))); + return rtl_math_approxEqual( a, b ); } /** Test equality of two values with an accuracy defined by nPrec @@ -268,6 +259,7 @@ inline bool approxEqual(double a, double b, sal_Int16 nPrec) return (x < 0.0 ? -x : x) < ((a < 0.0 ? -a : a) * (1.0 / (pow(static_cast<double>(2.0), nPrec)))); } + /** Add two values. If signs differ and the absolute values are equal according to approxEqual() |