sal/rtl/math.cxx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
New commits: commit b254ecc2bbc716343fccf303f58dfb034b487bca Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Wed Nov 17 16:25:55 2021 +0200 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Wed Nov 17 19:28:05 2021 +0100 Use C++17 hex-exponent floating point literals ... instead of some calculated/hardcoded decimal literals. The new syntax represents the power of 2 exponent directly. Change-Id: I826bda6e06ec77f0706bb48abe2934f7289fddc7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125359 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/sal/rtl/math.cxx b/sal/rtl/math.cxx index 6acf3a943fb2..bec83c380b32 100644 --- a/sal/rtl/math.cxx +++ b/sal/rtl/math.cxx @@ -1130,7 +1130,7 @@ double SAL_CALL rtl_math_round(double fValue, int nDecPlaces, // make sense, do not even try to multiply/divide and introduce inaccuracy. // For same reasons, do not attempt to round integers to decimals. if (nDecPlaces >= 0 - && (fValue >= (static_cast<sal_Int64>(1) << 52) + && (fValue >= 0x1p52 || isRepresentableInteger(fValue))) return fOrigValue; @@ -1181,7 +1181,7 @@ double SAL_CALL rtl_math_round(double fValue, int nDecPlaces, // Round only if not already in distance precision gaps of integers, where // for [2^52,2^53) adding 0.5 would even yield the next representable // integer. - if (fValue < (static_cast<sal_Int64>(1) << 52)) + if (fValue < 0x1p52) { switch ( eMode ) { @@ -1276,7 +1276,7 @@ double SAL_CALL rtl_math_pow10Exp(double fValue, int nExp) SAL_THROW_EXTERN_C() double SAL_CALL rtl_math_approxValue( double fValue ) SAL_THROW_EXTERN_C() { - const double fBigInt = 2199023255552.0; // 2^41 -> only 11 bits left for fractional part, fine as decimal + const double fBigInt = 0x1p41; // 2^41 -> only 11 bits left for fractional part, fine as decimal if (fValue == 0.0 || fValue == HUGE_VAL || !std::isfinite( fValue) || fValue > fBigInt) { // We don't handle these conditions. Bail out. @@ -1325,8 +1325,8 @@ double SAL_CALL rtl_math_approxValue( double fValue ) SAL_THROW_EXTERN_C() bool SAL_CALL rtl_math_approxEqual(double a, double b) SAL_THROW_EXTERN_C() { - static const double e48 = 1.0 / (16777216.0 * 16777216.0); - static const double e44 = e48 * 16.0; + static const double e48 = 0x1p-48; + static const double e44 = 0x1p-44; if (a == b) return true;