about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog17
-rw-r--r--NEWS8
-rw-r--r--math/auto-libm-test-in8
-rw-r--r--math/auto-libm-test-out558
-rw-r--r--math/gen-auto-libm-tests.c23
-rw-r--r--math/libm-test.inc4
-rw-r--r--sysdeps/i386/fpu/libm-test-ulps24
-rw-r--r--sysdeps/x86_64/fpu/libm-test-ulps24
8 files changed, 367 insertions, 299 deletions
diff --git a/ChangeLog b/ChangeLog
index 47bf2a3aea..b8f1d86d5a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2014-03-25  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #16357]
+	[BZ #16599]
+	* math/gen-auto-libm-tests.c (fp_format_desc): Add field
+	min_plus_half.
+	(fp_formats): Update initializers.
+	(init_fp_formats): Initialize new field.
+	(output_for_one_input_case): Allow underflow for results up to
+	min_plus_half.
+	* math/libm-test.inc (log1p_test): Use ALL_RM_TEST.
+	* math/auto-libm-test-in: Don't mark some underflows from asin and
+	atanh as spurious.
+	* math/auto-libm-test-out: Regenerated.
+	* sysdeps/i386/fpu/libm-test-ulps: Update.
+	* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
+
 2014-03-25  Andreas Schwab  <schwab@suse.de>
 
 	* libio/Makefile (tst-ftell-partial-wide-ENV)
diff --git a/NEWS b/NEWS
index a55031b365..1dbce87fcf 100644
--- a/NEWS
+++ b/NEWS
@@ -9,10 +9,10 @@ Version 2.20
 
 * The following bugs are resolved with this release:
 
-  15347, 15804, 15894, 16002, 16284, 16447, 16532, 16545, 16574, 16600,
-  16609, 16610, 16611, 16613, 16623, 16632, 16634, 16639, 16642, 16649,
-  16670, 16674, 16677, 16680, 16683, 16689, 16695, 16701, 16706, 16707,
-  16712, 16713, 16714, 16731, 16743.
+  15347, 15804, 15894, 16002, 16284, 16357, 16447, 16532, 16545, 16574,
+  16599, 16600, 16609, 16610, 16611, 16613, 16623, 16632, 16634, 16639,
+  16642, 16649, 16670, 16674, 16677, 16680, 16683, 16689, 16695, 16701,
+  16706, 16707, 16712, 16713, 16714, 16731, 16743.
 
 * Running the testsuite no longer terminates as soon as a test fails.
   Instead, a file tests.sum (xtests.sum from "make xcheck") is generated,
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 59756319cf..7c80192ccd 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -61,9 +61,8 @@ asin -0x0.ffffffffffffp0
 asin 0x0.ffffffffffffffffp0
 asin -0x0.ffffffffffffffffp0
 # Bug 16351: underflow exception may be missing.
-# Bug 16599: spurious underflow may occur.
 asin min missing-underflow
-asin -min missing-underflow spurious-underflow:dbl-64:x86
+asin -min missing-underflow
 asin min_subnorm missing-underflow
 asin -min_subnorm missing-underflow
 
@@ -175,9 +174,8 @@ atanh 0x1p-5
 atanh 0x1p-10
 atanh 0x1.2345p-20
 # Bug 16352: underflow exception may be missing.
-# Bug 16357: spurious underflow may occur.
-atanh min missing-underflow spurious-underflow:ldbl-96-intel:x86
-atanh -min missing-underflow spurious-underflow:ldbl-96-intel:x86
+atanh min missing-underflow
+atanh -min missing-underflow
 atanh min_subnorm missing-underflow
 atanh -min_subnorm missing-underflow
 
diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out
index cb8ac21232..1dadc38c6c 100644
--- a/math/auto-libm-test-out
+++ b/math/auto-libm-test-out
@@ -2021,10 +2021,10 @@ asin -0x0.ffffffffffffffffp0
 = asin towardzero ldbl-128ibm -0xf.fffffffffffffffp-4L : -0x1.921fb542d8c79e0195cffc0e308p+0L : inexact-ok
 = asin upward ldbl-128ibm -0xf.fffffffffffffffp-4L : -0x1.921fb542d8c79e0195cffc0e308p+0L : inexact-ok
 asin min missing-underflow
-= asin downward flt-32 0x4p-128f : 0x4p-128f : inexact-ok
-= asin tonearest flt-32 0x4p-128f : 0x4p-128f : inexact-ok
-= asin towardzero flt-32 0x4p-128f : 0x4p-128f : inexact-ok
-= asin upward flt-32 0x4p-128f : 0x4.000008p-128f : inexact-ok
+= asin downward flt-32 0x4p-128f : 0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= asin tonearest flt-32 0x4p-128f : 0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= asin towardzero flt-32 0x4p-128f : 0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= asin upward flt-32 0x4p-128f : 0x4.000008p-128f : inexact-ok underflow-ok errno-erange-ok
 = asin downward dbl-64 0x4p-128 : 0x4p-128 : inexact-ok
 = asin tonearest dbl-64 0x4p-128 : 0x4p-128 : inexact-ok
 = asin towardzero dbl-64 0x4p-128 : 0x4p-128 : inexact-ok
@@ -2045,10 +2045,10 @@ asin min missing-underflow
 = asin tonearest ldbl-128ibm 0x4p-128L : 0x4p-128L : inexact-ok
 = asin towardzero ldbl-128ibm 0x4p-128L : 0x4p-128L : inexact-ok
 = asin upward ldbl-128ibm 0x4p-128L : 0x4.00000000000000000000000002p-128L : inexact-ok
-= asin downward dbl-64 0x4p-1024 : 0x4p-1024 : inexact-ok
-= asin tonearest dbl-64 0x4p-1024 : 0x4p-1024 : inexact-ok
-= asin towardzero dbl-64 0x4p-1024 : 0x4p-1024 : inexact-ok
-= asin upward dbl-64 0x4p-1024 : 0x4.0000000000004p-1024 : inexact-ok
+= asin downward dbl-64 0x4p-1024 : 0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= asin tonearest dbl-64 0x4p-1024 : 0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= asin towardzero dbl-64 0x4p-1024 : 0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= asin upward dbl-64 0x4p-1024 : 0x4.0000000000004p-1024 : inexact-ok underflow-ok errno-erange-ok
 = asin downward ldbl-96-intel 0x4p-1024L : 0x4p-1024L : inexact-ok
 = asin tonearest ldbl-96-intel 0x4p-1024L : 0x4p-1024L : inexact-ok
 = asin towardzero ldbl-96-intel 0x4p-1024L : 0x4p-1024L : inexact-ok
@@ -2065,26 +2065,26 @@ asin min missing-underflow
 = asin tonearest ldbl-128ibm 0x4p-1024L : 0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
 = asin towardzero ldbl-128ibm 0x4p-1024L : 0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
 = asin upward ldbl-128ibm 0x4p-1024L : 0x4.0000000000004p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
-= asin downward ldbl-96-intel 0x4p-16384L : 0x4p-16384L : inexact-ok
-= asin tonearest ldbl-96-intel 0x4p-16384L : 0x4p-16384L : inexact-ok
-= asin towardzero ldbl-96-intel 0x4p-16384L : 0x4p-16384L : inexact-ok
-= asin upward ldbl-96-intel 0x4p-16384L : 0x4.0000000000000008p-16384L : inexact-ok
+= asin downward ldbl-96-intel 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin tonearest ldbl-96-intel 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin towardzero ldbl-96-intel 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin upward ldbl-96-intel 0x4p-16384L : 0x4.0000000000000008p-16384L : inexact-ok underflow-ok errno-erange-ok
 = asin downward ldbl-96-m68k 0x4p-16384L : 0x4p-16384L : inexact-ok
 = asin tonearest ldbl-96-m68k 0x4p-16384L : 0x4p-16384L : inexact-ok
 = asin towardzero ldbl-96-m68k 0x4p-16384L : 0x4p-16384L : inexact-ok
 = asin upward ldbl-96-m68k 0x4p-16384L : 0x4.0000000000000008p-16384L : inexact-ok
-= asin downward ldbl-128 0x4p-16384L : 0x4p-16384L : inexact-ok
-= asin tonearest ldbl-128 0x4p-16384L : 0x4p-16384L : inexact-ok
-= asin towardzero ldbl-128 0x4p-16384L : 0x4p-16384L : inexact-ok
-= asin upward ldbl-128 0x4p-16384L : 0x4.0000000000000000000000000004p-16384L : inexact-ok
+= asin downward ldbl-128 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin tonearest ldbl-128 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin towardzero ldbl-128 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin upward ldbl-128 0x4p-16384L : 0x4.0000000000000000000000000004p-16384L : inexact-ok underflow-ok errno-erange-ok
 = asin downward ldbl-96-intel 0x2p-16384L : 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = asin tonearest ldbl-96-intel 0x2p-16384L : 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = asin towardzero ldbl-96-intel 0x2p-16384L : 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = asin upward ldbl-96-intel 0x2p-16384L : 0x2.0000000000000008p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= asin downward ldbl-96-m68k 0x2p-16384L : 0x2p-16384L : inexact-ok
-= asin tonearest ldbl-96-m68k 0x2p-16384L : 0x2p-16384L : inexact-ok
-= asin towardzero ldbl-96-m68k 0x2p-16384L : 0x2p-16384L : inexact-ok
-= asin upward ldbl-96-m68k 0x2p-16384L : 0x2.0000000000000004p-16384L : inexact-ok
+= asin downward ldbl-96-m68k 0x2p-16384L : 0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin tonearest ldbl-96-m68k 0x2p-16384L : 0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin towardzero ldbl-96-m68k 0x2p-16384L : 0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin upward ldbl-96-m68k 0x2p-16384L : 0x2.0000000000000004p-16384L : inexact-ok underflow-ok errno-erange-ok
 = asin downward ldbl-128 0x2p-16384L : 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = asin tonearest ldbl-128 0x2p-16384L : 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = asin towardzero ldbl-128 0x2p-16384L : 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
@@ -2105,99 +2105,99 @@ asin min missing-underflow
 = asin tonearest ldbl-128 0x8p-972L : 0x8p-972L : inexact-ok
 = asin towardzero ldbl-128 0x8p-972L : 0x8p-972L : inexact-ok
 = asin upward ldbl-128 0x8p-972L : 0x8.0000000000000000000000000008p-972L : inexact-ok
-= asin downward ldbl-128ibm 0x8p-972L : 0x8p-972L : inexact-ok
-= asin tonearest ldbl-128ibm 0x8p-972L : 0x8p-972L : inexact-ok
-= asin towardzero ldbl-128ibm 0x8p-972L : 0x8p-972L : inexact-ok
-= asin upward ldbl-128ibm 0x8p-972L : 0x8.00000000000000000000000004p-972L : inexact-ok
-asin -min missing-underflow spurious-underflow:dbl-64:x86
-= asin downward flt-32 -0x4p-128f : -0x4.000008p-128f : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok:dbl-64:x86
-= asin upward flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok:dbl-64:x86
-= asin downward dbl-64 -0x4p-128 : -0x4.0000000000004p-128 : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest dbl-64 -0x4p-128 : -0x4p-128 : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero dbl-64 -0x4p-128 : -0x4p-128 : inexact-ok underflow-ok:dbl-64:x86
-= asin upward dbl-64 -0x4p-128 : -0x4p-128 : inexact-ok underflow-ok:dbl-64:x86
-= asin downward ldbl-96-intel -0x4p-128L : -0x4.0000000000000008p-128L : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest ldbl-96-intel -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero ldbl-96-intel -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:dbl-64:x86
-= asin upward ldbl-96-intel -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:dbl-64:x86
-= asin downward ldbl-96-m68k -0x4p-128L : -0x4.0000000000000008p-128L : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest ldbl-96-m68k -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero ldbl-96-m68k -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:dbl-64:x86
-= asin upward ldbl-96-m68k -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:dbl-64:x86
-= asin downward ldbl-128 -0x4p-128L : -0x4.0000000000000000000000000004p-128L : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest ldbl-128 -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero ldbl-128 -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:dbl-64:x86
-= asin upward ldbl-128 -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:dbl-64:x86
-= asin downward ldbl-128ibm -0x4p-128L : -0x4.00000000000000000000000002p-128L : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest ldbl-128ibm -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero ldbl-128ibm -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:dbl-64:x86
-= asin upward ldbl-128ibm -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:dbl-64:x86
-= asin downward dbl-64 -0x4p-1024 : -0x4.0000000000004p-1024 : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok underflow-ok:dbl-64:x86
-= asin upward dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok underflow-ok:dbl-64:x86
-= asin downward ldbl-96-intel -0x4p-1024L : -0x4.0000000000000008p-1024L : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest ldbl-96-intel -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero ldbl-96-intel -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:dbl-64:x86
-= asin upward ldbl-96-intel -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:dbl-64:x86
-= asin downward ldbl-96-m68k -0x4p-1024L : -0x4.0000000000000008p-1024L : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest ldbl-96-m68k -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero ldbl-96-m68k -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:dbl-64:x86
-= asin upward ldbl-96-m68k -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:dbl-64:x86
-= asin downward ldbl-128 -0x4p-1024L : -0x4.0000000000000000000000000004p-1024L : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest ldbl-128 -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero ldbl-128 -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:dbl-64:x86
-= asin upward ldbl-128 -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:dbl-64:x86
+= asin downward ldbl-128ibm 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok errno-erange-ok
+= asin tonearest ldbl-128ibm 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok errno-erange-ok
+= asin towardzero ldbl-128ibm 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok errno-erange-ok
+= asin upward ldbl-128ibm 0x8p-972L : 0x8.00000000000000000000000004p-972L : inexact-ok underflow-ok errno-erange-ok
+asin -min missing-underflow
+= asin downward flt-32 -0x4p-128f : -0x4.000008p-128f : inexact-ok underflow-ok errno-erange-ok
+= asin tonearest flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= asin towardzero flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= asin upward flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= asin downward dbl-64 -0x4p-128 : -0x4.0000000000004p-128 : inexact-ok
+= asin tonearest dbl-64 -0x4p-128 : -0x4p-128 : inexact-ok
+= asin towardzero dbl-64 -0x4p-128 : -0x4p-128 : inexact-ok
+= asin upward dbl-64 -0x4p-128 : -0x4p-128 : inexact-ok
+= asin downward ldbl-96-intel -0x4p-128L : -0x4.0000000000000008p-128L : inexact-ok
+= asin tonearest ldbl-96-intel -0x4p-128L : -0x4p-128L : inexact-ok
+= asin towardzero ldbl-96-intel -0x4p-128L : -0x4p-128L : inexact-ok
+= asin upward ldbl-96-intel -0x4p-128L : -0x4p-128L : inexact-ok
+= asin downward ldbl-96-m68k -0x4p-128L : -0x4.0000000000000008p-128L : inexact-ok
+= asin tonearest ldbl-96-m68k -0x4p-128L : -0x4p-128L : inexact-ok
+= asin towardzero ldbl-96-m68k -0x4p-128L : -0x4p-128L : inexact-ok
+= asin upward ldbl-96-m68k -0x4p-128L : -0x4p-128L : inexact-ok
+= asin downward ldbl-128 -0x4p-128L : -0x4.0000000000000000000000000004p-128L : inexact-ok
+= asin tonearest ldbl-128 -0x4p-128L : -0x4p-128L : inexact-ok
+= asin towardzero ldbl-128 -0x4p-128L : -0x4p-128L : inexact-ok
+= asin upward ldbl-128 -0x4p-128L : -0x4p-128L : inexact-ok
+= asin downward ldbl-128ibm -0x4p-128L : -0x4.00000000000000000000000002p-128L : inexact-ok
+= asin tonearest ldbl-128ibm -0x4p-128L : -0x4p-128L : inexact-ok
+= asin towardzero ldbl-128ibm -0x4p-128L : -0x4p-128L : inexact-ok
+= asin upward ldbl-128ibm -0x4p-128L : -0x4p-128L : inexact-ok
+= asin downward dbl-64 -0x4p-1024 : -0x4.0000000000004p-1024 : inexact-ok underflow-ok errno-erange-ok
+= asin tonearest dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= asin towardzero dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= asin upward dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= asin downward ldbl-96-intel -0x4p-1024L : -0x4.0000000000000008p-1024L : inexact-ok
+= asin tonearest ldbl-96-intel -0x4p-1024L : -0x4p-1024L : inexact-ok
+= asin towardzero ldbl-96-intel -0x4p-1024L : -0x4p-1024L : inexact-ok
+= asin upward ldbl-96-intel -0x4p-1024L : -0x4p-1024L : inexact-ok
+= asin downward ldbl-96-m68k -0x4p-1024L : -0x4.0000000000000008p-1024L : inexact-ok
+= asin tonearest ldbl-96-m68k -0x4p-1024L : -0x4p-1024L : inexact-ok
+= asin towardzero ldbl-96-m68k -0x4p-1024L : -0x4p-1024L : inexact-ok
+= asin upward ldbl-96-m68k -0x4p-1024L : -0x4p-1024L : inexact-ok
+= asin downward ldbl-128 -0x4p-1024L : -0x4.0000000000000000000000000004p-1024L : inexact-ok
+= asin tonearest ldbl-128 -0x4p-1024L : -0x4p-1024L : inexact-ok
+= asin towardzero ldbl-128 -0x4p-1024L : -0x4p-1024L : inexact-ok
+= asin upward ldbl-128 -0x4p-1024L : -0x4p-1024L : inexact-ok
 = asin downward ldbl-128ibm -0x4p-1024L : -0x4.0000000000004p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
 = asin tonearest ldbl-128ibm -0x4p-1024L : -0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
 = asin towardzero ldbl-128ibm -0x4p-1024L : -0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
 = asin upward ldbl-128ibm -0x4p-1024L : -0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
-= asin downward ldbl-96-intel -0x4p-16384L : -0x4.0000000000000008p-16384L : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:dbl-64:x86
-= asin upward ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:dbl-64:x86
-= asin downward ldbl-96-m68k -0x4p-16384L : -0x4.0000000000000008p-16384L : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest ldbl-96-m68k -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero ldbl-96-m68k -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:dbl-64:x86
-= asin upward ldbl-96-m68k -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:dbl-64:x86
-= asin downward ldbl-128 -0x4p-16384L : -0x4.0000000000000000000000000004p-16384L : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:dbl-64:x86
-= asin upward ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:dbl-64:x86
+= asin downward ldbl-96-intel -0x4p-16384L : -0x4.0000000000000008p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin tonearest ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin towardzero ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin upward ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin downward ldbl-96-m68k -0x4p-16384L : -0x4.0000000000000008p-16384L : inexact-ok
+= asin tonearest ldbl-96-m68k -0x4p-16384L : -0x4p-16384L : inexact-ok
+= asin towardzero ldbl-96-m68k -0x4p-16384L : -0x4p-16384L : inexact-ok
+= asin upward ldbl-96-m68k -0x4p-16384L : -0x4p-16384L : inexact-ok
+= asin downward ldbl-128 -0x4p-16384L : -0x4.0000000000000000000000000004p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin tonearest ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin towardzero ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin upward ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
 = asin downward ldbl-96-intel -0x2p-16384L : -0x2.0000000000000008p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = asin tonearest ldbl-96-intel -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = asin towardzero ldbl-96-intel -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = asin upward ldbl-96-intel -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= asin downward ldbl-96-m68k -0x2p-16384L : -0x2.0000000000000004p-16384L : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok:dbl-64:x86
-= asin upward ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok:dbl-64:x86
+= asin downward ldbl-96-m68k -0x2p-16384L : -0x2.0000000000000004p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin tonearest ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin towardzero ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
+= asin upward ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
 = asin downward ldbl-128 -0x2p-16384L : -0x2.0000000000000000000000000004p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = asin tonearest ldbl-128 -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = asin towardzero ldbl-128 -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = asin upward ldbl-128 -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= asin downward dbl-64 -0x8p-972 : -0x8.0000000000008p-972 : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest dbl-64 -0x8p-972 : -0x8p-972 : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero dbl-64 -0x8p-972 : -0x8p-972 : inexact-ok underflow-ok:dbl-64:x86
-= asin upward dbl-64 -0x8p-972 : -0x8p-972 : inexact-ok underflow-ok:dbl-64:x86
-= asin downward ldbl-96-intel -0x8p-972L : -0x8.000000000000001p-972L : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest ldbl-96-intel -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero ldbl-96-intel -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:dbl-64:x86
-= asin upward ldbl-96-intel -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:dbl-64:x86
-= asin downward ldbl-96-m68k -0x8p-972L : -0x8.000000000000001p-972L : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest ldbl-96-m68k -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero ldbl-96-m68k -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:dbl-64:x86
-= asin upward ldbl-96-m68k -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:dbl-64:x86
-= asin downward ldbl-128 -0x8p-972L : -0x8.0000000000000000000000000008p-972L : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest ldbl-128 -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero ldbl-128 -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:dbl-64:x86
-= asin upward ldbl-128 -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:dbl-64:x86
-= asin downward ldbl-128ibm -0x8p-972L : -0x8.00000000000000000000000004p-972L : inexact-ok underflow-ok:dbl-64:x86
-= asin tonearest ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:dbl-64:x86
-= asin towardzero ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:dbl-64:x86
-= asin upward ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:dbl-64:x86
+= asin downward dbl-64 -0x8p-972 : -0x8.0000000000008p-972 : inexact-ok
+= asin tonearest dbl-64 -0x8p-972 : -0x8p-972 : inexact-ok
+= asin towardzero dbl-64 -0x8p-972 : -0x8p-972 : inexact-ok
+= asin upward dbl-64 -0x8p-972 : -0x8p-972 : inexact-ok
+= asin downward ldbl-96-intel -0x8p-972L : -0x8.000000000000001p-972L : inexact-ok
+= asin tonearest ldbl-96-intel -0x8p-972L : -0x8p-972L : inexact-ok
+= asin towardzero ldbl-96-intel -0x8p-972L : -0x8p-972L : inexact-ok
+= asin upward ldbl-96-intel -0x8p-972L : -0x8p-972L : inexact-ok
+= asin downward ldbl-96-m68k -0x8p-972L : -0x8.000000000000001p-972L : inexact-ok
+= asin tonearest ldbl-96-m68k -0x8p-972L : -0x8p-972L : inexact-ok
+= asin towardzero ldbl-96-m68k -0x8p-972L : -0x8p-972L : inexact-ok
+= asin upward ldbl-96-m68k -0x8p-972L : -0x8p-972L : inexact-ok
+= asin downward ldbl-128 -0x8p-972L : -0x8.0000000000000000000000000008p-972L : inexact-ok
+= asin tonearest ldbl-128 -0x8p-972L : -0x8p-972L : inexact-ok
+= asin towardzero ldbl-128 -0x8p-972L : -0x8p-972L : inexact-ok
+= asin upward ldbl-128 -0x8p-972L : -0x8p-972L : inexact-ok
+= asin downward ldbl-128ibm -0x8p-972L : -0x8.00000000000000000000000004p-972L : inexact-ok underflow-ok errno-erange-ok
+= asin tonearest ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok errno-erange-ok
+= asin towardzero ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok errno-erange-ok
+= asin upward ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok errno-erange-ok
 asin min_subnorm missing-underflow
 = asin downward flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
 = asin tonearest flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
@@ -13708,184 +13708,184 @@ atanh 0x1.2345p-20
 = atanh tonearest ldbl-128ibm 0x1.2345p-20L : 0x1.23450000007daf665297209f1ap-20L : inexact-ok
 = atanh towardzero ldbl-128ibm 0x1.2345p-20L : 0x1.23450000007daf665297209f198p-20L : inexact-ok
 = atanh upward ldbl-128ibm 0x1.2345p-20L : 0x1.23450000007daf665297209f1ap-20L : inexact-ok
-atanh min missing-underflow spurious-underflow:ldbl-96-intel:x86
-= atanh downward flt-32 0x4p-128f : 0x4p-128f : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest flt-32 0x4p-128f : 0x4p-128f : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero flt-32 0x4p-128f : 0x4p-128f : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward flt-32 0x4p-128f : 0x4.000008p-128f : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward dbl-64 0x4p-128 : 0x4p-128 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest dbl-64 0x4p-128 : 0x4p-128 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero dbl-64 0x4p-128 : 0x4p-128 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward dbl-64 0x4p-128 : 0x4.0000000000004p-128 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-96-intel 0x4p-128L : 0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-intel 0x4p-128L : 0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-intel 0x4p-128L : 0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-intel 0x4p-128L : 0x4.0000000000000008p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-96-m68k 0x4p-128L : 0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-m68k 0x4p-128L : 0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-m68k 0x4p-128L : 0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-m68k 0x4p-128L : 0x4.0000000000000008p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-128 0x4p-128L : 0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-128 0x4p-128L : 0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-128 0x4p-128L : 0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-128 0x4p-128L : 0x4.0000000000000000000000000004p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-128ibm 0x4p-128L : 0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-128ibm 0x4p-128L : 0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-128ibm 0x4p-128L : 0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-128ibm 0x4p-128L : 0x4.00000000000000000000000002p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward dbl-64 0x4p-1024 : 0x4p-1024 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest dbl-64 0x4p-1024 : 0x4p-1024 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero dbl-64 0x4p-1024 : 0x4p-1024 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward dbl-64 0x4p-1024 : 0x4.0000000000004p-1024 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-96-intel 0x4p-1024L : 0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-intel 0x4p-1024L : 0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-intel 0x4p-1024L : 0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-intel 0x4p-1024L : 0x4.0000000000000008p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-96-m68k 0x4p-1024L : 0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-m68k 0x4p-1024L : 0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-m68k 0x4p-1024L : 0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-m68k 0x4p-1024L : 0x4.0000000000000008p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-128 0x4p-1024L : 0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-128 0x4p-1024L : 0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-128 0x4p-1024L : 0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-128 0x4p-1024L : 0x4.0000000000000000000000000004p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
+atanh min missing-underflow
+= atanh downward flt-32 0x4p-128f : 0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= atanh tonearest flt-32 0x4p-128f : 0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= atanh towardzero flt-32 0x4p-128f : 0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= atanh upward flt-32 0x4p-128f : 0x4.000008p-128f : inexact-ok underflow-ok errno-erange-ok
+= atanh downward dbl-64 0x4p-128 : 0x4p-128 : inexact-ok
+= atanh tonearest dbl-64 0x4p-128 : 0x4p-128 : inexact-ok
+= atanh towardzero dbl-64 0x4p-128 : 0x4p-128 : inexact-ok
+= atanh upward dbl-64 0x4p-128 : 0x4.0000000000004p-128 : inexact-ok
+= atanh downward ldbl-96-intel 0x4p-128L : 0x4p-128L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x4p-128L : 0x4p-128L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x4p-128L : 0x4p-128L : inexact-ok
+= atanh upward ldbl-96-intel 0x4p-128L : 0x4.0000000000000008p-128L : inexact-ok
+= atanh downward ldbl-96-m68k 0x4p-128L : 0x4p-128L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x4p-128L : 0x4p-128L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x4p-128L : 0x4p-128L : inexact-ok
+= atanh upward ldbl-96-m68k 0x4p-128L : 0x4.0000000000000008p-128L : inexact-ok
+= atanh downward ldbl-128 0x4p-128L : 0x4p-128L : inexact-ok
+= atanh tonearest ldbl-128 0x4p-128L : 0x4p-128L : inexact-ok
+= atanh towardzero ldbl-128 0x4p-128L : 0x4p-128L : inexact-ok
+= atanh upward ldbl-128 0x4p-128L : 0x4.0000000000000000000000000004p-128L : inexact-ok
+= atanh downward ldbl-128ibm 0x4p-128L : 0x4p-128L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x4p-128L : 0x4p-128L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x4p-128L : 0x4p-128L : inexact-ok
+= atanh upward ldbl-128ibm 0x4p-128L : 0x4.00000000000000000000000002p-128L : inexact-ok
+= atanh downward dbl-64 0x4p-1024 : 0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= atanh tonearest dbl-64 0x4p-1024 : 0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= atanh towardzero dbl-64 0x4p-1024 : 0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= atanh upward dbl-64 0x4p-1024 : 0x4.0000000000004p-1024 : inexact-ok underflow-ok errno-erange-ok
+= atanh downward ldbl-96-intel 0x4p-1024L : 0x4p-1024L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x4p-1024L : 0x4p-1024L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x4p-1024L : 0x4p-1024L : inexact-ok
+= atanh upward ldbl-96-intel 0x4p-1024L : 0x4.0000000000000008p-1024L : inexact-ok
+= atanh downward ldbl-96-m68k 0x4p-1024L : 0x4p-1024L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x4p-1024L : 0x4p-1024L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x4p-1024L : 0x4p-1024L : inexact-ok
+= atanh upward ldbl-96-m68k 0x4p-1024L : 0x4.0000000000000008p-1024L : inexact-ok
+= atanh downward ldbl-128 0x4p-1024L : 0x4p-1024L : inexact-ok
+= atanh tonearest ldbl-128 0x4p-1024L : 0x4p-1024L : inexact-ok
+= atanh towardzero ldbl-128 0x4p-1024L : 0x4p-1024L : inexact-ok
+= atanh upward ldbl-128 0x4p-1024L : 0x4.0000000000000000000000000004p-1024L : inexact-ok
 = atanh downward ldbl-128ibm 0x4p-1024L : 0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh tonearest ldbl-128ibm 0x4p-1024L : 0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh towardzero ldbl-128ibm 0x4p-1024L : 0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh upward ldbl-128ibm 0x4p-1024L : 0x4.0000000000004p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
-= atanh downward ldbl-96-intel 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-intel 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-intel 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-intel 0x4p-16384L : 0x4.0000000000000008p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-96-m68k 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-m68k 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-m68k 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-m68k 0x4p-16384L : 0x4.0000000000000008p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-128 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-128 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-128 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-128 0x4p-16384L : 0x4.0000000000000000000000000004p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
+= atanh downward ldbl-96-intel 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh tonearest ldbl-96-intel 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh towardzero ldbl-96-intel 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh upward ldbl-96-intel 0x4p-16384L : 0x4.0000000000000008p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh downward ldbl-96-m68k 0x4p-16384L : 0x4p-16384L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x4p-16384L : 0x4p-16384L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x4p-16384L : 0x4p-16384L : inexact-ok
+= atanh upward ldbl-96-m68k 0x4p-16384L : 0x4.0000000000000008p-16384L : inexact-ok
+= atanh downward ldbl-128 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh tonearest ldbl-128 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh towardzero ldbl-128 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh upward ldbl-128 0x4p-16384L : 0x4.0000000000000000000000000004p-16384L : inexact-ok underflow-ok errno-erange-ok
 = atanh downward ldbl-96-intel 0x2p-16384L : 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh tonearest ldbl-96-intel 0x2p-16384L : 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh towardzero ldbl-96-intel 0x2p-16384L : 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh upward ldbl-96-intel 0x2p-16384L : 0x2.0000000000000008p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= atanh downward ldbl-96-m68k 0x2p-16384L : 0x2p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-m68k 0x2p-16384L : 0x2p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-m68k 0x2p-16384L : 0x2p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-m68k 0x2p-16384L : 0x2.0000000000000004p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
+= atanh downward ldbl-96-m68k 0x2p-16384L : 0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh tonearest ldbl-96-m68k 0x2p-16384L : 0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh towardzero ldbl-96-m68k 0x2p-16384L : 0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh upward ldbl-96-m68k 0x2p-16384L : 0x2.0000000000000004p-16384L : inexact-ok underflow-ok errno-erange-ok
 = atanh downward ldbl-128 0x2p-16384L : 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh tonearest ldbl-128 0x2p-16384L : 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh towardzero ldbl-128 0x2p-16384L : 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh upward ldbl-128 0x2p-16384L : 0x2.0000000000000000000000000004p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= atanh downward dbl-64 0x8p-972 : 0x8p-972 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest dbl-64 0x8p-972 : 0x8p-972 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero dbl-64 0x8p-972 : 0x8p-972 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward dbl-64 0x8p-972 : 0x8.0000000000008p-972 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-96-intel 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-intel 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-intel 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-intel 0x8p-972L : 0x8.000000000000001p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-96-m68k 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-m68k 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-m68k 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-m68k 0x8p-972L : 0x8.000000000000001p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-128 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-128 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-128 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-128 0x8p-972L : 0x8.0000000000000000000000000008p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-128ibm 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-128ibm 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-128ibm 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-128ibm 0x8p-972L : 0x8.00000000000000000000000004p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-atanh -min missing-underflow spurious-underflow:ldbl-96-intel:x86
-= atanh downward flt-32 -0x4p-128f : -0x4.000008p-128f : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward dbl-64 -0x4p-128 : -0x4.0000000000004p-128 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest dbl-64 -0x4p-128 : -0x4p-128 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero dbl-64 -0x4p-128 : -0x4p-128 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward dbl-64 -0x4p-128 : -0x4p-128 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-96-intel -0x4p-128L : -0x4.0000000000000008p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-intel -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-intel -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-intel -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-96-m68k -0x4p-128L : -0x4.0000000000000008p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-m68k -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-m68k -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-m68k -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-128 -0x4p-128L : -0x4.0000000000000000000000000004p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-128 -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-128 -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-128 -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-128ibm -0x4p-128L : -0x4.00000000000000000000000002p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-128ibm -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-128ibm -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-128ibm -0x4p-128L : -0x4p-128L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward dbl-64 -0x4p-1024 : -0x4.0000000000004p-1024 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-96-intel -0x4p-1024L : -0x4.0000000000000008p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-intel -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-intel -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-intel -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-96-m68k -0x4p-1024L : -0x4.0000000000000008p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-m68k -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-m68k -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-m68k -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-128 -0x4p-1024L : -0x4.0000000000000000000000000004p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-128 -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-128 -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-128 -0x4p-1024L : -0x4p-1024L : inexact-ok underflow-ok:ldbl-96-intel:x86
+= atanh downward dbl-64 0x8p-972 : 0x8p-972 : inexact-ok
+= atanh tonearest dbl-64 0x8p-972 : 0x8p-972 : inexact-ok
+= atanh towardzero dbl-64 0x8p-972 : 0x8p-972 : inexact-ok
+= atanh upward dbl-64 0x8p-972 : 0x8.0000000000008p-972 : inexact-ok
+= atanh downward ldbl-96-intel 0x8p-972L : 0x8p-972L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x8p-972L : 0x8p-972L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x8p-972L : 0x8p-972L : inexact-ok
+= atanh upward ldbl-96-intel 0x8p-972L : 0x8.000000000000001p-972L : inexact-ok
+= atanh downward ldbl-96-m68k 0x8p-972L : 0x8p-972L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x8p-972L : 0x8p-972L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x8p-972L : 0x8p-972L : inexact-ok
+= atanh upward ldbl-96-m68k 0x8p-972L : 0x8.000000000000001p-972L : inexact-ok
+= atanh downward ldbl-128 0x8p-972L : 0x8p-972L : inexact-ok
+= atanh tonearest ldbl-128 0x8p-972L : 0x8p-972L : inexact-ok
+= atanh towardzero ldbl-128 0x8p-972L : 0x8p-972L : inexact-ok
+= atanh upward ldbl-128 0x8p-972L : 0x8.0000000000000000000000000008p-972L : inexact-ok
+= atanh downward ldbl-128ibm 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok errno-erange-ok
+= atanh tonearest ldbl-128ibm 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok errno-erange-ok
+= atanh towardzero ldbl-128ibm 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok errno-erange-ok
+= atanh upward ldbl-128ibm 0x8p-972L : 0x8.00000000000000000000000004p-972L : inexact-ok underflow-ok errno-erange-ok
+atanh -min missing-underflow
+= atanh downward flt-32 -0x4p-128f : -0x4.000008p-128f : inexact-ok underflow-ok errno-erange-ok
+= atanh tonearest flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= atanh towardzero flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= atanh upward flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= atanh downward dbl-64 -0x4p-128 : -0x4.0000000000004p-128 : inexact-ok
+= atanh tonearest dbl-64 -0x4p-128 : -0x4p-128 : inexact-ok
+= atanh towardzero dbl-64 -0x4p-128 : -0x4p-128 : inexact-ok
+= atanh upward dbl-64 -0x4p-128 : -0x4p-128 : inexact-ok
+= atanh downward ldbl-96-intel -0x4p-128L : -0x4.0000000000000008p-128L : inexact-ok
+= atanh tonearest ldbl-96-intel -0x4p-128L : -0x4p-128L : inexact-ok
+= atanh towardzero ldbl-96-intel -0x4p-128L : -0x4p-128L : inexact-ok
+= atanh upward ldbl-96-intel -0x4p-128L : -0x4p-128L : inexact-ok
+= atanh downward ldbl-96-m68k -0x4p-128L : -0x4.0000000000000008p-128L : inexact-ok
+= atanh tonearest ldbl-96-m68k -0x4p-128L : -0x4p-128L : inexact-ok
+= atanh towardzero ldbl-96-m68k -0x4p-128L : -0x4p-128L : inexact-ok
+= atanh upward ldbl-96-m68k -0x4p-128L : -0x4p-128L : inexact-ok
+= atanh downward ldbl-128 -0x4p-128L : -0x4.0000000000000000000000000004p-128L : inexact-ok
+= atanh tonearest ldbl-128 -0x4p-128L : -0x4p-128L : inexact-ok
+= atanh towardzero ldbl-128 -0x4p-128L : -0x4p-128L : inexact-ok
+= atanh upward ldbl-128 -0x4p-128L : -0x4p-128L : inexact-ok
+= atanh downward ldbl-128ibm -0x4p-128L : -0x4.00000000000000000000000002p-128L : inexact-ok
+= atanh tonearest ldbl-128ibm -0x4p-128L : -0x4p-128L : inexact-ok
+= atanh towardzero ldbl-128ibm -0x4p-128L : -0x4p-128L : inexact-ok
+= atanh upward ldbl-128ibm -0x4p-128L : -0x4p-128L : inexact-ok
+= atanh downward dbl-64 -0x4p-1024 : -0x4.0000000000004p-1024 : inexact-ok underflow-ok errno-erange-ok
+= atanh tonearest dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= atanh towardzero dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= atanh upward dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= atanh downward ldbl-96-intel -0x4p-1024L : -0x4.0000000000000008p-1024L : inexact-ok
+= atanh tonearest ldbl-96-intel -0x4p-1024L : -0x4p-1024L : inexact-ok
+= atanh towardzero ldbl-96-intel -0x4p-1024L : -0x4p-1024L : inexact-ok
+= atanh upward ldbl-96-intel -0x4p-1024L : -0x4p-1024L : inexact-ok
+= atanh downward ldbl-96-m68k -0x4p-1024L : -0x4.0000000000000008p-1024L : inexact-ok
+= atanh tonearest ldbl-96-m68k -0x4p-1024L : -0x4p-1024L : inexact-ok
+= atanh towardzero ldbl-96-m68k -0x4p-1024L : -0x4p-1024L : inexact-ok
+= atanh upward ldbl-96-m68k -0x4p-1024L : -0x4p-1024L : inexact-ok
+= atanh downward ldbl-128 -0x4p-1024L : -0x4.0000000000000000000000000004p-1024L : inexact-ok
+= atanh tonearest ldbl-128 -0x4p-1024L : -0x4p-1024L : inexact-ok
+= atanh towardzero ldbl-128 -0x4p-1024L : -0x4p-1024L : inexact-ok
+= atanh upward ldbl-128 -0x4p-1024L : -0x4p-1024L : inexact-ok
 = atanh downward ldbl-128ibm -0x4p-1024L : -0x4.0000000000004p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh tonearest ldbl-128ibm -0x4p-1024L : -0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh towardzero ldbl-128ibm -0x4p-1024L : -0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh upward ldbl-128ibm -0x4p-1024L : -0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
-= atanh downward ldbl-96-intel -0x4p-16384L : -0x4.0000000000000008p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-96-m68k -0x4p-16384L : -0x4.0000000000000008p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-m68k -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-m68k -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-m68k -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-128 -0x4p-16384L : -0x4.0000000000000000000000000004p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
+= atanh downward ldbl-96-intel -0x4p-16384L : -0x4.0000000000000008p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh tonearest ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh towardzero ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh upward ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh downward ldbl-96-m68k -0x4p-16384L : -0x4.0000000000000008p-16384L : inexact-ok
+= atanh tonearest ldbl-96-m68k -0x4p-16384L : -0x4p-16384L : inexact-ok
+= atanh towardzero ldbl-96-m68k -0x4p-16384L : -0x4p-16384L : inexact-ok
+= atanh upward ldbl-96-m68k -0x4p-16384L : -0x4p-16384L : inexact-ok
+= atanh downward ldbl-128 -0x4p-16384L : -0x4.0000000000000000000000000004p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh tonearest ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh towardzero ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh upward ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
 = atanh downward ldbl-96-intel -0x2p-16384L : -0x2.0000000000000008p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh tonearest ldbl-96-intel -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh towardzero ldbl-96-intel -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh upward ldbl-96-intel -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= atanh downward ldbl-96-m68k -0x2p-16384L : -0x2.0000000000000004p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok:ldbl-96-intel:x86
+= atanh downward ldbl-96-m68k -0x2p-16384L : -0x2.0000000000000004p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh tonearest ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh towardzero ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
+= atanh upward ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
 = atanh downward ldbl-128 -0x2p-16384L : -0x2.0000000000000000000000000004p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh tonearest ldbl-128 -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh towardzero ldbl-128 -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh upward ldbl-128 -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= atanh downward dbl-64 -0x8p-972 : -0x8.0000000000008p-972 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest dbl-64 -0x8p-972 : -0x8p-972 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero dbl-64 -0x8p-972 : -0x8p-972 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward dbl-64 -0x8p-972 : -0x8p-972 : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-96-intel -0x8p-972L : -0x8.000000000000001p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-intel -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-intel -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-intel -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-96-m68k -0x8p-972L : -0x8.000000000000001p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-96-m68k -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-96-m68k -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-96-m68k -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-128 -0x8p-972L : -0x8.0000000000000000000000000008p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-128 -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-128 -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-128 -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh downward ldbl-128ibm -0x8p-972L : -0x8.00000000000000000000000004p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh tonearest ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh towardzero ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
-= atanh upward ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok:ldbl-96-intel:x86
+= atanh downward dbl-64 -0x8p-972 : -0x8.0000000000008p-972 : inexact-ok
+= atanh tonearest dbl-64 -0x8p-972 : -0x8p-972 : inexact-ok
+= atanh towardzero dbl-64 -0x8p-972 : -0x8p-972 : inexact-ok
+= atanh upward dbl-64 -0x8p-972 : -0x8p-972 : inexact-ok
+= atanh downward ldbl-96-intel -0x8p-972L : -0x8.000000000000001p-972L : inexact-ok
+= atanh tonearest ldbl-96-intel -0x8p-972L : -0x8p-972L : inexact-ok
+= atanh towardzero ldbl-96-intel -0x8p-972L : -0x8p-972L : inexact-ok
+= atanh upward ldbl-96-intel -0x8p-972L : -0x8p-972L : inexact-ok
+= atanh downward ldbl-96-m68k -0x8p-972L : -0x8.000000000000001p-972L : inexact-ok
+= atanh tonearest ldbl-96-m68k -0x8p-972L : -0x8p-972L : inexact-ok
+= atanh towardzero ldbl-96-m68k -0x8p-972L : -0x8p-972L : inexact-ok
+= atanh upward ldbl-96-m68k -0x8p-972L : -0x8p-972L : inexact-ok
+= atanh downward ldbl-128 -0x8p-972L : -0x8.0000000000000000000000000008p-972L : inexact-ok
+= atanh tonearest ldbl-128 -0x8p-972L : -0x8p-972L : inexact-ok
+= atanh towardzero ldbl-128 -0x8p-972L : -0x8p-972L : inexact-ok
+= atanh upward ldbl-128 -0x8p-972L : -0x8p-972L : inexact-ok
+= atanh downward ldbl-128ibm -0x8p-972L : -0x8.00000000000000000000000004p-972L : inexact-ok underflow-ok errno-erange-ok
+= atanh tonearest ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok errno-erange-ok
+= atanh towardzero ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok errno-erange-ok
+= atanh upward ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok errno-erange-ok
 atanh min_subnorm missing-underflow
 = atanh downward flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
 = atanh tonearest flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
@@ -125265,10 +125265,10 @@ log1p min_subnorm missing-underflow
 = log1p towardzero ldbl-128 0x4p-16496L : 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
 = log1p upward ldbl-128 0x4p-16496L : 0x4p-16496L : inexact-ok underflow underflow-ok errno-erange-ok
 log1p -min missing-underflow
-= log1p downward flt-32 -0x4p-128f : -0x4.000008p-128f : inexact-ok
-= log1p tonearest flt-32 -0x4p-128f : -0x4p-128f : inexact-ok
-= log1p towardzero flt-32 -0x4p-128f : -0x4p-128f : inexact-ok
-= log1p upward flt-32 -0x4p-128f : -0x4p-128f : inexact-ok
+= log1p downward flt-32 -0x4p-128f : -0x4.000008p-128f : inexact-ok underflow-ok errno-erange-ok
+= log1p tonearest flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= log1p towardzero flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok errno-erange-ok
+= log1p upward flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok errno-erange-ok
 = log1p downward dbl-64 -0x4p-128 : -0x4.0000000000004p-128 : inexact-ok
 = log1p tonearest dbl-64 -0x4p-128 : -0x4p-128 : inexact-ok
 = log1p towardzero dbl-64 -0x4p-128 : -0x4p-128 : inexact-ok
@@ -125289,10 +125289,10 @@ log1p -min missing-underflow
 = log1p tonearest ldbl-128ibm -0x4p-128L : -0x4p-128L : inexact-ok
 = log1p towardzero ldbl-128ibm -0x4p-128L : -0x4p-128L : inexact-ok
 = log1p upward ldbl-128ibm -0x4p-128L : -0x4p-128L : inexact-ok
-= log1p downward dbl-64 -0x4p-1024 : -0x4.0000000000004p-1024 : inexact-ok
-= log1p tonearest dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok
-= log1p towardzero dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok
-= log1p upward dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok
+= log1p downward dbl-64 -0x4p-1024 : -0x4.0000000000004p-1024 : inexact-ok underflow-ok errno-erange-ok
+= log1p tonearest dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= log1p towardzero dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
+= log1p upward dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok underflow-ok errno-erange-ok
 = log1p downward ldbl-96-intel -0x4p-1024L : -0x4.0000000000000008p-1024L : inexact-ok
 = log1p tonearest ldbl-96-intel -0x4p-1024L : -0x4p-1024L : inexact-ok
 = log1p towardzero ldbl-96-intel -0x4p-1024L : -0x4p-1024L : inexact-ok
@@ -125309,26 +125309,26 @@ log1p -min missing-underflow
 = log1p tonearest ldbl-128ibm -0x4p-1024L : -0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
 = log1p towardzero ldbl-128ibm -0x4p-1024L : -0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
 = log1p upward ldbl-128ibm -0x4p-1024L : -0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
-= log1p downward ldbl-96-intel -0x4p-16384L : -0x4.0000000000000008p-16384L : inexact-ok
-= log1p tonearest ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok
-= log1p towardzero ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok
-= log1p upward ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok
+= log1p downward ldbl-96-intel -0x4p-16384L : -0x4.0000000000000008p-16384L : inexact-ok underflow-ok errno-erange-ok
+= log1p tonearest ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= log1p towardzero ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= log1p upward ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
 = log1p downward ldbl-96-m68k -0x4p-16384L : -0x4.0000000000000008p-16384L : inexact-ok
 = log1p tonearest ldbl-96-m68k -0x4p-16384L : -0x4p-16384L : inexact-ok
 = log1p towardzero ldbl-96-m68k -0x4p-16384L : -0x4p-16384L : inexact-ok
 = log1p upward ldbl-96-m68k -0x4p-16384L : -0x4p-16384L : inexact-ok
-= log1p downward ldbl-128 -0x4p-16384L : -0x4.0000000000000000000000000004p-16384L : inexact-ok
-= log1p tonearest ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok
-= log1p towardzero ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok
-= log1p upward ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok
+= log1p downward ldbl-128 -0x4p-16384L : -0x4.0000000000000000000000000004p-16384L : inexact-ok underflow-ok errno-erange-ok
+= log1p tonearest ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= log1p towardzero ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
+= log1p upward ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
 = log1p downward ldbl-96-intel -0x2p-16384L : -0x2.0000000000000008p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = log1p tonearest ldbl-96-intel -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = log1p towardzero ldbl-96-intel -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = log1p upward ldbl-96-intel -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= log1p downward ldbl-96-m68k -0x2p-16384L : -0x2.0000000000000004p-16384L : inexact-ok
-= log1p tonearest ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok
-= log1p towardzero ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok
-= log1p upward ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok
+= log1p downward ldbl-96-m68k -0x2p-16384L : -0x2.0000000000000004p-16384L : inexact-ok underflow-ok errno-erange-ok
+= log1p tonearest ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
+= log1p towardzero ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
+= log1p upward ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
 = log1p downward ldbl-128 -0x2p-16384L : -0x2.0000000000000000000000000004p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = log1p tonearest ldbl-128 -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
 = log1p towardzero ldbl-128 -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
@@ -125349,10 +125349,10 @@ log1p -min missing-underflow
 = log1p tonearest ldbl-128 -0x8p-972L : -0x8p-972L : inexact-ok
 = log1p towardzero ldbl-128 -0x8p-972L : -0x8p-972L : inexact-ok
 = log1p upward ldbl-128 -0x8p-972L : -0x8p-972L : inexact-ok
-= log1p downward ldbl-128ibm -0x8p-972L : -0x8.00000000000000000000000004p-972L : inexact-ok
-= log1p tonearest ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok
-= log1p towardzero ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok
-= log1p upward ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok
+= log1p downward ldbl-128ibm -0x8p-972L : -0x8.00000000000000000000000004p-972L : inexact-ok underflow-ok errno-erange-ok
+= log1p tonearest ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok errno-erange-ok
+= log1p towardzero ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok errno-erange-ok
+= log1p upward ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok errno-erange-ok
 log1p -min_subnorm missing-underflow
 = log1p downward flt-32 -0x8p-152f : -0x1p-148f : inexact-ok underflow underflow-ok errno-erange-ok
 = log1p tonearest flt-32 -0x8p-152f : -0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
diff --git a/math/gen-auto-libm-tests.c b/math/gen-auto-libm-tests.c
index 61097e480c..132cca2b2e 100644
--- a/math/gen-auto-libm-tests.c
+++ b/math/gen-auto-libm-tests.c
@@ -171,6 +171,8 @@ typedef struct
   int min_exp;
   /* The largest normal value.  */
   mpfr_t max;
+  /* The value 0.5ulp above the least positive normal value.  */
+  mpfr_t min_plus_half;
   /* The least positive normal value, 2^(MIN_EXP-1).  */
   mpfr_t min;
   /* The greatest positive subnormal value.  */
@@ -183,13 +185,13 @@ typedef struct
    enumeration.  */
 static fp_format_desc fp_formats[fp_num_formats] =
   {
-    { "flt-32", "f", NULL, 24, 128, -125, {}, {}, {}, {} },
-    { "dbl-64", "", NULL, 53, 1024, -1021, {}, {}, {}, {} },
-    { "ldbl-96-intel", "L", NULL, 64, 16384, -16381, {}, {}, {}, {} },
-    { "ldbl-96-m68k", "L", NULL, 64, 16384, -16382, {}, {}, {}, {} },
-    { "ldbl-128", "L", NULL, 113, 16384, -16381, {}, {}, {}, {} },
+    { "flt-32", "f", NULL, 24, 128, -125, {}, {}, {}, {}, {} },
+    { "dbl-64", "", NULL, 53, 1024, -1021, {}, {}, {}, {}, {} },
+    { "ldbl-96-intel", "L", NULL, 64, 16384, -16381, {}, {}, {}, {}, {} },
+    { "ldbl-96-m68k", "L", NULL, 64, 16384, -16382, {}, {}, {}, {}, {} },
+    { "ldbl-128", "L", NULL, 113, 16384, -16381, {}, {}, {}, {}, {} },
     { "ldbl-128ibm", "L", "0x1.fffffffffffff7ffffffffffff8p+1023",
-      106, 1024, -968, {}, {}, {}, {} },
+      106, 1024, -968, {}, {}, {}, {}, {} },
   };
 
 /* The supported rounding modes.  */
