mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 23:00:07 +00:00
Fix ldbl-128ibm logl inaccuracy (bug 16386).
This patch fixes bug 16386, ldbl-128ibm logl inaccuracy (with consequent inaccuracy for lgammal) for arguments where the high double is subnormal, which showed up while attempting to regenerate ulps for powerpc-nofpu for 2.19. The problem here is logic failing to allow for subnormals when calculating the exponent of the argument. Tested for powerpc-nofpu. * sysdeps/ieee754/ldbl-128ibm/e_logl.c (__ieee754_logl): Adjust numbers with subnormal high part when calculating exponent.
This commit is contained in:
parent
90b6a1e55f
commit
819e5d50dd
@ -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.
|
||||
|
3
NEWS
3
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.
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user