about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-09-15 17:46:08 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-09-15 17:46:08 +0000
commit0b87419b690d1711697ed95808527400910ff997 (patch)
tree95c2f39d1c562fc25437dfb20faefbb097e094ef
parent694aabefd2eb3a0e2c5624d7feb1d7310b2bdd8b (diff)
downloadglibc-0b87419b690d1711697ed95808527400910ff997.tar.gz
glibc-0b87419b690d1711697ed95808527400910ff997.tar.xz
glibc-0b87419b690d1711697ed95808527400910ff997.zip
Fix ctan, ctanh missing underflows (bug 18595).
Similar to various other bugs in this area, ctan and ctanh can fail to
raise the underflow exception for some cases of results that are tiny
and inexact.  This patch forces the exception in a similar way to
previous fixes.

Tested for x86_64 and x86.

	[BZ #18595]
	* math/s_ctan.c (__ctan): Force underflow exception for results
	whose real or imaginary part has small absolute value.
	* math/s_ctanf.c (__ctanf): Likewise.
	* math/s_ctanh.c (__ctanh): Likewise.
	* math/s_ctanhf.c (__ctanhf): Likewise.
	* math/s_ctanhl.c (__ctanhl): Likewise.
	* math/s_ctanl.c (__ctanl): Likewise.
	* math/auto-libm-test-in: Do not allow missing underflow for ctan
	and ctanh.  Add more tests of ctan and ctanh.
-rw-r--r--ChangeLog11
-rw-r--r--NEWS8
-rw-r--r--math/auto-libm-test-in26
-rw-r--r--math/auto-libm-test-out1032
-rw-r--r--math/s_ctan.c10
-rw-r--r--math/s_ctanf.c10
-rw-r--r--math/s_ctanh.c10
-rw-r--r--math/s_ctanhf.c10
-rw-r--r--math/s_ctanhl.c10
-rw-r--r--math/s_ctanl.c10
10 files changed, 923 insertions, 214 deletions
diff --git a/ChangeLog b/ChangeLog
index f807e7cf17..56782dd4a7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
 2015-09-15  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #18595]
+	* math/s_ctan.c (__ctan): Force underflow exception for results
+	whose real or imaginary part has small absolute value.
+	* math/s_ctanf.c (__ctanf): Likewise.
+	* math/s_ctanh.c (__ctanh): Likewise.
+	* math/s_ctanhf.c (__ctanhf): Likewise.
+	* math/s_ctanhl.c (__ctanhl): Likewise.
+	* math/s_ctanl.c (__ctanl): Likewise.
+	* math/auto-libm-test-in: Do not allow missing underflow for ctan
+	and ctanh.  Add more tests of ctan and ctanh.
+
 	[BZ #15918]
 	* sysdeps/ieee754/flt-32/e_hypotf.c (__ieee754_hypotf): Simplify
 	handling of cases where one argument is an infinity.
diff --git a/NEWS b/NEWS
index a09ba38f73..797d717fb4 100644
--- a/NEWS
+++ b/NEWS
@@ -11,10 +11,10 @@ Version 2.23
 
   2542, 2543, 2558, 2898, 14341, 14912, 15786, 15918, 16141, 16517, 16519,
   16520, 16521, 16734, 16973, 16985, 17787, 17905, 18084, 18086, 18240,
-  18265, 18370, 18421, 18480, 18525, 18610, 18618, 18647, 18661, 18674,
-  18675, 18681, 18757, 18778, 18781, 18787, 18789, 18790, 18795, 18796,
-  18820, 18823, 18824, 18863, 18870, 18873, 18875, 18887, 18921, 18952,
-  18961, 18966.
+  18265, 18370, 18421, 18480, 18525, 18595, 18610, 18618, 18647, 18661,
+  18674, 18675, 18681, 18757, 18778, 18781, 18787, 18789, 18790, 18795,
+  18796, 18820, 18823, 18824, 18863, 18870, 18873, 18875, 18887, 18921,
+  18952, 18961, 18966.
 
 * The obsolete header <regexp.h> has been removed.  Programs that require
   this header must be updated to use <regex.h> instead.
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 4a8017c49a..8e236c3250 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -1245,11 +1245,14 @@ ctan 0x1.921fb6p+0 0x1p-149
 ctan 0x1.921fb54442d18p+0 0x1p-1074
 ctan 0x1.921fb54442d1846ap+0 0x1p-16445
 
-# Bug 18595: underflow exception may be missing
-ctan min 0 missing-underflow
-ctan -min 0 missing-underflow
-ctan min_subnorm 0 missing-underflow
-ctan -min_subnorm 0 missing-underflow
+ctan min 0
+ctan -min 0
+ctan min_subnorm 0
+ctan -min_subnorm 0
+ctan 0 min
+ctan 0 -min
+ctan 0 min_subnorm
+ctan 0 -min_subnorm
 
 ctanh 0 0
 ctanh 0 -0
@@ -1285,11 +1288,14 @@ ctanh 0x1p-149 0x1.921fb6p+0
 ctanh 0x1p-1074 0x1.921fb54442d18p+0
 ctanh 0x1p-16445 0x1.921fb54442d1846ap+0
 
-# Bug 18595: underflow exception may be missing
-ctanh 0 min missing-underflow
-ctanh 0 -min missing-underflow
-ctanh 0 min_subnorm missing-underflow
-ctanh 0 -min_subnorm missing-underflow
+ctanh 0 min
+ctanh 0 -min
+ctanh 0 min_subnorm
+ctanh 0 -min_subnorm
+ctanh min 0
+ctanh -min 0
+ctanh min_subnorm 0
+ctanh -min_subnorm 0
 
 erf 0
 erf -0
diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out
index a93b7c432f..94efbb9f9c 100644
--- a/math/auto-libm-test-out
+++ b/math/auto-libm-test-out
@@ -109184,7 +109184,7 @@ ctan 0x1.921fb54442d1846ap+0 0x1p-16445
 = ctan tonearest ldbl-128 0x1.921fb54442d1846ap+0L 0x8p-16448L : -0x2.29478136aaf68d7b3b807fb349bap+64L 0x2.55e3001b8e1413fcf7193625f37ap-16316L : inexact-ok
 = ctan towardzero ldbl-128 0x1.921fb54442d1846ap+0L 0x8p-16448L : -0x2.29478136aaf68d7b3b807fb349bap+64L 0x2.55e3001b8e1413fcf7193625f378p-16316L : inexact-ok
 = ctan upward ldbl-128 0x1.921fb54442d1846ap+0L 0x8p-16448L : -0x2.29478136aaf68d7b3b807fb349bap+64L 0x2.55e3001b8e1413fcf7193625f37ap-16316L : inexact-ok
-ctan min 0 missing-underflow
+ctan min 0
 = ctan downward flt-32 0x4p-128f 0x0p+0f : 0x4p-128f 0x0p+0f : inexact-ok underflow-ok errno-erange-ok
 = ctan tonearest flt-32 0x4p-128f 0x0p+0f : 0x4p-128f 0x0p+0f : inexact-ok underflow-ok errno-erange-ok
 = ctan towardzero flt-32 0x4p-128f 0x0p+0f : 0x4p-128f 0x0p+0f : inexact-ok underflow-ok errno-erange-ok
@@ -109225,10 +109225,10 @@ ctan min 0 missing-underflow
 = ctan tonearest ldbl-128 0x4p-1024L 0x0p+0L : 0x4p-1024L 0x0p+0L : inexact-ok
 = ctan towardzero ldbl-128 0x4p-1024L 0x0p+0L : 0x4p-1024L 0x0p+0L : inexact-ok
 = ctan upward ldbl-128 0x4p-1024L 0x0p+0L : 0x4.0000000000000000000000000004p-1024L 0x0p+0L : inexact-ok
-= ctan downward ldbl-128ibm 0x4p-1024L 0x0p+0L : 0x4p-1024L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-128ibm 0x4p-1024L 0x0p+0L : 0x4p-1024L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-128ibm 0x4p-1024L 0x0p+0L : 0x4p-1024L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-128ibm 0x4p-1024L 0x0p+0L : 0x4.0000000000004p-1024L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
+= ctan downward ldbl-128ibm 0x4p-1024L 0x0p+0L : 0x4p-1024L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128ibm 0x4p-1024L 0x0p+0L : 0x4p-1024L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128ibm 0x4p-1024L 0x0p+0L : 0x4p-1024L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128ibm 0x4p-1024L 0x0p+0L : 0x4.0000000000004p-1024L 0x0p+0L : inexact-ok underflow errno-erange-ok
 = ctan downward ldbl-96-intel 0x4p-16384L 0x0p+0L : 0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan tonearest ldbl-96-intel 0x4p-16384L 0x0p+0L : 0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan towardzero ldbl-96-intel 0x4p-16384L 0x0p+0L : 0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
@@ -109241,18 +109241,18 @@ ctan min 0 missing-underflow
 = ctan tonearest ldbl-128 0x4p-16384L 0x0p+0L : 0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan towardzero ldbl-128 0x4p-16384L 0x0p+0L : 0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan upward ldbl-128 0x4p-16384L 0x0p+0L : 0x4.0000000000000000000000000004p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
-= ctan downward ldbl-96-intel 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-96-intel 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-96-intel 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-96-intel 0x2p-16384L 0x0p+0L : 0x2.0000000000000008p-16384L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
+= ctan downward ldbl-96-intel 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-96-intel 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-96-intel 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-96-intel 0x2p-16384L 0x0p+0L : 0x2.0000000000000008p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
 = ctan downward ldbl-96-m68k 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan tonearest ldbl-96-m68k 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan towardzero ldbl-96-m68k 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan upward ldbl-96-m68k 0x2p-16384L 0x0p+0L : 0x2.0000000000000004p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
-= ctan downward ldbl-128 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-128 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-128 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-128 0x2p-16384L 0x0p+0L : 0x2.0000000000000000000000000004p-16384L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
+= ctan downward ldbl-128 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128 0x2p-16384L 0x0p+0L : 0x2.0000000000000000000000000004p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
 = ctan downward dbl-64 0x8p-972 0x0p+0 : 0x8p-972 0x0p+0 : inexact-ok
 = ctan tonearest dbl-64 0x8p-972 0x0p+0 : 0x8p-972 0x0p+0 : inexact-ok
 = ctan towardzero dbl-64 0x8p-972 0x0p+0 : 0x8p-972 0x0p+0 : inexact-ok
@@ -109273,7 +109273,7 @@ ctan min 0 missing-underflow
 = ctan tonearest ldbl-128ibm 0x8p-972L 0x0p+0L : 0x8p-972L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan towardzero ldbl-128ibm 0x8p-972L 0x0p+0L : 0x8p-972L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan upward ldbl-128ibm 0x8p-972L 0x0p+0L : 0x8.00000000000000000000000004p-972L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
-ctan -min 0 missing-underflow
+ctan -min 0
 = ctan downward flt-32 -0x4p-128f 0x0p+0f : -0x4.000008p-128f 0x0p+0f : inexact-ok underflow-ok errno-erange-ok
 = ctan tonearest flt-32 -0x4p-128f 0x0p+0f : -0x4p-128f 0x0p+0f : inexact-ok underflow-ok errno-erange-ok
 = ctan towardzero flt-32 -0x4p-128f 0x0p+0f : -0x4p-128f 0x0p+0f : inexact-ok underflow-ok errno-erange-ok
@@ -109314,10 +109314,10 @@ ctan -min 0 missing-underflow
 = ctan tonearest ldbl-128 -0x4p-1024L 0x0p+0L : -0x4p-1024L 0x0p+0L : inexact-ok
 = ctan towardzero ldbl-128 -0x4p-1024L 0x0p+0L : -0x4p-1024L 0x0p+0L : inexact-ok
 = ctan upward ldbl-128 -0x4p-1024L 0x0p+0L : -0x4p-1024L 0x0p+0L : inexact-ok
-= ctan downward ldbl-128ibm -0x4p-1024L 0x0p+0L : -0x4.0000000000004p-1024L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-128ibm -0x4p-1024L 0x0p+0L : -0x4p-1024L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-128ibm -0x4p-1024L 0x0p+0L : -0x4p-1024L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-128ibm -0x4p-1024L 0x0p+0L : -0x4p-1024L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
+= ctan downward ldbl-128ibm -0x4p-1024L 0x0p+0L : -0x4.0000000000004p-1024L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128ibm -0x4p-1024L 0x0p+0L : -0x4p-1024L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128ibm -0x4p-1024L 0x0p+0L : -0x4p-1024L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128ibm -0x4p-1024L 0x0p+0L : -0x4p-1024L 0x0p+0L : inexact-ok underflow errno-erange-ok
 = ctan downward ldbl-96-intel -0x4p-16384L 0x0p+0L : -0x4.0000000000000008p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan tonearest ldbl-96-intel -0x4p-16384L 0x0p+0L : -0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan towardzero ldbl-96-intel -0x4p-16384L 0x0p+0L : -0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
@@ -109330,18 +109330,18 @@ ctan -min 0 missing-underflow
 = ctan tonearest ldbl-128 -0x4p-16384L 0x0p+0L : -0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan towardzero ldbl-128 -0x4p-16384L 0x0p+0L : -0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan upward ldbl-128 -0x4p-16384L 0x0p+0L : -0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
-= ctan downward ldbl-96-intel -0x2p-16384L 0x0p+0L : -0x2.0000000000000008p-16384L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-96-intel -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-96-intel -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-96-intel -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
+= ctan downward ldbl-96-intel -0x2p-16384L 0x0p+0L : -0x2.0000000000000008p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-96-intel -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-96-intel -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-96-intel -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
 = ctan downward ldbl-96-m68k -0x2p-16384L 0x0p+0L : -0x2.0000000000000004p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan tonearest ldbl-96-m68k -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan towardzero ldbl-96-m68k -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan upward ldbl-96-m68k -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
-= ctan downward ldbl-128 -0x2p-16384L 0x0p+0L : -0x2.0000000000000000000000000004p-16384L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-128 -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-128 -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-128 -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
+= ctan downward ldbl-128 -0x2p-16384L 0x0p+0L : -0x2.0000000000000000000000000004p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128 -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128 -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128 -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
 = ctan downward dbl-64 -0x8p-972 0x0p+0 : -0x8.0000000000008p-972 0x0p+0 : inexact-ok
 = ctan tonearest dbl-64 -0x8p-972 0x0p+0 : -0x8p-972 0x0p+0 : inexact-ok
 = ctan towardzero dbl-64 -0x8p-972 0x0p+0 : -0x8p-972 0x0p+0 : inexact-ok
@@ -109362,11 +109362,11 @@ ctan -min 0 missing-underflow
 = ctan tonearest ldbl-128ibm -0x8p-972L 0x0p+0L : -0x8p-972L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan towardzero ldbl-128ibm -0x8p-972L 0x0p+0L : -0x8p-972L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
 = ctan upward ldbl-128ibm -0x8p-972L 0x0p+0L : -0x8p-972L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
-ctan min_subnorm 0 missing-underflow
-= ctan downward flt-32 0x8p-152f 0x0p+0f : 0x8p-152f 0x0p+0f : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest flt-32 0x8p-152f 0x0p+0f : 0x8p-152f 0x0p+0f : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero flt-32 0x8p-152f 0x0p+0f : 0x8p-152f 0x0p+0f : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward flt-32 0x8p-152f 0x0p+0f : 0x1p-148f 0x0p+0f : inexact-ok underflow underflow-ok errno-erange-ok
+ctan min_subnorm 0
+= ctan downward flt-32 0x8p-152f 0x0p+0f : 0x8p-152f 0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctan tonearest flt-32 0x8p-152f 0x0p+0f : 0x8p-152f 0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctan towardzero flt-32 0x8p-152f 0x0p+0f : 0x8p-152f 0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctan upward flt-32 0x8p-152f 0x0p+0f : 0x1p-148f 0x0p+0f : inexact-ok underflow errno-erange-ok
 = ctan downward dbl-64 0x8p-152 0x0p+0 : 0x8p-152 0x0p+0 : inexact-ok
 = ctan tonearest dbl-64 0x8p-152 0x0p+0 : 0x8p-152 0x0p+0 : inexact-ok
 = ctan towardzero dbl-64 0x8p-152 0x0p+0 : 0x8p-152 0x0p+0 : inexact-ok
@@ -109387,10 +109387,10 @@ ctan min_subnorm 0 missing-underflow
 = ctan tonearest ldbl-128ibm 0x8p-152L 0x0p+0L : 0x8p-152L 0x0p+0L : inexact-ok
 = ctan towardzero ldbl-128ibm 0x8p-152L 0x0p+0L : 0x8p-152L 0x0p+0L : inexact-ok
 = ctan upward ldbl-128ibm 0x8p-152L 0x0p+0L : 0x8.00000000000000000000000004p-152L 0x0p+0L : inexact-ok
-= ctan downward dbl-64 0x4p-1076 0x0p+0 : 0x4p-1076 0x0p+0 : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest dbl-64 0x4p-1076 0x0p+0 : 0x4p-1076 0x0p+0 : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero dbl-64 0x4p-1076 0x0p+0 : 0x4p-1076 0x0p+0 : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward dbl-64 0x4p-1076 0x0p+0 : 0x8p-1076 0x0p+0 : inexact-ok underflow underflow-ok errno-erange-ok
+= ctan downward dbl-64 0x4p-1076 0x0p+0 : 0x4p-1076 0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctan tonearest dbl-64 0x4p-1076 0x0p+0 : 0x4p-1076 0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctan towardzero dbl-64 0x4p-1076 0x0p+0 : 0x4p-1076 0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctan upward dbl-64 0x4p-1076 0x0p+0 : 0x8p-1076 0x0p+0 : inexact-ok underflow errno-erange-ok
 = ctan downward ldbl-96-intel 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok
 = ctan tonearest ldbl-96-intel 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok
 = ctan towardzero ldbl-96-intel 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok
@@ -109403,39 +109403,39 @@ ctan min_subnorm 0 missing-underflow
 = ctan tonearest ldbl-128 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok
 = ctan towardzero ldbl-128 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok
 = ctan upward ldbl-128 0x4p-1076L 0x0p+0L : 0x4.0000000000000000000000000004p-1076L 0x0p+0L : inexact-ok
-= ctan downward ldbl-128ibm 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-128ibm 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-128ibm 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-128ibm 0x4p-1076L 0x0p+0L : 0x8p-1076L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan downward ldbl-96-intel 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-96-intel 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-96-intel 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-96-intel 0x8p-16448L 0x0p+0L : 0x1p-16444L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan downward ldbl-96-m68k 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-96-m68k 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-96-m68k 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-96-m68k 0x8p-16448L 0x0p+0L : 0xcp-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan downward ldbl-128 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-128 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-128 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-128 0x8p-16448L 0x0p+0L : 0x8.000000000004p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan downward ldbl-96-m68k 0x4p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-96-m68k 0x4p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-96-m68k 0x4p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-96-m68k 0x4p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan downward ldbl-128 0x4p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-128 0x4p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-128 0x4p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-128 0x4p-16448L 0x0p+0L : 0x4.000000000004p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan downward ldbl-128 0x4p-16496L 0x0p+0L : 0x4p-16496L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-128 0x4p-16496L 0x0p+0L : 0x4p-16496L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-128 0x4p-16496L 0x0p+0L : 0x4p-16496L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-128 0x4p-16496L 0x0p+0L : 0x8p-16496L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-ctan -min_subnorm 0 missing-underflow
-= ctan downward flt-32 -0x8p-152f 0x0p+0f : -0x1p-148f 0x0p+0f : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest flt-32 -0x8p-152f 0x0p+0f : -0x8p-152f 0x0p+0f : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero flt-32 -0x8p-152f 0x0p+0f : -0x8p-152f 0x0p+0f : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward flt-32 -0x8p-152f 0x0p+0f : -0x8p-152f 0x0p+0f : inexact-ok underflow underflow-ok errno-erange-ok
+= ctan downward ldbl-128ibm 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128ibm 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128ibm 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128ibm 0x4p-1076L 0x0p+0L : 0x8p-1076L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-intel 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-96-intel 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-96-intel 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-96-intel 0x8p-16448L 0x0p+0L : 0x1p-16444L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-m68k 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-96-m68k 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-96-m68k 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-96-m68k 0x8p-16448L 0x0p+0L : 0xcp-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-128 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128 0x8p-16448L 0x0p+0L : 0x8.000000000004p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-m68k 0x4p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-96-m68k 0x4p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-96-m68k 0x4p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-96-m68k 0x4p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-128 0x4p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128 0x4p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128 0x4p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128 0x4p-16448L 0x0p+0L : 0x4.000000000004p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-128 0x4p-16496L 0x0p+0L : 0x4p-16496L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128 0x4p-16496L 0x0p+0L : 0x4p-16496L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128 0x4p-16496L 0x0p+0L : 0x4p-16496L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128 0x4p-16496L 0x0p+0L : 0x8p-16496L 0x0p+0L : inexact-ok underflow errno-erange-ok
+ctan -min_subnorm 0
+= ctan downward flt-32 -0x8p-152f 0x0p+0f : -0x1p-148f 0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctan tonearest flt-32 -0x8p-152f 0x0p+0f : -0x8p-152f 0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctan towardzero flt-32 -0x8p-152f 0x0p+0f : -0x8p-152f 0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctan upward flt-32 -0x8p-152f 0x0p+0f : -0x8p-152f 0x0p+0f : inexact-ok underflow errno-erange-ok
 = ctan downward dbl-64 -0x8p-152 0x0p+0 : -0x8.0000000000008p-152 0x0p+0 : inexact-ok
 = ctan tonearest dbl-64 -0x8p-152 0x0p+0 : -0x8p-152 0x0p+0 : inexact-ok
 = ctan towardzero dbl-64 -0x8p-152 0x0p+0 : -0x8p-152 0x0p+0 : inexact-ok
@@ -109456,10 +109456,10 @@ ctan -min_subnorm 0 missing-underflow
 = ctan tonearest ldbl-128ibm -0x8p-152L 0x0p+0L : -0x8p-152L 0x0p+0L : inexact-ok
 = ctan towardzero ldbl-128ibm -0x8p-152L 0x0p+0L : -0x8p-152L 0x0p+0L : inexact-ok
 = ctan upward ldbl-128ibm -0x8p-152L 0x0p+0L : -0x8p-152L 0x0p+0L : inexact-ok
-= ctan downward dbl-64 -0x4p-1076 0x0p+0 : -0x8p-1076 0x0p+0 : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest dbl-64 -0x4p-1076 0x0p+0 : -0x4p-1076 0x0p+0 : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero dbl-64 -0x4p-1076 0x0p+0 : -0x4p-1076 0x0p+0 : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward dbl-64 -0x4p-1076 0x0p+0 : -0x4p-1076 0x0p+0 : inexact-ok underflow underflow-ok errno-erange-ok
+= ctan downward dbl-64 -0x4p-1076 0x0p+0 : -0x8p-1076 0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctan tonearest dbl-64 -0x4p-1076 0x0p+0 : -0x4p-1076 0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctan towardzero dbl-64 -0x4p-1076 0x0p+0 : -0x4p-1076 0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctan upward dbl-64 -0x4p-1076 0x0p+0 : -0x4p-1076 0x0p+0 : inexact-ok underflow errno-erange-ok
 = ctan downward ldbl-96-intel -0x4p-1076L 0x0p+0L : -0x4.0000000000000008p-1076L 0x0p+0L : inexact-ok
 = ctan tonearest ldbl-96-intel -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok
 = ctan towardzero ldbl-96-intel -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok
@@ -109472,34 +109472,350 @@ ctan -min_subnorm 0 missing-underflow
 = ctan tonearest ldbl-128 -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok
 = ctan towardzero ldbl-128 -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok
 = ctan upward ldbl-128 -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok
-= ctan downward ldbl-128ibm -0x4p-1076L 0x0p+0L : -0x8p-1076L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-128ibm -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-128ibm -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-128ibm -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan downward ldbl-96-intel -0x8p-16448L 0x0p+0L : -0x1p-16444L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-96-intel -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-96-intel -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-96-intel -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan downward ldbl-96-m68k -0x8p-16448L 0x0p+0L : -0xcp-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-96-m68k -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-96-m68k -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-96-m68k -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan downward ldbl-128 -0x8p-16448L 0x0p+0L : -0x8.000000000004p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-128 -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-128 -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-128 -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan downward ldbl-96-m68k -0x4p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-96-m68k -0x4p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-96-m68k -0x4p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-96-m68k -0x4p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan downward ldbl-128 -0x4p-16448L 0x0p+0L : -0x4.000000000004p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-128 -0x4p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-128 -0x4p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-128 -0x4p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan downward ldbl-128 -0x4p-16496L 0x0p+0L : -0x8p-16496L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan tonearest ldbl-128 -0x4p-16496L 0x0p+0L : -0x4p-16496L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan towardzero ldbl-128 -0x4p-16496L 0x0p+0L : -0x4p-16496L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctan upward ldbl-128 -0x4p-16496L 0x0p+0L : -0x4p-16496L 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
+= ctan downward ldbl-128ibm -0x4p-1076L 0x0p+0L : -0x8p-1076L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128ibm -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128ibm -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128ibm -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-intel -0x8p-16448L 0x0p+0L : -0x1p-16444L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-96-intel -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-96-intel -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-96-intel -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-m68k -0x8p-16448L 0x0p+0L : -0xcp-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-96-m68k -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-96-m68k -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-96-m68k -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-128 -0x8p-16448L 0x0p+0L : -0x8.000000000004p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128 -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128 -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128 -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-m68k -0x4p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-96-m68k -0x4p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-96-m68k -0x4p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-96-m68k -0x4p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-128 -0x4p-16448L 0x0p+0L : -0x4.000000000004p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128 -0x4p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128 -0x4p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128 -0x4p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-128 -0x4p-16496L 0x0p+0L : -0x8p-16496L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128 -0x4p-16496L 0x0p+0L : -0x4p-16496L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128 -0x4p-16496L 0x0p+0L : -0x4p-16496L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128 -0x4p-16496L 0x0p+0L : -0x4p-16496L 0x0p+0L : inexact-ok underflow errno-erange-ok
+ctan 0 min
+= ctan downward flt-32 0x0p+0f 0x4p-128f : 0x0p+0f 0x3.fffff8p-128f : inexact-ok underflow-ok errno-erange-ok
+= ctan tonearest flt-32 0x0p+0f 0x4p-128f : 0x0p+0f 0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= ctan towardzero flt-32 0x0p+0f 0x4p-128f : 0x0p+0f 0x3.fffff8p-128f : inexact-ok underflow-ok errno-erange-ok
+= ctan upward flt-32 0x0p+0f 0x4p-128f : 0x0p+0f 0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= ctan downward dbl-64 0x0p+0 0x4p-128 : 0x0p+0 0x3.ffffffffffffep-128 : inexact-ok
+= ctan tonearest dbl-64 0x0p+0 0x4p-128 : 0x0p+0 0x4p-128 : inexact-ok
+= ctan towardzero dbl-64 0x0p+0 0x4p-128 : 0x0p+0 0x3.ffffffffffffep-128 : inexact-ok
+= ctan upward dbl-64 0x0p+0 0x4p-128 : 0x0p+0 0x4p-128 : inexact-ok
+= ctan downward ldbl-96-intel 0x0p+0L 0x4p-128L : 0x0p+0L 0x3.fffffffffffffffcp-128L : inexact-ok
+= ctan tonearest ldbl-96-intel 0x0p+0L 0x4p-128L : 0x0p+0L 0x4p-128L : inexact-ok
+= ctan towardzero ldbl-96-intel 0x0p+0L 0x4p-128L : 0x0p+0L 0x3.fffffffffffffffcp-128L : inexact-ok
+= ctan upward ldbl-96-intel 0x0p+0L 0x4p-128L : 0x0p+0L 0x4p-128L : inexact-ok
+= ctan downward ldbl-96-m68k 0x0p+0L 0x4p-128L : 0x0p+0L 0x3.fffffffffffffffcp-128L : inexact-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L 0x4p-128L : 0x0p+0L 0x4p-128L : inexact-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L 0x4p-128L : 0x0p+0L 0x3.fffffffffffffffcp-128L : inexact-ok
+= ctan upward ldbl-96-m68k 0x0p+0L 0x4p-128L : 0x0p+0L 0x4p-128L : inexact-ok
+= ctan downward ldbl-128 0x0p+0L 0x4p-128L : 0x0p+0L 0x3.fffffffffffffffffffffffffffep-128L : inexact-ok
+= ctan tonearest ldbl-128 0x0p+0L 0x4p-128L : 0x0p+0L 0x4p-128L : inexact-ok
+= ctan towardzero ldbl-128 0x0p+0L 0x4p-128L : 0x0p+0L 0x3.fffffffffffffffffffffffffffep-128L : inexact-ok
+= ctan upward ldbl-128 0x0p+0L 0x4p-128L : 0x0p+0L 0x4p-128L : inexact-ok
+= ctan downward ldbl-128ibm 0x0p+0L 0x4p-128L : 0x0p+0L 0x3.ffffffffffffffffffffffffffp-128L : inexact-ok
+= ctan tonearest ldbl-128ibm 0x0p+0L 0x4p-128L : 0x0p+0L 0x4p-128L : inexact-ok
+= ctan towardzero ldbl-128ibm 0x0p+0L 0x4p-128L : 0x0p+0L 0x3.ffffffffffffffffffffffffffp-128L : inexact-ok
+= ctan upward ldbl-128ibm 0x0p+0L 0x4p-128L : 0x0p+0L 0x4p-128L : inexact-ok
+= ctan downward dbl-64 0x0p+0 0x4p-1024 : 0x0p+0 0x3.ffffffffffffcp-1024 : inexact-ok underflow-ok errno-erange-ok
+= ctan tonearest dbl-64 0x0p+0 0x4p-1024 : 0x0p+0 0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= ctan towardzero dbl-64 0x0p+0 0x4p-1024 : 0x0p+0 0x3.ffffffffffffcp-1024 : inexact-ok underflow-ok errno-erange-ok
+= ctan upward dbl-64 0x0p+0 0x4p-1024 : 0x0p+0 0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= ctan downward ldbl-96-intel 0x0p+0L 0x4p-1024L : 0x0p+0L 0x3.fffffffffffffffcp-1024L : inexact-ok
+= ctan tonearest ldbl-96-intel 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4p-1024L : inexact-ok
+= ctan towardzero ldbl-96-intel 0x0p+0L 0x4p-1024L : 0x0p+0L 0x3.fffffffffffffffcp-1024L : inexact-ok
+= ctan upward ldbl-96-intel 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4p-1024L : inexact-ok
+= ctan downward ldbl-96-m68k 0x0p+0L 0x4p-1024L : 0x0p+0L 0x3.fffffffffffffffcp-1024L : inexact-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4p-1024L : inexact-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L 0x4p-1024L : 0x0p+0L 0x3.fffffffffffffffcp-1024L : inexact-ok
+= ctan upward ldbl-96-m68k 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4p-1024L : inexact-ok
+= ctan downward ldbl-128 0x0p+0L 0x4p-1024L : 0x0p+0L 0x3.fffffffffffffffffffffffffffep-1024L : inexact-ok
+= ctan tonearest ldbl-128 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4p-1024L : inexact-ok
+= ctan towardzero ldbl-128 0x0p+0L 0x4p-1024L : 0x0p+0L 0x3.fffffffffffffffffffffffffffep-1024L : inexact-ok
+= ctan upward ldbl-128 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4p-1024L : inexact-ok
+= ctan downward ldbl-128ibm 0x0p+0L 0x4p-1024L : 0x0p+0L 0x3.ffffffffffffcp-1024L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128ibm 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4p-1024L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128ibm 0x0p+0L 0x4p-1024L : 0x0p+0L 0x3.ffffffffffffcp-1024L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128ibm 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4p-1024L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-intel 0x0p+0L 0x4p-16384L : 0x0p+0L 0x3.fffffffffffffff8p-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan tonearest ldbl-96-intel 0x0p+0L 0x4p-16384L : 0x0p+0L 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan towardzero ldbl-96-intel 0x0p+0L 0x4p-16384L : 0x0p+0L 0x3.fffffffffffffff8p-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan upward ldbl-96-intel 0x0p+0L 0x4p-16384L : 0x0p+0L 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan downward ldbl-96-m68k 0x0p+0L 0x4p-16384L : 0x0p+0L 0x3.fffffffffffffffcp-16384L : inexact-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L 0x4p-16384L : 0x0p+0L 0x4p-16384L : inexact-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L 0x4p-16384L : 0x0p+0L 0x3.fffffffffffffffcp-16384L : inexact-ok
+= ctan upward ldbl-96-m68k 0x0p+0L 0x4p-16384L : 0x0p+0L 0x4p-16384L : inexact-ok
+= ctan downward ldbl-128 0x0p+0L 0x4p-16384L : 0x0p+0L 0x3.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan tonearest ldbl-128 0x0p+0L 0x4p-16384L : 0x0p+0L 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan towardzero ldbl-128 0x0p+0L 0x4p-16384L : 0x0p+0L 0x3.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan upward ldbl-128 0x0p+0L 0x4p-16384L : 0x0p+0L 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan downward ldbl-96-intel 0x0p+0L 0x2p-16384L : 0x0p+0L 0x1.fffffffffffffff8p-16384L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-96-intel 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-96-intel 0x0p+0L 0x2p-16384L : 0x0p+0L 0x1.fffffffffffffff8p-16384L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-96-intel 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-m68k 0x0p+0L 0x2p-16384L : 0x0p+0L 0x1.fffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L 0x2p-16384L : 0x0p+0L 0x1.fffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan upward ldbl-96-m68k 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan downward ldbl-128 0x0p+0L 0x2p-16384L : 0x0p+0L 0x1.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128 0x0p+0L 0x2p-16384L : 0x0p+0L 0x1.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctan downward dbl-64 0x0p+0 0x8p-972 : 0x0p+0 0x7.ffffffffffffcp-972 : inexact-ok
+= ctan tonearest dbl-64 0x0p+0 0x8p-972 : 0x0p+0 0x8p-972 : inexact-ok
+= ctan towardzero dbl-64 0x0p+0 0x8p-972 : 0x0p+0 0x7.ffffffffffffcp-972 : inexact-ok
+= ctan upward dbl-64 0x0p+0 0x8p-972 : 0x0p+0 0x8p-972 : inexact-ok
+= ctan downward ldbl-96-intel 0x0p+0L 0x8p-972L : 0x0p+0L 0x7.fffffffffffffff8p-972L : inexact-ok
+= ctan tonearest ldbl-96-intel 0x0p+0L 0x8p-972L : 0x0p+0L 0x8p-972L : inexact-ok
+= ctan towardzero ldbl-96-intel 0x0p+0L 0x8p-972L : 0x0p+0L 0x7.fffffffffffffff8p-972L : inexact-ok
+= ctan upward ldbl-96-intel 0x0p+0L 0x8p-972L : 0x0p+0L 0x8p-972L : inexact-ok
+= ctan downward ldbl-96-m68k 0x0p+0L 0x8p-972L : 0x0p+0L 0x7.fffffffffffffff8p-972L : inexact-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L 0x8p-972L : 0x0p+0L 0x8p-972L : inexact-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L 0x8p-972L : 0x0p+0L 0x7.fffffffffffffff8p-972L : inexact-ok
+= ctan upward ldbl-96-m68k 0x0p+0L 0x8p-972L : 0x0p+0L 0x8p-972L : inexact-ok
+= ctan downward ldbl-128 0x0p+0L 0x8p-972L : 0x0p+0L 0x7.fffffffffffffffffffffffffffcp-972L : inexact-ok
+= ctan tonearest ldbl-128 0x0p+0L 0x8p-972L : 0x0p+0L 0x8p-972L : inexact-ok
+= ctan towardzero ldbl-128 0x0p+0L 0x8p-972L : 0x0p+0L 0x7.fffffffffffffffffffffffffffcp-972L : inexact-ok
+= ctan upward ldbl-128 0x0p+0L 0x8p-972L : 0x0p+0L 0x8p-972L : inexact-ok
+= ctan downward ldbl-128ibm 0x0p+0L 0x8p-972L : 0x0p+0L 0x7.fffffffffffffffffffffffffcp-972L : inexact-ok underflow-ok errno-erange-ok
+= ctan tonearest ldbl-128ibm 0x0p+0L 0x8p-972L : 0x0p+0L 0x8p-972L : inexact-ok underflow-ok errno-erange-ok
+= ctan towardzero ldbl-128ibm 0x0p+0L 0x8p-972L : 0x0p+0L 0x7.fffffffffffffffffffffffffcp-972L : inexact-ok underflow-ok errno-erange-ok
+= ctan upward ldbl-128ibm 0x0p+0L 0x8p-972L : 0x0p+0L 0x8p-972L : inexact-ok underflow-ok errno-erange-ok
+ctan 0 -min
+= ctan downward flt-32 0x0p+0f -0x4p-128f : 0x0p+0f -0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= ctan tonearest flt-32 0x0p+0f -0x4p-128f : 0x0p+0f -0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= ctan towardzero flt-32 0x0p+0f -0x4p-128f : 0x0p+0f -0x3.fffff8p-128f : inexact-ok underflow-ok errno-erange-ok
+= ctan upward flt-32 0x0p+0f -0x4p-128f : 0x0p+0f -0x3.fffff8p-128f : inexact-ok underflow-ok errno-erange-ok
+= ctan downward dbl-64 0x0p+0 -0x4p-128 : 0x0p+0 -0x4p-128 : inexact-ok
+= ctan tonearest dbl-64 0x0p+0 -0x4p-128 : 0x0p+0 -0x4p-128 : inexact-ok
+= ctan towardzero dbl-64 0x0p+0 -0x4p-128 : 0x0p+0 -0x3.ffffffffffffep-128 : inexact-ok
+= ctan upward dbl-64 0x0p+0 -0x4p-128 : 0x0p+0 -0x3.ffffffffffffep-128 : inexact-ok
+= ctan downward ldbl-96-intel 0x0p+0L -0x4p-128L : 0x0p+0L -0x4p-128L : inexact-ok
+= ctan tonearest ldbl-96-intel 0x0p+0L -0x4p-128L : 0x0p+0L -0x4p-128L : inexact-ok
+= ctan towardzero ldbl-96-intel 0x0p+0L -0x4p-128L : 0x0p+0L -0x3.fffffffffffffffcp-128L : inexact-ok
+= ctan upward ldbl-96-intel 0x0p+0L -0x4p-128L : 0x0p+0L -0x3.fffffffffffffffcp-128L : inexact-ok
+= ctan downward ldbl-96-m68k 0x0p+0L -0x4p-128L : 0x0p+0L -0x4p-128L : inexact-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L -0x4p-128L : 0x0p+0L -0x4p-128L : inexact-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L -0x4p-128L : 0x0p+0L -0x3.fffffffffffffffcp-128L : inexact-ok
+= ctan upward ldbl-96-m68k 0x0p+0L -0x4p-128L : 0x0p+0L -0x3.fffffffffffffffcp-128L : inexact-ok
+= ctan downward ldbl-128 0x0p+0L -0x4p-128L : 0x0p+0L -0x4p-128L : inexact-ok
+= ctan tonearest ldbl-128 0x0p+0L -0x4p-128L : 0x0p+0L -0x4p-128L : inexact-ok
+= ctan towardzero ldbl-128 0x0p+0L -0x4p-128L : 0x0p+0L -0x3.fffffffffffffffffffffffffffep-128L : inexact-ok
+= ctan upward ldbl-128 0x0p+0L -0x4p-128L : 0x0p+0L -0x3.fffffffffffffffffffffffffffep-128L : inexact-ok
+= ctan downward ldbl-128ibm 0x0p+0L -0x4p-128L : 0x0p+0L -0x4p-128L : inexact-ok
+= ctan tonearest ldbl-128ibm 0x0p+0L -0x4p-128L : 0x0p+0L -0x4p-128L : inexact-ok
+= ctan towardzero ldbl-128ibm 0x0p+0L -0x4p-128L : 0x0p+0L -0x3.ffffffffffffffffffffffffffp-128L : inexact-ok
+= ctan upward ldbl-128ibm 0x0p+0L -0x4p-128L : 0x0p+0L -0x3.ffffffffffffffffffffffffffp-128L : inexact-ok
+= ctan downward dbl-64 0x0p+0 -0x4p-1024 : 0x0p+0 -0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= ctan tonearest dbl-64 0x0p+0 -0x4p-1024 : 0x0p+0 -0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= ctan towardzero dbl-64 0x0p+0 -0x4p-1024 : 0x0p+0 -0x3.ffffffffffffcp-1024 : inexact-ok underflow-ok errno-erange-ok
+= ctan upward dbl-64 0x0p+0 -0x4p-1024 : 0x0p+0 -0x3.ffffffffffffcp-1024 : inexact-ok underflow-ok errno-erange-ok
+= ctan downward ldbl-96-intel 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4p-1024L : inexact-ok
+= ctan tonearest ldbl-96-intel 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4p-1024L : inexact-ok
+= ctan towardzero ldbl-96-intel 0x0p+0L -0x4p-1024L : 0x0p+0L -0x3.fffffffffffffffcp-1024L : inexact-ok
+= ctan upward ldbl-96-intel 0x0p+0L -0x4p-1024L : 0x0p+0L -0x3.fffffffffffffffcp-1024L : inexact-ok
+= ctan downward ldbl-96-m68k 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4p-1024L : inexact-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4p-1024L : inexact-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L -0x4p-1024L : 0x0p+0L -0x3.fffffffffffffffcp-1024L : inexact-ok
+= ctan upward ldbl-96-m68k 0x0p+0L -0x4p-1024L : 0x0p+0L -0x3.fffffffffffffffcp-1024L : inexact-ok
+= ctan downward ldbl-128 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4p-1024L : inexact-ok
+= ctan tonearest ldbl-128 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4p-1024L : inexact-ok
+= ctan towardzero ldbl-128 0x0p+0L -0x4p-1024L : 0x0p+0L -0x3.fffffffffffffffffffffffffffep-1024L : inexact-ok
+= ctan upward ldbl-128 0x0p+0L -0x4p-1024L : 0x0p+0L -0x3.fffffffffffffffffffffffffffep-1024L : inexact-ok
+= ctan downward ldbl-128ibm 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4p-1024L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128ibm 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4p-1024L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128ibm 0x0p+0L -0x4p-1024L : 0x0p+0L -0x3.ffffffffffffcp-1024L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128ibm 0x0p+0L -0x4p-1024L : 0x0p+0L -0x3.ffffffffffffcp-1024L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-intel 0x0p+0L -0x4p-16384L : 0x0p+0L -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan tonearest ldbl-96-intel 0x0p+0L -0x4p-16384L : 0x0p+0L -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan towardzero ldbl-96-intel 0x0p+0L -0x4p-16384L : 0x0p+0L -0x3.fffffffffffffff8p-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan upward ldbl-96-intel 0x0p+0L -0x4p-16384L : 0x0p+0L -0x3.fffffffffffffff8p-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan downward ldbl-96-m68k 0x0p+0L -0x4p-16384L : 0x0p+0L -0x4p-16384L : inexact-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L -0x4p-16384L : 0x0p+0L -0x4p-16384L : inexact-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L -0x4p-16384L : 0x0p+0L -0x3.fffffffffffffffcp-16384L : inexact-ok
+= ctan upward ldbl-96-m68k 0x0p+0L -0x4p-16384L : 0x0p+0L -0x3.fffffffffffffffcp-16384L : inexact-ok
+= ctan downward ldbl-128 0x0p+0L -0x4p-16384L : 0x0p+0L -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan tonearest ldbl-128 0x0p+0L -0x4p-16384L : 0x0p+0L -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan towardzero ldbl-128 0x0p+0L -0x4p-16384L : 0x0p+0L -0x3.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan upward ldbl-128 0x0p+0L -0x4p-16384L : 0x0p+0L -0x3.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan downward ldbl-96-intel 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-96-intel 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-96-intel 0x0p+0L -0x2p-16384L : 0x0p+0L -0x1.fffffffffffffff8p-16384L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-96-intel 0x0p+0L -0x2p-16384L : 0x0p+0L -0x1.fffffffffffffff8p-16384L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-m68k 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L -0x2p-16384L : 0x0p+0L -0x1.fffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan upward ldbl-96-m68k 0x0p+0L -0x2p-16384L : 0x0p+0L -0x1.fffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok
+= ctan downward ldbl-128 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128 0x0p+0L -0x2p-16384L : 0x0p+0L -0x1.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128 0x0p+0L -0x2p-16384L : 0x0p+0L -0x1.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow errno-erange-ok
+= ctan downward dbl-64 0x0p+0 -0x8p-972 : 0x0p+0 -0x8p-972 : inexact-ok
+= ctan tonearest dbl-64 0x0p+0 -0x8p-972 : 0x0p+0 -0x8p-972 : inexact-ok
+= ctan towardzero dbl-64 0x0p+0 -0x8p-972 : 0x0p+0 -0x7.ffffffffffffcp-972 : inexact-ok
+= ctan upward dbl-64 0x0p+0 -0x8p-972 : 0x0p+0 -0x7.ffffffffffffcp-972 : inexact-ok
+= ctan downward ldbl-96-intel 0x0p+0L -0x8p-972L : 0x0p+0L -0x8p-972L : inexact-ok
+= ctan tonearest ldbl-96-intel 0x0p+0L -0x8p-972L : 0x0p+0L -0x8p-972L : inexact-ok
+= ctan towardzero ldbl-96-intel 0x0p+0L -0x8p-972L : 0x0p+0L -0x7.fffffffffffffff8p-972L : inexact-ok
+= ctan upward ldbl-96-intel 0x0p+0L -0x8p-972L : 0x0p+0L -0x7.fffffffffffffff8p-972L : inexact-ok
+= ctan downward ldbl-96-m68k 0x0p+0L -0x8p-972L : 0x0p+0L -0x8p-972L : inexact-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L -0x8p-972L : 0x0p+0L -0x8p-972L : inexact-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L -0x8p-972L : 0x0p+0L -0x7.fffffffffffffff8p-972L : inexact-ok
+= ctan upward ldbl-96-m68k 0x0p+0L -0x8p-972L : 0x0p+0L -0x7.fffffffffffffff8p-972L : inexact-ok
+= ctan downward ldbl-128 0x0p+0L -0x8p-972L : 0x0p+0L -0x8p-972L : inexact-ok
+= ctan tonearest ldbl-128 0x0p+0L -0x8p-972L : 0x0p+0L -0x8p-972L : inexact-ok
+= ctan towardzero ldbl-128 0x0p+0L -0x8p-972L : 0x0p+0L -0x7.fffffffffffffffffffffffffffcp-972L : inexact-ok
+= ctan upward ldbl-128 0x0p+0L -0x8p-972L : 0x0p+0L -0x7.fffffffffffffffffffffffffffcp-972L : inexact-ok
+= ctan downward ldbl-128ibm 0x0p+0L -0x8p-972L : 0x0p+0L -0x8p-972L : inexact-ok underflow-ok errno-erange-ok
+= ctan tonearest ldbl-128ibm 0x0p+0L -0x8p-972L : 0x0p+0L -0x8p-972L : inexact-ok underflow-ok errno-erange-ok
+= ctan towardzero ldbl-128ibm 0x0p+0L -0x8p-972L : 0x0p+0L -0x7.fffffffffffffffffffffffffcp-972L : inexact-ok underflow-ok errno-erange-ok
+= ctan upward ldbl-128ibm 0x0p+0L -0x8p-972L : 0x0p+0L -0x7.fffffffffffffffffffffffffcp-972L : inexact-ok underflow-ok errno-erange-ok
+ctan 0 min_subnorm
+= ctan downward flt-32 0x0p+0f 0x8p-152f : 0x0p+0f 0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctan tonearest flt-32 0x0p+0f 0x8p-152f : 0x0p+0f 0x8p-152f : inexact-ok underflow errno-erange-ok
+= ctan towardzero flt-32 0x0p+0f 0x8p-152f : 0x0p+0f 0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctan upward flt-32 0x0p+0f 0x8p-152f : 0x0p+0f 0x8p-152f : inexact-ok underflow errno-erange-ok
+= ctan downward dbl-64 0x0p+0 0x8p-152 : 0x0p+0 0x7.ffffffffffffcp-152 : inexact-ok
+= ctan tonearest dbl-64 0x0p+0 0x8p-152 : 0x0p+0 0x8p-152 : inexact-ok
+= ctan towardzero dbl-64 0x0p+0 0x8p-152 : 0x0p+0 0x7.ffffffffffffcp-152 : inexact-ok
+= ctan upward dbl-64 0x0p+0 0x8p-152 : 0x0p+0 0x8p-152 : inexact-ok
+= ctan downward ldbl-96-intel 0x0p+0L 0x8p-152L : 0x0p+0L 0x7.fffffffffffffff8p-152L : inexact-ok
+= ctan tonearest ldbl-96-intel 0x0p+0L 0x8p-152L : 0x0p+0L 0x8p-152L : inexact-ok
+= ctan towardzero ldbl-96-intel 0x0p+0L 0x8p-152L : 0x0p+0L 0x7.fffffffffffffff8p-152L : inexact-ok
+= ctan upward ldbl-96-intel 0x0p+0L 0x8p-152L : 0x0p+0L 0x8p-152L : inexact-ok
+= ctan downward ldbl-96-m68k 0x0p+0L 0x8p-152L : 0x0p+0L 0x7.fffffffffffffff8p-152L : inexact-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L 0x8p-152L : 0x0p+0L 0x8p-152L : inexact-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L 0x8p-152L : 0x0p+0L 0x7.fffffffffffffff8p-152L : inexact-ok
+= ctan upward ldbl-96-m68k 0x0p+0L 0x8p-152L : 0x0p+0L 0x8p-152L : inexact-ok
+= ctan downward ldbl-128 0x0p+0L 0x8p-152L : 0x0p+0L 0x7.fffffffffffffffffffffffffffcp-152L : inexact-ok
+= ctan tonearest ldbl-128 0x0p+0L 0x8p-152L : 0x0p+0L 0x8p-152L : inexact-ok
+= ctan towardzero ldbl-128 0x0p+0L 0x8p-152L : 0x0p+0L 0x7.fffffffffffffffffffffffffffcp-152L : inexact-ok
+= ctan upward ldbl-128 0x0p+0L 0x8p-152L : 0x0p+0L 0x8p-152L : inexact-ok
+= ctan downward ldbl-128ibm 0x0p+0L 0x8p-152L : 0x0p+0L 0x7.fffffffffffffffffffffffffep-152L : inexact-ok
+= ctan tonearest ldbl-128ibm 0x0p+0L 0x8p-152L : 0x0p+0L 0x8p-152L : inexact-ok
+= ctan towardzero ldbl-128ibm 0x0p+0L 0x8p-152L : 0x0p+0L 0x7.fffffffffffffffffffffffffep-152L : inexact-ok
+= ctan upward ldbl-128ibm 0x0p+0L 0x8p-152L : 0x0p+0L 0x8p-152L : inexact-ok
+= ctan downward dbl-64 0x0p+0 0x4p-1076 : 0x0p+0 0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctan tonearest dbl-64 0x0p+0 0x4p-1076 : 0x0p+0 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= ctan towardzero dbl-64 0x0p+0 0x4p-1076 : 0x0p+0 0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctan upward dbl-64 0x0p+0 0x4p-1076 : 0x0p+0 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-intel 0x0p+0L 0x4p-1076L : 0x0p+0L 0x3.fffffffffffffffcp-1076L : inexact-ok
+= ctan tonearest ldbl-96-intel 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok
+= ctan towardzero ldbl-96-intel 0x0p+0L 0x4p-1076L : 0x0p+0L 0x3.fffffffffffffffcp-1076L : inexact-ok
+= ctan upward ldbl-96-intel 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok
+= ctan downward ldbl-96-m68k 0x0p+0L 0x4p-1076L : 0x0p+0L 0x3.fffffffffffffffcp-1076L : inexact-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L 0x4p-1076L : 0x0p+0L 0x3.fffffffffffffffcp-1076L : inexact-ok
+= ctan upward ldbl-96-m68k 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok
+= ctan downward ldbl-128 0x0p+0L 0x4p-1076L : 0x0p+0L 0x3.fffffffffffffffffffffffffffep-1076L : inexact-ok
+= ctan tonearest ldbl-128 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok
+= ctan towardzero ldbl-128 0x0p+0L 0x4p-1076L : 0x0p+0L 0x3.fffffffffffffffffffffffffffep-1076L : inexact-ok
+= ctan upward ldbl-128 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok
+= ctan downward ldbl-128ibm 0x0p+0L 0x4p-1076L : 0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128ibm 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128ibm 0x0p+0L 0x4p-1076L : 0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128ibm 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-intel 0x0p+0L 0x8p-16448L : 0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-96-intel 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-96-intel 0x0p+0L 0x8p-16448L : 0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-96-intel 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-m68k 0x0p+0L 0x8p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L 0x8p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-96-m68k 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-128 0x0p+0L 0x8p-16448L : 0x0p+0L 0x7.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128 0x0p+0L 0x8p-16448L : 0x0p+0L 0x7.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-m68k 0x0p+0L 0x4p-16448L : 0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L 0x4p-16448L : 0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-96-m68k 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-128 0x0p+0L 0x4p-16448L : 0x0p+0L 0x3.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128 0x0p+0L 0x4p-16448L : 0x0p+0L 0x3.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-128 0x0p+0L 0x4p-16496L : 0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128 0x0p+0L 0x4p-16496L : 0x0p+0L 0x4p-16496L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128 0x0p+0L 0x4p-16496L : 0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128 0x0p+0L 0x4p-16496L : 0x0p+0L 0x4p-16496L : inexact-ok underflow errno-erange-ok
+ctan 0 -min_subnorm
+= ctan downward flt-32 0x0p+0f -0x8p-152f : 0x0p+0f -0x8p-152f : inexact-ok underflow errno-erange-ok
+= ctan tonearest flt-32 0x0p+0f -0x8p-152f : 0x0p+0f -0x8p-152f : inexact-ok underflow errno-erange-ok
+= ctan towardzero flt-32 0x0p+0f -0x8p-152f : 0x0p+0f -0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctan upward flt-32 0x0p+0f -0x8p-152f : 0x0p+0f -0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctan downward dbl-64 0x0p+0 -0x8p-152 : 0x0p+0 -0x8p-152 : inexact-ok
+= ctan tonearest dbl-64 0x0p+0 -0x8p-152 : 0x0p+0 -0x8p-152 : inexact-ok
+= ctan towardzero dbl-64 0x0p+0 -0x8p-152 : 0x0p+0 -0x7.ffffffffffffcp-152 : inexact-ok
+= ctan upward dbl-64 0x0p+0 -0x8p-152 : 0x0p+0 -0x7.ffffffffffffcp-152 : inexact-ok
+= ctan downward ldbl-96-intel 0x0p+0L -0x8p-152L : 0x0p+0L -0x8p-152L : inexact-ok
+= ctan tonearest ldbl-96-intel 0x0p+0L -0x8p-152L : 0x0p+0L -0x8p-152L : inexact-ok
+= ctan towardzero ldbl-96-intel 0x0p+0L -0x8p-152L : 0x0p+0L -0x7.fffffffffffffff8p-152L : inexact-ok
+= ctan upward ldbl-96-intel 0x0p+0L -0x8p-152L : 0x0p+0L -0x7.fffffffffffffff8p-152L : inexact-ok
+= ctan downward ldbl-96-m68k 0x0p+0L -0x8p-152L : 0x0p+0L -0x8p-152L : inexact-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L -0x8p-152L : 0x0p+0L -0x8p-152L : inexact-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L -0x8p-152L : 0x0p+0L -0x7.fffffffffffffff8p-152L : inexact-ok
+= ctan upward ldbl-96-m68k 0x0p+0L -0x8p-152L : 0x0p+0L -0x7.fffffffffffffff8p-152L : inexact-ok
+= ctan downward ldbl-128 0x0p+0L -0x8p-152L : 0x0p+0L -0x8p-152L : inexact-ok
+= ctan tonearest ldbl-128 0x0p+0L -0x8p-152L : 0x0p+0L -0x8p-152L : inexact-ok
+= ctan towardzero ldbl-128 0x0p+0L -0x8p-152L : 0x0p+0L -0x7.fffffffffffffffffffffffffffcp-152L : inexact-ok
+= ctan upward ldbl-128 0x0p+0L -0x8p-152L : 0x0p+0L -0x7.fffffffffffffffffffffffffffcp-152L : inexact-ok
+= ctan downward ldbl-128ibm 0x0p+0L -0x8p-152L : 0x0p+0L -0x8p-152L : inexact-ok
+= ctan tonearest ldbl-128ibm 0x0p+0L -0x8p-152L : 0x0p+0L -0x8p-152L : inexact-ok
+= ctan towardzero ldbl-128ibm 0x0p+0L -0x8p-152L : 0x0p+0L -0x7.fffffffffffffffffffffffffep-152L : inexact-ok
+= ctan upward ldbl-128ibm 0x0p+0L -0x8p-152L : 0x0p+0L -0x7.fffffffffffffffffffffffffep-152L : inexact-ok
+= ctan downward dbl-64 0x0p+0 -0x4p-1076 : 0x0p+0 -0x4p-1076 : inexact-ok underflow errno-erange-ok
+= ctan tonearest dbl-64 0x0p+0 -0x4p-1076 : 0x0p+0 -0x4p-1076 : inexact-ok underflow errno-erange-ok
+= ctan towardzero dbl-64 0x0p+0 -0x4p-1076 : 0x0p+0 -0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctan upward dbl-64 0x0p+0 -0x4p-1076 : 0x0p+0 -0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-intel 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok
+= ctan tonearest ldbl-96-intel 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok
+= ctan towardzero ldbl-96-intel 0x0p+0L -0x4p-1076L : 0x0p+0L -0x3.fffffffffffffffcp-1076L : inexact-ok
+= ctan upward ldbl-96-intel 0x0p+0L -0x4p-1076L : 0x0p+0L -0x3.fffffffffffffffcp-1076L : inexact-ok
+= ctan downward ldbl-96-m68k 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L -0x4p-1076L : 0x0p+0L -0x3.fffffffffffffffcp-1076L : inexact-ok
+= ctan upward ldbl-96-m68k 0x0p+0L -0x4p-1076L : 0x0p+0L -0x3.fffffffffffffffcp-1076L : inexact-ok
+= ctan downward ldbl-128 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok
+= ctan tonearest ldbl-128 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok
+= ctan towardzero ldbl-128 0x0p+0L -0x4p-1076L : 0x0p+0L -0x3.fffffffffffffffffffffffffffep-1076L : inexact-ok
+= ctan upward ldbl-128 0x0p+0L -0x4p-1076L : 0x0p+0L -0x3.fffffffffffffffffffffffffffep-1076L : inexact-ok
+= ctan downward ldbl-128ibm 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128ibm 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128ibm 0x0p+0L -0x4p-1076L : 0x0p+0L -0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128ibm 0x0p+0L -0x4p-1076L : 0x0p+0L -0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-intel 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-96-intel 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-96-intel 0x0p+0L -0x8p-16448L : 0x0p+0L -0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-96-intel 0x0p+0L -0x8p-16448L : 0x0p+0L -0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-m68k 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L -0x8p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-96-m68k 0x0p+0L -0x8p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-128 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128 0x0p+0L -0x8p-16448L : 0x0p+0L -0x7.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128 0x0p+0L -0x8p-16448L : 0x0p+0L -0x7.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-96-m68k 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-96-m68k 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-96-m68k 0x0p+0L -0x4p-16448L : 0x0p+0L -0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-96-m68k 0x0p+0L -0x4p-16448L : 0x0p+0L -0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-128 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128 0x0p+0L -0x4p-16448L : 0x0p+0L -0x3.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128 0x0p+0L -0x4p-16448L : 0x0p+0L -0x3.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok
+= ctan downward ldbl-128 0x0p+0L -0x4p-16496L : 0x0p+0L -0x4p-16496L : inexact-ok underflow errno-erange-ok
+= ctan tonearest ldbl-128 0x0p+0L -0x4p-16496L : 0x0p+0L -0x4p-16496L : inexact-ok underflow errno-erange-ok
+= ctan towardzero ldbl-128 0x0p+0L -0x4p-16496L : 0x0p+0L -0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctan upward ldbl-128 0x0p+0L -0x4p-16496L : 0x0p+0L -0x0p+0L : inexact-ok underflow errno-erange-ok
 ctanh 0 0
 = ctanh downward flt-32 0x0p+0f 0x0p+0f : 0x0p+0f 0x0p+0f : inexact-ok
 = ctanh tonearest flt-32 0x0p+0f 0x0p+0f : 0x0p+0f 0x0p+0f : inexact-ok
@@ -110792,7 +111108,7 @@ ctanh 0x1p-16445 0x1.921fb54442d1846ap+0
 = ctanh tonearest ldbl-128 0x8p-16448L 0x1.921fb54442d1846ap+0L : 0x2.55e3001b8e1413fcf7193625f37ap-16316L -0x2.29478136aaf68d7b3b807fb349bap+64L : inexact-ok
 = ctanh towardzero ldbl-128 0x8p-16448L 0x1.921fb54442d1846ap+0L : 0x2.55e3001b8e1413fcf7193625f378p-16316L -0x2.29478136aaf68d7b3b807fb349bap+64L : inexact-ok
 = ctanh upward ldbl-128 0x8p-16448L 0x1.921fb54442d1846ap+0L : 0x2.55e3001b8e1413fcf7193625f37ap-16316L -0x2.29478136aaf68d7b3b807fb349bap+64L : inexact-ok
-ctanh 0 min missing-underflow
+ctanh 0 min
 = ctanh downward flt-32 0x0p+0f 0x4p-128f : 0x0p+0f 0x4p-128f : inexact-ok underflow-ok errno-erange-ok
 = ctanh tonearest flt-32 0x0p+0f 0x4p-128f : 0x0p+0f 0x4p-128f : inexact-ok underflow-ok errno-erange-ok
 = ctanh towardzero flt-32 0x0p+0f 0x4p-128f : 0x0p+0f 0x4p-128f : inexact-ok underflow-ok errno-erange-ok
@@ -110833,10 +111149,10 @@ ctanh 0 min missing-underflow
 = ctanh tonearest ldbl-128 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4p-1024L : inexact-ok
 = ctanh towardzero ldbl-128 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4p-1024L : inexact-ok
 = ctanh upward ldbl-128 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4.0000000000000000000000000004p-1024L : inexact-ok
-= ctanh downward ldbl-128ibm 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-128ibm 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-128ibm 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-128ibm 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4.0000000000004p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
+= ctanh downward ldbl-128ibm 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4p-1024L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128ibm 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4p-1024L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128ibm 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4p-1024L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128ibm 0x0p+0L 0x4p-1024L : 0x0p+0L 0x4.0000000000004p-1024L : inexact-ok underflow errno-erange-ok
 = ctanh downward ldbl-96-intel 0x0p+0L 0x4p-16384L : 0x0p+0L 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
 = ctanh tonearest ldbl-96-intel 0x0p+0L 0x4p-16384L : 0x0p+0L 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
 = ctanh towardzero ldbl-96-intel 0x0p+0L 0x4p-16384L : 0x0p+0L 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
@@ -110849,18 +111165,18 @@ ctanh 0 min missing-underflow
 = ctanh tonearest ldbl-128 0x0p+0L 0x4p-16384L : 0x0p+0L 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
 = ctanh towardzero ldbl-128 0x0p+0L 0x4p-16384L : 0x0p+0L 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
 = ctanh upward ldbl-128 0x0p+0L 0x4p-16384L : 0x0p+0L 0x4.0000000000000000000000000004p-16384L : inexact-ok underflow-ok errno-erange-ok
-= ctanh downward ldbl-96-intel 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-96-intel 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-96-intel 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-96-intel 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2.0000000000000008p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
+= ctanh downward ldbl-96-intel 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-96-intel 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-96-intel 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-96-intel 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2.0000000000000008p-16384L : inexact-ok underflow errno-erange-ok
 = ctanh downward ldbl-96-m68k 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
 = ctanh tonearest ldbl-96-m68k 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
 = ctanh towardzero ldbl-96-m68k 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
 = ctanh upward ldbl-96-m68k 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2.0000000000000004p-16384L : inexact-ok underflow-ok errno-erange-ok
-= ctanh downward ldbl-128 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-128 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-128 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-128 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2.0000000000000000000000000004p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
+= ctanh downward ldbl-128 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128 0x0p+0L 0x2p-16384L : 0x0p+0L 0x2.0000000000000000000000000004p-16384L : inexact-ok underflow errno-erange-ok
 = ctanh downward dbl-64 0x0p+0 0x8p-972 : 0x0p+0 0x8p-972 : inexact-ok
 = ctanh tonearest dbl-64 0x0p+0 0x8p-972 : 0x0p+0 0x8p-972 : inexact-ok
 = ctanh towardzero dbl-64 0x0p+0 0x8p-972 : 0x0p+0 0x8p-972 : inexact-ok
@@ -110881,7 +111197,7 @@ ctanh 0 min missing-underflow
 = ctanh tonearest ldbl-128ibm 0x0p+0L 0x8p-972L : 0x0p+0L 0x8p-972L : inexact-ok underflow-ok errno-erange-ok
 = ctanh towardzero ldbl-128ibm 0x0p+0L 0x8p-972L : 0x0p+0L 0x8p-972L : inexact-ok underflow-ok errno-erange-ok
 = ctanh upward ldbl-128ibm 0x0p+0L 0x8p-972L : 0x0p+0L 0x8.00000000000000000000000004p-972L : inexact-ok underflow-ok errno-erange-ok
-ctanh 0 -min missing-underflow
+ctanh 0 -min
 = ctanh downward flt-32 0x0p+0f -0x4p-128f : 0x0p+0f -0x4.000008p-128f : inexact-ok underflow-ok errno-erange-ok
 = ctanh tonearest flt-32 0x0p+0f -0x4p-128f : 0x0p+0f -0x4p-128f : inexact-ok underflow-ok errno-erange-ok
 = ctanh towardzero flt-32 0x0p+0f -0x4p-128f : 0x0p+0f -0x4p-128f : inexact-ok underflow-ok errno-erange-ok
@@ -110922,10 +111238,10 @@ ctanh 0 -min missing-underflow
 = ctanh tonearest ldbl-128 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4p-1024L : inexact-ok
 = ctanh towardzero ldbl-128 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4p-1024L : inexact-ok
 = ctanh upward ldbl-128 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4p-1024L : inexact-ok
-= ctanh downward ldbl-128ibm 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4.0000000000004p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-128ibm 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-128ibm 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-128ibm 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
+= ctanh downward ldbl-128ibm 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4.0000000000004p-1024L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128ibm 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4p-1024L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128ibm 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4p-1024L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128ibm 0x0p+0L -0x4p-1024L : 0x0p+0L -0x4p-1024L : inexact-ok underflow errno-erange-ok
 = ctanh downward ldbl-96-intel 0x0p+0L -0x4p-16384L : 0x0p+0L -0x4.0000000000000008p-16384L : inexact-ok underflow-ok errno-erange-ok
 = ctanh tonearest ldbl-96-intel 0x0p+0L -0x4p-16384L : 0x0p+0L -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
 = ctanh towardzero ldbl-96-intel 0x0p+0L -0x4p-16384L : 0x0p+0L -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
@@ -110938,18 +111254,18 @@ ctanh 0 -min missing-underflow
 = ctanh tonearest ldbl-128 0x0p+0L -0x4p-16384L : 0x0p+0L -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
 = ctanh towardzero ldbl-128 0x0p+0L -0x4p-16384L : 0x0p+0L -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
 = ctanh upward ldbl-128 0x0p+0L -0x4p-16384L : 0x0p+0L -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
-= ctanh downward ldbl-96-intel 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2.0000000000000008p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-96-intel 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-96-intel 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-96-intel 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
+= ctanh downward ldbl-96-intel 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2.0000000000000008p-16384L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-96-intel 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-96-intel 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-96-intel 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow errno-erange-ok
 = ctanh downward ldbl-96-m68k 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2.0000000000000004p-16384L : inexact-ok underflow-ok errno-erange-ok
 = ctanh tonearest ldbl-96-m68k 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
 = ctanh towardzero ldbl-96-m68k 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
 = ctanh upward ldbl-96-m68k 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
-= ctanh downward ldbl-128 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2.0000000000000000000000000004p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-128 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-128 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-128 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
+= ctanh downward ldbl-128 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2.0000000000000000000000000004p-16384L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128 0x0p+0L -0x2p-16384L : 0x0p+0L -0x2p-16384L : inexact-ok underflow errno-erange-ok
 = ctanh downward dbl-64 0x0p+0 -0x8p-972 : 0x0p+0 -0x8.0000000000008p-972 : inexact-ok
 = ctanh tonearest dbl-64 0x0p+0 -0x8p-972 : 0x0p+0 -0x8p-972 : inexact-ok
 = ctanh towardzero dbl-64 0x0p+0 -0x8p-972 : 0x0p+0 -0x8p-972 : inexact-ok
@@ -110970,11 +111286,11 @@ ctanh 0 -min missing-underflow
 = ctanh tonearest ldbl-128ibm 0x0p+0L -0x8p-972L : 0x0p+0L -0x8p-972L : inexact-ok underflow-ok errno-erange-ok
 = ctanh towardzero ldbl-128ibm 0x0p+0L -0x8p-972L : 0x0p+0L -0x8p-972L : inexact-ok underflow-ok errno-erange-ok
 = ctanh upward ldbl-128ibm 0x0p+0L -0x8p-972L : 0x0p+0L -0x8p-972L : inexact-ok underflow-ok errno-erange-ok
-ctanh 0 min_subnorm missing-underflow
-= ctanh downward flt-32 0x0p+0f 0x8p-152f : 0x0p+0f 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest flt-32 0x0p+0f 0x8p-152f : 0x0p+0f 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero flt-32 0x0p+0f 0x8p-152f : 0x0p+0f 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward flt-32 0x0p+0f 0x8p-152f : 0x0p+0f 0x1p-148f : inexact-ok underflow underflow-ok errno-erange-ok
+ctanh 0 min_subnorm
+= ctanh downward flt-32 0x0p+0f 0x8p-152f : 0x0p+0f 0x8p-152f : inexact-ok underflow errno-erange-ok
+= ctanh tonearest flt-32 0x0p+0f 0x8p-152f : 0x0p+0f 0x8p-152f : inexact-ok underflow errno-erange-ok
+= ctanh towardzero flt-32 0x0p+0f 0x8p-152f : 0x0p+0f 0x8p-152f : inexact-ok underflow errno-erange-ok
+= ctanh upward flt-32 0x0p+0f 0x8p-152f : 0x0p+0f 0x1p-148f : inexact-ok underflow errno-erange-ok
 = ctanh downward dbl-64 0x0p+0 0x8p-152 : 0x0p+0 0x8p-152 : inexact-ok
 = ctanh tonearest dbl-64 0x0p+0 0x8p-152 : 0x0p+0 0x8p-152 : inexact-ok
 = ctanh towardzero dbl-64 0x0p+0 0x8p-152 : 0x0p+0 0x8p-152 : inexact-ok
@@ -110995,10 +111311,10 @@ ctanh 0 min_subnorm missing-underflow
 = ctanh tonearest ldbl-128ibm 0x0p+0L 0x8p-152L : 0x0p+0L 0x8p-152L : inexact-ok
 = ctanh towardzero ldbl-128ibm 0x0p+0L 0x8p-152L : 0x0p+0L 0x8p-152L : inexact-ok
 = ctanh upward ldbl-128ibm 0x0p+0L 0x8p-152L : 0x0p+0L 0x8.00000000000000000000000004p-152L : inexact-ok
-= ctanh downward dbl-64 0x0p+0 0x4p-1076 : 0x0p+0 0x4p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest dbl-64 0x0p+0 0x4p-1076 : 0x0p+0 0x4p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero dbl-64 0x0p+0 0x4p-1076 : 0x0p+0 0x4p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward dbl-64 0x0p+0 0x4p-1076 : 0x0p+0 0x8p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
+= ctanh downward dbl-64 0x0p+0 0x4p-1076 : 0x0p+0 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= ctanh tonearest dbl-64 0x0p+0 0x4p-1076 : 0x0p+0 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= ctanh towardzero dbl-64 0x0p+0 0x4p-1076 : 0x0p+0 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= ctanh upward dbl-64 0x0p+0 0x4p-1076 : 0x0p+0 0x8p-1076 : inexact-ok underflow errno-erange-ok
 = ctanh downward ldbl-96-intel 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok
 = ctanh tonearest ldbl-96-intel 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok
 = ctanh towardzero ldbl-96-intel 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok
@@ -111011,39 +111327,39 @@ ctanh 0 min_subnorm missing-underflow
 = ctanh tonearest ldbl-128 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok
 = ctanh towardzero ldbl-128 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok
 = ctanh upward ldbl-128 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4.0000000000000000000000000004p-1076L : inexact-ok
-= ctanh downward ldbl-128ibm 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-128ibm 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-128ibm 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-128ibm 0x0p+0L 0x4p-1076L : 0x0p+0L 0x8p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh downward ldbl-96-intel 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-96-intel 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-96-intel 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-96-intel 0x0p+0L 0x8p-16448L : 0x0p+0L 0x1p-16444L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh downward ldbl-96-m68k 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-96-m68k 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-96-m68k 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-96-m68k 0x0p+0L 0x8p-16448L : 0x0p+0L 0xcp-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh downward ldbl-128 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-128 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-128 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-128 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8.000000000004p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh downward ldbl-96-m68k 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-96-m68k 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-96-m68k 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-96-m68k 0x0p+0L 0x4p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh downward ldbl-128 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-128 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-128 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-128 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4.000000000004p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh downward ldbl-128 0x0p+0L 0x4p-16496L : 0x0p+0L 0x4p-16496L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-128 0x0p+0L 0x4p-16496L : 0x0p+0L 0x4p-16496L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-128 0x0p+0L 0x4p-16496L : 0x0p+0L 0x4p-16496L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-128 0x0p+0L 0x4p-16496L : 0x0p+0L 0x8p-16496L : inexact-ok underflow underflow-ok errno-erange-ok
-ctanh 0 -min_subnorm missing-underflow
-= ctanh downward flt-32 0x0p+0f -0x8p-152f : 0x0p+0f -0x1p-148f : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest flt-32 0x0p+0f -0x8p-152f : 0x0p+0f -0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero flt-32 0x0p+0f -0x8p-152f : 0x0p+0f -0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward flt-32 0x0p+0f -0x8p-152f : 0x0p+0f -0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
+= ctanh downward ldbl-128ibm 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128ibm 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128ibm 0x0p+0L 0x4p-1076L : 0x0p+0L 0x4p-1076L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128ibm 0x0p+0L 0x4p-1076L : 0x0p+0L 0x8p-1076L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-intel 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-96-intel 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-96-intel 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-96-intel 0x0p+0L 0x8p-16448L : 0x0p+0L 0x1p-16444L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-m68k 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-96-m68k 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-96-m68k 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-96-m68k 0x0p+0L 0x8p-16448L : 0x0p+0L 0xcp-16448L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-128 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128 0x0p+0L 0x8p-16448L : 0x0p+0L 0x8.000000000004p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-m68k 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-96-m68k 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-96-m68k 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-96-m68k 0x0p+0L 0x4p-16448L : 0x0p+0L 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-128 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128 0x0p+0L 0x4p-16448L : 0x0p+0L 0x4.000000000004p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-128 0x0p+0L 0x4p-16496L : 0x0p+0L 0x4p-16496L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128 0x0p+0L 0x4p-16496L : 0x0p+0L 0x4p-16496L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128 0x0p+0L 0x4p-16496L : 0x0p+0L 0x4p-16496L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128 0x0p+0L 0x4p-16496L : 0x0p+0L 0x8p-16496L : inexact-ok underflow errno-erange-ok
+ctanh 0 -min_subnorm
+= ctanh downward flt-32 0x0p+0f -0x8p-152f : 0x0p+0f -0x1p-148f : inexact-ok underflow errno-erange-ok
+= ctanh tonearest flt-32 0x0p+0f -0x8p-152f : 0x0p+0f -0x8p-152f : inexact-ok underflow errno-erange-ok
+= ctanh towardzero flt-32 0x0p+0f -0x8p-152f : 0x0p+0f -0x8p-152f : inexact-ok underflow errno-erange-ok
+= ctanh upward flt-32 0x0p+0f -0x8p-152f : 0x0p+0f -0x8p-152f : inexact-ok underflow errno-erange-ok
 = ctanh downward dbl-64 0x0p+0 -0x8p-152 : 0x0p+0 -0x8.0000000000008p-152 : inexact-ok
 = ctanh tonearest dbl-64 0x0p+0 -0x8p-152 : 0x0p+0 -0x8p-152 : inexact-ok
 = ctanh towardzero dbl-64 0x0p+0 -0x8p-152 : 0x0p+0 -0x8p-152 : inexact-ok
@@ -111064,10 +111380,10 @@ ctanh 0 -min_subnorm missing-underflow
 = ctanh tonearest ldbl-128ibm 0x0p+0L -0x8p-152L : 0x0p+0L -0x8p-152L : inexact-ok
 = ctanh towardzero ldbl-128ibm 0x0p+0L -0x8p-152L : 0x0p+0L -0x8p-152L : inexact-ok
 = ctanh upward ldbl-128ibm 0x0p+0L -0x8p-152L : 0x0p+0L -0x8p-152L : inexact-ok
-= ctanh downward dbl-64 0x0p+0 -0x4p-1076 : 0x0p+0 -0x8p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest dbl-64 0x0p+0 -0x4p-1076 : 0x0p+0 -0x4p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero dbl-64 0x0p+0 -0x4p-1076 : 0x0p+0 -0x4p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward dbl-64 0x0p+0 -0x4p-1076 : 0x0p+0 -0x4p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
+= ctanh downward dbl-64 0x0p+0 -0x4p-1076 : 0x0p+0 -0x8p-1076 : inexact-ok underflow errno-erange-ok
+= ctanh tonearest dbl-64 0x0p+0 -0x4p-1076 : 0x0p+0 -0x4p-1076 : inexact-ok underflow errno-erange-ok
+= ctanh towardzero dbl-64 0x0p+0 -0x4p-1076 : 0x0p+0 -0x4p-1076 : inexact-ok underflow errno-erange-ok
+= ctanh upward dbl-64 0x0p+0 -0x4p-1076 : 0x0p+0 -0x4p-1076 : inexact-ok underflow errno-erange-ok
 = ctanh downward ldbl-96-intel 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4.0000000000000008p-1076L : inexact-ok
 = ctanh tonearest ldbl-96-intel 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok
 = ctanh towardzero ldbl-96-intel 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok
@@ -111080,34 +111396,350 @@ ctanh 0 -min_subnorm missing-underflow
 = ctanh tonearest ldbl-128 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok
 = ctanh towardzero ldbl-128 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok
 = ctanh upward ldbl-128 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok
-= ctanh downward ldbl-128ibm 0x0p+0L -0x4p-1076L : 0x0p+0L -0x8p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-128ibm 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-128ibm 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-128ibm 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh downward ldbl-96-intel 0x0p+0L -0x8p-16448L : 0x0p+0L -0x1p-16444L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-96-intel 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-96-intel 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-96-intel 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh downward ldbl-96-m68k 0x0p+0L -0x8p-16448L : 0x0p+0L -0xcp-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-96-m68k 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-96-m68k 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-96-m68k 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh downward ldbl-128 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8.000000000004p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-128 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-128 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-128 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh downward ldbl-96-m68k 0x0p+0L -0x4p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-96-m68k 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-96-m68k 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-96-m68k 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh downward ldbl-128 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4.000000000004p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-128 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-128 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-128 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh downward ldbl-128 0x0p+0L -0x4p-16496L : 0x0p+0L -0x8p-16496L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh tonearest ldbl-128 0x0p+0L -0x4p-16496L : 0x0p+0L -0x4p-16496L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh towardzero ldbl-128 0x0p+0L -0x4p-16496L : 0x0p+0L -0x4p-16496L : inexact-ok underflow underflow-ok errno-erange-ok
-= ctanh upward ldbl-128 0x0p+0L -0x4p-16496L : 0x0p+0L -0x4p-16496L : inexact-ok underflow underflow-ok errno-erange-ok
+= ctanh downward ldbl-128ibm 0x0p+0L -0x4p-1076L : 0x0p+0L -0x8p-1076L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128ibm 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128ibm 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128ibm 0x0p+0L -0x4p-1076L : 0x0p+0L -0x4p-1076L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-intel 0x0p+0L -0x8p-16448L : 0x0p+0L -0x1p-16444L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-96-intel 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-96-intel 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-96-intel 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-m68k 0x0p+0L -0x8p-16448L : 0x0p+0L -0xcp-16448L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-96-m68k 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-96-m68k 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-96-m68k 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-128 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8.000000000004p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128 0x0p+0L -0x8p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-m68k 0x0p+0L -0x4p-16448L : 0x0p+0L -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-96-m68k 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-96-m68k 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-96-m68k 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-128 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4.000000000004p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128 0x0p+0L -0x4p-16448L : 0x0p+0L -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-128 0x0p+0L -0x4p-16496L : 0x0p+0L -0x8p-16496L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128 0x0p+0L -0x4p-16496L : 0x0p+0L -0x4p-16496L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128 0x0p+0L -0x4p-16496L : 0x0p+0L -0x4p-16496L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128 0x0p+0L -0x4p-16496L : 0x0p+0L -0x4p-16496L : inexact-ok underflow errno-erange-ok
+ctanh min 0
+= ctanh downward flt-32 0x4p-128f 0x0p+0f : 0x3.fffff8p-128f 0x0p+0f : inexact-ok underflow-ok errno-erange-ok
+= ctanh tonearest flt-32 0x4p-128f 0x0p+0f : 0x4p-128f 0x0p+0f : inexact-ok underflow-ok errno-erange-ok
+= ctanh towardzero flt-32 0x4p-128f 0x0p+0f : 0x3.fffff8p-128f 0x0p+0f : inexact-ok underflow-ok errno-erange-ok
+= ctanh upward flt-32 0x4p-128f 0x0p+0f : 0x4p-128f 0x0p+0f : inexact-ok underflow-ok errno-erange-ok
+= ctanh downward dbl-64 0x4p-128 0x0p+0 : 0x3.ffffffffffffep-128 0x0p+0 : inexact-ok
+= ctanh tonearest dbl-64 0x4p-128 0x0p+0 : 0x4p-128 0x0p+0 : inexact-ok
+= ctanh towardzero dbl-64 0x4p-128 0x0p+0 : 0x3.ffffffffffffep-128 0x0p+0 : inexact-ok
+= ctanh upward dbl-64 0x4p-128 0x0p+0 : 0x4p-128 0x0p+0 : inexact-ok
+= ctanh downward ldbl-96-intel 0x4p-128L 0x0p+0L : 0x3.fffffffffffffffcp-128L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-intel 0x4p-128L 0x0p+0L : 0x4p-128L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-intel 0x4p-128L 0x0p+0L : 0x3.fffffffffffffffcp-128L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-intel 0x4p-128L 0x0p+0L : 0x4p-128L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-96-m68k 0x4p-128L 0x0p+0L : 0x3.fffffffffffffffcp-128L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-m68k 0x4p-128L 0x0p+0L : 0x4p-128L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-m68k 0x4p-128L 0x0p+0L : 0x3.fffffffffffffffcp-128L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-m68k 0x4p-128L 0x0p+0L : 0x4p-128L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128 0x4p-128L 0x0p+0L : 0x3.fffffffffffffffffffffffffffep-128L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-128 0x4p-128L 0x0p+0L : 0x4p-128L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-128 0x4p-128L 0x0p+0L : 0x3.fffffffffffffffffffffffffffep-128L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-128 0x4p-128L 0x0p+0L : 0x4p-128L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128ibm 0x4p-128L 0x0p+0L : 0x3.ffffffffffffffffffffffffffp-128L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-128ibm 0x4p-128L 0x0p+0L : 0x4p-128L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-128ibm 0x4p-128L 0x0p+0L : 0x3.ffffffffffffffffffffffffffp-128L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-128ibm 0x4p-128L 0x0p+0L : 0x4p-128L 0x0p+0L : inexact-ok
+= ctanh downward dbl-64 0x4p-1024 0x0p+0 : 0x3.ffffffffffffcp-1024 0x0p+0 : inexact-ok underflow-ok errno-erange-ok
+= ctanh tonearest dbl-64 0x4p-1024 0x0p+0 : 0x4p-1024 0x0p+0 : inexact-ok underflow-ok errno-erange-ok
+= ctanh towardzero dbl-64 0x4p-1024 0x0p+0 : 0x3.ffffffffffffcp-1024 0x0p+0 : inexact-ok underflow-ok errno-erange-ok
+= ctanh upward dbl-64 0x4p-1024 0x0p+0 : 0x4p-1024 0x0p+0 : inexact-ok underflow-ok errno-erange-ok
+= ctanh downward ldbl-96-intel 0x4p-1024L 0x0p+0L : 0x3.fffffffffffffffcp-1024L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-intel 0x4p-1024L 0x0p+0L : 0x4p-1024L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-intel 0x4p-1024L 0x0p+0L : 0x3.fffffffffffffffcp-1024L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-intel 0x4p-1024L 0x0p+0L : 0x4p-1024L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-96-m68k 0x4p-1024L 0x0p+0L : 0x3.fffffffffffffffcp-1024L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-m68k 0x4p-1024L 0x0p+0L : 0x4p-1024L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-m68k 0x4p-1024L 0x0p+0L : 0x3.fffffffffffffffcp-1024L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-m68k 0x4p-1024L 0x0p+0L : 0x4p-1024L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128 0x4p-1024L 0x0p+0L : 0x3.fffffffffffffffffffffffffffep-1024L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-128 0x4p-1024L 0x0p+0L : 0x4p-1024L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-128 0x4p-1024L 0x0p+0L : 0x3.fffffffffffffffffffffffffffep-1024L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-128 0x4p-1024L 0x0p+0L : 0x4p-1024L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128ibm 0x4p-1024L 0x0p+0L : 0x3.ffffffffffffcp-1024L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128ibm 0x4p-1024L 0x0p+0L : 0x4p-1024L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128ibm 0x4p-1024L 0x0p+0L : 0x3.ffffffffffffcp-1024L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128ibm 0x4p-1024L 0x0p+0L : 0x4p-1024L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-intel 0x4p-16384L 0x0p+0L : 0x3.fffffffffffffff8p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh tonearest ldbl-96-intel 0x4p-16384L 0x0p+0L : 0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh towardzero ldbl-96-intel 0x4p-16384L 0x0p+0L : 0x3.fffffffffffffff8p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh upward ldbl-96-intel 0x4p-16384L 0x0p+0L : 0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh downward ldbl-96-m68k 0x4p-16384L 0x0p+0L : 0x3.fffffffffffffffcp-16384L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-m68k 0x4p-16384L 0x0p+0L : 0x4p-16384L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-m68k 0x4p-16384L 0x0p+0L : 0x3.fffffffffffffffcp-16384L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-m68k 0x4p-16384L 0x0p+0L : 0x4p-16384L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128 0x4p-16384L 0x0p+0L : 0x3.fffffffffffffffffffffffffffcp-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh tonearest ldbl-128 0x4p-16384L 0x0p+0L : 0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh towardzero ldbl-128 0x4p-16384L 0x0p+0L : 0x3.fffffffffffffffffffffffffffcp-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh upward ldbl-128 0x4p-16384L 0x0p+0L : 0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh downward ldbl-96-intel 0x2p-16384L 0x0p+0L : 0x1.fffffffffffffff8p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-96-intel 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-96-intel 0x2p-16384L 0x0p+0L : 0x1.fffffffffffffff8p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-96-intel 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-m68k 0x2p-16384L 0x0p+0L : 0x1.fffffffffffffffcp-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh tonearest ldbl-96-m68k 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh towardzero ldbl-96-m68k 0x2p-16384L 0x0p+0L : 0x1.fffffffffffffffcp-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh upward ldbl-96-m68k 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh downward ldbl-128 0x2p-16384L 0x0p+0L : 0x1.fffffffffffffffffffffffffffcp-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128 0x2p-16384L 0x0p+0L : 0x1.fffffffffffffffffffffffffffcp-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128 0x2p-16384L 0x0p+0L : 0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward dbl-64 0x8p-972 0x0p+0 : 0x7.ffffffffffffcp-972 0x0p+0 : inexact-ok
+= ctanh tonearest dbl-64 0x8p-972 0x0p+0 : 0x8p-972 0x0p+0 : inexact-ok
+= ctanh towardzero dbl-64 0x8p-972 0x0p+0 : 0x7.ffffffffffffcp-972 0x0p+0 : inexact-ok
+= ctanh upward dbl-64 0x8p-972 0x0p+0 : 0x8p-972 0x0p+0 : inexact-ok
+= ctanh downward ldbl-96-intel 0x8p-972L 0x0p+0L : 0x7.fffffffffffffff8p-972L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-intel 0x8p-972L 0x0p+0L : 0x8p-972L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-intel 0x8p-972L 0x0p+0L : 0x7.fffffffffffffff8p-972L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-intel 0x8p-972L 0x0p+0L : 0x8p-972L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-96-m68k 0x8p-972L 0x0p+0L : 0x7.fffffffffffffff8p-972L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-m68k 0x8p-972L 0x0p+0L : 0x8p-972L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-m68k 0x8p-972L 0x0p+0L : 0x7.fffffffffffffff8p-972L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-m68k 0x8p-972L 0x0p+0L : 0x8p-972L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128 0x8p-972L 0x0p+0L : 0x7.fffffffffffffffffffffffffffcp-972L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-128 0x8p-972L 0x0p+0L : 0x8p-972L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-128 0x8p-972L 0x0p+0L : 0x7.fffffffffffffffffffffffffffcp-972L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-128 0x8p-972L 0x0p+0L : 0x8p-972L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128ibm 0x8p-972L 0x0p+0L : 0x7.fffffffffffffffffffffffffcp-972L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh tonearest ldbl-128ibm 0x8p-972L 0x0p+0L : 0x8p-972L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh towardzero ldbl-128ibm 0x8p-972L 0x0p+0L : 0x7.fffffffffffffffffffffffffcp-972L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh upward ldbl-128ibm 0x8p-972L 0x0p+0L : 0x8p-972L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+ctanh -min 0
+= ctanh downward flt-32 -0x4p-128f 0x0p+0f : -0x4p-128f 0x0p+0f : inexact-ok underflow-ok errno-erange-ok
+= ctanh tonearest flt-32 -0x4p-128f 0x0p+0f : -0x4p-128f 0x0p+0f : inexact-ok underflow-ok errno-erange-ok
+= ctanh towardzero flt-32 -0x4p-128f 0x0p+0f : -0x3.fffff8p-128f 0x0p+0f : inexact-ok underflow-ok errno-erange-ok
+= ctanh upward flt-32 -0x4p-128f 0x0p+0f : -0x3.fffff8p-128f 0x0p+0f : inexact-ok underflow-ok errno-erange-ok
+= ctanh downward dbl-64 -0x4p-128 0x0p+0 : -0x4p-128 0x0p+0 : inexact-ok
+= ctanh tonearest dbl-64 -0x4p-128 0x0p+0 : -0x4p-128 0x0p+0 : inexact-ok
+= ctanh towardzero dbl-64 -0x4p-128 0x0p+0 : -0x3.ffffffffffffep-128 0x0p+0 : inexact-ok
+= ctanh upward dbl-64 -0x4p-128 0x0p+0 : -0x3.ffffffffffffep-128 0x0p+0 : inexact-ok
+= ctanh downward ldbl-96-intel -0x4p-128L 0x0p+0L : -0x4p-128L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-intel -0x4p-128L 0x0p+0L : -0x4p-128L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-intel -0x4p-128L 0x0p+0L : -0x3.fffffffffffffffcp-128L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-intel -0x4p-128L 0x0p+0L : -0x3.fffffffffffffffcp-128L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-96-m68k -0x4p-128L 0x0p+0L : -0x4p-128L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-m68k -0x4p-128L 0x0p+0L : -0x4p-128L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-m68k -0x4p-128L 0x0p+0L : -0x3.fffffffffffffffcp-128L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-m68k -0x4p-128L 0x0p+0L : -0x3.fffffffffffffffcp-128L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128 -0x4p-128L 0x0p+0L : -0x4p-128L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-128 -0x4p-128L 0x0p+0L : -0x4p-128L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-128 -0x4p-128L 0x0p+0L : -0x3.fffffffffffffffffffffffffffep-128L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-128 -0x4p-128L 0x0p+0L : -0x3.fffffffffffffffffffffffffffep-128L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128ibm -0x4p-128L 0x0p+0L : -0x4p-128L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-128ibm -0x4p-128L 0x0p+0L : -0x4p-128L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-128ibm -0x4p-128L 0x0p+0L : -0x3.ffffffffffffffffffffffffffp-128L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-128ibm -0x4p-128L 0x0p+0L : -0x3.ffffffffffffffffffffffffffp-128L 0x0p+0L : inexact-ok
+= ctanh downward dbl-64 -0x4p-1024 0x0p+0 : -0x4p-1024 0x0p+0 : inexact-ok underflow-ok errno-erange-ok
+= ctanh tonearest dbl-64 -0x4p-1024 0x0p+0 : -0x4p-1024 0x0p+0 : inexact-ok underflow-ok errno-erange-ok
+= ctanh towardzero dbl-64 -0x4p-1024 0x0p+0 : -0x3.ffffffffffffcp-1024 0x0p+0 : inexact-ok underflow-ok errno-erange-ok
+= ctanh upward dbl-64 -0x4p-1024 0x0p+0 : -0x3.ffffffffffffcp-1024 0x0p+0 : inexact-ok underflow-ok errno-erange-ok
+= ctanh downward ldbl-96-intel -0x4p-1024L 0x0p+0L : -0x4p-1024L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-intel -0x4p-1024L 0x0p+0L : -0x4p-1024L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-intel -0x4p-1024L 0x0p+0L : -0x3.fffffffffffffffcp-1024L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-intel -0x4p-1024L 0x0p+0L : -0x3.fffffffffffffffcp-1024L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-96-m68k -0x4p-1024L 0x0p+0L : -0x4p-1024L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-m68k -0x4p-1024L 0x0p+0L : -0x4p-1024L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-m68k -0x4p-1024L 0x0p+0L : -0x3.fffffffffffffffcp-1024L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-m68k -0x4p-1024L 0x0p+0L : -0x3.fffffffffffffffcp-1024L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128 -0x4p-1024L 0x0p+0L : -0x4p-1024L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-128 -0x4p-1024L 0x0p+0L : -0x4p-1024L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-128 -0x4p-1024L 0x0p+0L : -0x3.fffffffffffffffffffffffffffep-1024L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-128 -0x4p-1024L 0x0p+0L : -0x3.fffffffffffffffffffffffffffep-1024L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128ibm -0x4p-1024L 0x0p+0L : -0x4p-1024L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128ibm -0x4p-1024L 0x0p+0L : -0x4p-1024L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128ibm -0x4p-1024L 0x0p+0L : -0x3.ffffffffffffcp-1024L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128ibm -0x4p-1024L 0x0p+0L : -0x3.ffffffffffffcp-1024L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-intel -0x4p-16384L 0x0p+0L : -0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh tonearest ldbl-96-intel -0x4p-16384L 0x0p+0L : -0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh towardzero ldbl-96-intel -0x4p-16384L 0x0p+0L : -0x3.fffffffffffffff8p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh upward ldbl-96-intel -0x4p-16384L 0x0p+0L : -0x3.fffffffffffffff8p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh downward ldbl-96-m68k -0x4p-16384L 0x0p+0L : -0x4p-16384L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-m68k -0x4p-16384L 0x0p+0L : -0x4p-16384L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-m68k -0x4p-16384L 0x0p+0L : -0x3.fffffffffffffffcp-16384L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-m68k -0x4p-16384L 0x0p+0L : -0x3.fffffffffffffffcp-16384L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128 -0x4p-16384L 0x0p+0L : -0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh tonearest ldbl-128 -0x4p-16384L 0x0p+0L : -0x4p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh towardzero ldbl-128 -0x4p-16384L 0x0p+0L : -0x3.fffffffffffffffffffffffffffcp-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh upward ldbl-128 -0x4p-16384L 0x0p+0L : -0x3.fffffffffffffffffffffffffffcp-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh downward ldbl-96-intel -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-96-intel -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-96-intel -0x2p-16384L 0x0p+0L : -0x1.fffffffffffffff8p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-96-intel -0x2p-16384L 0x0p+0L : -0x1.fffffffffffffff8p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-m68k -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh tonearest ldbl-96-m68k -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh towardzero ldbl-96-m68k -0x2p-16384L 0x0p+0L : -0x1.fffffffffffffffcp-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh upward ldbl-96-m68k -0x2p-16384L 0x0p+0L : -0x1.fffffffffffffffcp-16384L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh downward ldbl-128 -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128 -0x2p-16384L 0x0p+0L : -0x2p-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128 -0x2p-16384L 0x0p+0L : -0x1.fffffffffffffffffffffffffffcp-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128 -0x2p-16384L 0x0p+0L : -0x1.fffffffffffffffffffffffffffcp-16384L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward dbl-64 -0x8p-972 0x0p+0 : -0x8p-972 0x0p+0 : inexact-ok
+= ctanh tonearest dbl-64 -0x8p-972 0x0p+0 : -0x8p-972 0x0p+0 : inexact-ok
+= ctanh towardzero dbl-64 -0x8p-972 0x0p+0 : -0x7.ffffffffffffcp-972 0x0p+0 : inexact-ok
+= ctanh upward dbl-64 -0x8p-972 0x0p+0 : -0x7.ffffffffffffcp-972 0x0p+0 : inexact-ok
+= ctanh downward ldbl-96-intel -0x8p-972L 0x0p+0L : -0x8p-972L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-intel -0x8p-972L 0x0p+0L : -0x8p-972L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-intel -0x8p-972L 0x0p+0L : -0x7.fffffffffffffff8p-972L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-intel -0x8p-972L 0x0p+0L : -0x7.fffffffffffffff8p-972L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-96-m68k -0x8p-972L 0x0p+0L : -0x8p-972L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-m68k -0x8p-972L 0x0p+0L : -0x8p-972L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-m68k -0x8p-972L 0x0p+0L : -0x7.fffffffffffffff8p-972L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-m68k -0x8p-972L 0x0p+0L : -0x7.fffffffffffffff8p-972L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128 -0x8p-972L 0x0p+0L : -0x8p-972L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-128 -0x8p-972L 0x0p+0L : -0x8p-972L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-128 -0x8p-972L 0x0p+0L : -0x7.fffffffffffffffffffffffffffcp-972L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-128 -0x8p-972L 0x0p+0L : -0x7.fffffffffffffffffffffffffffcp-972L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128ibm -0x8p-972L 0x0p+0L : -0x8p-972L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh tonearest ldbl-128ibm -0x8p-972L 0x0p+0L : -0x8p-972L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh towardzero ldbl-128ibm -0x8p-972L 0x0p+0L : -0x7.fffffffffffffffffffffffffcp-972L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+= ctanh upward ldbl-128ibm -0x8p-972L 0x0p+0L : -0x7.fffffffffffffffffffffffffcp-972L 0x0p+0L : inexact-ok underflow-ok errno-erange-ok
+ctanh min_subnorm 0
+= ctanh downward flt-32 0x8p-152f 0x0p+0f : 0x0p+0f 0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctanh tonearest flt-32 0x8p-152f 0x0p+0f : 0x8p-152f 0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctanh towardzero flt-32 0x8p-152f 0x0p+0f : 0x0p+0f 0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctanh upward flt-32 0x8p-152f 0x0p+0f : 0x8p-152f 0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctanh downward dbl-64 0x8p-152 0x0p+0 : 0x7.ffffffffffffcp-152 0x0p+0 : inexact-ok
+= ctanh tonearest dbl-64 0x8p-152 0x0p+0 : 0x8p-152 0x0p+0 : inexact-ok
+= ctanh towardzero dbl-64 0x8p-152 0x0p+0 : 0x7.ffffffffffffcp-152 0x0p+0 : inexact-ok
+= ctanh upward dbl-64 0x8p-152 0x0p+0 : 0x8p-152 0x0p+0 : inexact-ok
+= ctanh downward ldbl-96-intel 0x8p-152L 0x0p+0L : 0x7.fffffffffffffff8p-152L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-intel 0x8p-152L 0x0p+0L : 0x8p-152L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-intel 0x8p-152L 0x0p+0L : 0x7.fffffffffffffff8p-152L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-intel 0x8p-152L 0x0p+0L : 0x8p-152L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-96-m68k 0x8p-152L 0x0p+0L : 0x7.fffffffffffffff8p-152L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-m68k 0x8p-152L 0x0p+0L : 0x8p-152L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-m68k 0x8p-152L 0x0p+0L : 0x7.fffffffffffffff8p-152L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-m68k 0x8p-152L 0x0p+0L : 0x8p-152L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128 0x8p-152L 0x0p+0L : 0x7.fffffffffffffffffffffffffffcp-152L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-128 0x8p-152L 0x0p+0L : 0x8p-152L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-128 0x8p-152L 0x0p+0L : 0x7.fffffffffffffffffffffffffffcp-152L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-128 0x8p-152L 0x0p+0L : 0x8p-152L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128ibm 0x8p-152L 0x0p+0L : 0x7.fffffffffffffffffffffffffep-152L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-128ibm 0x8p-152L 0x0p+0L : 0x8p-152L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-128ibm 0x8p-152L 0x0p+0L : 0x7.fffffffffffffffffffffffffep-152L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-128ibm 0x8p-152L 0x0p+0L : 0x8p-152L 0x0p+0L : inexact-ok
+= ctanh downward dbl-64 0x4p-1076 0x0p+0 : 0x0p+0 0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctanh tonearest dbl-64 0x4p-1076 0x0p+0 : 0x4p-1076 0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctanh towardzero dbl-64 0x4p-1076 0x0p+0 : 0x0p+0 0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctanh upward dbl-64 0x4p-1076 0x0p+0 : 0x4p-1076 0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-intel 0x4p-1076L 0x0p+0L : 0x3.fffffffffffffffcp-1076L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-intel 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-intel 0x4p-1076L 0x0p+0L : 0x3.fffffffffffffffcp-1076L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-intel 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-96-m68k 0x4p-1076L 0x0p+0L : 0x3.fffffffffffffffcp-1076L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-m68k 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-m68k 0x4p-1076L 0x0p+0L : 0x3.fffffffffffffffcp-1076L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-m68k 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128 0x4p-1076L 0x0p+0L : 0x3.fffffffffffffffffffffffffffep-1076L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-128 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-128 0x4p-1076L 0x0p+0L : 0x3.fffffffffffffffffffffffffffep-1076L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-128 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128ibm 0x4p-1076L 0x0p+0L : 0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128ibm 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128ibm 0x4p-1076L 0x0p+0L : 0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128ibm 0x4p-1076L 0x0p+0L : 0x4p-1076L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-intel 0x8p-16448L 0x0p+0L : 0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-96-intel 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-96-intel 0x8p-16448L 0x0p+0L : 0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-96-intel 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-m68k 0x8p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-96-m68k 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-96-m68k 0x8p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-96-m68k 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-128 0x8p-16448L 0x0p+0L : 0x7.fffffffffffcp-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128 0x8p-16448L 0x0p+0L : 0x7.fffffffffffcp-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128 0x8p-16448L 0x0p+0L : 0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-m68k 0x4p-16448L 0x0p+0L : 0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-96-m68k 0x4p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-96-m68k 0x4p-16448L 0x0p+0L : 0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-96-m68k 0x4p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-128 0x4p-16448L 0x0p+0L : 0x3.fffffffffffcp-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128 0x4p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128 0x4p-16448L 0x0p+0L : 0x3.fffffffffffcp-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128 0x4p-16448L 0x0p+0L : 0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-128 0x4p-16496L 0x0p+0L : 0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128 0x4p-16496L 0x0p+0L : 0x4p-16496L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128 0x4p-16496L 0x0p+0L : 0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128 0x4p-16496L 0x0p+0L : 0x4p-16496L 0x0p+0L : inexact-ok underflow errno-erange-ok
+ctanh -min_subnorm 0
+= ctanh downward flt-32 -0x8p-152f 0x0p+0f : -0x8p-152f 0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctanh tonearest flt-32 -0x8p-152f 0x0p+0f : -0x8p-152f 0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctanh towardzero flt-32 -0x8p-152f 0x0p+0f : -0x0p+0f 0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctanh upward flt-32 -0x8p-152f 0x0p+0f : -0x0p+0f 0x0p+0f : inexact-ok underflow errno-erange-ok
+= ctanh downward dbl-64 -0x8p-152 0x0p+0 : -0x8p-152 0x0p+0 : inexact-ok
+= ctanh tonearest dbl-64 -0x8p-152 0x0p+0 : -0x8p-152 0x0p+0 : inexact-ok
+= ctanh towardzero dbl-64 -0x8p-152 0x0p+0 : -0x7.ffffffffffffcp-152 0x0p+0 : inexact-ok
+= ctanh upward dbl-64 -0x8p-152 0x0p+0 : -0x7.ffffffffffffcp-152 0x0p+0 : inexact-ok
+= ctanh downward ldbl-96-intel -0x8p-152L 0x0p+0L : -0x8p-152L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-intel -0x8p-152L 0x0p+0L : -0x8p-152L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-intel -0x8p-152L 0x0p+0L : -0x7.fffffffffffffff8p-152L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-intel -0x8p-152L 0x0p+0L : -0x7.fffffffffffffff8p-152L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-96-m68k -0x8p-152L 0x0p+0L : -0x8p-152L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-m68k -0x8p-152L 0x0p+0L : -0x8p-152L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-m68k -0x8p-152L 0x0p+0L : -0x7.fffffffffffffff8p-152L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-m68k -0x8p-152L 0x0p+0L : -0x7.fffffffffffffff8p-152L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128 -0x8p-152L 0x0p+0L : -0x8p-152L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-128 -0x8p-152L 0x0p+0L : -0x8p-152L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-128 -0x8p-152L 0x0p+0L : -0x7.fffffffffffffffffffffffffffcp-152L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-128 -0x8p-152L 0x0p+0L : -0x7.fffffffffffffffffffffffffffcp-152L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128ibm -0x8p-152L 0x0p+0L : -0x8p-152L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-128ibm -0x8p-152L 0x0p+0L : -0x8p-152L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-128ibm -0x8p-152L 0x0p+0L : -0x7.fffffffffffffffffffffffffep-152L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-128ibm -0x8p-152L 0x0p+0L : -0x7.fffffffffffffffffffffffffep-152L 0x0p+0L : inexact-ok
+= ctanh downward dbl-64 -0x4p-1076 0x0p+0 : -0x4p-1076 0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctanh tonearest dbl-64 -0x4p-1076 0x0p+0 : -0x4p-1076 0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctanh towardzero dbl-64 -0x4p-1076 0x0p+0 : -0x0p+0 0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctanh upward dbl-64 -0x4p-1076 0x0p+0 : -0x0p+0 0x0p+0 : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-intel -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-intel -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-intel -0x4p-1076L 0x0p+0L : -0x3.fffffffffffffffcp-1076L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-intel -0x4p-1076L 0x0p+0L : -0x3.fffffffffffffffcp-1076L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-96-m68k -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-96-m68k -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-96-m68k -0x4p-1076L 0x0p+0L : -0x3.fffffffffffffffcp-1076L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-96-m68k -0x4p-1076L 0x0p+0L : -0x3.fffffffffffffffcp-1076L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128 -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok
+= ctanh tonearest ldbl-128 -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok
+= ctanh towardzero ldbl-128 -0x4p-1076L 0x0p+0L : -0x3.fffffffffffffffffffffffffffep-1076L 0x0p+0L : inexact-ok
+= ctanh upward ldbl-128 -0x4p-1076L 0x0p+0L : -0x3.fffffffffffffffffffffffffffep-1076L 0x0p+0L : inexact-ok
+= ctanh downward ldbl-128ibm -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128ibm -0x4p-1076L 0x0p+0L : -0x4p-1076L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128ibm -0x4p-1076L 0x0p+0L : -0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128ibm -0x4p-1076L 0x0p+0L : -0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-intel -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-96-intel -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-96-intel -0x8p-16448L 0x0p+0L : -0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-96-intel -0x8p-16448L 0x0p+0L : -0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-m68k -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-96-m68k -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-96-m68k -0x8p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-96-m68k -0x8p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-128 -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128 -0x8p-16448L 0x0p+0L : -0x8p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128 -0x8p-16448L 0x0p+0L : -0x7.fffffffffffcp-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128 -0x8p-16448L 0x0p+0L : -0x7.fffffffffffcp-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-96-m68k -0x4p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-96-m68k -0x4p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-96-m68k -0x4p-16448L 0x0p+0L : -0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-96-m68k -0x4p-16448L 0x0p+0L : -0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-128 -0x4p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128 -0x4p-16448L 0x0p+0L : -0x4p-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128 -0x4p-16448L 0x0p+0L : -0x3.fffffffffffcp-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128 -0x4p-16448L 0x0p+0L : -0x3.fffffffffffcp-16448L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh downward ldbl-128 -0x4p-16496L 0x0p+0L : -0x4p-16496L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh tonearest ldbl-128 -0x4p-16496L 0x0p+0L : -0x4p-16496L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh towardzero ldbl-128 -0x4p-16496L 0x0p+0L : -0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
+= ctanh upward ldbl-128 -0x4p-16496L 0x0p+0L : -0x0p+0L 0x0p+0L : inexact-ok underflow errno-erange-ok
 erf 0
 = erf downward flt-32 0x0p+0f : 0x0p+0f : inexact-ok
 = erf tonearest flt-32 0x0p+0f : 0x0p+0f : inexact-ok
diff --git a/math/s_ctan.c b/math/s_ctan.c
index eaf31fa647..bcf5cfcec0 100644
--- a/math/s_ctan.c
+++ b/math/s_ctan.c
@@ -110,6 +110,16 @@ __ctan (__complex__ double x)
 	  __real__ res = sinrx * cosrx / den;
 	  __imag__ res = sinhix * coshix / den;
 	}
+      if (fabs (__real__ res) < DBL_MIN)
+	{
+	  double force_underflow = __real__ res * __real__ res;
+	  math_force_eval (force_underflow);
+	}
+      if (fabs (__imag__ res) < DBL_MIN)
+	{
+	  double force_underflow = __imag__ res * __imag__ res;
+	  math_force_eval (force_underflow);
+	}
     }
 
   return res;
