diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-08-19 22:42:01 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-08-19 22:42:01 +0000 |
commit | 948e12a238715b2931cc42486db9e502ff943e54 (patch) | |
tree | c0790fb5b46d6a49e015f15cbec9c45464dd1dc2 /math/auto-libm-test-in | |
parent | b75d1cfce647df871700a9027cde35484127d727 (diff) | |
download | glibc-948e12a238715b2931cc42486db9e502ff943e54.tar glibc-948e12a238715b2931cc42486db9e502ff943e54.tar.gz glibc-948e12a238715b2931cc42486db9e502ff943e54.tar.bz2 glibc-948e12a238715b2931cc42486db9e502ff943e54.zip |
Fix csqrt missing underflows (bug 18370).
The csqrt implementations in glibc can miss underflow exceptions when
the real or imaginary part of the result becomes tiny in the course of
scaling down (in particular, multiplication by 0.5) and that scaling
is exact although the relevant part of the mathematical result isn't.
This patch forces the exception in a similar way to previous fixes.
Tested for x86_64 and x86.
[BZ #18370]
* math/s_csqrt.c (__csqrt): Force underflow exception for results
whose real or imaginary part has small absolute value.
* math/s_csqrtf.c (__csqrtf): Likewise.
* math/s_csqrtl.c (__csqrtl): Likewise.
* math/auto-libm-test-in: Add more tests of csqrt.
* math/auto-libm-test-out: Regenerated.
* sysdeps/i386/fpu/libm-test-ulps: Update.
Diffstat (limited to 'math/auto-libm-test-in')
-rw-r--r-- | math/auto-libm-test-in | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in index 015041aeb0..49f1c55c03 100644 --- a/math/auto-libm-test-in +++ b/math/auto-libm-test-in @@ -1171,6 +1171,11 @@ csqrt 0x1p-16445 0x1.0000000000000004p-16382 csqrt 0x1p-16494 0x1.0000000000000000000000000001p-16382 csqrt 0x1p-16494 0x1.0000000000000000000000000002p-16382 +csqrt 1 min +csqrt 1 -min +csqrt -1 min +csqrt -1 -min + ctan 0 0 ctan 0 -0 ctan -0 0 |