Fix ldbl-96, ldbl-128ibm atanhl inaccuracy (bug 18046, bug 18047).
commit2ca725c594e0c186d928dc0823be7d8b5976112c
authorJoseph Myers <joseph@codesourcery.com>
Fri, 27 Feb 2015 17:48:37 +0000 (27 17:48 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Fri, 27 Feb 2015 17:48:37 +0000 (27 17:48 +0000)
tree8f477bda16d5f94bb925301798e653d3064ee75d
parentaf96be34825586536ebcfbf5c675e795ddd3c8fa
Fix ldbl-96, ldbl-128ibm atanhl inaccuracy (bug 18046, bug 18047).

The threshold in ldbl-96 atanhl for when to return the argument,
0x1p-28, is a bit too big, and that in ldbl-128ibm atanhl is much too
big (the relevant condition being x^3/3 being < 0.5ulp of x),
resulting in errors a bit above the limits of those considered
acceptable in glibc in the ldbl-96 case, and in large errors in the
ldbl-128ibm case.  This patch changes those implementations to use
more appropriate thresholds and adds tests around the thresholds for
various formats.

Tested for x86_64, x86 and powerpc.  x86_64 and x86 ulps updated
accordingly.

[BZ #18046]
[BZ #18047]
* sysdeps/ieee754/ldbl-128ibm/e_atanhl.c (__ieee754_atanhl): Use
0x1p-56L as threshold for just returning the argument.
* sysdeps/ieee754/ldbl-96/e_atanhl.c (__ieee754_atanhl): Use
0x1p-32L as threshold for just returning the argument.
* math/auto-libm-test-in: Add more tests of atanh.
* math/auto-libm-test-out: Regenerated.
* sysdeps/i386/fpu/libm-test-ulps: Update.
* sysdeps/x86_64/fpu/libm-test-ulp: Likewise.
ChangeLog
NEWS
math/auto-libm-test-in
math/auto-libm-test-out
sysdeps/i386/fpu/libm-test-ulps
sysdeps/ieee754/ldbl-128ibm/e_atanhl.c
sysdeps/ieee754/ldbl-96/e_atanhl.c
sysdeps/x86_64/fpu/libm-test-ulps