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 /ChangeLog | |
parent | ec0ce0d3be4ae21add09139c705852ed8bb114c7 (diff) | |
download | glibc-1d9ab20c14211abbf45514e63c190dfeec27fa5e.tar.gz glibc-1d9ab20c14211abbf45514e63c190dfeec27fa5e.tar.xz 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 'ChangeLog')
-rw-r--r-- | ChangeLog | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 1cc3de62de..7f94e617cf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2015-02-26 Joseph Myers <joseph@codesourcery.com> + [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. + [BZ #16351] * sysdeps/i386/fpu/e_asin.S (dbl_min): New object. (MO): New macro. |