diff --git a/math/s_ctanf.c b/math/s_ctanf.c
index e0a6b8f07c..683ab6e544 100644
--- a/math/s_ctanf.c
+++ b/math/s_ctanf.c
@@ -110,6 +110,16 @@ __ctanf (__complex__ float x)
 	  __real__ res = sinrx * cosrx / den;
 	  __imag__ res = sinhix * coshix / den;
 	}
+      if (fabsf (__real__ res) < FLT_MIN)
+	{
+	  float force_underflow = __real__ res * __real__ res;
+	  math_force_eval (force_underflow);
+	}
+      if (fabsf (__imag__ res) < FLT_MIN)
+	{
+	  float force_underflow = __imag__ res * __imag__ res;
+	  math_force_eval (force_underflow);
+	}
     }
 
   return res;
diff --git a/math/s_ctanh.c b/math/s_ctanh.c
index 1347d07834..76a0501a73 100644
--- a/math/s_ctanh.c
+++ b/math/s_ctanh.c
@@ -110,6 +110,16 @@ __ctanh (__complex__ double x)
 	  __real__ res = sinhrx * coshrx / den;
 	  __imag__ res = sinix * cosix / den;
 	}
+      if (fabs (__real__ res) < DBL_MIN)
+	{
+	  double force_underflow = __real__ res * __real__ res;
+	  math_force_eval (force_underflow);
+	}
+      if (fabs (__imag__ res) < DBL_MIN)
+	{
+	  double force_underflow = __imag__ res * __imag__ res;
+	  math_force_eval (force_underflow);
+	}
     }
 
   return res;
