diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-02-27 17:48:37 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-02-27 17:48:37 +0000 |
commit | 2ca725c594e0c186d928dc0823be7d8b5976112c (patch) | |
tree | 8f477bda16d5f94bb925301798e653d3064ee75d /math/auto-libm-test-in | |
parent | af96be34825586536ebcfbf5c675e795ddd3c8fa (diff) | |
download | glibc-2ca725c594e0c186d928dc0823be7d8b5976112c.tar glibc-2ca725c594e0c186d928dc0823be7d8b5976112c.tar.gz glibc-2ca725c594e0c186d928dc0823be7d8b5976112c.tar.bz2 glibc-2ca725c594e0c186d928dc0823be7d8b5976112c.zip |
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.
Diffstat (limited to 'math/auto-libm-test-in')
-rw-r--r-- | math/auto-libm-test-in | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in index 19d5396d10..5e4b84d31d 100644 --- a/math/auto-libm-test-in +++ b/math/auto-libm-test-in @@ -300,7 +300,38 @@ atanh 0.25 atanh 0x1p-5 atanh 0x1p-10 atanh 0x1.2345p-20 +atanh 0x1p-8 +atanh 0x1p-9 +atanh 0x1p-10 +atanh 0x1p-11 +atanh 0x1p-12 +atanh 0x1p-13 +atanh 0x1p-24 +atanh 0x1p-25 +atanh 0x1p-26 +atanh 0x1p-27 +atanh 0x1p-28 +atanh 0x1p-29 +atanh 0x1p-30 +atanh 0x1p-31 +atanh 0x1p-32 +atanh 0x1p-33 +atanh 0x1p-48 +atanh 0x1p-49 +atanh 0x1p-50 +atanh 0x1p-51 +atanh 0x1p-52 +atanh 0x1p-53 +atanh 0x1p-54 +atanh 0x1p-55 +atanh 0x1p-56 +atanh 0x1p-57 +atanh 0x1p-58 +atanh 0x1p-59 +atanh 0x1p-100 # Bug 16352: underflow exception may be missing. +atanh 0x1p-500 missing-underflow +atanh 0x1p-5000 missing-underflow atanh min missing-underflow atanh -min missing-underflow atanh min_subnorm missing-underflow |