diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/e_logl.c | 8 |
3 files changed, 14 insertions, 1 deletions
@@ -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. @@ -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; |