]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix ldbl-128ibm acoshl inaccuracy (bug 16384).
authorJoseph Myers <joseph@codesourcery.com>
Thu, 2 Jan 2014 16:33:06 +0000 (16:33 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Thu, 2 Jan 2014 16:33:06 +0000 (16:33 +0000)
This patch fixes bug 16384, ldbl-128ibm acoshl inaccuracy, which
showed up while attempting to regenerate ulps for powerpc-nofpu for
2.19.  There were two separate problems, use of __log1p instead of
__log1pl and an insufficiently accurate constant value for log 2
(which this patch replaces by use of M_LN2l), each of which could
cause substantial inaccuracy in affected cases.

Tested for powerpc-nofpu.

* sysdeps/ieee754/ldbl-128ibm/e_acoshl.c (ln2): Initialize with
M_LN2l.
(__ieee754_acoshl): Use __log1pl not __log1p.

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

index cb91ca7ede8a94e201bbd6521486aa39de85b48b..4fae7018431ddd65279758ec7005af3a60029039 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2014-01-02  Joseph Myers  <joseph@codesourcery.com>
+
+       [BZ #16384]
+       * sysdeps/ieee754/ldbl-128ibm/e_acoshl.c (ln2): Initialize with
+       M_LN2l.
+       (__ieee754_acoshl): Use __log1pl not __log1p.
+
 2013-01-02  Ondřej Bílka  <neleai@seznam.cz>
 
        * malloc/arena.c (malloc_atfork, free_atfork, ptmalloc_lock_all,
diff --git a/NEWS b/NEWS
index 47ab1217de5ee335d11583f7efb30afac4913f58..c53be8aebab8742296159e76318c1e297a1576ed 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.
+  16338, 16356, 16365, 16366, 16369, 16372, 16375, 16379, 16384.
 
 * Slovenian translations for glibc messages have been contributed by the
   Translation Project's Slovenian team of translators.
index 8a4a5bb7b9796a3ed57481110f9fb4545052484f..b0b33f75206fd03da5cc26feeaa840c862cdba66 100644 (file)
@@ -29,7 +29,7 @@
 
 static const long double
 one    = 1.0L,
-ln2    = 6.93147180559945286227e-01L;  /* 0x3FE62E42, 0xFEFA39EF */
+ln2    = M_LN2l;
 
 long double
 __ieee754_acoshl(long double x)
@@ -56,7 +56,7 @@ __ieee754_acoshl(long double x)
            return __ieee754_logl(2.0*x-one/(x+__ieee754_sqrtl(t-one)));
        } else {                        /* 1<x<2 */
            t = x-one;
-           return __log1p(t+__ieee754_sqrtl(2.0*t+t*t));
+           return __log1pl(t+__ieee754_sqrtl(2.0*t+t*t));
        }
 }
 strong_alias (__ieee754_acoshl, __acoshl_finite)