aboutsummaryrefslogtreecommitdiff
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