diff options
author | Joseph Myers <joseph@codesourcery.com> | 2012-04-09 22:31:35 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2012-04-09 22:31:35 +0000 |
commit | bcc8d6617ba029c288fff9680a02b9a3b1caa9c0 (patch) | |
tree | 9cb163731d4d165bfe71bad55f59d88c6b420917 /math/libm-test.inc | |
parent | 8a1fbaaf75536088b4d505409e0e87975d8cf8d5 (diff) | |
download | glibc-bcc8d6617ba029c288fff9680a02b9a3b1caa9c0.tar.gz glibc-bcc8d6617ba029c288fff9680a02b9a3b1caa9c0.tar.xz glibc-bcc8d6617ba029c288fff9680a02b9a3b1caa9c0.zip |
Fix ctan, ctanh overflow (bug 11521).
Diffstat (limited to 'math/libm-test.inc')
-rw-r--r-- | math/libm-test.inc | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/math/libm-test.inc b/math/libm-test.inc index 0533483749..a551b9f3f4 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -2840,6 +2840,36 @@ ctan_test (void) TEST_c_c (ctan, 0.75L, 1.25L, 0.160807785916206426725166058173438663L, 0.975363285031235646193581759755216379L); TEST_c_c (ctan, -2, -3, 0.376402564150424829275122113032269084e-2L, -1.00323862735360980144635859782192726L); + TEST_c_c (ctan, 1, 45, 1.490158918874345552942703234806348520895e-39L, 1.000000000000000000000000000000000000001L); + TEST_c_c (ctan, 1, 47, 2.729321264492904590777293425576722354636e-41L, 1.0); + +#ifndef TEST_FLOAT + TEST_c_c (ctan, 1, 355, 8.140551093483276762350406321792653551513e-309L, 1.0); + TEST_c_c (ctan, 1, 365, 1.677892637497921890115075995898773550884e-317L, 1.0); +#endif + +#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384 + TEST_c_c (ctan, 1, 5680, 4.725214596136812019616700920476949798307e-4934L, 1.0); + TEST_c_c (ctan, 1, 5690, 9.739393181626937151720816611272607059057e-4943L, 1.0); +#endif + + TEST_c_c (ctan, 0x3.243f6cp-1, 0, -2.287733242885645987394874673945769518150e7L, 0.0); + + TEST_c_c (ctan, 0x1p127, 1, 0.2446359391192790896381501310437708987204L, 0.9101334047676183761532873794426475906201L); + +#ifndef TEST_FLOAT + TEST_c_c (ctan, 0x1p1023, 1, -0.2254627924997545057926782581695274244229L, 0.8786063118883068695462540226219865087189L); +#endif + +#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384 + TEST_c_c (ctan, 0x1p16383L, 1, 0.1608598776370396607204448234354670036772L, 0.8133818522051542536316746743877629761488L); +#endif + + TEST_c_c (ctan, 50000, 50000, plus_zero, 1.0); + TEST_c_c (ctan, 50000, -50000, plus_zero, -1.0); + TEST_c_c (ctan, -50000, 50000, minus_zero, 1.0); + TEST_c_c (ctan, -50000, -50000, minus_zero, -1.0); + END (ctan, complex); } @@ -2899,6 +2929,36 @@ ctanh_test (void) TEST_c_c (ctanh, 0.75L, 1.25L, 1.37260757053378320258048606571226857L, 0.385795952609750664177596760720790220L); TEST_c_c (ctanh, -2, -3, -0.965385879022133124278480269394560686L, 0.988437503832249372031403430350121098e-2L); + TEST_c_c (ctanh, 45, 1, 1.000000000000000000000000000000000000001L, 1.490158918874345552942703234806348520895e-39L); + TEST_c_c (ctanh, 47, 1, 1.0, 2.729321264492904590777293425576722354636e-41L); + +#ifndef TEST_FLOAT + TEST_c_c (ctanh, 355, 1, 1.0, 8.140551093483276762350406321792653551513e-309L); + TEST_c_c (ctanh, 365, 1, 1.0, 1.677892637497921890115075995898773550884e-317L); +#endif + +#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384 + TEST_c_c (ctanh, 5680, 1, 1.0, 4.725214596136812019616700920476949798307e-4934L); + TEST_c_c (ctanh, 5690, 1, 1.0, 9.739393181626937151720816611272607059057e-4943L); +#endif + + TEST_c_c (ctanh, 0, 0x3.243f6cp-1, 0.0, -2.287733242885645987394874673945769518150e7L); + + TEST_c_c (ctanh, 1, 0x1p127, 0.9101334047676183761532873794426475906201L, 0.2446359391192790896381501310437708987204L); + +#ifndef TEST_FLOAT + TEST_c_c (ctanh, 1, 0x1p1023, 0.8786063118883068695462540226219865087189L, -0.2254627924997545057926782581695274244229L); +#endif + +#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384 + TEST_c_c (ctanh, 1, 0x1p16383L, 0.8133818522051542536316746743877629761488L, 0.1608598776370396607204448234354670036772L); +#endif + + TEST_c_c (ctanh, 50000, 50000, 1.0, plus_zero); + TEST_c_c (ctanh, 50000, -50000, 1.0, minus_zero); + TEST_c_c (ctanh, -50000, 50000, -1.0, plus_zero); + TEST_c_c (ctanh, -50000, -50000, -1.0, minus_zero); + END (ctanh, complex); } |