about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog24
-rw-r--r--NEWS28
-rw-r--r--math/auto-libm-test-in13
-rw-r--r--math/auto-libm-test-out236
-rw-r--r--sysdeps/i386/fpu/s_asinh.S11
-rw-r--r--sysdeps/i386/fpu/s_asinhf.S11
-rw-r--r--sysdeps/i386/fpu/s_asinhl.S7
-rw-r--r--sysdeps/ieee754/dbl-64/s_asinh.c6
-rw-r--r--sysdeps/ieee754/flt-32/s_asinhf.c6
-rw-r--r--sysdeps/ieee754/ldbl-128/s_asinhl.c6
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_asinhl.c6
-rw-r--r--sysdeps/ieee754/ldbl-96/s_asinhl.c6
12 files changed, 218 insertions, 142 deletions
diff --git a/ChangeLog b/ChangeLog
index 23d5b8da44..d218978307 100644
--- 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 3f474f37b8..4194e5ab6b 100644
--- 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.
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 7546cca98b..6ec4bc69af 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -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
 
diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out
index 1d5969d22b..aa1eb1ff4b 100644
--- a/math/auto-libm-test-out
+++ b/math/auto-libm-test-out
@@ -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
diff --git a/sysdeps/i386/fpu/s_asinh.S b/sysdeps/i386/fpu/s_asinh.S
index e4c0c676a6..7123772dee 100644
--- a/sysdeps/i386/fpu/s_asinh.S
+++ b/sysdeps/i386/fpu/s_asinh.S
@@ -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)
diff --git a/sysdeps/i386/fpu/s_asinhf.S b/sysdeps/i386/fpu/s_asinhf.S
index b1a28e7ac1..77ebae46ec 100644
--- a/sysdeps/i386/fpu/s_asinhf.S
+++ b/sysdeps/i386/fpu/s_asinhf.S
@@ -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)
diff --git a/sysdeps/i386/fpu/s_asinhl.S b/sysdeps/i386/fpu/s_asinhl.S
index 6a5defed38..8799da6e53 100644
--- a/sysdeps/i386/fpu/s_asinhl.S
+++ b/sysdeps/i386/fpu/s_asinhl.S
@@ -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)
diff --git a/sysdeps/ieee754/dbl-64/s_asinh.c b/sysdeps/ieee754/dbl-64/s_asinh.c
index a33758d3c9..ebe471015b 100644
--- a/sysdeps/ieee754/dbl-64/s_asinh.c
+++ b/sysdeps/ieee754/dbl-64/s_asinh.c
@@ -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 */
     }
diff --git a/sysdeps/ieee754/flt-32/s_asinhf.c b/sysdeps/ieee754/flt-32/s_asinhf.c
index b7fa2b4443..697faa843c 100644
--- a/sysdeps/ieee754/flt-32/s_asinhf.c
+++ b/sysdeps/ieee754/flt-32/s_asinhf.c
@@ -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 */
diff --git a/sysdeps/ieee754/ldbl-128/s_asinhl.c b/sysdeps/ieee754/ldbl-128/s_asinhl.c
index e5a3636beb..8d5721a73c 100644
--- a/sysdeps/ieee754/ldbl-128/s_asinhl.c
+++ b/sysdeps/ieee754/ldbl-128/s_asinhl.c
@@ -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 */
     }
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c b/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c
index b76e114317..dda7f780fc 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c
@@ -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 */
diff --git a/sysdeps/ieee754/ldbl-96/s_asinhl.c b/sysdeps/ieee754/ldbl-96/s_asinhl.c
index 5e679bd719..75e47c71ea 100644
--- a/sysdeps/ieee754/ldbl-96/s_asinhl.c
+++ b/sysdeps/ieee754/ldbl-96/s_asinhl.c
@@ -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 */