diff options
author | Joseph Myers <joseph@codesourcery.com> | 2014-01-02 16:33:06 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2014-01-02 16:33:06 +0000 |
commit | 396e3ecf3e8f0f05bd7eeaf995a3f0c2327a6cd6 (patch) | |
tree | ec6423e6d30d9344e775ce5d6011a60306eb99d2 | |
parent | 6c8dbf00f536d78b1937b5af6f57be47fd376344 (diff) | |
download | glibc-396e3ecf3e8f0f05bd7eeaf995a3f0c2327a6cd6.zip glibc-396e3ecf3e8f0f05bd7eeaf995a3f0c2327a6cd6.tar.gz glibc-396e3ecf3e8f0f05bd7eeaf995a3f0c2327a6cd6.tar.bz2 |
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-- | ChangeLog | 7 | ||||
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/e_acoshl.c | 4 |
3 files changed, 10 insertions, 3 deletions
@@ -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, @@ -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 8a4a5bb..b0b33f7 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) |