diff options
author | Joseph Myers <joseph@codesourcery.com> | 2014-01-02 16:34:24 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2014-01-02 16:34:24 +0000 |
commit | 90b6a1e55fdbb3e6a3132742c26eb19666ad9e33 (patch) | |
tree | ab2cb9799bdf0ece9c176bb250db96efbcb83b39 | |
parent | 396e3ecf3e8f0f05bd7eeaf995a3f0c2327a6cd6 (diff) | |
download | glibc-90b6a1e55fdbb3e6a3132742c26eb19666ad9e33.zip glibc-90b6a1e55fdbb3e6a3132742c26eb19666ad9e33.tar.gz glibc-90b6a1e55fdbb3e6a3132742c26eb19666ad9e33.tar.bz2 |
Fix ldbl-128ibm asinhl inaccuracy (bug 16385).
This patch fixes bug 16385, ldbl-128ibm asinhl inaccuracy, which
showed up while attempting to regenerate ulps for powerpc-nofpu for
2.19. The problem here was use of fabs instead of fabsl meaning large
arguments were reduced to the precision of double. Tested for
powerpc-nofpu.
* sysdeps/ieee754/ldbl-128ibm/s_asinhl.c (__asinhl): Use fabsl not
fabs.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/s_asinhl.c | 2 |
3 files changed, 6 insertions, 2 deletions
@@ -1,5 +1,9 @@ 2014-01-02 Joseph Myers <joseph@codesourcery.com> + [BZ #16385] + * sysdeps/ieee754/ldbl-128ibm/s_asinhl.c (__asinhl): Use fabsl not + fabs. + [BZ #16384] * sysdeps/ieee754/ldbl-128ibm/e_acoshl.c (ln2): Initialize with M_LN2l. @@ -23,7 +23,7 @@ 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. + 16338, 16356, 16365, 16366, 16369, 16372, 16375, 16379, 16384, 16385. * Slovenian translations for glibc messages have been contributed by the Translation Project's Slovenian team of translators. diff --git a/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c b/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c index 63c6edb..043b151f 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c @@ -48,7 +48,7 @@ long double __asinhl(long double x) if(huge+x>one) return x; /* return x inexact except 0 */ } if(ix>0x41b0000000000000LL) { /* |x| > 2**28 */ - w = __ieee754_logl(fabs(x))+ln2; + w = __ieee754_logl(fabsl(x))+ln2; } else if (ix>0x4000000000000000LL) { /* 2**28 > |x| > 2.0 */ t = fabs(x); w = __ieee754_logl(2.0*t+one/(__ieee754_sqrtl(x*x+one)+t)); |