@@ -702,6 +704,10 @@ init_fp_formats ()
       assert_exact (mpfr_set_ui_2exp (fp_formats[f].min, 1,
 				      fp_formats[f].min_exp - 1,
 				      MPFR_RNDN));
+      mpfr_init2 (fp_formats[f].min_plus_half, fp_formats[f].mant_dig + 1);
+      assert_exact (mpfr_set (fp_formats[f].min_plus_half,
+			      fp_formats[f].min, MPFR_RNDN));
+      mpfr_nextabove (fp_formats[f].min_plus_half);
       mpfr_init2 (fp_formats[f].subnorm_max, fp_formats[f].mant_dig);
       assert_exact (mpfr_set (fp_formats[f].subnorm_max, fp_formats[f].min,
 			      MPFR_RNDN));
@@ -1841,8 +1847,9 @@ output_for_one_input_case (FILE *fp, const char *filename, test_function *tf,
 				    <= 0));
 			  may_underflow
 			    |= (!mpfr_zero_p (generic_outputs[i].value.f)
-				&& mpfr_cmpabs (generic_outputs[i].value.f,
-						fp_formats[f].min) <= 0);
+				&& (mpfr_cmpabs (generic_outputs[i].value.f,
+						 fp_formats[f].min_plus_half)
+				    <= 0));
 			}
 		      /* If the result is an exact zero, the sign may
 			 depend on the rounding mode, so recompute it
diff --git a/math/libm-test.inc b/math/libm-test.inc
index a8ebecd3a1..9c4c2bfb75 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -7823,9 +7823,7 @@ static const struct test_f_f_data log1p_test_data[] =
 static void
 log1p_test (void)
 {
-  START (log1p, 0);
-  RUN_TEST_LOOP_f_f (log1p, log1p_test_data, );
-  END;
+  ALL_RM_TEST (log1p, 0, log1p_test_data, RUN_TEST_LOOP_f_f, END);
 }
 
 
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index 1885be7471..a82de198ca 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
@@ -1288,6 +1288,30 @@ Function: "log1p":
 ildouble: 1
 ldouble: 1
 
+Function: "log1p_downward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: "log1p_towardzero":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: "log1p_upward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
 Function: "log_downward":
 ildouble: 1
 ldouble: 1
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index 670f2da592..e2fa9b2ccb 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -1362,6 +1362,30 @@ ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: "log1p_downward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: "log1p_towardzero":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: "log1p_upward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
 Function: "log_downward":
 float: 1
 ifloat: 1