about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/i386/fpu/libm-test-ulps3
-rw-r--r--sysdeps/ieee754/ldbl-128/e_logl.c5
-rw-r--r--sysdeps/x86_64/fpu/libm-test-ulps3
3 files changed, 8 insertions, 3 deletions
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index ce4e631bbe..5ed3feefc9 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
@@ -6684,6 +6684,9 @@ ldouble: 1
 Test "log10 (0x2.b7e151628aed2p+0)":
 ildouble: 1
 ldouble: 1
+Test "log10 (0x4p-128)":
+ildouble: 1
+ldouble: 1
 Test "log10 (0xcp-4)":
 ildouble: 1
 ldouble: 1
diff --git a/sysdeps/ieee754/ldbl-128/e_logl.c b/sysdeps/ieee754/ldbl-128/e_logl.c
index 395a76302a..3d1034dd61 100644
--- a/sysdeps/ieee754/ldbl-128/e_logl.c
+++ b/sysdeps/ieee754/ldbl-128/e_logl.c
@@ -212,9 +212,8 @@ __ieee754_logl(long double x)
     }
 
   /* Extract exponent and reduce domain to 0.703125 <= u < 1.40625  */
-  e = (int) (m >> 16) - (int) 0x3ffe;
-  m &= 0xffff;
-  u.parts32.w0 = m | 0x3ffe0000;
+  u.value = __frexpl (x, &e);
+  m = u.parts32.w0 & 0xffff;
   m |= 0x10000;
   /* Find lookup table index k from high order bits of the significand. */
   if (m < 0x16800)
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index 398594533b..d36b76a047 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -7675,6 +7675,9 @@ ldouble: 1
 Test "log10 (0x2.b7e154p+0)":
 float: 1
 ifloat: 1
+Test "log10 (0x4p-128)":
+ildouble: 1
+ldouble: 1
 Test "log10 (0xcp-4)":
 double: 1
 float: 2