diff options
-rw-r--r-- | ChangeLog | 17 | ||||
-rw-r--r-- | NEWS | 8 | ||||
-rw-r--r-- | math/auto-libm-test-in | 8 | ||||
-rw-r--r-- | math/auto-libm-test-out | 558 | ||||
-rw-r--r-- | math/gen-auto-libm-tests.c | 23 | ||||
-rw-r--r-- | math/libm-test.inc | 4 | ||||
-rw-r--r-- | sysdeps/i386/fpu/libm-test-ulps | 24 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/libm-test-ulps | 24 |
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 |