[BZ #22243] fix log2(0) and log(10) in downward rounding
authorSzabolcs Nagy <szabolcs.nagy@arm.com>
Tue, 3 Oct 2017 16:13:18 +0000 (17:13 +0100)
committerSzabolcs Nagy <szabolcs.nagy@arm.com>
Wed, 4 Oct 2017 09:13:56 +0000 (10:13 +0100)
On 64bit targets if the SVID compat wrapper is suppressed (e.g. static linking)
then log2(0) and log10(0) returned inf instead of -inf.

[BZ #22243]
* sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c (__ieee754_log10): Use fabs.
* sysdeps/ieee754/dbl-64/wordsize-64/e_log2.c (__ieee754_log2): Likewise.

ChangeLog
sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c
sysdeps/ieee754/dbl-64/wordsize-64/e_log2.c

index a8d731c..6161509 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2017-10-04  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+       [BZ #22243]
+       * sysdeps/ieee754/dbl-64/wordsize-64/e_log10.c (__ieee754_log10): Use fabs.
+       * sysdeps/ieee754/dbl-64/wordsize-64/e_log2.c (__ieee754_log2): Likewise.
+
 2017-10-03  H.J. Lu  <hongjiu.lu@intel.com>
 
        * sysdeps/i386/start.S: Replace "leal main@GOT(%ebx), %eax" with
index 4f5a816..cd55671 100644 (file)
@@ -65,7 +65,7 @@ __ieee754_log10 (double x)
   if (hx < INT64_C(0x0010000000000000))
     {                          /* x < 2**-1022  */
       if (__glibc_unlikely ((hx & UINT64_C(0x7fffffffffffffff)) == 0))
-       return -two54 / (x - x);        /* log(+-0)=-inf */
+       return -two54 / fabs (x);       /* log(+-0)=-inf */
       if (__glibc_unlikely (hx < 0))
        return (x - x) / (x - x);       /* log(-#) = NaN */
       k -= 54;
index 5ccb78c..f08d5b3 100644 (file)
@@ -81,7 +81,7 @@ __ieee754_log2 (double x)
   if (hx < INT64_C(0x0010000000000000))
     {                          /* x < 2**-1022  */
       if (__glibc_unlikely ((hx & UINT64_C(0x7fffffffffffffff)) == 0))
-       return -two54 / (x - x);        /* log(+-0)=-inf */
+       return -two54 / fabs (x);       /* log(+-0)=-inf */
       if (__glibc_unlikely (hx < 0))
        return (x - x) / (x - x);       /* log(-#) = NaN */
       k -= 54;