diff --git a/math/s_ctanhf.c b/math/s_ctanhf.c
index 14e1371ef5..9d15c3ef0c 100644
--- a/math/s_ctanhf.c
+++ b/math/s_ctanhf.c
@@ -110,6 +110,16 @@ __ctanhf (__complex__ float x)
 	  __real__ res = sinhrx * coshrx / den;
 	  __imag__ res = sinix * cosix / den;
 	}
+      if (fabsf (__real__ res) < FLT_MIN)
+	{
+	  float force_underflow = __real__ res * __real__ res;
+	  math_force_eval (force_underflow);
+	}
+      if (fabsf (__imag__ res) < FLT_MIN)
+	{
+	  float force_underflow = __imag__ res * __imag__ res;
+	  math_force_eval (force_underflow);
+	}
     }
 
   return res;
diff --git a/math/s_ctanhl.c b/math/s_ctanhl.c
index 6b9dfc5bb2..9c15bb3a4a 100644
--- a/math/s_ctanhl.c
+++ b/math/s_ctanhl.c
@@ -117,6 +117,16 @@ __ctanhl (__complex__ long double x)
 	  __real__ res = sinhrx * coshrx / den;
 	  __imag__ res = sinix * cosix / den;
 	}
+      if (fabsl (__real__ res) < LDBL_MIN)
+	{
+	  long double force_underflow = __real__ res * __real__ res;
+	  math_force_eval (force_underflow);
+	}
+      if (fabsl (__imag__ res) < LDBL_MIN)
+	{
+	  long double force_underflow = __imag__ res * __imag__ res;
+	  math_force_eval (force_underflow);
+	}
     }
 
   return res;
diff --git a/math/s_ctanl.c b/math/s_ctanl.c
index 0fd0039053..48ab81b64b 100644
--- a/math/s_ctanl.c
+++ b/math/s_ctanl.c
@@ -117,6 +117,16 @@ __ctanl (__complex__ long double x)
 	  __real__ res = sinrx * cosrx / den;
 	  __imag__ res = sinhix * coshix / den;
 	}
+      if (fabsl (__real__ res) < LDBL_MIN)
+	{
+	  long double force_underflow = __real__ res * __real__ res;
+	  math_force_eval (force_underflow);
+	}
+      if (fabsl (__imag__ res) < LDBL_MIN)
+	{
+	  long double force_underflow = __imag__ res * __imag__ res;
+	  math_force_eval (force_underflow);
+	}
     }
 
   return res;