Fix ldbl-128/ldbl-128ibm acosl inaccuracy (bug 18038, bug 18039).

System Internals / glibc - Joseph Myers [codesourcery.com] - 26 February 2015 15:06 UTC

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.

1d9ab20 Fix ldbl-128/ldbl-128ibm acosl inaccuracy (bug 18038, bug 18039).
ChangeLog | 9 +
NEWS | 2 +-
math/auto-libm-test-in | 31 ++
math/auto-libm-test-out | 775 +++++++++++++++++++++++++++++++++
sysdeps/ieee754/ldbl-128/e_acosl.c | 2 +-
sysdeps/ieee754/ldbl-128ibm/e_acosl.c | 2 +-
6 files changed, 818 insertions(+), 3 deletions(-)

Upstream: sourceware.org


  • Share