]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix x86/x86_64 expl/exp10l spurious underflows (bug 16348).
authorJoseph Myers <joseph@codesourcery.com>
Thu, 27 Mar 2014 18:41:14 +0000 (18:41 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Thu, 27 Mar 2014 18:41:14 +0000 (18:41 +0000)
This patch fixes bug 16348, spurious underflows from x86/x86_64 expl
on arguments close to 0.  These implementations effectively use expm1
(on the fractional part of the argument) internally, so resulting in
spurious underflows when the result is very close to 1.  For arguments
small enough that the round-to-nearest correct result is 1, this patch
uses 1+x instead.

These implementations are also used for exp10l and so the patch fixes
similar issues there (the 0x1p-67 threshold being small enough to be
correct for exp10l as well as expl).  But because of spurious
underflows in other exp10 implementations (bug 16560), the tests
aren't added for exp10 at this point - they can be added when the
other exp10 parts of that bug are fixed.

Tested x86_64 and x86; no ulps updates needed.

[BZ #16348]
* sysdeps/i386/fpu/e_expl.S (IEEE754_EXPL) [!USE_AS_EXPM1L]: Use
1+x for argument with exponent below -67.
* sysdeps/x86_64/fpu/e_expl.S (IEEE754_EXPL) [!USE_AS_EXPM1L]:
Likewise.
* math/auto-libm-test-in: Add more tests of exp.
* math/auto-libm-test-out: Regenerated.

ChangeLog
NEWS
math/auto-libm-test-in
math/auto-libm-test-out
sysdeps/i386/fpu/e_expl.S
sysdeps/x86_64/fpu/e_expl.S

index 796978df452b237322ffdded2d484529b583d342..95733b5620e68230230ce40ced51130fef4724ec 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2014-03-27  Joseph Myers  <joseph@codesourcery.com>
+
+       [BZ #16348]
+       * sysdeps/i386/fpu/e_expl.S (IEEE754_EXPL) [!USE_AS_EXPM1L]: Use
+       1+x for argument with exponent below -67.
+       * sysdeps/x86_64/fpu/e_expl.S (IEEE754_EXPL) [!USE_AS_EXPM1L]:
+       Likewise.
+       * math/auto-libm-test-in: Add more tests of exp.
+       * math/auto-libm-test-out: Regenerated.
+
 2014-03-27  Siddhesh Poyarekar  <siddhesh@redhat.com>
 
        [BZ #16759]
diff --git a/NEWS b/NEWS
index afe402133725cb46e9f85e0bebfbc276428594e1..a9cc5cb6ab1623e6119b696b0e3bf3fe602e0a01 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -9,11 +9,11 @@ Version 2.20
 
 * The following bugs are resolved with this release:
 
-  15347, 15804, 15894, 16002, 16198, 16284, 16357, 16447, 16532, 16545,
-  16574, 16599, 16600, 16609, 16610, 16611, 16613, 16623, 16632, 16634,
-  16639, 16642, 16649, 16670, 16674, 16677, 16680, 16683, 16689, 16695,
-  16701, 16706, 16707, 16712, 16713, 16714, 16731, 16743, 16758, 16759,
-  16760.
+  15347, 15804, 15894, 16002, 16198, 16284, 16348, 16357, 16447, 16532,
+  16545, 16574, 16599, 16600, 16609, 16610, 16611, 16613, 16623, 16632,
+  16634, 16639, 16642, 16649, 16670, 16674, 16677, 16680, 16683, 16689,
+  16695, 16701, 16706, 16707, 16712, 16713, 16714, 16731, 16743, 16758,
+  16759, 16760.
 
 * Running the testsuite no longer terminates as soon as a test fails.
   Instead, a file tests.sum (xtests.sum from "make xcheck") is generated,
index 7c80192ccdb03e7594e233fce071006c2892fbeb..7ad407c238ca38bdc980a5a5858a9df7ce79058a 100644 (file)
@@ -843,6 +843,24 @@ exp -7.4444006192138124e+02
 exp -0x1.75f113c30b1c8p+9
 exp -max
 exp -11342.8125
+exp 0x1p-10
+exp -0x1p-10
+exp 0x1p-20
+exp -0x1p-20
+exp 0x1p-30
+exp -0x1p-30
+exp 0x1p-40
+exp -0x1p-40
+exp 0x1p-50
+exp -0x1p-50
+exp 0x1p-60
+exp -0x1p-60
+exp 0x1p-100
+exp -0x1p-100
+exp min
+exp -min
+exp min_subnorm
+exp -min_subnorm
 
 exp10 0
 exp10 -0
index 1dadc38c6c98e524d8c86777253ce3dfccb0142a..64dc911e974bbbeea808ccf26c394c9a5e2353f1 100644 (file)
@@ -89391,6 +89391,672 @@ exp -11342.8125
 = exp tonearest ldbl-128ibm -0x2.c4edp+12L : 0x0p+0L : inexact-ok underflow errno-erange
 = exp towardzero ldbl-128ibm -0x2.c4edp+12L : 0x0p+0L : inexact-ok underflow errno-erange
 = exp upward ldbl-128ibm -0x2.c4edp+12L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
+exp 0x1p-10
+= exp downward flt-32 0x4p-12f : 0x1.004008p+0f : inexact-ok
+= exp tonearest flt-32 0x4p-12f : 0x1.004008p+0f : inexact-ok
+= exp towardzero flt-32 0x4p-12f : 0x1.004008p+0f : inexact-ok
+= exp upward flt-32 0x4p-12f : 0x1.00400ap+0f : inexact-ok
+= exp downward dbl-64 0x4p-12 : 0x1.00400800aab55p+0 : inexact-ok
+= exp tonearest dbl-64 0x4p-12 : 0x1.00400800aab55p+0 : inexact-ok
+= exp towardzero dbl-64 0x4p-12 : 0x1.00400800aab55p+0 : inexact-ok
+= exp upward dbl-64 0x4p-12 : 0x1.00400800aab56p+0 : inexact-ok
+= exp downward ldbl-96-intel 0x4p-12L : 0x1.00400800aab555dcp+0L : inexact-ok
+= exp tonearest ldbl-96-intel 0x4p-12L : 0x1.00400800aab555dep+0L : inexact-ok
+= exp towardzero ldbl-96-intel 0x4p-12L : 0x1.00400800aab555dcp+0L : inexact-ok
+= exp upward ldbl-96-intel 0x4p-12L : 0x1.00400800aab555dep+0L : inexact-ok
+= exp downward ldbl-96-m68k 0x4p-12L : 0x1.00400800aab555dcp+0L : inexact-ok
+= exp tonearest ldbl-96-m68k 0x4p-12L : 0x1.00400800aab555dep+0L : inexact-ok
+= exp towardzero ldbl-96-m68k 0x4p-12L : 0x1.00400800aab555dcp+0L : inexact-ok
+= exp upward ldbl-96-m68k 0x4p-12L : 0x1.00400800aab555dep+0L : inexact-ok
+= exp downward ldbl-128 0x4p-12L : 0x1.00400800aab555dde38e6ce86e92p+0L : inexact-ok
+= exp tonearest ldbl-128 0x4p-12L : 0x1.00400800aab555dde38e6ce86e92p+0L : inexact-ok
+= exp towardzero ldbl-128 0x4p-12L : 0x1.00400800aab555dde38e6ce86e92p+0L : inexact-ok
+= exp upward ldbl-128 0x4p-12L : 0x1.00400800aab555dde38e6ce86e93p+0L : inexact-ok
+= exp downward ldbl-128ibm 0x4p-12L : 0x1.00400800aab555dde38e6ce86e8p+0L : inexact-ok
+= exp tonearest ldbl-128ibm 0x4p-12L : 0x1.00400800aab555dde38e6ce86e8p+0L : inexact-ok
+= exp towardzero ldbl-128ibm 0x4p-12L : 0x1.00400800aab555dde38e6ce86e8p+0L : inexact-ok
+= exp upward ldbl-128ibm 0x4p-12L : 0x1.00400800aab555dde38e6ce86fp+0L : inexact-ok
+exp -0x1p-10
+= exp downward flt-32 -0x4p-12f : 0xf.fc007p-4f : inexact-ok
+= exp tonearest flt-32 -0x4p-12f : 0xf.fc008p-4f : inexact-ok
+= exp towardzero flt-32 -0x4p-12f : 0xf.fc007p-4f : inexact-ok
+= exp upward flt-32 -0x4p-12f : 0xf.fc008p-4f : inexact-ok
+= exp downward dbl-64 -0x4p-12 : 0xf.fc007ff555ff8p-4 : inexact-ok
+= exp tonearest dbl-64 -0x4p-12 : 0xf.fc007ff556p-4 : inexact-ok
+= exp towardzero dbl-64 -0x4p-12 : 0xf.fc007ff555ff8p-4 : inexact-ok
+= exp upward dbl-64 -0x4p-12 : 0xf.fc007ff556p-4 : inexact-ok
+= exp downward ldbl-96-intel -0x4p-12L : 0xf.fc007ff555fff77p-4L : inexact-ok
+= exp tonearest ldbl-96-intel -0x4p-12L : 0xf.fc007ff555fff77p-4L : inexact-ok
+= exp towardzero ldbl-96-intel -0x4p-12L : 0xf.fc007ff555fff77p-4L : inexact-ok
+= exp upward ldbl-96-intel -0x4p-12L : 0xf.fc007ff555fff78p-4L : inexact-ok
+= exp downward ldbl-96-m68k -0x4p-12L : 0xf.fc007ff555fff77p-4L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x4p-12L : 0xf.fc007ff555fff77p-4L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x4p-12L : 0xf.fc007ff555fff77p-4L : inexact-ok
+= exp upward ldbl-96-m68k -0x4p-12L : 0xf.fc007ff555fff78p-4L : inexact-ok
+= exp downward ldbl-128 -0x4p-12L : 0xf.fc007ff555fff777d279e7b87ac8p-4L : inexact-ok
+= exp tonearest ldbl-128 -0x4p-12L : 0xf.fc007ff555fff777d279e7b87adp-4L : inexact-ok
+= exp towardzero ldbl-128 -0x4p-12L : 0xf.fc007ff555fff777d279e7b87ac8p-4L : inexact-ok
+= exp upward ldbl-128 -0x4p-12L : 0xf.fc007ff555fff777d279e7b87adp-4L : inexact-ok
+= exp downward ldbl-128ibm -0x4p-12L : 0xf.fc007ff555fff777d279e7b878p-4L : inexact-ok
+= exp tonearest ldbl-128ibm -0x4p-12L : 0xf.fc007ff555fff777d279e7b87cp-4L : inexact-ok
+= exp towardzero ldbl-128ibm -0x4p-12L : 0xf.fc007ff555fff777d279e7b878p-4L : inexact-ok
+= exp upward ldbl-128ibm -0x4p-12L : 0xf.fc007ff555fff777d279e7b87cp-4L : inexact-ok
+exp 0x1p-20
+= exp downward flt-32 0x1p-20f : 0x1.00001p+0f : inexact-ok
+= exp tonearest flt-32 0x1p-20f : 0x1.00001p+0f : inexact-ok
+= exp towardzero flt-32 0x1p-20f : 0x1.00001p+0f : inexact-ok
+= exp upward flt-32 0x1p-20f : 0x1.000012p+0f : inexact-ok
+= exp downward dbl-64 0x1p-20 : 0x1.00001000008p+0 : inexact-ok
+= exp tonearest dbl-64 0x1p-20 : 0x1.00001000008p+0 : inexact-ok
+= exp towardzero dbl-64 0x1p-20 : 0x1.00001000008p+0 : inexact-ok
+= exp upward dbl-64 0x1p-20 : 0x1.0000100000801p+0 : inexact-ok
+= exp downward ldbl-96-intel 0x1p-20L : 0x1.0000100000800002p+0L : inexact-ok
+= exp tonearest ldbl-96-intel 0x1p-20L : 0x1.0000100000800002p+0L : inexact-ok
+= exp towardzero ldbl-96-intel 0x1p-20L : 0x1.0000100000800002p+0L : inexact-ok
+= exp upward ldbl-96-intel 0x1p-20L : 0x1.0000100000800004p+0L : inexact-ok
+= exp downward ldbl-96-m68k 0x1p-20L : 0x1.0000100000800002p+0L : inexact-ok
+= exp tonearest ldbl-96-m68k 0x1p-20L : 0x1.0000100000800002p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k 0x1p-20L : 0x1.0000100000800002p+0L : inexact-ok
+= exp upward ldbl-96-m68k 0x1p-20L : 0x1.0000100000800004p+0L : inexact-ok
+= exp downward ldbl-128 0x1p-20L : 0x1.0000100000800002aaaab5555577p+0L : inexact-ok
+= exp tonearest ldbl-128 0x1p-20L : 0x1.0000100000800002aaaab5555577p+0L : inexact-ok
+= exp towardzero ldbl-128 0x1p-20L : 0x1.0000100000800002aaaab5555577p+0L : inexact-ok
+= exp upward ldbl-128 0x1p-20L : 0x1.0000100000800002aaaab5555578p+0L : inexact-ok
+= exp downward ldbl-128ibm 0x1p-20L : 0x1.0000100000800002aaaab55555p+0L : inexact-ok
+= exp tonearest ldbl-128ibm 0x1p-20L : 0x1.0000100000800002aaaab555558p+0L : inexact-ok
+= exp towardzero ldbl-128ibm 0x1p-20L : 0x1.0000100000800002aaaab55555p+0L : inexact-ok
+= exp upward ldbl-128ibm 0x1p-20L : 0x1.0000100000800002aaaab555558p+0L : inexact-ok
+exp -0x1p-20
+= exp downward flt-32 -0x1p-20f : 0xf.ffffp-4f : inexact-ok
+= exp tonearest flt-32 -0x1p-20f : 0xf.ffffp-4f : inexact-ok
+= exp towardzero flt-32 -0x1p-20f : 0xf.ffffp-4f : inexact-ok
+= exp upward flt-32 -0x1p-20f : 0xf.ffff1p-4f : inexact-ok
+= exp downward dbl-64 -0x1p-20 : 0xf.ffff000007ff8p-4 : inexact-ok
+= exp tonearest dbl-64 -0x1p-20 : 0xf.ffff000008p-4 : inexact-ok
+= exp towardzero dbl-64 -0x1p-20 : 0xf.ffff000007ff8p-4 : inexact-ok
+= exp upward dbl-64 -0x1p-20 : 0xf.ffff000008p-4 : inexact-ok
+= exp downward ldbl-96-intel -0x1p-20L : 0xf.ffff000007ffffdp-4L : inexact-ok
+= exp tonearest ldbl-96-intel -0x1p-20L : 0xf.ffff000007ffffdp-4L : inexact-ok
+= exp towardzero ldbl-96-intel -0x1p-20L : 0xf.ffff000007ffffdp-4L : inexact-ok
+= exp upward ldbl-96-intel -0x1p-20L : 0xf.ffff000007ffffep-4L : inexact-ok
+= exp downward ldbl-96-m68k -0x1p-20L : 0xf.ffff000007ffffdp-4L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x1p-20L : 0xf.ffff000007ffffdp-4L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x1p-20L : 0xf.ffff000007ffffdp-4L : inexact-ok
+= exp upward ldbl-96-m68k -0x1p-20L : 0xf.ffff000007ffffep-4L : inexact-ok
+= exp downward ldbl-128 -0x1p-20L : 0xf.ffff000007ffffd55555fffffdd8p-4L : inexact-ok
+= exp tonearest ldbl-128 -0x1p-20L : 0xf.ffff000007ffffd55555fffffdep-4L : inexact-ok
+= exp towardzero ldbl-128 -0x1p-20L : 0xf.ffff000007ffffd55555fffffdd8p-4L : inexact-ok
+= exp upward ldbl-128 -0x1p-20L : 0xf.ffff000007ffffd55555fffffdep-4L : inexact-ok
+= exp downward ldbl-128ibm -0x1p-20L : 0xf.ffff000007ffffd55555fffffcp-4L : inexact-ok
+= exp tonearest ldbl-128ibm -0x1p-20L : 0xf.ffff000007ffffd55555fffffcp-4L : inexact-ok
+= exp towardzero ldbl-128ibm -0x1p-20L : 0xf.ffff000007ffffd55555fffffcp-4L : inexact-ok
+= exp upward ldbl-128ibm -0x1p-20L : 0xf.ffff000007ffffd55556p-4L : inexact-ok
+exp 0x1p-30
+= exp downward flt-32 0x4p-32f : 0x1p+0f : inexact-ok
+= exp tonearest flt-32 0x4p-32f : 0x1p+0f : inexact-ok
+= exp towardzero flt-32 0x4p-32f : 0x1p+0f : inexact-ok
+= exp upward flt-32 0x4p-32f : 0x1.000002p+0f : inexact-ok
+= exp downward dbl-64 0x4p-32 : 0x1.00000004p+0 : inexact-ok
+= exp tonearest dbl-64 0x4p-32 : 0x1.00000004p+0 : inexact-ok
+= exp towardzero dbl-64 0x4p-32 : 0x1.00000004p+0 : inexact-ok
+= exp upward dbl-64 0x4p-32 : 0x1.0000000400001p+0 : inexact-ok
+= exp downward ldbl-96-intel 0x4p-32L : 0x1.0000000400000008p+0L : inexact-ok
+= exp tonearest ldbl-96-intel 0x4p-32L : 0x1.0000000400000008p+0L : inexact-ok
+= exp towardzero ldbl-96-intel 0x4p-32L : 0x1.0000000400000008p+0L : inexact-ok
+= exp upward ldbl-96-intel 0x4p-32L : 0x1.000000040000000ap+0L : inexact-ok
+= exp downward ldbl-96-m68k 0x4p-32L : 0x1.0000000400000008p+0L : inexact-ok
+= exp tonearest ldbl-96-m68k 0x4p-32L : 0x1.0000000400000008p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k 0x4p-32L : 0x1.0000000400000008p+0L : inexact-ok
+= exp upward ldbl-96-m68k 0x4p-32L : 0x1.000000040000000ap+0L : inexact-ok
+= exp downward ldbl-128 0x4p-32L : 0x1.00000004000000080000000aaaaap+0L : inexact-ok
+= exp tonearest ldbl-128 0x4p-32L : 0x1.00000004000000080000000aaaabp+0L : inexact-ok
+= exp towardzero ldbl-128 0x4p-32L : 0x1.00000004000000080000000aaaaap+0L : inexact-ok
+= exp upward ldbl-128 0x4p-32L : 0x1.00000004000000080000000aaaabp+0L : inexact-ok
+= exp downward ldbl-128ibm 0x4p-32L : 0x1.00000004000000080000000aaa8p+0L : inexact-ok
+= exp tonearest ldbl-128ibm 0x4p-32L : 0x1.00000004000000080000000aaa8p+0L : inexact-ok
+= exp towardzero ldbl-128ibm 0x4p-32L : 0x1.00000004000000080000000aaa8p+0L : inexact-ok
+= exp upward ldbl-128ibm 0x4p-32L : 0x1.00000004000000080000000aabp+0L : inexact-ok
+exp -0x1p-30
+= exp downward flt-32 -0x4p-32f : 0xf.fffffp-4f : inexact-ok
+= exp tonearest flt-32 -0x4p-32f : 0x1p+0f : inexact-ok
+= exp towardzero flt-32 -0x4p-32f : 0xf.fffffp-4f : inexact-ok
+= exp upward flt-32 -0x4p-32f : 0x1p+0f : inexact-ok
+= exp downward dbl-64 -0x4p-32 : 0xf.ffffffcp-4 : inexact-ok
+= exp tonearest dbl-64 -0x4p-32 : 0xf.ffffffcp-4 : inexact-ok
+= exp towardzero dbl-64 -0x4p-32 : 0xf.ffffffcp-4 : inexact-ok
+= exp upward dbl-64 -0x4p-32 : 0xf.ffffffc000008p-4 : inexact-ok
+= exp downward ldbl-96-intel -0x4p-32L : 0xf.ffffffc00000007p-4L : inexact-ok
+= exp tonearest ldbl-96-intel -0x4p-32L : 0xf.ffffffc00000008p-4L : inexact-ok
+= exp towardzero ldbl-96-intel -0x4p-32L : 0xf.ffffffc00000007p-4L : inexact-ok
+= exp upward ldbl-96-intel -0x4p-32L : 0xf.ffffffc00000008p-4L : inexact-ok
+= exp downward ldbl-96-m68k -0x4p-32L : 0xf.ffffffc00000007p-4L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x4p-32L : 0xf.ffffffc00000008p-4L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x4p-32L : 0xf.ffffffc00000007p-4L : inexact-ok
+= exp upward ldbl-96-m68k -0x4p-32L : 0xf.ffffffc00000008p-4L : inexact-ok
+= exp downward ldbl-128 -0x4p-32L : 0xf.ffffffc00000007fffffff55555p-4L : inexact-ok
+= exp tonearest ldbl-128 -0x4p-32L : 0xf.ffffffc00000007fffffff555558p-4L : inexact-ok
+= exp towardzero ldbl-128 -0x4p-32L : 0xf.ffffffc00000007fffffff55555p-4L : inexact-ok
+= exp upward ldbl-128 -0x4p-32L : 0xf.ffffffc00000007fffffff555558p-4L : inexact-ok
+= exp downward ldbl-128ibm -0x4p-32L : 0xf.ffffffc00000007fffffff5554p-4L : inexact-ok
+= exp tonearest ldbl-128ibm -0x4p-32L : 0xf.ffffffc00000007fffffff5554p-4L : inexact-ok
+= exp towardzero ldbl-128ibm -0x4p-32L : 0xf.ffffffc00000007fffffff5554p-4L : inexact-ok
+= exp upward ldbl-128ibm -0x4p-32L : 0xf.ffffffc00000007fffffff5558p-4L : inexact-ok
+exp 0x1p-40
+= exp downward flt-32 0x1p-40f : 0x1p+0f : inexact-ok
+= exp tonearest flt-32 0x1p-40f : 0x1p+0f : inexact-ok
+= exp towardzero flt-32 0x1p-40f : 0x1p+0f : inexact-ok
+= exp upward flt-32 0x1p-40f : 0x1.000002p+0f : inexact-ok
+= exp downward dbl-64 0x1p-40 : 0x1.0000000001p+0 : inexact-ok
+= exp tonearest dbl-64 0x1p-40 : 0x1.0000000001p+0 : inexact-ok
+= exp towardzero dbl-64 0x1p-40 : 0x1.0000000001p+0 : inexact-ok
+= exp upward dbl-64 0x1p-40 : 0x1.0000000001001p+0 : inexact-ok
+= exp downward ldbl-96-intel 0x1p-40L : 0x1.0000000001p+0L : inexact-ok
+= exp tonearest ldbl-96-intel 0x1p-40L : 0x1.0000000001p+0L : inexact-ok
+= exp towardzero ldbl-96-intel 0x1p-40L : 0x1.0000000001p+0L : inexact-ok
+= exp upward ldbl-96-intel 0x1p-40L : 0x1.0000000001000002p+0L : inexact-ok
+= exp downward ldbl-96-m68k 0x1p-40L : 0x1.0000000001p+0L : inexact-ok
+= exp tonearest ldbl-96-m68k 0x1p-40L : 0x1.0000000001p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k 0x1p-40L : 0x1.0000000001p+0L : inexact-ok
+= exp upward ldbl-96-m68k 0x1p-40L : 0x1.0000000001000002p+0L : inexact-ok
+= exp downward ldbl-128 0x1p-40L : 0x1.000000000100000000008p+0L : inexact-ok
+= exp tonearest ldbl-128 0x1p-40L : 0x1.000000000100000000008p+0L : inexact-ok
+= exp towardzero ldbl-128 0x1p-40L : 0x1.000000000100000000008p+0L : inexact-ok
+= exp upward ldbl-128 0x1p-40L : 0x1.0000000001000000000080000001p+0L : inexact-ok
+= exp downward ldbl-128ibm 0x1p-40L : 0x1.000000000100000000008p+0L : inexact-ok
+= exp tonearest ldbl-128ibm 0x1p-40L : 0x1.000000000100000000008p+0L : inexact-ok
+= exp towardzero ldbl-128ibm 0x1p-40L : 0x1.000000000100000000008p+0L : inexact-ok
+= exp upward ldbl-128ibm 0x1p-40L : 0x1.000000000100000000008000008p+0L : inexact-ok
+exp -0x1p-40
+= exp downward flt-32 -0x1p-40f : 0xf.fffffp-4f : inexact-ok
+= exp tonearest flt-32 -0x1p-40f : 0x1p+0f : inexact-ok
+= exp towardzero flt-32 -0x1p-40f : 0xf.fffffp-4f : inexact-ok
+= exp upward flt-32 -0x1p-40f : 0x1p+0f : inexact-ok
+= exp downward dbl-64 -0x1p-40 : 0xf.fffffffffp-4 : inexact-ok
+= exp tonearest dbl-64 -0x1p-40 : 0xf.fffffffffp-4 : inexact-ok
+= exp towardzero dbl-64 -0x1p-40 : 0xf.fffffffffp-4 : inexact-ok
+= exp upward dbl-64 -0x1p-40 : 0xf.fffffffff0008p-4 : inexact-ok
+= exp downward ldbl-96-intel -0x1p-40L : 0xf.fffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-intel -0x1p-40L : 0xf.fffffffffp-4L : inexact-ok
+= exp towardzero ldbl-96-intel -0x1p-40L : 0xf.fffffffffp-4L : inexact-ok
+= exp upward ldbl-96-intel -0x1p-40L : 0xf.fffffffff000001p-4L : inexact-ok
+= exp downward ldbl-96-m68k -0x1p-40L : 0xf.fffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x1p-40L : 0xf.fffffffffp-4L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x1p-40L : 0xf.fffffffffp-4L : inexact-ok
+= exp upward ldbl-96-m68k -0x1p-40L : 0xf.fffffffff000001p-4L : inexact-ok
+= exp downward ldbl-128 -0x1p-40L : 0xf.fffffffff00000000007fffffff8p-4L : inexact-ok
+= exp tonearest ldbl-128 -0x1p-40L : 0xf.fffffffff00000000008p-4L : inexact-ok
+= exp towardzero ldbl-128 -0x1p-40L : 0xf.fffffffff00000000007fffffff8p-4L : inexact-ok
+= exp upward ldbl-128 -0x1p-40L : 0xf.fffffffff00000000008p-4L : inexact-ok
+= exp downward ldbl-128ibm -0x1p-40L : 0xf.fffffffff00000000007fffffcp-4L : inexact-ok
+= exp tonearest ldbl-128ibm -0x1p-40L : 0xf.fffffffff00000000008p-4L : inexact-ok
+= exp towardzero ldbl-128ibm -0x1p-40L : 0xf.fffffffff00000000007fffffcp-4L : inexact-ok
+= exp upward ldbl-128ibm -0x1p-40L : 0xf.fffffffff00000000008p-4L : inexact-ok
+exp 0x1p-50
+= exp downward flt-32 0x4p-52f : 0x1p+0f : inexact-ok
+= exp tonearest flt-32 0x4p-52f : 0x1p+0f : inexact-ok
+= exp towardzero flt-32 0x4p-52f : 0x1p+0f : inexact-ok
+= exp upward flt-32 0x4p-52f : 0x1.000002p+0f : inexact-ok
+= exp downward dbl-64 0x4p-52 : 0x1.0000000000004p+0 : inexact-ok
+= exp tonearest dbl-64 0x4p-52 : 0x1.0000000000004p+0 : inexact-ok
+= exp towardzero dbl-64 0x4p-52 : 0x1.0000000000004p+0 : inexact-ok
+= exp upward dbl-64 0x4p-52 : 0x1.0000000000005p+0 : inexact-ok
+= exp downward ldbl-96-intel 0x4p-52L : 0x1.0000000000004p+0L : inexact-ok
+= exp tonearest ldbl-96-intel 0x4p-52L : 0x1.0000000000004p+0L : inexact-ok
+= exp towardzero ldbl-96-intel 0x4p-52L : 0x1.0000000000004p+0L : inexact-ok
+= exp upward ldbl-96-intel 0x4p-52L : 0x1.0000000000004002p+0L : inexact-ok
+= exp downward ldbl-96-m68k 0x4p-52L : 0x1.0000000000004p+0L : inexact-ok
+= exp tonearest ldbl-96-m68k 0x4p-52L : 0x1.0000000000004p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k 0x4p-52L : 0x1.0000000000004p+0L : inexact-ok
+= exp upward ldbl-96-m68k 0x4p-52L : 0x1.0000000000004002p+0L : inexact-ok
+= exp downward ldbl-128 0x4p-52L : 0x1.00000000000040000000000008p+0L : inexact-ok
+= exp tonearest ldbl-128 0x4p-52L : 0x1.00000000000040000000000008p+0L : inexact-ok
+= exp towardzero ldbl-128 0x4p-52L : 0x1.00000000000040000000000008p+0L : inexact-ok
+= exp upward ldbl-128 0x4p-52L : 0x1.0000000000004000000000000801p+0L : inexact-ok
+= exp downward ldbl-128ibm 0x4p-52L : 0x1.00000000000040000000000008p+0L : inexact-ok
+= exp tonearest ldbl-128ibm 0x4p-52L : 0x1.00000000000040000000000008p+0L : inexact-ok
+= exp towardzero ldbl-128ibm 0x4p-52L : 0x1.00000000000040000000000008p+0L : inexact-ok
+= exp upward ldbl-128ibm 0x4p-52L : 0x1.000000000000400000000000088p+0L : inexact-ok
+exp -0x1p-50
+= exp downward flt-32 -0x4p-52f : 0xf.fffffp-4f : inexact-ok
+= exp tonearest flt-32 -0x4p-52f : 0x1p+0f : inexact-ok
+= exp towardzero flt-32 -0x4p-52f : 0xf.fffffp-4f : inexact-ok
+= exp upward flt-32 -0x4p-52f : 0x1p+0f : inexact-ok
+= exp downward dbl-64 -0x4p-52 : 0xf.fffffffffffcp-4 : inexact-ok
+= exp tonearest dbl-64 -0x4p-52 : 0xf.fffffffffffcp-4 : inexact-ok
+= exp towardzero dbl-64 -0x4p-52 : 0xf.fffffffffffcp-4 : inexact-ok
+= exp upward dbl-64 -0x4p-52 : 0xf.fffffffffffc8p-4 : inexact-ok
+= exp downward ldbl-96-intel -0x4p-52L : 0xf.fffffffffffcp-4L : inexact-ok
+= exp tonearest ldbl-96-intel -0x4p-52L : 0xf.fffffffffffcp-4L : inexact-ok
+= exp towardzero ldbl-96-intel -0x4p-52L : 0xf.fffffffffffcp-4L : inexact-ok
+= exp upward ldbl-96-intel -0x4p-52L : 0xf.fffffffffffc001p-4L : inexact-ok
+= exp downward ldbl-96-m68k -0x4p-52L : 0xf.fffffffffffcp-4L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x4p-52L : 0xf.fffffffffffcp-4L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x4p-52L : 0xf.fffffffffffcp-4L : inexact-ok
+= exp upward ldbl-96-m68k -0x4p-52L : 0xf.fffffffffffc001p-4L : inexact-ok
+= exp downward ldbl-128 -0x4p-52L : 0xf.fffffffffffc0000000000007ff8p-4L : inexact-ok
+= exp tonearest ldbl-128 -0x4p-52L : 0xf.fffffffffffc0000000000008p-4L : inexact-ok
+= exp towardzero ldbl-128 -0x4p-52L : 0xf.fffffffffffc0000000000007ff8p-4L : inexact-ok
+= exp upward ldbl-128 -0x4p-52L : 0xf.fffffffffffc0000000000008p-4L : inexact-ok
+= exp downward ldbl-128ibm -0x4p-52L : 0xf.fffffffffffc0000000000007cp-4L : inexact-ok
+= exp tonearest ldbl-128ibm -0x4p-52L : 0xf.fffffffffffc0000000000008p-4L : inexact-ok
+= exp towardzero ldbl-128ibm -0x4p-52L : 0xf.fffffffffffc0000000000007cp-4L : inexact-ok
+= exp upward ldbl-128ibm -0x4p-52L : 0xf.fffffffffffc0000000000008p-4L : inexact-ok
+exp 0x1p-60
+= exp downward flt-32 0x1p-60f : 0x1p+0f : inexact-ok
+= exp tonearest flt-32 0x1p-60f : 0x1p+0f : inexact-ok
+= exp towardzero flt-32 0x1p-60f : 0x1p+0f : inexact-ok
+= exp upward flt-32 0x1p-60f : 0x1.000002p+0f : inexact-ok
+= exp downward dbl-64 0x1p-60 : 0x1p+0 : inexact-ok
+= exp tonearest dbl-64 0x1p-60 : 0x1p+0 : inexact-ok
+= exp towardzero dbl-64 0x1p-60 : 0x1p+0 : inexact-ok
+= exp upward dbl-64 0x1p-60 : 0x1.0000000000001p+0 : inexact-ok
+= exp downward ldbl-96-intel 0x1p-60L : 0x1.000000000000001p+0L : inexact-ok
+= exp tonearest ldbl-96-intel 0x1p-60L : 0x1.000000000000001p+0L : inexact-ok
+= exp towardzero ldbl-96-intel 0x1p-60L : 0x1.000000000000001p+0L : inexact-ok
+= exp upward ldbl-96-intel 0x1p-60L : 0x1.0000000000000012p+0L : inexact-ok
+= exp downward ldbl-96-m68k 0x1p-60L : 0x1.000000000000001p+0L : inexact-ok
+= exp tonearest ldbl-96-m68k 0x1p-60L : 0x1.000000000000001p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k 0x1p-60L : 0x1.000000000000001p+0L : inexact-ok
+= exp upward ldbl-96-m68k 0x1p-60L : 0x1.0000000000000012p+0L : inexact-ok
+= exp downward ldbl-128 0x1p-60L : 0x1.000000000000001p+0L : inexact-ok
+= exp tonearest ldbl-128 0x1p-60L : 0x1.000000000000001p+0L : inexact-ok
+= exp towardzero ldbl-128 0x1p-60L : 0x1.000000000000001p+0L : inexact-ok
+= exp upward ldbl-128 0x1p-60L : 0x1.0000000000000010000000000001p+0L : inexact-ok
+= exp downward ldbl-128ibm 0x1p-60L : 0x1.000000000000001p+0L : inexact-ok
+= exp tonearest ldbl-128ibm 0x1p-60L : 0x1.000000000000001p+0L : inexact-ok
+= exp towardzero ldbl-128ibm 0x1p-60L : 0x1.000000000000001p+0L : inexact-ok
+= exp upward ldbl-128ibm 0x1p-60L : 0x1.000000000000001000000000008p+0L : inexact-ok
+exp -0x1p-60
+= exp downward flt-32 -0x1p-60f : 0xf.fffffp-4f : inexact-ok
+= exp tonearest flt-32 -0x1p-60f : 0x1p+0f : inexact-ok
+= exp towardzero flt-32 -0x1p-60f : 0xf.fffffp-4f : inexact-ok
+= exp upward flt-32 -0x1p-60f : 0x1p+0f : inexact-ok
+= exp downward dbl-64 -0x1p-60 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp tonearest dbl-64 -0x1p-60 : 0x1p+0 : inexact-ok
+= exp towardzero dbl-64 -0x1p-60 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp upward dbl-64 -0x1p-60 : 0x1p+0 : inexact-ok
+= exp downward ldbl-96-intel -0x1p-60L : 0xf.ffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-intel -0x1p-60L : 0xf.ffffffffffffffp-4L : inexact-ok
+= exp towardzero ldbl-96-intel -0x1p-60L : 0xf.ffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-intel -0x1p-60L : 0xf.ffffffffffffff1p-4L : inexact-ok
+= exp downward ldbl-96-m68k -0x1p-60L : 0xf.ffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x1p-60L : 0xf.ffffffffffffffp-4L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x1p-60L : 0xf.ffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-m68k -0x1p-60L : 0xf.ffffffffffffff1p-4L : inexact-ok
+= exp downward ldbl-128 -0x1p-60L : 0xf.ffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-128 -0x1p-60L : 0xf.ffffffffffffffp-4L : inexact-ok
+= exp towardzero ldbl-128 -0x1p-60L : 0xf.ffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-128 -0x1p-60L : 0xf.ffffffffffffff00000000000008p-4L : inexact-ok
+= exp downward ldbl-128ibm -0x1p-60L : 0xf.ffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-128ibm -0x1p-60L : 0xf.ffffffffffffffp-4L : inexact-ok
+= exp towardzero ldbl-128ibm -0x1p-60L : 0xf.ffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-128ibm -0x1p-60L : 0xf.ffffffffffffff000000000004p-4L : inexact-ok
+exp 0x1p-100
+= exp downward flt-32 0x1p-100f : 0x1p+0f : inexact-ok
+= exp tonearest flt-32 0x1p-100f : 0x1p+0f : inexact-ok
+= exp towardzero flt-32 0x1p-100f : 0x1p+0f : inexact-ok
+= exp upward flt-32 0x1p-100f : 0x1.000002p+0f : inexact-ok
+= exp downward dbl-64 0x1p-100 : 0x1p+0 : inexact-ok
+= exp tonearest dbl-64 0x1p-100 : 0x1p+0 : inexact-ok
+= exp towardzero dbl-64 0x1p-100 : 0x1p+0 : inexact-ok
+= exp upward dbl-64 0x1p-100 : 0x1.0000000000001p+0 : inexact-ok
+= exp downward ldbl-96-intel 0x1p-100L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-intel 0x1p-100L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel 0x1p-100L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-intel 0x1p-100L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-96-m68k 0x1p-100L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-m68k 0x1p-100L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k 0x1p-100L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-m68k 0x1p-100L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-128 0x1p-100L : 0x1.0000000000000000000000001p+0L : inexact-ok
+= exp tonearest ldbl-128 0x1p-100L : 0x1.0000000000000000000000001p+0L : inexact-ok
+= exp towardzero ldbl-128 0x1p-100L : 0x1.0000000000000000000000001p+0L : inexact-ok
+= exp upward ldbl-128 0x1p-100L : 0x1.0000000000000000000000001001p+0L : inexact-ok
+= exp downward ldbl-128ibm 0x1p-100L : 0x1.0000000000000000000000001p+0L : inexact-ok
+= exp tonearest ldbl-128ibm 0x1p-100L : 0x1.0000000000000000000000001p+0L : inexact-ok
+= exp towardzero ldbl-128ibm 0x1p-100L : 0x1.0000000000000000000000001p+0L : inexact-ok
+= exp upward ldbl-128ibm 0x1p-100L : 0x1.000000000000000000000000108p+0L : inexact-ok
+exp -0x1p-100
+= exp downward flt-32 -0x1p-100f : 0xf.fffffp-4f : inexact-ok
+= exp tonearest flt-32 -0x1p-100f : 0x1p+0f : inexact-ok
+= exp towardzero flt-32 -0x1p-100f : 0xf.fffffp-4f : inexact-ok
+= exp upward flt-32 -0x1p-100f : 0x1p+0f : inexact-ok
+= exp downward dbl-64 -0x1p-100 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp tonearest dbl-64 -0x1p-100 : 0x1p+0 : inexact-ok
+= exp towardzero dbl-64 -0x1p-100 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp upward dbl-64 -0x1p-100 : 0x1p+0 : inexact-ok
+= exp downward ldbl-96-intel -0x1p-100L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-intel -0x1p-100L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel -0x1p-100L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-intel -0x1p-100L : 0x1p+0L : inexact-ok
+= exp downward ldbl-96-m68k -0x1p-100L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x1p-100L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x1p-100L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-m68k -0x1p-100L : 0x1p+0L : inexact-ok
+= exp downward ldbl-128 -0x1p-100L : 0xf.ffffffffffffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-128 -0x1p-100L : 0xf.ffffffffffffffffffffffffp-4L : inexact-ok
+= exp towardzero ldbl-128 -0x1p-100L : 0xf.ffffffffffffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-128 -0x1p-100L : 0xf.ffffffffffffffffffffffff0008p-4L : inexact-ok
+= exp downward ldbl-128ibm -0x1p-100L : 0xf.ffffffffffffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-128ibm -0x1p-100L : 0xf.ffffffffffffffffffffffffp-4L : inexact-ok
+= exp towardzero ldbl-128ibm -0x1p-100L : 0xf.ffffffffffffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-128ibm -0x1p-100L : 0xf.ffffffffffffffffffffffff04p-4L : inexact-ok
+exp min
+= exp downward flt-32 0x4p-128f : 0x1p+0f : inexact-ok
+= exp tonearest flt-32 0x4p-128f : 0x1p+0f : inexact-ok
+= exp towardzero flt-32 0x4p-128f : 0x1p+0f : inexact-ok
+= exp upward flt-32 0x4p-128f : 0x1.000002p+0f : inexact-ok
+= exp downward dbl-64 0x4p-128 : 0x1p+0 : inexact-ok
+= exp tonearest dbl-64 0x4p-128 : 0x1p+0 : inexact-ok
+= exp towardzero dbl-64 0x4p-128 : 0x1p+0 : inexact-ok
+= exp upward dbl-64 0x4p-128 : 0x1.0000000000001p+0 : inexact-ok
+= exp downward ldbl-96-intel 0x4p-128L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-intel 0x4p-128L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel 0x4p-128L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-intel 0x4p-128L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-96-m68k 0x4p-128L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-m68k 0x4p-128L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k 0x4p-128L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-m68k 0x4p-128L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-128 0x4p-128L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-128 0x4p-128L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 0x4p-128L : 0x1p+0L : inexact-ok
+= exp upward ldbl-128 0x4p-128L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp downward ldbl-128ibm 0x4p-128L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-128ibm 0x4p-128L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128ibm 0x4p-128L : 0x1p+0L : inexact-ok
+= exp upward ldbl-128ibm 0x4p-128L : 0x1.000000000000000000000000008p+0L : inexact-ok
+= exp downward dbl-64 0x4p-1024 : 0x1p+0 : inexact-ok
+= exp tonearest dbl-64 0x4p-1024 : 0x1p+0 : inexact-ok
+= exp towardzero dbl-64 0x4p-1024 : 0x1p+0 : inexact-ok
+= exp upward dbl-64 0x4p-1024 : 0x1.0000000000001p+0 : inexact-ok
+= exp downward ldbl-96-intel 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-intel 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-intel 0x4p-1024L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-96-m68k 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-m68k 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-m68k 0x4p-1024L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-128 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-128 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp upward ldbl-128 0x4p-1024L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp downward ldbl-128ibm 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-128ibm 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128ibm 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp upward ldbl-128ibm 0x4p-1024L : 0x1.000000000000000000000000008p+0L : inexact-ok
+= exp downward ldbl-96-intel 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-intel 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-intel 0x4p-16384L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-96-m68k 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-m68k 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-m68k 0x4p-16384L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-128 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-128 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp upward ldbl-128 0x4p-16384L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp downward ldbl-96-intel 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-intel 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-intel 0x2p-16384L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-96-m68k 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-m68k 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-m68k 0x2p-16384L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-128 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-128 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp upward ldbl-128 0x2p-16384L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp downward dbl-64 0x8p-972 : 0x1p+0 : inexact-ok
+= exp tonearest dbl-64 0x8p-972 : 0x1p+0 : inexact-ok
+= exp towardzero dbl-64 0x8p-972 : 0x1p+0 : inexact-ok
+= exp upward dbl-64 0x8p-972 : 0x1.0000000000001p+0 : inexact-ok
+= exp downward ldbl-96-intel 0x8p-972L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-intel 0x8p-972L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel 0x8p-972L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-intel 0x8p-972L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-96-m68k 0x8p-972L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-m68k 0x8p-972L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k 0x8p-972L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-m68k 0x8p-972L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-128 0x8p-972L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-128 0x8p-972L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 0x8p-972L : 0x1p+0L : inexact-ok
+= exp upward ldbl-128 0x8p-972L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp downward ldbl-128ibm 0x8p-972L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-128ibm 0x8p-972L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128ibm 0x8p-972L : 0x1p+0L : inexact-ok
+= exp upward ldbl-128ibm 0x8p-972L : 0x1.000000000000000000000000008p+0L : inexact-ok
+exp -min
+= exp downward flt-32 -0x4p-128f : 0xf.fffffp-4f : inexact-ok
+= exp tonearest flt-32 -0x4p-128f : 0x1p+0f : inexact-ok
+= exp towardzero flt-32 -0x4p-128f : 0xf.fffffp-4f : inexact-ok
+= exp upward flt-32 -0x4p-128f : 0x1p+0f : inexact-ok
+= exp downward dbl-64 -0x4p-128 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp tonearest dbl-64 -0x4p-128 : 0x1p+0 : inexact-ok
+= exp towardzero dbl-64 -0x4p-128 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp upward dbl-64 -0x4p-128 : 0x1p+0 : inexact-ok
+= exp downward ldbl-96-intel -0x4p-128L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-intel -0x4p-128L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel -0x4p-128L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-intel -0x4p-128L : 0x1p+0L : inexact-ok
+= exp downward ldbl-96-m68k -0x4p-128L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x4p-128L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x4p-128L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-m68k -0x4p-128L : 0x1p+0L : inexact-ok
+= exp downward ldbl-128 -0x4p-128L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp tonearest ldbl-128 -0x4p-128L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 -0x4p-128L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp upward ldbl-128 -0x4p-128L : 0x1p+0L : inexact-ok
+= exp downward ldbl-128ibm -0x4p-128L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp tonearest ldbl-128ibm -0x4p-128L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128ibm -0x4p-128L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp upward ldbl-128ibm -0x4p-128L : 0x1p+0L : inexact-ok
+= exp downward dbl-64 -0x4p-1024 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp tonearest dbl-64 -0x4p-1024 : 0x1p+0 : inexact-ok
+= exp towardzero dbl-64 -0x4p-1024 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp upward dbl-64 -0x4p-1024 : 0x1p+0 : inexact-ok
+= exp downward ldbl-96-intel -0x4p-1024L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-intel -0x4p-1024L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel -0x4p-1024L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-intel -0x4p-1024L : 0x1p+0L : inexact-ok
+= exp downward ldbl-96-m68k -0x4p-1024L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x4p-1024L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x4p-1024L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-m68k -0x4p-1024L : 0x1p+0L : inexact-ok
+= exp downward ldbl-128 -0x4p-1024L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp tonearest ldbl-128 -0x4p-1024L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 -0x4p-1024L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp upward ldbl-128 -0x4p-1024L : 0x1p+0L : inexact-ok
+= exp downward ldbl-128ibm -0x4p-1024L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp tonearest ldbl-128ibm -0x4p-1024L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128ibm -0x4p-1024L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp upward ldbl-128ibm -0x4p-1024L : 0x1p+0L : inexact-ok
+= exp downward ldbl-96-intel -0x4p-16384L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-intel -0x4p-16384L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel -0x4p-16384L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-intel -0x4p-16384L : 0x1p+0L : inexact-ok
+= exp downward ldbl-96-m68k -0x4p-16384L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x4p-16384L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x4p-16384L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-m68k -0x4p-16384L : 0x1p+0L : inexact-ok
+= exp downward ldbl-128 -0x4p-16384L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp tonearest ldbl-128 -0x4p-16384L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 -0x4p-16384L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp upward ldbl-128 -0x4p-16384L : 0x1p+0L : inexact-ok
+= exp downward ldbl-96-intel -0x2p-16384L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2p-16384L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2p-16384L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-intel -0x2p-16384L : 0x1p+0L : inexact-ok
+= exp downward ldbl-96-m68k -0x2p-16384L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2p-16384L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2p-16384L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-m68k -0x2p-16384L : 0x1p+0L : inexact-ok
+= exp downward ldbl-128 -0x2p-16384L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp tonearest ldbl-128 -0x2p-16384L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 -0x2p-16384L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp upward ldbl-128 -0x2p-16384L : 0x1p+0L : inexact-ok
+= exp downward dbl-64 -0x8p-972 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp tonearest dbl-64 -0x8p-972 : 0x1p+0 : inexact-ok
+= exp towardzero dbl-64 -0x8p-972 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp upward dbl-64 -0x8p-972 : 0x1p+0 : inexact-ok
+= exp downward ldbl-96-intel -0x8p-972L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-intel -0x8p-972L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel -0x8p-972L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-intel -0x8p-972L : 0x1p+0L : inexact-ok
+= exp downward ldbl-96-m68k -0x8p-972L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x8p-972L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x8p-972L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-m68k -0x8p-972L : 0x1p+0L : inexact-ok
+= exp downward ldbl-128 -0x8p-972L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp tonearest ldbl-128 -0x8p-972L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 -0x8p-972L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp upward ldbl-128 -0x8p-972L : 0x1p+0L : inexact-ok
+= exp downward ldbl-128ibm -0x8p-972L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp tonearest ldbl-128ibm -0x8p-972L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128ibm -0x8p-972L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp upward ldbl-128ibm -0x8p-972L : 0x1p+0L : inexact-ok
+exp min_subnorm
+= exp downward flt-32 0x8p-152f : 0x1p+0f : inexact-ok
+= exp tonearest flt-32 0x8p-152f : 0x1p+0f : inexact-ok
+= exp towardzero flt-32 0x8p-152f : 0x1p+0f : inexact-ok
+= exp upward flt-32 0x8p-152f : 0x1.000002p+0f : inexact-ok
+= exp downward dbl-64 0x8p-152 : 0x1p+0 : inexact-ok
+= exp tonearest dbl-64 0x8p-152 : 0x1p+0 : inexact-ok
+= exp towardzero dbl-64 0x8p-152 : 0x1p+0 : inexact-ok
+= exp upward dbl-64 0x8p-152 : 0x1.0000000000001p+0 : inexact-ok
+= exp downward ldbl-96-intel 0x8p-152L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-intel 0x8p-152L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel 0x8p-152L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-intel 0x8p-152L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-96-m68k 0x8p-152L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-m68k 0x8p-152L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k 0x8p-152L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-m68k 0x8p-152L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-128 0x8p-152L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-128 0x8p-152L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 0x8p-152L : 0x1p+0L : inexact-ok
+= exp upward ldbl-128 0x8p-152L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp downward ldbl-128ibm 0x8p-152L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-128ibm 0x8p-152L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128ibm 0x8p-152L : 0x1p+0L : inexact-ok
+= exp upward ldbl-128ibm 0x8p-152L : 0x1.000000000000000000000000008p+0L : inexact-ok
+= exp downward dbl-64 0x4p-1076 : 0x1p+0 : inexact-ok
+= exp tonearest dbl-64 0x4p-1076 : 0x1p+0 : inexact-ok
+= exp towardzero dbl-64 0x4p-1076 : 0x1p+0 : inexact-ok
+= exp upward dbl-64 0x4p-1076 : 0x1.0000000000001p+0 : inexact-ok
+= exp downward ldbl-96-intel 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-intel 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-intel 0x4p-1076L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-96-m68k 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-m68k 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-m68k 0x4p-1076L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-128 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-128 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp upward ldbl-128 0x4p-1076L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp downward ldbl-128ibm 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-128ibm 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128ibm 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp upward ldbl-128ibm 0x4p-1076L : 0x1.000000000000000000000000008p+0L : inexact-ok
+= exp downward ldbl-96-intel 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-intel 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-intel 0x8p-16448L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-96-m68k 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-m68k 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-m68k 0x8p-16448L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-128 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-128 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp upward ldbl-128 0x8p-16448L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp downward ldbl-96-m68k 0x4p-16448L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-96-m68k 0x4p-16448L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k 0x4p-16448L : 0x1p+0L : inexact-ok
+= exp upward ldbl-96-m68k 0x4p-16448L : 0x1.0000000000000002p+0L : inexact-ok
+= exp downward ldbl-128 0x4p-16448L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-128 0x4p-16448L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 0x4p-16448L : 0x1p+0L : inexact-ok
+= exp upward ldbl-128 0x4p-16448L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp downward ldbl-128 0x4p-16496L : 0x1p+0L : inexact-ok
+= exp tonearest ldbl-128 0x4p-16496L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 0x4p-16496L : 0x1p+0L : inexact-ok
+= exp upward ldbl-128 0x4p-16496L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+exp -min_subnorm
+= exp downward flt-32 -0x8p-152f : 0xf.fffffp-4f : inexact-ok
+= exp tonearest flt-32 -0x8p-152f : 0x1p+0f : inexact-ok
+= exp towardzero flt-32 -0x8p-152f : 0xf.fffffp-4f : inexact-ok
+= exp upward flt-32 -0x8p-152f : 0x1p+0f : inexact-ok
+= exp downward dbl-64 -0x8p-152 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp tonearest dbl-64 -0x8p-152 : 0x1p+0 : inexact-ok
+= exp towardzero dbl-64 -0x8p-152 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp upward dbl-64 -0x8p-152 : 0x1p+0 : inexact-ok
+= exp downward ldbl-96-intel -0x8p-152L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-intel -0x8p-152L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel -0x8p-152L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-intel -0x8p-152L : 0x1p+0L : inexact-ok
+= exp downward ldbl-96-m68k -0x8p-152L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x8p-152L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x8p-152L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-m68k -0x8p-152L : 0x1p+0L : inexact-ok
+= exp downward ldbl-128 -0x8p-152L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp tonearest ldbl-128 -0x8p-152L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 -0x8p-152L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp upward ldbl-128 -0x8p-152L : 0x1p+0L : inexact-ok
+= exp downward ldbl-128ibm -0x8p-152L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp tonearest ldbl-128ibm -0x8p-152L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128ibm -0x8p-152L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp upward ldbl-128ibm -0x8p-152L : 0x1p+0L : inexact-ok
+= exp downward dbl-64 -0x4p-1076 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp tonearest dbl-64 -0x4p-1076 : 0x1p+0 : inexact-ok
+= exp towardzero dbl-64 -0x4p-1076 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp upward dbl-64 -0x4p-1076 : 0x1p+0 : inexact-ok
+= exp downward ldbl-96-intel -0x4p-1076L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-intel -0x4p-1076L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel -0x4p-1076L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-intel -0x4p-1076L : 0x1p+0L : inexact-ok
+= exp downward ldbl-96-m68k -0x4p-1076L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x4p-1076L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x4p-1076L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-m68k -0x4p-1076L : 0x1p+0L : inexact-ok
+= exp downward ldbl-128 -0x4p-1076L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp tonearest ldbl-128 -0x4p-1076L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 -0x4p-1076L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp upward ldbl-128 -0x4p-1076L : 0x1p+0L : inexact-ok
+= exp downward ldbl-128ibm -0x4p-1076L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp tonearest ldbl-128ibm -0x4p-1076L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128ibm -0x4p-1076L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp upward ldbl-128ibm -0x4p-1076L : 0x1p+0L : inexact-ok
+= exp downward ldbl-96-intel -0x8p-16448L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-intel -0x8p-16448L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-intel -0x8p-16448L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-intel -0x8p-16448L : 0x1p+0L : inexact-ok
+= exp downward ldbl-96-m68k -0x8p-16448L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x8p-16448L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x8p-16448L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-m68k -0x8p-16448L : 0x1p+0L : inexact-ok
+= exp downward ldbl-128 -0x8p-16448L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp tonearest ldbl-128 -0x8p-16448L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 -0x8p-16448L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp upward ldbl-128 -0x8p-16448L : 0x1p+0L : inexact-ok
+= exp downward ldbl-96-m68k -0x4p-16448L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x4p-16448L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x4p-16448L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp upward ldbl-96-m68k -0x4p-16448L : 0x1p+0L : inexact-ok
+= exp downward ldbl-128 -0x4p-16448L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp tonearest ldbl-128 -0x4p-16448L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 -0x4p-16448L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp upward ldbl-128 -0x4p-16448L : 0x1p+0L : inexact-ok
+= exp downward ldbl-128 -0x4p-16496L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp tonearest ldbl-128 -0x4p-16496L : 0x1p+0L : inexact-ok
+= exp towardzero ldbl-128 -0x4p-16496L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp upward ldbl-128 -0x4p-16496L : 0x1p+0L : inexact-ok
 exp10 0
 = exp10 downward flt-32 0x0p+0f : 0x1p+0f : inexact-ok
 = exp10 tonearest flt-32 0x0p+0f : 0x1p+0f : inexact-ok
index 5917f574b12cf100adb3c78eb98c1c9940db3159..eb4086b3f5e4efdcc0ba5c462789f518d11309e6 100644 (file)
@@ -112,8 +112,14 @@ ENTRY(IEEE754_EXPL)
        movzwl  4+8(%esp), %eax
        andl    $0x7fff, %eax
        cmpl    $0x400d, %eax
-       jle     3f
-       /* Overflow, underflow or infinity or NaN as argument.  */
+       jg      5f
+       cmpl    $0x3fbc, %eax
+       jge     3f
+       /* Argument's exponent below -67, result rounds to 1.  */
+       fld1
+       faddp
+       jmp     2f
+5:     /* Overflow, underflow or infinity or NaN as argument.  */
        fstsw   %ax
        movb    $0x45, %dh
        andb    %ah, %dh
index 36d30c26d3836edc25806afe67227aa6e9d1b9c8..338527b3de26cf7cdb4378f320954045c440a102 100644 (file)
@@ -109,8 +109,14 @@ ENTRY(IEEE754_EXPL)
        movzwl  8+8(%rsp), %eax
        andl    $0x7fff, %eax
        cmpl    $0x400d, %eax
-       jle     3f
-       /* Overflow, underflow or infinity or NaN as argument.  */
+       jg      5f
+       cmpl    $0x3fbc, %eax
+       jge     3f
+       /* Argument's exponent below -67, result rounds to 1.  */
+       fld1
+       faddp
+       jmp     2f
+5:     /* Overflow, underflow or infinity or NaN as argument.  */
        fstsw   %ax
        movb    $0x45, %dh
        andb    %ah, %dh