diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-06-18 23:27:41 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-06-18 23:27:41 +0000 |
commit | 8db3cdefefe39e9d42b05b1610a63190e9f7fba4 (patch) | |
tree | b4ae0196406ac58ad51d28aacc95b074341c179c | |
parent | a7a3c24632904b5b1d7e47eaf6b955bba6246b8f (diff) | |
download | glibc-8db3cdefefe39e9d42b05b1610a63190e9f7fba4.tar.gz glibc-8db3cdefefe39e9d42b05b1610a63190e9f7fba4.tar.xz glibc-8db3cdefefe39e9d42b05b1610a63190e9f7fba4.zip |
Fix asinh missing underflows (bug 16350).
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.
-rw-r--r-- | ChangeLog | 24 | ||||
-rw-r--r-- | NEWS | 28 | ||||
-rw-r--r-- | math/auto-libm-test-in | 13 | ||||
-rw-r--r-- | math/auto-libm-test-out | 236 | ||||
-rw-r--r-- | sysdeps/i386/fpu/s_asinh.S | 11 | ||||
-rw-r--r-- | sysdeps/i386/fpu/s_asinhf.S | 11 | ||||
-rw-r--r-- | sysdeps/i386/fpu/s_asinhl.S | 7 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/s_asinh.c | 6 | ||||
-rw-r--r-- | sysdeps/ieee754/flt-32/s_asinhf.c | 6 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/s_asinhl.c | 6 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/s_asinhl.c | 6 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-96/s_asinhl.c | 6 |
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 */ |