aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog14
-rw-r--r--NEWS2
-rw-r--r--math/auto-libm-test-in10
-rw-r--r--math/auto-libm-test-out200
-rw-r--r--math/libm-test.inc4
-rw-r--r--math/s_csin.c6
-rw-r--r--math/s_csinf.c6
-rw-r--r--math/s_csinh.c6
-rw-r--r--math/s_csinhf.c6
-rw-r--r--math/s_csinhl.c6
-rw-r--r--math/s_csinl.c6
-rw-r--r--sysdeps/x86_64/fpu/libm-test-ulps8
12 files changed, 251 insertions, 23 deletions
diff --git a/ChangeLog b/ChangeLog
index b103dcd..6c1eb8e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,19 @@
2015-06-24 Joseph Myers <joseph@codesourcery.com>
+ [BZ #18593]
+ * math/s_csin.c (__csin): Negate before rather than after possibly
+ overflowing multiplication.
+ * math/s_csinf.c (__csinf): Likewise.
+ * math/s_csinh.c (__csinh): Likewise.
+ * math/s_csinhf.c (__csinhf): Likewise.
+ * math/s_csinhl.c (__csinhl): Likewise.
+ * math/s_csinl.c (__csinl): Likewise.
+ * math/auto-libm-test-in: Add some tests of csin and csinh.
+ * math/auto-libm-test-out: Regenerated.
+ * math/libm-test.inc (csin_test_data): Use AUTO_TESTS_c_c.
+ (csinh_test_data): Likewise.
+ * sysdeps/x86_64/fpu/libm-test-ulps: Update.
+
[BZ #18586]
* sysdeps/ieee754/ldbl-128/e_expl.c (__ieee754_expl): Force
underflow exception for small results.
diff --git a/NEWS b/NEWS
index e8c84b8..4646dcd 100644
--- a/NEWS
+++ b/NEWS
@@ -24,7 +24,7 @@ Version 2.22
18444, 18468, 18469, 18470, 18479, 18483, 18495, 18496, 18497, 18498,
18507, 18512, 18513, 18519, 18520, 18522, 18527, 18528, 18529, 18530,
18532, 18533, 18534, 18536, 18539, 18540, 18542, 18544, 18545, 18546,
- 18547, 18553, 18558, 18569, 18583, 18586.
+ 18547, 18553, 18558, 18569, 18583, 18586, 18593.
* Cache information can be queried via sysconf() function on s390 e.g. with
_SC_LEVEL1_ICACHE_SIZE as argument.
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 6545583..2389c05 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -955,6 +955,16 @@ cpow 0.75 1.25 1.0 1.0 xfail-rounding
cpow 0.75 1.25 1.0 0.0
cpow 0.75 1.25 0.0 1.0
+csin 0.75 1e6
+csin 0.75 -1e6
+csin -0.75 1e6
+csin -0.75 -1e6
+
+csinh 1e6 0.75
+csinh -1e6 0.75
+csinh 1e6 -0.75
+csinh -1e6 -0.75
+
csqrt 0 0
csqrt 0 -0
csqrt -0 0
diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out
index f3672db..b386f00 100644
--- a/math/auto-libm-test-out
+++ b/math/auto-libm-test-out
@@ -91676,6 +91676,206 @@ cpow 0.75 1.25 0.0 1.0
= cpow tonearest ldbl-128ibm 0xcp-4L 0x1.4p+0L 0x0p+0L 0x1p+0L : 0x5.4f283113fa8a525b30b312aa4ep-4L 0x2.19f6810e8fdb408ac45c5250adp-4L : inexact-ok
= cpow towardzero ldbl-128ibm 0xcp-4L 0x1.4p+0L 0x0p+0L 0x1p+0L : 0x5.4f283113fa8a525b30b312aa4ep-4L 0x2.19f6810e8fdb408ac45c5250acp-4L : inexact-ok
= cpow upward ldbl-128ibm 0xcp-4L 0x1.4p+0L 0x0p+0L 0x1p+0L : 0x5.4f283113fa8a525b30b312aa5p-4L 0x2.19f6810e8fdb408ac45c5250adp-4L : inexact-ok
+csin 0.75 1e6
+= csin downward flt-32 0xcp-4f 0xf.424p+16f : 0xf.fffffp+124f 0xf.fffffp+124f : inexact-ok overflow errno-erange-ok
+= csin tonearest flt-32 0xcp-4f 0xf.424p+16f : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero flt-32 0xcp-4f 0xf.424p+16f : 0xf.fffffp+124f 0xf.fffffp+124f : inexact-ok overflow errno-erange-ok
+= csin upward flt-32 0xcp-4f 0xf.424p+16f : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csin downward dbl-64 0xcp-4 0xf.424p+16 : 0xf.ffffffffffff8p+1020 0xf.ffffffffffff8p+1020 : inexact-ok overflow errno-erange-ok
+= csin tonearest dbl-64 0xcp-4 0xf.424p+16 : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero dbl-64 0xcp-4 0xf.424p+16 : 0xf.ffffffffffff8p+1020 0xf.ffffffffffff8p+1020 : inexact-ok overflow errno-erange-ok
+= csin upward dbl-64 0xcp-4 0xf.424p+16 : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csin downward ldbl-96-intel 0xcp-4L 0xf.424p+16L : 0xf.fffffffffffffffp+16380L 0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csin tonearest ldbl-96-intel 0xcp-4L 0xf.424p+16L : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero ldbl-96-intel 0xcp-4L 0xf.424p+16L : 0xf.fffffffffffffffp+16380L 0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csin upward ldbl-96-intel 0xcp-4L 0xf.424p+16L : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csin downward ldbl-96-m68k 0xcp-4L 0xf.424p+16L : 0xf.fffffffffffffffp+16380L 0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csin tonearest ldbl-96-m68k 0xcp-4L 0xf.424p+16L : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero ldbl-96-m68k 0xcp-4L 0xf.424p+16L : 0xf.fffffffffffffffp+16380L 0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csin upward ldbl-96-m68k 0xcp-4L 0xf.424p+16L : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csin downward ldbl-128 0xcp-4L 0xf.424p+16L : 0xf.fffffffffffffffffffffffffff8p+16380L 0xf.fffffffffffffffffffffffffff8p+16380L : inexact-ok overflow errno-erange-ok
+= csin tonearest ldbl-128 0xcp-4L 0xf.424p+16L : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero ldbl-128 0xcp-4L 0xf.424p+16L : 0xf.fffffffffffffffffffffffffff8p+16380L 0xf.fffffffffffffffffffffffffff8p+16380L : inexact-ok overflow errno-erange-ok
+= csin upward ldbl-128 0xcp-4L 0xf.424p+16L : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csin downward ldbl-128ibm 0xcp-4L 0xf.424p+16L : 0xf.ffffffffffffbffffffffffffcp+1020L 0xf.ffffffffffffbffffffffffffcp+1020L : inexact-ok overflow errno-erange-ok
+= csin tonearest ldbl-128ibm 0xcp-4L 0xf.424p+16L : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero ldbl-128ibm 0xcp-4L 0xf.424p+16L : 0xf.ffffffffffffbffffffffffffcp+1020L 0xf.ffffffffffffbffffffffffffcp+1020L : inexact-ok overflow errno-erange-ok
+= csin upward ldbl-128ibm 0xcp-4L 0xf.424p+16L : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+csin 0.75 -1e6
+= csin downward flt-32 0xcp-4f -0xf.424p+16f : 0xf.fffffp+124f minus_infty : inexact-ok overflow errno-erange-ok
+= csin tonearest flt-32 0xcp-4f -0xf.424p+16f : plus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero flt-32 0xcp-4f -0xf.424p+16f : 0xf.fffffp+124f -0xf.fffffp+124f : inexact-ok overflow errno-erange-ok
+= csin upward flt-32 0xcp-4f -0xf.424p+16f : plus_infty -0xf.fffffp+124f : inexact-ok overflow errno-erange-ok
+= csin downward dbl-64 0xcp-4 -0xf.424p+16 : 0xf.ffffffffffff8p+1020 minus_infty : inexact-ok overflow errno-erange-ok
+= csin tonearest dbl-64 0xcp-4 -0xf.424p+16 : plus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero dbl-64 0xcp-4 -0xf.424p+16 : 0xf.ffffffffffff8p+1020 -0xf.ffffffffffff8p+1020 : inexact-ok overflow errno-erange-ok
+= csin upward dbl-64 0xcp-4 -0xf.424p+16 : plus_infty -0xf.ffffffffffff8p+1020 : inexact-ok overflow errno-erange-ok
+= csin downward ldbl-96-intel 0xcp-4L -0xf.424p+16L : 0xf.fffffffffffffffp+16380L minus_infty : inexact-ok overflow errno-erange-ok
+= csin tonearest ldbl-96-intel 0xcp-4L -0xf.424p+16L : plus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero ldbl-96-intel 0xcp-4L -0xf.424p+16L : 0xf.fffffffffffffffp+16380L -0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csin upward ldbl-96-intel 0xcp-4L -0xf.424p+16L : plus_infty -0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csin downward ldbl-96-m68k 0xcp-4L -0xf.424p+16L : 0xf.fffffffffffffffp+16380L minus_infty : inexact-ok overflow errno-erange-ok
+= csin tonearest ldbl-96-m68k 0xcp-4L -0xf.424p+16L : plus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero ldbl-96-m68k 0xcp-4L -0xf.424p+16L : 0xf.fffffffffffffffp+16380L -0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csin upward ldbl-96-m68k 0xcp-4L -0xf.424p+16L : plus_infty -0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csin downward ldbl-128 0xcp-4L -0xf.424p+16L : 0xf.fffffffffffffffffffffffffff8p+16380L minus_infty : inexact-ok overflow errno-erange-ok
+= csin tonearest ldbl-128 0xcp-4L -0xf.424p+16L : plus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero ldbl-128 0xcp-4L -0xf.424p+16L : 0xf.fffffffffffffffffffffffffff8p+16380L -0xf.fffffffffffffffffffffffffff8p+16380L : inexact-ok overflow errno-erange-ok
+= csin upward ldbl-128 0xcp-4L -0xf.424p+16L : plus_infty -0xf.fffffffffffffffffffffffffff8p+16380L : inexact-ok overflow errno-erange-ok
+= csin downward ldbl-128ibm 0xcp-4L -0xf.424p+16L : 0xf.ffffffffffffbffffffffffffcp+1020L minus_infty : inexact-ok overflow errno-erange-ok
+= csin tonearest ldbl-128ibm 0xcp-4L -0xf.424p+16L : plus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero ldbl-128ibm 0xcp-4L -0xf.424p+16L : 0xf.ffffffffffffbffffffffffffcp+1020L -0xf.ffffffffffffbffffffffffffcp+1020L : inexact-ok overflow errno-erange-ok
+= csin upward ldbl-128ibm 0xcp-4L -0xf.424p+16L : plus_infty -0xf.ffffffffffffbffffffffffffcp+1020L : inexact-ok overflow errno-erange-ok
+csin -0.75 1e6
+= csin downward flt-32 -0xcp-4f 0xf.424p+16f : minus_infty 0xf.fffffp+124f : inexact-ok overflow errno-erange-ok
+= csin tonearest flt-32 -0xcp-4f 0xf.424p+16f : minus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero flt-32 -0xcp-4f 0xf.424p+16f : -0xf.fffffp+124f 0xf.fffffp+124f : inexact-ok overflow errno-erange-ok
+= csin upward flt-32 -0xcp-4f 0xf.424p+16f : -0xf.fffffp+124f plus_infty : inexact-ok overflow errno-erange-ok
+= csin downward dbl-64 -0xcp-4 0xf.424p+16 : minus_infty 0xf.ffffffffffff8p+1020 : inexact-ok overflow errno-erange-ok
+= csin tonearest dbl-64 -0xcp-4 0xf.424p+16 : minus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero dbl-64 -0xcp-4 0xf.424p+16 : -0xf.ffffffffffff8p+1020 0xf.ffffffffffff8p+1020 : inexact-ok overflow errno-erange-ok
+= csin upward dbl-64 -0xcp-4 0xf.424p+16 : -0xf.ffffffffffff8p+1020 plus_infty : inexact-ok overflow errno-erange-ok
+= csin downward ldbl-96-intel -0xcp-4L 0xf.424p+16L : minus_infty 0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csin tonearest ldbl-96-intel -0xcp-4L 0xf.424p+16L : minus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero ldbl-96-intel -0xcp-4L 0xf.424p+16L : -0xf.fffffffffffffffp+16380L 0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csin upward ldbl-96-intel -0xcp-4L 0xf.424p+16L : -0xf.fffffffffffffffp+16380L plus_infty : inexact-ok overflow errno-erange-ok
+= csin downward ldbl-96-m68k -0xcp-4L 0xf.424p+16L : minus_infty 0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csin tonearest ldbl-96-m68k -0xcp-4L 0xf.424p+16L : minus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero ldbl-96-m68k -0xcp-4L 0xf.424p+16L : -0xf.fffffffffffffffp+16380L 0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csin upward ldbl-96-m68k -0xcp-4L 0xf.424p+16L : -0xf.fffffffffffffffp+16380L plus_infty : inexact-ok overflow errno-erange-ok
+= csin downward ldbl-128 -0xcp-4L 0xf.424p+16L : minus_infty 0xf.fffffffffffffffffffffffffff8p+16380L : inexact-ok overflow errno-erange-ok
+= csin tonearest ldbl-128 -0xcp-4L 0xf.424p+16L : minus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero ldbl-128 -0xcp-4L 0xf.424p+16L : -0xf.fffffffffffffffffffffffffff8p+16380L 0xf.fffffffffffffffffffffffffff8p+16380L : inexact-ok overflow errno-erange-ok
+= csin upward ldbl-128 -0xcp-4L 0xf.424p+16L : -0xf.fffffffffffffffffffffffffff8p+16380L plus_infty : inexact-ok overflow errno-erange-ok
+= csin downward ldbl-128ibm -0xcp-4L 0xf.424p+16L : minus_infty 0xf.ffffffffffffbffffffffffffcp+1020L : inexact-ok overflow errno-erange-ok
+= csin tonearest ldbl-128ibm -0xcp-4L 0xf.424p+16L : minus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero ldbl-128ibm -0xcp-4L 0xf.424p+16L : -0xf.ffffffffffffbffffffffffffcp+1020L 0xf.ffffffffffffbffffffffffffcp+1020L : inexact-ok overflow errno-erange-ok
+= csin upward ldbl-128ibm -0xcp-4L 0xf.424p+16L : -0xf.ffffffffffffbffffffffffffcp+1020L plus_infty : inexact-ok overflow errno-erange-ok
+csin -0.75 -1e6
+= csin downward flt-32 -0xcp-4f -0xf.424p+16f : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin tonearest flt-32 -0xcp-4f -0xf.424p+16f : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero flt-32 -0xcp-4f -0xf.424p+16f : -0xf.fffffp+124f -0xf.fffffp+124f : inexact-ok overflow errno-erange-ok
+= csin upward flt-32 -0xcp-4f -0xf.424p+16f : -0xf.fffffp+124f -0xf.fffffp+124f : inexact-ok overflow errno-erange-ok
+= csin downward dbl-64 -0xcp-4 -0xf.424p+16 : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin tonearest dbl-64 -0xcp-4 -0xf.424p+16 : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero dbl-64 -0xcp-4 -0xf.424p+16 : -0xf.ffffffffffff8p+1020 -0xf.ffffffffffff8p+1020 : inexact-ok overflow errno-erange-ok
+= csin upward dbl-64 -0xcp-4 -0xf.424p+16 : -0xf.ffffffffffff8p+1020 -0xf.ffffffffffff8p+1020 : inexact-ok overflow errno-erange-ok
+= csin downward ldbl-96-intel -0xcp-4L -0xf.424p+16L : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin tonearest ldbl-96-intel -0xcp-4L -0xf.424p+16L : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero ldbl-96-intel -0xcp-4L -0xf.424p+16L : -0xf.fffffffffffffffp+16380L -0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csin upward ldbl-96-intel -0xcp-4L -0xf.424p+16L : -0xf.fffffffffffffffp+16380L -0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csin downward ldbl-96-m68k -0xcp-4L -0xf.424p+16L : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin tonearest ldbl-96-m68k -0xcp-4L -0xf.424p+16L : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero ldbl-96-m68k -0xcp-4L -0xf.424p+16L : -0xf.fffffffffffffffp+16380L -0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csin upward ldbl-96-m68k -0xcp-4L -0xf.424p+16L : -0xf.fffffffffffffffp+16380L -0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csin downward ldbl-128 -0xcp-4L -0xf.424p+16L : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin tonearest ldbl-128 -0xcp-4L -0xf.424p+16L : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero ldbl-128 -0xcp-4L -0xf.424p+16L : -0xf.fffffffffffffffffffffffffff8p+16380L -0xf.fffffffffffffffffffffffffff8p+16380L : inexact-ok overflow errno-erange-ok
+= csin upward ldbl-128 -0xcp-4L -0xf.424p+16L : -0xf.fffffffffffffffffffffffffff8p+16380L -0xf.fffffffffffffffffffffffffff8p+16380L : inexact-ok overflow errno-erange-ok
+= csin downward ldbl-128ibm -0xcp-4L -0xf.424p+16L : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin tonearest ldbl-128ibm -0xcp-4L -0xf.424p+16L : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csin towardzero ldbl-128ibm -0xcp-4L -0xf.424p+16L : -0xf.ffffffffffffbffffffffffffcp+1020L -0xf.ffffffffffffbffffffffffffcp+1020L : inexact-ok overflow errno-erange-ok
+= csin upward ldbl-128ibm -0xcp-4L -0xf.424p+16L : -0xf.ffffffffffffbffffffffffffcp+1020L -0xf.ffffffffffffbffffffffffffcp+1020L : inexact-ok overflow errno-erange-ok
+csinh 1e6 0.75
+= csinh downward flt-32 0xf.424p+16f 0xcp-4f : 0xf.fffffp+124f 0xf.fffffp+124f : inexact-ok overflow errno-erange-ok
+= csinh tonearest flt-32 0xf.424p+16f 0xcp-4f : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero flt-32 0xf.424p+16f 0xcp-4f : 0xf.fffffp+124f 0xf.fffffp+124f : inexact-ok overflow errno-erange-ok
+= csinh upward flt-32 0xf.424p+16f 0xcp-4f : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csinh downward dbl-64 0xf.424p+16 0xcp-4 : 0xf.ffffffffffff8p+1020 0xf.ffffffffffff8p+1020 : inexact-ok overflow errno-erange-ok
+= csinh tonearest dbl-64 0xf.424p+16 0xcp-4 : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero dbl-64 0xf.424p+16 0xcp-4 : 0xf.ffffffffffff8p+1020 0xf.ffffffffffff8p+1020 : inexact-ok overflow errno-erange-ok
+= csinh upward dbl-64 0xf.424p+16 0xcp-4 : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csinh downward ldbl-96-intel 0xf.424p+16L 0xcp-4L : 0xf.fffffffffffffffp+16380L 0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csinh tonearest ldbl-96-intel 0xf.424p+16L 0xcp-4L : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero ldbl-96-intel 0xf.424p+16L 0xcp-4L : 0xf.fffffffffffffffp+16380L 0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csinh upward ldbl-96-intel 0xf.424p+16L 0xcp-4L : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csinh downward ldbl-96-m68k 0xf.424p+16L 0xcp-4L : 0xf.fffffffffffffffp+16380L 0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csinh tonearest ldbl-96-m68k 0xf.424p+16L 0xcp-4L : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero ldbl-96-m68k 0xf.424p+16L 0xcp-4L : 0xf.fffffffffffffffp+16380L 0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csinh upward ldbl-96-m68k 0xf.424p+16L 0xcp-4L : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csinh downward ldbl-128 0xf.424p+16L 0xcp-4L : 0xf.fffffffffffffffffffffffffff8p+16380L 0xf.fffffffffffffffffffffffffff8p+16380L : inexact-ok overflow errno-erange-ok
+= csinh tonearest ldbl-128 0xf.424p+16L 0xcp-4L : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero ldbl-128 0xf.424p+16L 0xcp-4L : 0xf.fffffffffffffffffffffffffff8p+16380L 0xf.fffffffffffffffffffffffffff8p+16380L : inexact-ok overflow errno-erange-ok
+= csinh upward ldbl-128 0xf.424p+16L 0xcp-4L : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csinh downward ldbl-128ibm 0xf.424p+16L 0xcp-4L : 0xf.ffffffffffffbffffffffffffcp+1020L 0xf.ffffffffffffbffffffffffffcp+1020L : inexact-ok overflow errno-erange-ok
+= csinh tonearest ldbl-128ibm 0xf.424p+16L 0xcp-4L : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero ldbl-128ibm 0xf.424p+16L 0xcp-4L : 0xf.ffffffffffffbffffffffffffcp+1020L 0xf.ffffffffffffbffffffffffffcp+1020L : inexact-ok overflow errno-erange-ok
+= csinh upward ldbl-128ibm 0xf.424p+16L 0xcp-4L : plus_infty plus_infty : inexact-ok overflow errno-erange-ok
+csinh -1e6 0.75
+= csinh downward flt-32 -0xf.424p+16f 0xcp-4f : minus_infty 0xf.fffffp+124f : inexact-ok overflow errno-erange-ok
+= csinh tonearest flt-32 -0xf.424p+16f 0xcp-4f : minus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero flt-32 -0xf.424p+16f 0xcp-4f : -0xf.fffffp+124f 0xf.fffffp+124f : inexact-ok overflow errno-erange-ok
+= csinh upward flt-32 -0xf.424p+16f 0xcp-4f : -0xf.fffffp+124f plus_infty : inexact-ok overflow errno-erange-ok
+= csinh downward dbl-64 -0xf.424p+16 0xcp-4 : minus_infty 0xf.ffffffffffff8p+1020 : inexact-ok overflow errno-erange-ok
+= csinh tonearest dbl-64 -0xf.424p+16 0xcp-4 : minus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero dbl-64 -0xf.424p+16 0xcp-4 : -0xf.ffffffffffff8p+1020 0xf.ffffffffffff8p+1020 : inexact-ok overflow errno-erange-ok
+= csinh upward dbl-64 -0xf.424p+16 0xcp-4 : -0xf.ffffffffffff8p+1020 plus_infty : inexact-ok overflow errno-erange-ok
+= csinh downward ldbl-96-intel -0xf.424p+16L 0xcp-4L : minus_infty 0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csinh tonearest ldbl-96-intel -0xf.424p+16L 0xcp-4L : minus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero ldbl-96-intel -0xf.424p+16L 0xcp-4L : -0xf.fffffffffffffffp+16380L 0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csinh upward ldbl-96-intel -0xf.424p+16L 0xcp-4L : -0xf.fffffffffffffffp+16380L plus_infty : inexact-ok overflow errno-erange-ok
+= csinh downward ldbl-96-m68k -0xf.424p+16L 0xcp-4L : minus_infty 0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csinh tonearest ldbl-96-m68k -0xf.424p+16L 0xcp-4L : minus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero ldbl-96-m68k -0xf.424p+16L 0xcp-4L : -0xf.fffffffffffffffp+16380L 0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csinh upward ldbl-96-m68k -0xf.424p+16L 0xcp-4L : -0xf.fffffffffffffffp+16380L plus_infty : inexact-ok overflow errno-erange-ok
+= csinh downward ldbl-128 -0xf.424p+16L 0xcp-4L : minus_infty 0xf.fffffffffffffffffffffffffff8p+16380L : inexact-ok overflow errno-erange-ok
+= csinh tonearest ldbl-128 -0xf.424p+16L 0xcp-4L : minus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero ldbl-128 -0xf.424p+16L 0xcp-4L : -0xf.fffffffffffffffffffffffffff8p+16380L 0xf.fffffffffffffffffffffffffff8p+16380L : inexact-ok overflow errno-erange-ok
+= csinh upward ldbl-128 -0xf.424p+16L 0xcp-4L : -0xf.fffffffffffffffffffffffffff8p+16380L plus_infty : inexact-ok overflow errno-erange-ok
+= csinh downward ldbl-128ibm -0xf.424p+16L 0xcp-4L : minus_infty 0xf.ffffffffffffbffffffffffffcp+1020L : inexact-ok overflow errno-erange-ok
+= csinh tonearest ldbl-128ibm -0xf.424p+16L 0xcp-4L : minus_infty plus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero ldbl-128ibm -0xf.424p+16L 0xcp-4L : -0xf.ffffffffffffbffffffffffffcp+1020L 0xf.ffffffffffffbffffffffffffcp+1020L : inexact-ok overflow errno-erange-ok
+= csinh upward ldbl-128ibm -0xf.424p+16L 0xcp-4L : -0xf.ffffffffffffbffffffffffffcp+1020L plus_infty : inexact-ok overflow errno-erange-ok
+csinh 1e6 -0.75
+= csinh downward flt-32 0xf.424p+16f -0xcp-4f : 0xf.fffffp+124f minus_infty : inexact-ok overflow errno-erange-ok
+= csinh tonearest flt-32 0xf.424p+16f -0xcp-4f : plus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero flt-32 0xf.424p+16f -0xcp-4f : 0xf.fffffp+124f -0xf.fffffp+124f : inexact-ok overflow errno-erange-ok
+= csinh upward flt-32 0xf.424p+16f -0xcp-4f : plus_infty -0xf.fffffp+124f : inexact-ok overflow errno-erange-ok
+= csinh downward dbl-64 0xf.424p+16 -0xcp-4 : 0xf.ffffffffffff8p+1020 minus_infty : inexact-ok overflow errno-erange-ok
+= csinh tonearest dbl-64 0xf.424p+16 -0xcp-4 : plus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero dbl-64 0xf.424p+16 -0xcp-4 : 0xf.ffffffffffff8p+1020 -0xf.ffffffffffff8p+1020 : inexact-ok overflow errno-erange-ok
+= csinh upward dbl-64 0xf.424p+16 -0xcp-4 : plus_infty -0xf.ffffffffffff8p+1020 : inexact-ok overflow errno-erange-ok
+= csinh downward ldbl-96-intel 0xf.424p+16L -0xcp-4L : 0xf.fffffffffffffffp+16380L minus_infty : inexact-ok overflow errno-erange-ok
+= csinh tonearest ldbl-96-intel 0xf.424p+16L -0xcp-4L : plus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero ldbl-96-intel 0xf.424p+16L -0xcp-4L : 0xf.fffffffffffffffp+16380L -0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csinh upward ldbl-96-intel 0xf.424p+16L -0xcp-4L : plus_infty -0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csinh downward ldbl-96-m68k 0xf.424p+16L -0xcp-4L : 0xf.fffffffffffffffp+16380L minus_infty : inexact-ok overflow errno-erange-ok
+= csinh tonearest ldbl-96-m68k 0xf.424p+16L -0xcp-4L : plus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero ldbl-96-m68k 0xf.424p+16L -0xcp-4L : 0xf.fffffffffffffffp+16380L -0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csinh upward ldbl-96-m68k 0xf.424p+16L -0xcp-4L : plus_infty -0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csinh downward ldbl-128 0xf.424p+16L -0xcp-4L : 0xf.fffffffffffffffffffffffffff8p+16380L minus_infty : inexact-ok overflow errno-erange-ok
+= csinh tonearest ldbl-128 0xf.424p+16L -0xcp-4L : plus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero ldbl-128 0xf.424p+16L -0xcp-4L : 0xf.fffffffffffffffffffffffffff8p+16380L -0xf.fffffffffffffffffffffffffff8p+16380L : inexact-ok overflow errno-erange-ok
+= csinh upward ldbl-128 0xf.424p+16L -0xcp-4L : plus_infty -0xf.fffffffffffffffffffffffffff8p+16380L : inexact-ok overflow errno-erange-ok
+= csinh downward ldbl-128ibm 0xf.424p+16L -0xcp-4L : 0xf.ffffffffffffbffffffffffffcp+1020L minus_infty : inexact-ok overflow errno-erange-ok
+= csinh tonearest ldbl-128ibm 0xf.424p+16L -0xcp-4L : plus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero ldbl-128ibm 0xf.424p+16L -0xcp-4L : 0xf.ffffffffffffbffffffffffffcp+1020L -0xf.ffffffffffffbffffffffffffcp+1020L : inexact-ok overflow errno-erange-ok
+= csinh upward ldbl-128ibm 0xf.424p+16L -0xcp-4L : plus_infty -0xf.ffffffffffffbffffffffffffcp+1020L : inexact-ok overflow errno-erange-ok
+csinh -1e6 -0.75
+= csinh downward flt-32 -0xf.424p+16f -0xcp-4f : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh tonearest flt-32 -0xf.424p+16f -0xcp-4f : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero flt-32 -0xf.424p+16f -0xcp-4f : -0xf.fffffp+124f -0xf.fffffp+124f : inexact-ok overflow errno-erange-ok
+= csinh upward flt-32 -0xf.424p+16f -0xcp-4f : -0xf.fffffp+124f -0xf.fffffp+124f : inexact-ok overflow errno-erange-ok
+= csinh downward dbl-64 -0xf.424p+16 -0xcp-4 : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh tonearest dbl-64 -0xf.424p+16 -0xcp-4 : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero dbl-64 -0xf.424p+16 -0xcp-4 : -0xf.ffffffffffff8p+1020 -0xf.ffffffffffff8p+1020 : inexact-ok overflow errno-erange-ok
+= csinh upward dbl-64 -0xf.424p+16 -0xcp-4 : -0xf.ffffffffffff8p+1020 -0xf.ffffffffffff8p+1020 : inexact-ok overflow errno-erange-ok
+= csinh downward ldbl-96-intel -0xf.424p+16L -0xcp-4L : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh tonearest ldbl-96-intel -0xf.424p+16L -0xcp-4L : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero ldbl-96-intel -0xf.424p+16L -0xcp-4L : -0xf.fffffffffffffffp+16380L -0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csinh upward ldbl-96-intel -0xf.424p+16L -0xcp-4L : -0xf.fffffffffffffffp+16380L -0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csinh downward ldbl-96-m68k -0xf.424p+16L -0xcp-4L : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh tonearest ldbl-96-m68k -0xf.424p+16L -0xcp-4L : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero ldbl-96-m68k -0xf.424p+16L -0xcp-4L : -0xf.fffffffffffffffp+16380L -0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csinh upward ldbl-96-m68k -0xf.424p+16L -0xcp-4L : -0xf.fffffffffffffffp+16380L -0xf.fffffffffffffffp+16380L : inexact-ok overflow errno-erange-ok
+= csinh downward ldbl-128 -0xf.424p+16L -0xcp-4L : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh tonearest ldbl-128 -0xf.424p+16L -0xcp-4L : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero ldbl-128 -0xf.424p+16L -0xcp-4L : -0xf.fffffffffffffffffffffffffff8p+16380L -0xf.fffffffffffffffffffffffffff8p+16380L : inexact-ok overflow errno-erange-ok
+= csinh upward ldbl-128 -0xf.424p+16L -0xcp-4L : -0xf.fffffffffffffffffffffffffff8p+16380L -0xf.fffffffffffffffffffffffffff8p+16380L : inexact-ok overflow errno-erange-ok
+= csinh downward ldbl-128ibm -0xf.424p+16L -0xcp-4L : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh tonearest ldbl-128ibm -0xf.424p+16L -0xcp-4L : minus_infty minus_infty : inexact-ok overflow errno-erange-ok
+= csinh towardzero ldbl-128ibm -0xf.424p+16L -0xcp-4L : -0xf.ffffffffffffbffffffffffffcp+1020L -0xf.ffffffffffffbffffffffffffcp+1020L : inexact-ok overflow errno-erange-ok
+= csinh upward ldbl-128ibm -0xf.424p+16L -0xcp-4L : -0xf.ffffffffffffbffffffffffffcp+1020L -0xf.ffffffffffffbffffffffffffcp+1020L : inexact-ok overflow errno-erange-ok
csqrt 0 0
= csqrt downward flt-32 0x0p+0f 0x0p+0f : 0x0p+0f 0x0p+0f : inexact-ok
= csqrt tonearest flt-32 0x0p+0f 0x0p+0f : 0x0p+0f 0x0p+0f : inexact-ok
diff --git a/math/libm-test.inc b/math/libm-test.inc
index 03c3831..ba8e8ff 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -6466,6 +6466,8 @@ static const struct test_c_c_data csin_test_data[] =
TEST_c_c (csin, 0x1p-16434L, 22730, 1.217853148905605987081057582351152052687e4924L, plus_oflow, OVERFLOW_EXCEPTION),
#endif
+ AUTO_TESTS_c_c (csin),
+
TEST_c_c (csin, min_subnorm_value, min_value, min_subnorm_value, min_value, UNDERFLOW_EXCEPTION),
TEST_c_c (csin, min_value, min_subnorm_value, min_value, min_subnorm_value, UNDERFLOW_EXCEPTION),
};
@@ -6563,6 +6565,8 @@ static const struct test_c_c_data csinh_test_data[] =
TEST_c_c (csinh, 22730, 0x1p-16434L, plus_oflow, 1.217853148905605987081057582351152052687e4924L, OVERFLOW_EXCEPTION),
#endif
+ AUTO_TESTS_c_c (csinh),
+
TEST_c_c (csinh, min_subnorm_value, min_value, min_subnorm_value, min_value, UNDERFLOW_EXCEPTION),
TEST_c_c (csinh, min_value, min_subnorm_value, min_value, min_subnorm_value, UNDERFLOW_EXCEPTION),
};
diff --git a/math/s_csin.c b/math/s_csin.c
index f1ddb4e..ceee25f 100644
--- a/math/s_csin.c
+++ b/math/s_csin.c
@@ -52,6 +52,9 @@ __csin (__complex__ double x)
cosix = 1.0;
}
+ if (negate)
+ sinix = -sinix;
+
if (fabs (__imag__ x) > t)
{
double exp_t = __ieee754_exp (t);
@@ -86,9 +89,6 @@ __csin (__complex__ double x)
__imag__ retval = __ieee754_sinh (__imag__ x) * cosix;
}
- if (negate)
- __real__ retval = -__real__ retval;
-
if (fabs (__real__ retval) < DBL_MIN)
{
volatile double force_underflow
diff --git a/math/s_csinf.c b/math/s_csinf.c
index 6c68189..daca689 100644
--- a/math/s_csinf.c
+++ b/math/s_csinf.c
@@ -52,6 +52,9 @@ __csinf (__complex__ float x)
cosix = 1.0f;
}
+ if (negate)
+ sinix = -sinix;
+
if (fabsf (__imag__ x) > t)
{
float exp_t = __ieee754_expf (t);
@@ -86,9 +89,6 @@ __csinf (__complex__ float x)
__imag__ retval = __ieee754_sinhf (__imag__ x) * cosix;
}
- if (negate)
- __real__ retval = -__real__ retval;
-
if (fabsf (__real__ retval) < FLT_MIN)
{
volatile float force_underflow
diff --git a/math/s_csinh.c b/math/s_csinh.c
index c607c2a..d940c97 100644
--- a/math/s_csinh.c
+++ b/math/s_csinh.c
@@ -52,6 +52,9 @@ __csinh (__complex__ double x)
cosix = 1.0;
}
+ if (negate)
+ cosix = -cosix;
+
if (fabs (__real__ x) > t)
{
double exp_t = __ieee754_exp (t);
@@ -86,9 +89,6 @@ __csinh (__complex__ double x)
__imag__ retval = __ieee754_cosh (__real__ x) * sinix;
}
- if (negate)
- __real__ retval = -__real__ retval;
-
if (fabs (__real__ retval) < DBL_MIN)
{
volatile double force_underflow
diff --git a/math/s_csinhf.c b/math/s_csinhf.c
index 848f5d1..4e0bc03 100644
--- a/math/s_csinhf.c
+++ b/math/s_csinhf.c
@@ -52,6 +52,9 @@ __csinhf (__complex__ float x)
cosix = 1.0f;
}
+ if (negate)
+ cosix = -cosix;
+
if (fabsf (__real__ x) > t)
{
float exp_t = __ieee754_expf (t);
@@ -86,9 +89,6 @@ __csinhf (__complex__ float x)
__imag__ retval = __ieee754_coshf (__real__ x) * sinix;
}
- if (negate)
- __real__ retval = -__real__ retval;
-
if (fabsf (__real__ retval) < FLT_MIN)
{
volatile float force_underflow
diff --git a/math/s_csinhl.c b/math/s_csinhl.c
index a437d16..eeb2212 100644
--- a/math/s_csinhl.c
+++ b/math/s_csinhl.c
@@ -52,6 +52,9 @@ __csinhl (__complex__ long double x)
cosix = 1.0;
}
+ if (negate)
+ cosix = -cosix;
+
if (fabsl (__real__ x) > t)
{
long double exp_t = __ieee754_expl (t);
@@ -86,9 +89,6 @@ __csinhl (__complex__ long double x)
__imag__ retval = __ieee754_coshl (__real__ x) * sinix;
}
- if (negate)
- __real__ retval = -__real__ retval;
-
if (fabsl (__real__ retval) < LDBL_MIN)
{
volatile long double force_underflow
diff --git a/math/s_csinl.c b/math/s_csinl.c
index accaeb5..a4b1eb5 100644
--- a/math/s_csinl.c
+++ b/math/s_csinl.c
@@ -52,6 +52,9 @@ __csinl (__complex__ long double x)
cosix = 1.0;
}
+ if (negate)
+ sinix = -sinix;
+
if (fabsl (__imag__ x) > t)
{
long double exp_t = __ieee754_expl (t);
@@ -86,9 +89,6 @@ __csinl (__complex__ long double x)
__imag__ retval = __ieee754_sinhl (__imag__ x) * cosix;
}
- if (negate)
- __real__ retval = -__real__ retval;
-
if (fabsl (__real__ retval) < LDBL_MIN)
{
volatile long double force_underflow
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index 2e2722d..101831f 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -1120,9 +1120,9 @@ ildouble: 3
ldouble: 3
Function: Real part of "csin_upward":
-double: 1
+double: 2
float: 3
-idouble: 1
+idouble: 2
ifloat: 3
ildouble: 3
ldouble: 3
@@ -1148,9 +1148,9 @@ idouble: 1
ifloat: 1
Function: Real part of "csinh_downward":
-double: 1
+double: 2
float: 2
-idouble: 1
+idouble: 2
ifloat: 2
ildouble: 3
ldouble: 3