aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--NEWS3
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_logl.c8
3 files changed, 14 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 8200122..7f4d564 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2014-01-02 Joseph Myers <joseph@codesourcery.com>
+ [BZ #16386]
+ * sysdeps/ieee754/ldbl-128ibm/e_logl.c (__ieee754_logl): Adjust
+ numbers with subnormal high part when calculating exponent.
+
[BZ #16385]
* sysdeps/ieee754/ldbl-128ibm/s_asinhl.c (__asinhl): Use fabsl not
fabs.
diff --git a/NEWS b/NEWS
index c96c0e3..e0ea97a 100644
--- a/NEWS
+++ b/NEWS
@@ -23,7 +23,8 @@ Version 2.19
16038, 16041, 16055, 16071, 16072, 16074, 16077, 16078, 16103, 16112,
16143, 16144, 16146, 16150, 16151, 16153, 16167, 16172, 16195, 16214,
16245, 16271, 16274, 16283, 16289, 16293, 16314, 16316, 16330, 16337,
- 16338, 16356, 16365, 16366, 16369, 16372, 16375, 16379, 16384, 16385.
+ 16338, 16356, 16365, 16366, 16369, 16372, 16375, 16379, 16384, 16385,
+ 16386.
* Slovenian translations for glibc messages have been contributed by the
Translation Project's Slovenian team of translators.
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_logl.c b/sysdeps/ieee754/ldbl-128ibm/e_logl.c
index b7db2b9..58d6bc6 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_logl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_logl.c
@@ -229,6 +229,14 @@ __ieee754_logl(long double x)
/* Extract exponent and reduce domain to 0.703125 <= u < 1.40625 */
unsigned int w0;
e = (int) (m >> 20) - (int) 0x3fe;
+ if (e == -1022)
+ {
+ x *= 0x1p106L;
+ xhi = ldbl_high (x);
+ EXTRACT_WORDS (hx, lx, xhi);
+ m = hx;
+ e = (int) (m >> 20) - (int) 0x3fe - 106;
+ }
m &= 0xfffff;
w0 = m | 0x3fe00000;
m |= 0x100000;