]> sourceware.org Git - glibc.git/commitdiff
Fix asinh missing underflows (bug 16350).
authorJoseph Myers <joseph@codesourcery.com>
Thu, 18 Jun 2015 23:27:41 +0000 (23:27 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Thu, 18 Jun 2015 23:27:41 +0000 (23:27 +0000)
Similar to various other bugs in this area, some asinh implementations
do not raise the underflow exception for subnormal arguments, when the
result is tiny and inexact.  This patch forces the exception in a
similar way to previous fixes.

Tested for x86_64, x86 and mips64.

[BZ #16350]
* sysdeps/i386/fpu/s_asinh.S (__asinh): Force underflow exception
for arguments with small absolute value.
* sysdeps/i386/fpu/s_asinhf.S (__asinhf): Likewise.
* sysdeps/i386/fpu/s_asinhl.S (__asinhl): Likewise.
* sysdeps/ieee754/dbl-64/s_asinh.c: Include <float.h>.
(__asinh): Force underflow exception for arguments with small
absolute value.
* sysdeps/ieee754/flt-32/s_asinhf.c: Include <float.h>.
(__asinhf): Force underflow exception for arguments with small
absolute value.
* sysdeps/ieee754/ldbl-128/s_asinhl.c: Include <float.h>.
(__asinhl): Force underflow exception for arguments with small
absolute value.
* sysdeps/ieee754/ldbl-128ibm/s_asinhl.c: Include <float.h>.
(__asinhl): Force underflow exception for arguments with small
absolute value.
* sysdeps/ieee754/ldbl-96/s_asinhl.c: Include <float.h>.
(__asinhl): Force underflow exception for arguments with small
absolute value.
* math/auto-libm-test-in: Do not mark underflow exceptions as
possibly missing for bug 16350.
* math/auto-libm-test-out: Regenerated.

12 files changed:
ChangeLog
NEWS
math/auto-libm-test-in
math/auto-libm-test-out
sysdeps/i386/fpu/s_asinh.S
sysdeps/i386/fpu/s_asinhf.S
sysdeps/i386/fpu/s_asinhl.S
sysdeps/ieee754/dbl-64/s_asinh.c
sysdeps/ieee754/flt-32/s_asinhf.c
sysdeps/ieee754/ldbl-128/s_asinhl.c
sysdeps/ieee754/ldbl-128ibm/s_asinhl.c
sysdeps/ieee754/ldbl-96/s_asinhl.c

index 23d5b8da44c9adb15f10112cdc8a8864ba5fd2ea..d2189783070d23312a8adb75d07dba0f1422ede3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,29 @@
 2015-06-18  Joseph Myers  <joseph@codesourcery.com>
 
+       [BZ #16350]
+       * sysdeps/i386/fpu/s_asinh.S (__asinh): Force underflow exception
+       for arguments with small absolute value.
+       * sysdeps/i386/fpu/s_asinhf.S (__asinhf): Likewise.
+       * sysdeps/i386/fpu/s_asinhl.S (__asinhl): Likewise.
+       * sysdeps/ieee754/dbl-64/s_asinh.c: Include <float.h>.
+       (__asinh): Force underflow exception for arguments with small
+       absolute value.
+       * sysdeps/ieee754/flt-32/s_asinhf.c: Include <float.h>.
+       (__asinhf): Force underflow exception for arguments with small
+       absolute value.
+       * sysdeps/ieee754/ldbl-128/s_asinhl.c: Include <float.h>.
+       (__asinhl): Force underflow exception for arguments with small
+       absolute value.
+       * sysdeps/ieee754/ldbl-128ibm/s_asinhl.c: Include <float.h>.
+       (__asinhl): Force underflow exception for arguments with small
+       absolute value.
+       * sysdeps/ieee754/ldbl-96/s_asinhl.c: Include <float.h>.
+       (__asinhl): Force underflow exception for arguments with small
+       absolute value.
+       * math/auto-libm-test-in: Do not mark underflow exceptions as
+       possibly missing for bug 16350.
+       * math/auto-libm-test-out: Regenerated.
+
        * include/bits/ipc.h: Remove file.
        * conform/Makefile (test-xfail-XPG3/sys/msg.h/conform): Remove
        variable.
diff --git a/NEWS b/NEWS
index 3f474f37b82d531c37accff16be67ca579f2f94d..4194e5ab6b0f07e587b1d20620cc36441aceb3ba 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -10,20 +10,20 @@ Version 2.22
 * The following bugs are resolved with this release:
 
   438, 4719, 6792, 13028, 13064, 14094, 14841, 14906, 14958, 15319, 15467,
-  15790, 15969, 16159, 16339, 16351, 16352, 16512, 16560, 16704, 16783,
-  16850, 17053, 17090, 17195, 17269, 17293, 17322, 17523, 17542, 17569,
-  17581, 17588, 17596, 17620, 17621, 17628, 17631, 17692, 17711, 17715,
-  17776, 17779, 17792, 17836, 17912, 17916, 17930, 17932, 17944, 17949,
-  17964, 17965, 17967, 17969, 17978, 17987, 17991, 17996, 17998, 17999,
-  18007, 18019, 18020, 18029, 18030, 18032, 18034, 18036, 18038, 18039,
-  18042, 18043, 18046, 18047, 18049, 18068, 18080, 18093, 18100, 18104,
-  18110, 18111, 18116, 18125, 18128, 18138, 18185, 18196, 18197, 18206,
-  18210, 18211, 18217, 18220, 18221, 18234, 18244, 18247, 18287, 18319,
-  18324, 18333, 18346, 18397, 18409, 18410, 18412, 18418, 18422, 18434,
-  18444, 18468, 18469, 18470, 18479, 18483, 18495, 18496, 18497, 18498,
-  18507, 18512, 18519, 18520, 18522, 18527, 18528, 18529, 18530, 18532,
-  18533, 18534, 18536, 18539, 18540, 18542, 18544, 18545, 18546, 18547,
-  18553, 18558.
+  15790, 15969, 16159, 16339, 16350, 16351, 16352, 16512, 16560, 16704,
+  16783, 16850, 17053, 17090, 17195, 17269, 17293, 17322, 17523, 17542,
+  17569, 17581, 17588, 17596, 17620, 17621, 17628, 17631, 17692, 17711,
+  17715, 17776, 17779, 17792, 17836, 17912, 17916, 17930, 17932, 17944,
+  17949, 17964, 17965, 17967, 17969, 17978, 17987, 17991, 17996, 17998,
+  17999, 18007, 18019, 18020, 18029, 18030, 18032, 18034, 18036, 18038,
+  18039, 18042, 18043, 18046, 18047, 18049, 18068, 18080, 18093, 18100,
+  18104, 18110, 18111, 18116, 18125, 18128, 18138, 18185, 18196, 18197,
+  18206, 18210, 18211, 18217, 18220, 18221, 18234, 18244, 18247, 18287,
+  18319, 18324, 18333, 18346, 18397, 18409, 18410, 18412, 18418, 18422,
+  18434, 18444, 18468, 18469, 18470, 18479, 18483, 18495, 18496, 18497,
+  18498, 18507, 18512, 18519, 18520, 18522, 18527, 18528, 18529, 18530,
+  18532, 18533, 18534, 18536, 18539, 18540, 18542, 18544, 18545, 18546,
+  18547, 18553, 18558.
 
 * Cache information can be queried via sysconf() function on s390 e.g. with
   _SC_LEVEL1_ICACHE_SIZE as argument.
index 7546cca98bded2c267fdad6fb5c0a28654b54bd5..6ec4bc69af342b4dfc0259066c314bfd724a94ae 100644 (file)
@@ -218,13 +218,12 @@ asinh 0x7.d8e5a8p-4
 asinh -0x7.63a06320c42e4p-4
 asinh 0x6.f4a93p-4
 asinh -0x7.88bcc8p-4
-# Bug 16350: underflow exception may be missing.
-asinh 0x1p-500 missing-underflow
-asinh 0x1p-5000 missing-underflow
-asinh min missing-underflow
-asinh -min missing-underflow
-asinh min_subnorm missing-underflow
-asinh -min_subnorm missing-underflow
+asinh 0x1p-500
+asinh 0x1p-5000
+asinh min
+asinh -min
+asinh min_subnorm
+asinh -min_subnorm
 asinh max no-test-inline
 asinh -max no-test-inline
 
index 1d5969d22b6b558482cf2329009be529c9f7df3c..aa1eb1ff4bc9093c11a8dda60f324794adb83678 100644 (file)
@@ -6829,11 +6829,11 @@ asinh -0x7.88bcc8p-4
 = asinh tonearest ldbl-128ibm -0x7.88bcc8p-4L : -0x7.47c17bbd7ba607458f4e549f14p-4L : inexact-ok
 = asinh towardzero ldbl-128ibm -0x7.88bcc8p-4L : -0x7.47c17bbd7ba607458f4e549f12p-4L : inexact-ok
 = asinh upward ldbl-128ibm -0x7.88bcc8p-4L : -0x7.47c17bbd7ba607458f4e549f12p-4L : inexact-ok
-asinh 0x1p-500 missing-underflow
-= asinh downward flt-32 0x8p-152f : 0x0p+0f : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero flt-32 0x8p-152f : 0x0p+0f : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
+asinh 0x1p-500
+= asinh downward flt-32 0x8p-152f : 0x0p+0f : inexact-ok underflow errno-erange-ok
+= asinh tonearest flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= asinh towardzero flt-32 0x8p-152f : 0x0p+0f : inexact-ok underflow errno-erange-ok
+= asinh upward flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow errno-erange-ok
 = asinh downward dbl-64 0x8p-152 : 0x7.ffffffffffffcp-152 : inexact-ok
 = asinh tonearest dbl-64 0x8p-152 : 0x8p-152 : inexact-ok
 = asinh towardzero dbl-64 0x8p-152 : 0x7.ffffffffffffcp-152 : inexact-ok
@@ -6898,11 +6898,11 @@ asinh 0x1p-500 missing-underflow
 = asinh tonearest ldbl-128ibm 0x1p-500L : 0x1p-500L : inexact-ok
 = asinh towardzero ldbl-128ibm 0x1p-500L : 0xf.fffffffffffffffffffffffffcp-504L : inexact-ok
 = asinh upward ldbl-128ibm 0x1p-500L : 0x1p-500L : inexact-ok
-asinh 0x1p-5000 missing-underflow
-= asinh downward flt-32 0x8p-152f : 0x0p+0f : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero flt-32 0x8p-152f : 0x0p+0f : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
+asinh 0x1p-5000
+= asinh downward flt-32 0x8p-152f : 0x0p+0f : inexact-ok underflow errno-erange-ok
+= asinh tonearest flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= asinh towardzero flt-32 0x8p-152f : 0x0p+0f : inexact-ok underflow errno-erange-ok
+= asinh upward flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow errno-erange-ok
 = asinh downward dbl-64 0x8p-152 : 0x7.ffffffffffffcp-152 : inexact-ok
 = asinh tonearest dbl-64 0x8p-152 : 0x8p-152 : inexact-ok
 = asinh towardzero dbl-64 0x8p-152 : 0x7.ffffffffffffcp-152 : inexact-ok
@@ -6947,10 +6947,10 @@ asinh 0x1p-5000 missing-underflow
 = asinh tonearest ldbl-128ibm 0x0p+0L : 0x0p+0L : inexact-ok
 = asinh towardzero ldbl-128ibm 0x0p+0L : 0x0p+0L : inexact-ok
 = asinh upward ldbl-128ibm 0x0p+0L : 0x0p+0L : inexact-ok
-= asinh downward dbl-64 0x4p-1076 : 0x0p+0 : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest dbl-64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero dbl-64 0x4p-1076 : 0x0p+0 : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward dbl-64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
+= asinh downward dbl-64 0x4p-1076 : 0x0p+0 : inexact-ok underflow errno-erange-ok
+= asinh tonearest dbl-64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= asinh towardzero dbl-64 0x4p-1076 : 0x0p+0 : inexact-ok underflow errno-erange-ok
+= asinh upward dbl-64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
 = asinh downward ldbl-96-intel 0x4p-1076L : 0x3.fffffffffffffffcp-1076L : inexact-ok
 = asinh tonearest ldbl-96-intel 0x4p-1076L : 0x4p-1076L : inexact-ok
 = asinh towardzero ldbl-96-intel 0x4p-1076L : 0x3.fffffffffffffffcp-1076L : inexact-ok
@@ -6963,10 +6963,10 @@ asinh 0x1p-5000 missing-underflow
 = asinh tonearest ldbl-128 0x4p-1076L : 0x4p-1076L : inexact-ok
 = asinh towardzero ldbl-128 0x4p-1076L : 0x3.fffffffffffffffffffffffffffep-1076L : inexact-ok
 = asinh upward ldbl-128 0x4p-1076L : 0x4p-1076L : inexact-ok
-= asinh downward ldbl-128ibm 0x4p-1076L : 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-128ibm 0x4p-1076L : 0x4p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-128ibm 0x4p-1076L : 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-128ibm 0x4p-1076L : 0x4p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
+= asinh downward ldbl-128ibm 0x4p-1076L : 0x0p+0L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-128ibm 0x4p-1076L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-128ibm 0x4p-1076L : 0x0p+0L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-128ibm 0x4p-1076L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
 = asinh downward ldbl-96-intel 0x1p-5000L : 0xf.fffffffffffffffp-5004L : inexact-ok
 = asinh tonearest ldbl-96-intel 0x1p-5000L : 0x1p-5000L : inexact-ok
 = asinh towardzero ldbl-96-intel 0x1p-5000L : 0xf.fffffffffffffffp-5004L : inexact-ok
@@ -6979,7 +6979,7 @@ asinh 0x1p-5000 missing-underflow
 = asinh tonearest ldbl-128 0x1p-5000L : 0x1p-5000L : inexact-ok
 = asinh towardzero ldbl-128 0x1p-5000L : 0xf.fffffffffffffffffffffffffff8p-5004L : inexact-ok
 = asinh upward ldbl-128 0x1p-5000L : 0x1p-5000L : inexact-ok
-asinh min missing-underflow
+asinh min
 = asinh downward flt-32 0x4p-128f : 0x3.fffff8p-128f : inexact-ok underflow-ok errno-erange-ok
 = asinh tonearest flt-32 0x4p-128f : 0x4p-128f : inexact-ok underflow-ok errno-erange-ok
 = asinh towardzero flt-32 0x4p-128f : 0x3.fffff8p-128f : inexact-ok underflow-ok errno-erange-ok
@@ -7020,10 +7020,10 @@ asinh min missing-underflow
 = asinh tonearest ldbl-128 0x4p-1024L : 0x4p-1024L : inexact-ok
 = asinh towardzero ldbl-128 0x4p-1024L : 0x3.fffffffffffffffffffffffffffep-1024L : inexact-ok
 = asinh upward ldbl-128 0x4p-1024L : 0x4p-1024L : inexact-ok
-= asinh downward ldbl-128ibm 0x4p-1024L : 0x3.ffffffffffffcp-1024L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-128ibm 0x4p-1024L : 0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-128ibm 0x4p-1024L : 0x3.ffffffffffffcp-1024L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-128ibm 0x4p-1024L : 0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
+= asinh downward ldbl-128ibm 0x4p-1024L : 0x3.ffffffffffffcp-1024L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-128ibm 0x4p-1024L : 0x4p-1024L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-128ibm 0x4p-1024L : 0x3.ffffffffffffcp-1024L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-128ibm 0x4p-1024L : 0x4p-1024L : inexact-ok underflow errno-erange-ok
 = asinh downward ldbl-96-intel 0x4p-16384L : 0x3.fffffffffffffff8p-16384L : inexact-ok underflow-ok errno-erange-ok
 = asinh tonearest ldbl-96-intel 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
 = asinh towardzero ldbl-96-intel 0x4p-16384L : 0x3.fffffffffffffff8p-16384L : inexact-ok underflow-ok errno-erange-ok
@@ -7036,18 +7036,18 @@ asinh min missing-underflow
 = asinh tonearest ldbl-128 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
 = asinh towardzero ldbl-128 0x4p-16384L : 0x3.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok
 = asinh upward ldbl-128 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
-= asinh downward ldbl-96-intel 0x2p-16384L : 0x1.fffffffffffffff8p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-96-intel 0x2p-16384L : 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-96-intel 0x2p-16384L : 0x1.fffffffffffffff8p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-96-intel 0x2p-16384L : 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
+= asinh downward ldbl-96-intel 0x2p-16384L : 0x1.fffffffffffffff8p-16384L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-96-intel 0x2p-16384L : 0x2p-16384L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-96-intel 0x2p-16384L : 0x1.fffffffffffffff8p-16384L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-96-intel 0x2p-16384L : 0x2p-16384L : inexact-ok underflow errno-erange-ok
 = asinh downward ldbl-96-m68k 0x2p-16384L : 0x1.fffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok
 = asinh tonearest ldbl-96-m68k 0x2p-16384L : 0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
 = asinh towardzero ldbl-96-m68k 0x2p-16384L : 0x1.fffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok
 = asinh upward ldbl-96-m68k 0x2p-16384L : 0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
-= asinh downward ldbl-128 0x2p-16384L : 0x1.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-128 0x2p-16384L : 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-128 0x2p-16384L : 0x1.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-128 0x2p-16384L : 0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
+= asinh downward ldbl-128 0x2p-16384L : 0x1.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-128 0x2p-16384L : 0x2p-16384L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-128 0x2p-16384L : 0x1.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-128 0x2p-16384L : 0x2p-16384L : inexact-ok underflow errno-erange-ok
 = asinh downward dbl-64 0x8p-972 : 0x7.ffffffffffffcp-972 : inexact-ok
 = asinh tonearest dbl-64 0x8p-972 : 0x8p-972 : inexact-ok
 = asinh towardzero dbl-64 0x8p-972 : 0x7.ffffffffffffcp-972 : inexact-ok
@@ -7068,7 +7068,7 @@ asinh min missing-underflow
 = asinh tonearest ldbl-128ibm 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok errno-erange-ok
 = asinh towardzero ldbl-128ibm 0x8p-972L : 0x7.fffffffffffffffffffffffffcp-972L : inexact-ok underflow-ok errno-erange-ok
 = asinh upward ldbl-128ibm 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok errno-erange-ok
-asinh -min missing-underflow
+asinh -min
 = asinh downward flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok errno-erange-ok
 = asinh tonearest flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok errno-erange-ok
 = asinh towardzero flt-32 -0x4p-128f : -0x3.fffff8p-128f : inexact-ok underflow-ok errno-erange-ok
@@ -7109,10 +7109,10 @@ asinh -min missing-underflow
 = asinh tonearest ldbl-128 -0x4p-1024L : -0x4p-1024L : inexact-ok
 = asinh towardzero ldbl-128 -0x4p-1024L : -0x3.fffffffffffffffffffffffffffep-1024L : inexact-ok
 = asinh upward ldbl-128 -0x4p-1024L : -0x3.fffffffffffffffffffffffffffep-1024L : inexact-ok
-= asinh downward ldbl-128ibm -0x4p-1024L : -0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-128ibm -0x4p-1024L : -0x4p-1024L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-128ibm -0x4p-1024L : -0x3.ffffffffffffcp-1024L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-128ibm -0x4p-1024L : -0x3.ffffffffffffcp-1024L : inexact-ok underflow underflow-ok errno-erange-ok
+= asinh downward ldbl-128ibm -0x4p-1024L : -0x4p-1024L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-128ibm -0x4p-1024L : -0x4p-1024L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-128ibm -0x4p-1024L : -0x3.ffffffffffffcp-1024L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-128ibm -0x4p-1024L : -0x3.ffffffffffffcp-1024L : inexact-ok underflow errno-erange-ok
 = asinh downward ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
 = asinh tonearest ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
 = asinh towardzero ldbl-96-intel -0x4p-16384L : -0x3.fffffffffffffff8p-16384L : inexact-ok underflow-ok errno-erange-ok
@@ -7125,18 +7125,18 @@ asinh -min missing-underflow
 = asinh tonearest ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok
 = asinh towardzero ldbl-128 -0x4p-16384L : -0x3.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok
 = asinh upward ldbl-128 -0x4p-16384L : -0x3.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok
-= asinh downward ldbl-96-intel -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-96-intel -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-96-intel -0x2p-16384L : -0x1.fffffffffffffff8p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-96-intel -0x2p-16384L : -0x1.fffffffffffffff8p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
+= asinh downward ldbl-96-intel -0x2p-16384L : -0x2p-16384L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-96-intel -0x2p-16384L : -0x2p-16384L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-96-intel -0x2p-16384L : -0x1.fffffffffffffff8p-16384L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-96-intel -0x2p-16384L : -0x1.fffffffffffffff8p-16384L : inexact-ok underflow errno-erange-ok
 = asinh downward ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
 = asinh tonearest ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok
 = asinh towardzero ldbl-96-m68k -0x2p-16384L : -0x1.fffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok
 = asinh upward ldbl-96-m68k -0x2p-16384L : -0x1.fffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok
-= asinh downward ldbl-128 -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-128 -0x2p-16384L : -0x2p-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-128 -0x2p-16384L : -0x1.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-128 -0x2p-16384L : -0x1.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow underflow-ok errno-erange-ok
+= asinh downward ldbl-128 -0x2p-16384L : -0x2p-16384L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-128 -0x2p-16384L : -0x2p-16384L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-128 -0x2p-16384L : -0x1.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-128 -0x2p-16384L : -0x1.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow errno-erange-ok
 = asinh downward dbl-64 -0x8p-972 : -0x8p-972 : inexact-ok
 = asinh tonearest dbl-64 -0x8p-972 : -0x8p-972 : inexact-ok
 = asinh towardzero dbl-64 -0x8p-972 : -0x7.ffffffffffffcp-972 : inexact-ok
@@ -7157,11 +7157,11 @@ asinh -min missing-underflow
 = asinh tonearest ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok errno-erange-ok
 = asinh towardzero ldbl-128ibm -0x8p-972L : -0x7.fffffffffffffffffffffffffcp-972L : inexact-ok underflow-ok errno-erange-ok
 = asinh upward ldbl-128ibm -0x8p-972L : -0x7.fffffffffffffffffffffffffcp-972L : inexact-ok underflow-ok errno-erange-ok
-asinh min_subnorm missing-underflow
-= asinh downward flt-32 0x8p-152f : 0x0p+0f : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero flt-32 0x8p-152f : 0x0p+0f : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
+asinh min_subnorm
+= asinh downward flt-32 0x8p-152f : 0x0p+0f : inexact-ok underflow errno-erange-ok
+= asinh tonearest flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= asinh towardzero flt-32 0x8p-152f : 0x0p+0f : inexact-ok underflow errno-erange-ok
+= asinh upward flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow errno-erange-ok
 = asinh downward dbl-64 0x8p-152 : 0x7.ffffffffffffcp-152 : inexact-ok
 = asinh tonearest dbl-64 0x8p-152 : 0x8p-152 : inexact-ok
 = asinh towardzero dbl-64 0x8p-152 : 0x7.ffffffffffffcp-152 : inexact-ok
@@ -7182,10 +7182,10 @@ asinh min_subnorm missing-underflow
 = asinh tonearest ldbl-128ibm 0x8p-152L : 0x8p-152L : inexact-ok
 = asinh towardzero ldbl-128ibm 0x8p-152L : 0x7.fffffffffffffffffffffffffep-152L : inexact-ok
 = asinh upward ldbl-128ibm 0x8p-152L : 0x8p-152L : inexact-ok
-= asinh downward dbl-64 0x4p-1076 : 0x0p+0 : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest dbl-64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero dbl-64 0x4p-1076 : 0x0p+0 : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward dbl-64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
+= asinh downward dbl-64 0x4p-1076 : 0x0p+0 : inexact-ok underflow errno-erange-ok
+= asinh tonearest dbl-64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
+= asinh towardzero dbl-64 0x4p-1076 : 0x0p+0 : inexact-ok underflow errno-erange-ok
+= asinh upward dbl-64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
 = asinh downward ldbl-96-intel 0x4p-1076L : 0x3.fffffffffffffffcp-1076L : inexact-ok
 = asinh tonearest ldbl-96-intel 0x4p-1076L : 0x4p-1076L : inexact-ok
 = asinh towardzero ldbl-96-intel 0x4p-1076L : 0x3.fffffffffffffffcp-1076L : inexact-ok
@@ -7198,39 +7198,39 @@ asinh min_subnorm missing-underflow
 = asinh tonearest ldbl-128 0x4p-1076L : 0x4p-1076L : inexact-ok
 = asinh towardzero ldbl-128 0x4p-1076L : 0x3.fffffffffffffffffffffffffffep-1076L : inexact-ok
 = asinh upward ldbl-128 0x4p-1076L : 0x4p-1076L : inexact-ok
-= asinh downward ldbl-128ibm 0x4p-1076L : 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-128ibm 0x4p-1076L : 0x4p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-128ibm 0x4p-1076L : 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-128ibm 0x4p-1076L : 0x4p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh downward ldbl-96-intel 0x8p-16448L : 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-96-intel 0x8p-16448L : 0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-96-intel 0x8p-16448L : 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-96-intel 0x8p-16448L : 0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh downward ldbl-96-m68k 0x8p-16448L : 0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-96-m68k 0x8p-16448L : 0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-96-m68k 0x8p-16448L : 0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-96-m68k 0x8p-16448L : 0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh downward ldbl-128 0x8p-16448L : 0x7.fffffffffffcp-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-128 0x8p-16448L : 0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-128 0x8p-16448L : 0x7.fffffffffffcp-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-128 0x8p-16448L : 0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh downward ldbl-96-m68k 0x4p-16448L : 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-96-m68k 0x4p-16448L : 0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-96-m68k 0x4p-16448L : 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-96-m68k 0x4p-16448L : 0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh downward ldbl-128 0x4p-16448L : 0x3.fffffffffffcp-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-128 0x4p-16448L : 0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-128 0x4p-16448L : 0x3.fffffffffffcp-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-128 0x4p-16448L : 0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh downward ldbl-128 0x4p-16496L : 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-128 0x4p-16496L : 0x4p-16496L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-128 0x4p-16496L : 0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-128 0x4p-16496L : 0x4p-16496L : inexact-ok underflow underflow-ok errno-erange-ok
-asinh -min_subnorm missing-underflow
-= asinh downward flt-32 -0x8p-152f : -0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest flt-32 -0x8p-152f : -0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero flt-32 -0x8p-152f : -0x0p+0f : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward flt-32 -0x8p-152f : -0x0p+0f : inexact-ok underflow underflow-ok errno-erange-ok
+= asinh downward ldbl-128ibm 0x4p-1076L : 0x0p+0L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-128ibm 0x4p-1076L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-128ibm 0x4p-1076L : 0x0p+0L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-128ibm 0x4p-1076L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
+= asinh downward ldbl-96-intel 0x8p-16448L : 0x0p+0L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-96-intel 0x8p-16448L : 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-96-intel 0x8p-16448L : 0x0p+0L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-96-intel 0x8p-16448L : 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= asinh downward ldbl-96-m68k 0x8p-16448L : 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-96-m68k 0x8p-16448L : 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-96-m68k 0x8p-16448L : 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-96-m68k 0x8p-16448L : 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= asinh downward ldbl-128 0x8p-16448L : 0x7.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-128 0x8p-16448L : 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-128 0x8p-16448L : 0x7.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-128 0x8p-16448L : 0x8p-16448L : inexact-ok underflow errno-erange-ok
+= asinh downward ldbl-96-m68k 0x4p-16448L : 0x0p+0L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-96-m68k 0x4p-16448L : 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-96-m68k 0x4p-16448L : 0x0p+0L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-96-m68k 0x4p-16448L : 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= asinh downward ldbl-128 0x4p-16448L : 0x3.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-128 0x4p-16448L : 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-128 0x4p-16448L : 0x3.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-128 0x4p-16448L : 0x4p-16448L : inexact-ok underflow errno-erange-ok
+= asinh downward ldbl-128 0x4p-16496L : 0x0p+0L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-128 0x4p-16496L : 0x4p-16496L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-128 0x4p-16496L : 0x0p+0L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-128 0x4p-16496L : 0x4p-16496L : inexact-ok underflow errno-erange-ok
+asinh -min_subnorm
+= asinh downward flt-32 -0x8p-152f : -0x8p-152f : inexact-ok underflow errno-erange-ok
+= asinh tonearest flt-32 -0x8p-152f : -0x8p-152f : inexact-ok underflow errno-erange-ok
+= asinh towardzero flt-32 -0x8p-152f : -0x0p+0f : inexact-ok underflow errno-erange-ok
+= asinh upward flt-32 -0x8p-152f : -0x0p+0f : inexact-ok underflow errno-erange-ok
 = asinh downward dbl-64 -0x8p-152 : -0x8p-152 : inexact-ok
 = asinh tonearest dbl-64 -0x8p-152 : -0x8p-152 : inexact-ok
 = asinh towardzero dbl-64 -0x8p-152 : -0x7.ffffffffffffcp-152 : inexact-ok
@@ -7251,10 +7251,10 @@ asinh -min_subnorm missing-underflow
 = asinh tonearest ldbl-128ibm -0x8p-152L : -0x8p-152L : inexact-ok
 = asinh towardzero ldbl-128ibm -0x8p-152L : -0x7.fffffffffffffffffffffffffep-152L : inexact-ok
 = asinh upward ldbl-128ibm -0x8p-152L : -0x7.fffffffffffffffffffffffffep-152L : inexact-ok
-= asinh downward dbl-64 -0x4p-1076 : -0x4p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest dbl-64 -0x4p-1076 : -0x4p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero dbl-64 -0x4p-1076 : -0x0p+0 : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward dbl-64 -0x4p-1076 : -0x0p+0 : inexact-ok underflow underflow-ok errno-erange-ok
+= asinh downward dbl-64 -0x4p-1076 : -0x4p-1076 : inexact-ok underflow errno-erange-ok
+= asinh tonearest dbl-64 -0x4p-1076 : -0x4p-1076 : inexact-ok underflow errno-erange-ok
+= asinh towardzero dbl-64 -0x4p-1076 : -0x0p+0 : inexact-ok underflow errno-erange-ok
+= asinh upward dbl-64 -0x4p-1076 : -0x0p+0 : inexact-ok underflow errno-erange-ok
 = asinh downward ldbl-96-intel -0x4p-1076L : -0x4p-1076L : inexact-ok
 = asinh tonearest ldbl-96-intel -0x4p-1076L : -0x4p-1076L : inexact-ok
 = asinh towardzero ldbl-96-intel -0x4p-1076L : -0x3.fffffffffffffffcp-1076L : inexact-ok
@@ -7267,34 +7267,34 @@ asinh -min_subnorm missing-underflow
 = asinh tonearest ldbl-128 -0x4p-1076L : -0x4p-1076L : inexact-ok
 = asinh towardzero ldbl-128 -0x4p-1076L : -0x3.fffffffffffffffffffffffffffep-1076L : inexact-ok
 = asinh upward ldbl-128 -0x4p-1076L : -0x3.fffffffffffffffffffffffffffep-1076L : inexact-ok
-= asinh downward ldbl-128ibm -0x4p-1076L : -0x4p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-128ibm -0x4p-1076L : -0x4p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-128ibm -0x4p-1076L : -0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-128ibm -0x4p-1076L : -0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh downward ldbl-96-intel -0x8p-16448L : -0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-96-intel -0x8p-16448L : -0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-96-intel -0x8p-16448L : -0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-96-intel -0x8p-16448L : -0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh downward ldbl-96-m68k -0x8p-16448L : -0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-96-m68k -0x8p-16448L : -0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-96-m68k -0x8p-16448L : -0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-96-m68k -0x8p-16448L : -0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh downward ldbl-128 -0x8p-16448L : -0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-128 -0x8p-16448L : -0x8p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-128 -0x8p-16448L : -0x7.fffffffffffcp-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-128 -0x8p-16448L : -0x7.fffffffffffcp-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh downward ldbl-96-m68k -0x4p-16448L : -0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-96-m68k -0x4p-16448L : -0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-96-m68k -0x4p-16448L : -0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-96-m68k -0x4p-16448L : -0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh downward ldbl-128 -0x4p-16448L : -0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-128 -0x4p-16448L : -0x4p-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-128 -0x4p-16448L : -0x3.fffffffffffcp-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-128 -0x4p-16448L : -0x3.fffffffffffcp-16448L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh downward ldbl-128 -0x4p-16496L : -0x4p-16496L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh tonearest ldbl-128 -0x4p-16496L : -0x4p-16496L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh towardzero ldbl-128 -0x4p-16496L : -0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
-= asinh upward ldbl-128 -0x4p-16496L : -0x0p+0L : inexact-ok underflow underflow-ok errno-erange-ok
+= asinh downward ldbl-128ibm -0x4p-1076L : -0x4p-1076L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-128ibm -0x4p-1076L : -0x4p-1076L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-128ibm -0x4p-1076L : -0x0p+0L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-128ibm -0x4p-1076L : -0x0p+0L : inexact-ok underflow errno-erange-ok
+= asinh downward ldbl-96-intel -0x8p-16448L : -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-96-intel -0x8p-16448L : -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-96-intel -0x8p-16448L : -0x0p+0L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-96-intel -0x8p-16448L : -0x0p+0L : inexact-ok underflow errno-erange-ok
+= asinh downward ldbl-96-m68k -0x8p-16448L : -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-96-m68k -0x8p-16448L : -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-96-m68k -0x8p-16448L : -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-96-m68k -0x8p-16448L : -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= asinh downward ldbl-128 -0x8p-16448L : -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-128 -0x8p-16448L : -0x8p-16448L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-128 -0x8p-16448L : -0x7.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-128 -0x8p-16448L : -0x7.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok
+= asinh downward ldbl-96-m68k -0x4p-16448L : -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-96-m68k -0x4p-16448L : -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-96-m68k -0x4p-16448L : -0x0p+0L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-96-m68k -0x4p-16448L : -0x0p+0L : inexact-ok underflow errno-erange-ok
+= asinh downward ldbl-128 -0x4p-16448L : -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-128 -0x4p-16448L : -0x4p-16448L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-128 -0x4p-16448L : -0x3.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-128 -0x4p-16448L : -0x3.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok
+= asinh downward ldbl-128 -0x4p-16496L : -0x4p-16496L : inexact-ok underflow errno-erange-ok
+= asinh tonearest ldbl-128 -0x4p-16496L : -0x4p-16496L : inexact-ok underflow errno-erange-ok
+= asinh towardzero ldbl-128 -0x4p-16496L : -0x0p+0L : inexact-ok underflow errno-erange-ok
+= asinh upward ldbl-128 -0x4p-16496L : -0x0p+0L : inexact-ok underflow errno-erange-ok
 asinh max no-test-inline
 = asinh downward flt-32 0xf.fffffp+124f : 0x5.96a7ep+4f : no-test-inline inexact-ok
 = asinh tonearest flt-32 0xf.fffffp+124f : 0x5.96a7ep+4f : no-test-inline inexact-ok
index e4c0c676a641e9e66e3faf7cb99b70a179646b67..7123772deef784762db175cbfe5b8a5bd4d0bea8 100644 (file)
@@ -100,7 +100,16 @@ ENTRY(__asinh)
 4:     fld     %st                     // x : x
        faddl   MO(huge)                // huge+x : x
        fstp    %st(0)                  // x
-       ret
+       cmpl    $0x00100000, %eax
+       jae     8f
+       subl    $8, %esp
+       cfi_adjust_cfa_offset (8)
+       fld     %st(0)
+       fmul    %st(0)
+       fstpl   (%esp)
+       addl    $8, %esp
+       cfi_adjust_cfa_offset (-8)
+8:     ret
 
        // |x| > 2^28 => y = sign(x) * (log(|x|) + log(2))
        .align ALIGNARG(4)
index b1a28e7ac119a0ec7d285bcc29a268428b0acfa3..77ebae46ec2b18a3edb0aa21192f566893c86a48 100644 (file)
@@ -100,7 +100,16 @@ ENTRY(__asinhf)
 4:     fld     %st                     // x : x
        faddl   MO(huge)                // huge+x : x
        fstp    %st(0)                  // x
-       ret
+       cmpl    $0x00800000, %eax
+       jae     8f
+       subl    $4, %esp
+       cfi_adjust_cfa_offset (4)
+       fld     %st(0)
+       fmul    %st(0)
+       fstps   (%esp)
+       addl    $4, %esp
+       cfi_adjust_cfa_offset (-4)
+8:     ret
 
        // |x| > 2^14 => y = sign(x) * (log(|x|) + log(2))
        .align ALIGNARG(4)
index 6a5defed38fd8f1c8a159c71c744be21c2c2c7ae..8799da6e53f6e735d3eca120fe82d7058dd6e3a2 100644 (file)
@@ -108,7 +108,12 @@ ENTRY(__asinhl)
        fldt    MO(huge)                // huge : x : x
        faddp                           // huge+x : x
        fstp    %st(0)                  // x
-       ret
+       cmpl    $0x0001, %eax
+       jae     8f
+       fld     %st(0)
+       fmul    %st(0)
+       fstp    %st(0)
+8:     ret
 
        // |x| > 2^34 => y = sign(x) * (log(|x|) + log(2))
        .align ALIGNARG(4)
index a33758d3c90bec3ea067d5f69994f5a4ee387a10..ebe471015b5499708c2f368ebb556c89679f82c7 100644 (file)
@@ -21,6 +21,7 @@
  *              := sign(x)*log1p(|x| + x^2/(1 + sqrt(1+x^2)))
  */
 
+#include <float.h>
 #include <math.h>
 #include <math_private.h>
 
@@ -38,6 +39,11 @@ __asinh (double x)
   ix = hx & 0x7fffffff;
   if (__glibc_unlikely (ix < 0x3e300000))                  /* |x|<2**-28 */
     {
+      if (fabs (x) < DBL_MIN)
+       {
+         double force_underflow = x * x;
+         math_force_eval (force_underflow);
+       }
       if (huge + x > one)
        return x;                       /* return x inexact except 0 */
     }
index b7fa2b4443208637ce71cebd9d34b7d71b6d367f..697faa843c6496375734394c3c78dcd75dc9b895 100644 (file)
@@ -13,6 +13,7 @@
  * ====================================================
  */
 
+#include <float.h>
 #include <math.h>
 #include <math_private.h>
 
@@ -29,6 +30,11 @@ __asinhf(float x)
        GET_FLOAT_WORD(hx,x);
        ix = hx&0x7fffffff;
        if(__builtin_expect(ix< 0x38000000, 0)) {       /* |x|<2**-14 */
+           if (fabsf (x) < FLT_MIN)
+             {
+               float force_underflow = x * x;
+               math_force_eval (force_underflow);
+             }
            if(huge+x>one) return x;    /* return x inexact except 0 */
        }
        if(__builtin_expect(ix>0x47000000, 0)) {        /* |x| > 2**14 */
index e5a3636beb4bbefb14922b3828cca39866315723..8d5721a73c3d2563454ab3c1482e71952526fcf5 100644 (file)
@@ -29,6 +29,7 @@ static char rcsid[] = "$NetBSD: $";
  *                := signl(x)*log1pl(|x| + x^2/(1 + sqrtl(1+x^2)))
  */
 
+#include <float.h>
 #include <math.h>
 #include <math_private.h>
 
@@ -51,6 +52,11 @@ __asinhl (long double x)
     return x + x;              /* x is inf or NaN */
   if (ix < 0x3fc70000)
     {                          /* |x| < 2^ -56 */
+      if (fabsl (x) < LDBL_MIN)
+       {
+         long double force_underflow = x * x;
+         math_force_eval (force_underflow);
+       }
       if (huge + x > one)
        return x;               /* return x inexact except 0 */
     }
index b76e114317e54fccb34bbeae4eff38940bbbb79c..dda7f780fcc27b7948f4b76c413af6ceade365c8 100644 (file)
@@ -25,6 +25,7 @@ static char rcsid[] = "$NetBSD: s_asinh.c,v 1.9 1995/05/12 04:57:37 jtc Exp $";
  *              := sign(x)*log1p(|x| + x^2/(1 + sqrt(1+x^2)))
  */
 
+#include <float.h>
 #include <math.h>
 #include <math_private.h>
 #include <math_ldbl_opt.h>
@@ -45,6 +46,11 @@ long double __asinhl(long double x)
        ix = hx&0x7fffffffffffffffLL;
        if(ix>=0x7ff0000000000000LL) return x+x;        /* x is inf or NaN */
        if(ix< 0x3c70000000000000LL) {  /* |x|<2**-56 */
+           if (fabsl (x) < LDBL_MIN)
+             {
+               long double force_underflow = x * x;
+               math_force_eval (force_underflow);
+             }
            if(huge+x>one) return x;    /* return x inexact except 0 */
        }
        if(ix>0x4370000000000000LL) {   /* |x| > 2**56 */
index 5e679bd71995a4c2bb08569dad91a1565698afbe..75e47c71ea8fb2cd07c5880bde6cc219399e1b64 100644 (file)
@@ -29,6 +29,7 @@ static char rcsid[] = "$NetBSD: $";
  *               := signl(x)*log1pl(|x| + x^2/(1 + sqrtl(1+x^2)))
  */
 
+#include <float.h>
 #include <math.h>
 #include <math_private.h>
 
@@ -44,6 +45,11 @@ long double __asinhl(long double x)
        GET_LDOUBLE_EXP(hx,x);
        ix = hx&0x7fff;
        if(__builtin_expect(ix< 0x3fde, 0)) {   /* |x|<2**-34 */
+           if (fabsl (x) < LDBL_MIN)
+             {
+               long double force_underflow = x * x;
+               math_force_eval (force_underflow);
+             }
            if(huge+x>one) return x;    /* return x inexact except 0 */
        }
        if(__builtin_expect(ix>0x4020,0)) {             /* |x| > 2**34 */
This page took 0.558617 seconds and 5 git commands to generate.