]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix ldbl-128ibm asinhl inaccuracy (bug 16385).
authorJoseph Myers <joseph@codesourcery.com>
Thu, 2 Jan 2014 16:34:24 +0000 (16:34 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Thu, 2 Jan 2014 16:34:24 +0000 (16:34 +0000)
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.

ChangeLog
NEWS
sysdeps/ieee754/ldbl-128ibm/s_asinhl.c

index 4fae7018431ddd65279758ec7005af3a60029039..8200122be7669d03b4db34da3b4e6040d6ba5089 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/NEWS b/NEWS
index c53be8aebab8742296159e76318c1e297a1576ed..c96c0e3cd98a72718cd826cfc326152bd9baba0c 100644 (file)
--- 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.
index 63c6edbb1a05d501fdf619d08b7d45cc6184633c..043b151fff52faa553c5d8265516d5080613a314 100644 (file)
@@ -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));