mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-10 07:10:06 +00:00
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.
This commit is contained in:
parent
f517e06ab7
commit
e6a6b1c3de
@ -1,5 +1,10 @@
|
|||||||
2015-12-09 Joseph Myers <joseph@codesourcery.com>
|
2015-12-09 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
[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.
|
||||||
|
|
||||||
[BZ #19350]
|
[BZ #19350]
|
||||||
* sysdeps/ieee754/ldbl-128ibm/e_sinhl.c (__ieee754_sinhl):
|
* sysdeps/ieee754/ldbl-128ibm/e_sinhl.c (__ieee754_sinhl):
|
||||||
Increase overflow threshold.
|
Increase overflow threshold.
|
||||||
|
@ -270,7 +270,7 @@ __ieee754_logl(long double x)
|
|||||||
/* Series expansion of log(1+z). */
|
/* Series expansion of log(1+z). */
|
||||||
w = z * z;
|
w = z * z;
|
||||||
/* Avoid spurious underflows. */
|
/* Avoid spurious underflows. */
|
||||||
if (__glibc_unlikely(w <= ldbl_epsilon))
|
if (__glibc_unlikely (fabsl (z) <= ldbl_epsilon))
|
||||||
y = 0.0L;
|
y = 0.0L;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user