diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-02-11 23:17:25 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-02-11 23:17:25 +0000 |
commit | d435569cd626bccb9c27361202a279d0fd7fce88 (patch) | |
tree | d307669a2d90be6d52f58a9409f8f5f21575bbe1 /math | |
parent | ef0ffcfd13fea7544c2d83d222963b0da4963734 (diff) | |
download | glibc-d435569cd626bccb9c27361202a279d0fd7fce88.tar glibc-d435569cd626bccb9c27361202a279d0fd7fce88.tar.gz glibc-d435569cd626bccb9c27361202a279d0fd7fce88.tar.bz2 glibc-d435569cd626bccb9c27361202a279d0fd7fce88.zip |
Fix sincos errno setting (bug 15467).
This patch makes sincos set errno to EDOM when passed an infinity,
similarly to sin and cos.
Tested for x86_64, x86, powerpc and mips64. I don't know if the
architecture-specific implementations for ia64 and m68k might need
corresponding fixes.
2015-02-11 Joseph Myers <joseph@codesourcery.com>
[BZ #15467]
* sysdeps/ieee754/dbl-64/s_sincos.c: Include <errno.h>.
(__sincos): Set errno to EDOM for infinite argument.
* sysdeps/ieee754/flt-32/s_sincosf.c: Include <errno.h>.
(SINCOSF_FUNC): Set errno to EDOM for infinite argument.
* sysdeps/ieee754/ldbl-128/s_sincosl.c: Include <errno.h>.
(__sincosl): Set errno to EDOM for infinite argument.
* sysdeps/ieee754/ldbl-128ibm/s_sincosl.c: Include <errno.h>.
(__sincosl): Set errno to EDOM for infinite argument.
* sysdeps/ieee754/ldbl-96/s_sincosl.c: Include <errno.h>.
(__sincosl): Set errno to EDOM for infinite argument.
* math/libm-test.inc (sincos_test_data): Test errno setting.
Diffstat (limited to 'math')
-rw-r--r-- | math/libm-test.inc | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/math/libm-test.inc b/math/libm-test.inc index 6d7ff12e04..aa7ba2b765 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -9335,9 +9335,9 @@ sin_test (void) static const struct test_fFF_11_data sincos_test_data[] = { - TEST_fFF_11 (sincos, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION), - TEST_fFF_11 (sincos, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION), - TEST_fFF_11 (sincos, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION), + TEST_fFF_11 (sincos, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM), + TEST_fFF_11 (sincos, minus_infty, qnan_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM), + TEST_fFF_11 (sincos, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), AUTO_TESTS_fFF_11 (sincos), }; |