diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-12-09 23:51:11 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-12-09 23:51:11 +0000 |
commit | e6a6b1c3de62f3ae3f0e5ac5bdcc49a3342f03e7 (patch) | |
tree | a239075b91eca073d80677205d27516017105e63 /sysdeps/ieee754/ldbl-128ibm | |
parent | f517e06ab71e07b24bf085063b0ba2d072da4a56 (diff) | |
download | glibc-e6a6b1c3de62f3ae3f0e5ac5bdcc49a3342f03e7.zip glibc-e6a6b1c3de62f3ae3f0e5ac5bdcc49a3342f03e7.tar.gz glibc-e6a6b1c3de62f3ae3f0e5ac5bdcc49a3342f03e7.tar.bz2 |
Fix ldbl-128ibm logl inaccuracy near 1 (bug 19351).
The ldbl-128ibm implementation of logl is inaccurate for arguments
near 1, because when deciding whether to bypass a series expansion for
log(1+z), where z = x-1, it compares the square of z rather than z
itself with an epsilon value. This patch fixes that comparison, so
eliminating the test failures for inaccuracy of logl in such cases.
Tested for powerpc.
[BZ #19351]
* sysdeps/ieee754/ldbl-128ibm/e_logl.c (__ieee754_logl): When
expanding log(1+z), compare z rather than its square with epsilon
to determine when to avoid evaluating the expansion.
Diffstat (limited to 'sysdeps/ieee754/ldbl-128ibm')
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/e_logl.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_logl.c b/sysdeps/ieee754/ldbl-128ibm/e_logl.c index dcac380..14acfc2 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_logl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_logl.c @@ -270,7 +270,7 @@ __ieee754_logl(long double x) /* Series expansion of log(1+z). */ w = z * z; /* Avoid spurious underflows. */ - if (__glibc_unlikely(w <= ldbl_epsilon)) + if (__glibc_unlikely (fabsl (z) <= ldbl_epsilon)) y = 0.0L; else { |