From: Joseph Myers Date: Thu, 2 Jan 2014 16:34:24 +0000 (+0000) Subject: Fix ldbl-128ibm asinhl inaccuracy (bug 16385). X-Git-Tag: glibc-2.19~171 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=90b6a1e55fdbb3e6a3132742c26eb19666ad9e33;p=thirdparty%2Fglibc.git 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. --- diff --git a/ChangeLog b/ChangeLog index 4fae7018431..8200122be76 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2014-01-02 Joseph Myers + [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. diff --git a/NEWS b/NEWS index c53be8aebab..c96c0e3cd98 100644 --- a/NEWS +++ b/NEWS @@ -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 63c6edbb1a0..043b151fff5 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));