diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-02-26 21:06:34 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-02-26 21:06:34 +0000 |
commit | 1d9ab20c14211abbf45514e63c190dfeec27fa5e (patch) | |
tree | cbe705e320799863f477d32c3062f6260c0c72a2 /math/auto-libm-test-in | |
parent | ec0ce0d3be4ae21add09139c705852ed8bb114c7 (diff) | |
download | glibc-1d9ab20c14211abbf45514e63c190dfeec27fa5e.tar glibc-1d9ab20c14211abbf45514e63c190dfeec27fa5e.tar.gz glibc-1d9ab20c14211abbf45514e63c190dfeec27fa5e.tar.bz2 glibc-1d9ab20c14211abbf45514e63c190dfeec27fa5e.zip |
Fix ldbl-128/ldbl-128ibm acosl inaccuracy (bug 18038, bug 18039).
The ldbl-128 and ldbl-128ibm implementations of acosl have similar
bugs, using a threshold of 0x1p-57L to determine when they just return
pi/2. Since the result pi/2 - asinl (x) is roughly pi/2 - x for small
x, the relevant cut-off is actually x being < 0.5ulp of 1. This patch
fixes the implementations to use that cut-off and adds tests of small
acos arguments.
Tested for powerpc and mips64. Also tested for x86_64 and x86; no
ulps updates needed.
[BZ #18038]
[BZ #18039]
* sysdeps/ieee754/ldbl-128/e_acosl.c (__ieee754_acosl): Only
return pi/2 for arguments below 0x1p-113L.
* sysdeps/ieee754/ldbl-128ibm/e_acosl.c (__ieee754_acosl): Only
return pi/2 for arguments below 0x1p-106L.
* math/auto-libm-test-in: Add more tests of acos.
* math/auto-libm-test-out: Regenerated.
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 bd85805224..19d5396d10 100644 --- a/math/auto-libm-test-in +++ b/math/auto-libm-test-in @@ -33,6 +33,37 @@ acos 0x0.ffffffffffffp0 acos -0x0.ffffffffffffp0 acos 0x0.ffffffffffffffffp0 acos -0x0.ffffffffffffffffp0 +acos 0x1p-5 +acos 0x1p-10 +acos 0x1p-15 +acos 0x1p-20 +acos 0x1p-25 +acos 0x1p-30 +acos 0x1p-35 +acos 0x1p-40 +acos 0x1p-45 +acos 0x1p-50 +acos 0x1p-55 +acos 0x1p-60 +acos 0x1p-65 +acos 0x1p-70 +acos 0x1p-75 +acos 0x1p-80 +acos 0x1p-85 +acos 0x1p-90 +acos 0x1p-95 +acos 0x1p-100 +acos 0x1p-105 +acos 0x1p-110 +acos 0x1p-115 +acos 0x1p-120 +acos -0x1p-5 +acos -0x1p-25 +acos -0x1p-45 +acos -0x1p-65 +acos -0x1p-85 +acos -0x1p-105 +acos -0x1p-125 acos min acos -min acos min_subnorm |