about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2014-01-02 16:33:06 +0000
committerJoseph Myers <joseph@codesourcery.com>2014-01-02 16:33:06 +0000
commit396e3ecf3e8f0f05bd7eeaf995a3f0c2327a6cd6 (patch)
treeec6423e6d30d9344e775ce5d6011a60306eb99d2
parent6c8dbf00f536d78b1937b5af6f57be47fd376344 (diff)
downloadglibc-396e3ecf3e8f0f05bd7eeaf995a3f0c2327a6cd6.tar.gz
glibc-396e3ecf3e8f0f05bd7eeaf995a3f0c2327a6cd6.tar.xz
glibc-396e3ecf3e8f0f05bd7eeaf995a3f0c2327a6cd6.zip
Fix ldbl-128ibm acoshl inaccuracy (bug 16384).
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.
-rw-r--r--ChangeLog7
-rw-r--r--NEWS2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_acoshl.c4
3 files changed, 10 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index cb91ca7ede..4fae701843 100644
--- 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 47ab1217de..c53be8aeba 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.
+  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.
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c b/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c
index 8a4a5bb7b9..b0b33f7520 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c
@@ -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)