diff options
author | Joseph Myers <joseph@codesourcery.com> | 2017-03-15 22:00:54 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2017-03-15 22:00:54 +0000 |
commit | e4e52ff059f46472145433d2bd003d5383f89e82 (patch) | |
tree | c5044e3b2e2f98778087319e79d308bd817e9a75 /math/auto-libm-test-in | |
parent | 5d20a49aaccef5ef7adac93d5ca159f6b7ba0105 (diff) | |
download | glibc-e4e52ff059f46472145433d2bd003d5383f89e82.tar glibc-e4e52ff059f46472145433d2bd003d5383f89e82.tar.gz glibc-e4e52ff059f46472145433d2bd003d5383f89e82.tar.bz2 glibc-e4e52ff059f46472145433d2bd003d5383f89e82.zip |
Improve float range reduction accuracy near pi/2 (bug 21094).
Bug 21094 reports 3ulp errors of cosf and tanf for certain arguments
near pi/2 arising from the use of an insufficiently accurate range
reduction. (To be clear, this is a quality-of-implementation issue
relating to the apparent intent of those particular cosf and tanf
implementations; 3ulp is within the general glibc accuracy goals, so
not inherently a bug.)
This patch fixes that error by making a wider range of cases use the
existing more accurate range reduction for arguments close to pi/2.
The wider range of values is still narrow enough for the "z -=
pio2_2;" in the more accurate case to be exact, as the code expects.
Tested for x86_64, x86 and mips64; no ulps updates needed (but at
least on mips64, the larger ulps were seen if the tests were added
without the substantive fix).
[BZ #21094]
* sysdeps/ieee754/flt-32/e_rem_pio2f.c (__ieee754_rem_pio2f): Use
24+24+24-bit pi for wider range of values around pi/2.
* math/auto-libm-test-in: Add more tests of cos and tan.
* math/auto-libm-test-out-cos: Regenerated.
* math/auto-libm-test-out-tan: Likewise.
Diffstat (limited to 'math/auto-libm-test-in')
-rw-r--r-- | math/auto-libm-test-in | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in index c8267aa822..6a47044f6b 100644 --- a/math/auto-libm-test-in +++ b/math/auto-libm-test-in @@ -4324,6 +4324,8 @@ cos -0x1.02e34cp+0 cos 0xf.f0274p+4 cos 0x3.042d88p+0 cos 0x1.8475e5afd4481p+0 +cos 1.57079697 +cos -1.57079697 cosh 0 cosh -0 @@ -7236,6 +7238,8 @@ tan 0x2.091d68p+0 tan -0x5.302ab9b18593264p+0 tan 0x1.1ad374p+0 tan -0x1.0d55b8p+0 +tan 1.57079697 +tan -1.57079697 tan 0x1p-5 tan 0x1p-10 tan 0x1p-15 |