]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix i386 exp missing underflows (bug 18961).
authorJoseph Myers <joseph@codesourcery.com>
Mon, 14 Sep 2015 22:40:05 +0000 (22:40 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Mon, 14 Sep 2015 22:40:05 +0000 (22:40 +0000)
On i386, the double version of exp can miss underflow exceptions if
the result is in the subnormal range for double but the last 11 bits
of the 64-bit extended-precision mantissa happen to be zero.  This
patch forces the exception in a similar way to previous fixes.

As with the exp2 fixes, the expf changes may in fact not be needed to
ensure underflow exceptions, but are included for consistency and to
fix the exp part of bug 18875 by ensuring that excess range and
precision is removed from underflowing return values.

Tested for x86_64 and x86.

[BZ #18875]
[BZ #18961]
* sysdeps/i386/fpu/e_exp.S (dbl_min): New object.
(MO): New macro.
(__ieee754_exp): For small results, force underflow exception and
remove excess range and precision from return value.
(__exp_finite): Likewise.
* sysdeps/i386/fpu/e_expf.S (flt_min): New object.
(MO): New macro.
(__ieee754_expf): For small results, force underflow exception and
remove excess range and precision from return value.
(__expf_finite): 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_exp.S
sysdeps/i386/fpu/e_expf.S

index 3b372ccd5372a5f7eae7b1b332b424e20df6faa0..0db4f569e57340489285e571ac25bb9207b50362 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,20 @@
 2015-09-14  Joseph Myers  <joseph@codesourcery.com>
 
+       [BZ #18875]
+       [BZ #18961]
+       * sysdeps/i386/fpu/e_exp.S (dbl_min): New object.
+       (MO): New macro.
+       (__ieee754_exp): For small results, force underflow exception and
+       remove excess range and precision from return value.
+       (__exp_finite): Likewise.
+       * sysdeps/i386/fpu/e_expf.S (flt_min): New object.
+       (MO): New macro.
+       (__ieee754_expf): For small results, force underflow exception and
+       remove excess range and precision from return value.
+       (__expf_finite): Likewise.
+       * math/auto-libm-test-in: Add more tests of exp.
+       * math/auto-libm-test-out: Regenerated.
+
        [BZ #16521]
        [BZ #18875]
        * math/e_exp2l.c (__ieee754_exp2l): Force underflow exception for
diff --git a/NEWS b/NEWS
index 0a37eddac78597b3fcaf6b4fdda7a8e184915da5..4ad8ab734e5c8487aba985670911443d7adda710 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -13,7 +13,7 @@ Version 2.23
   16521, 16734, 16973, 16985, 17787, 17905, 18084, 18086, 18240, 18265,
   18370, 18421, 18480, 18525, 18610, 18618, 18647, 18661, 18674, 18675,
   18681, 18757, 18778, 18781, 18787, 18789, 18790, 18795, 18796, 18820,
-  18823, 18824, 18863, 18870, 18873, 18887, 18921, 18952.
+  18823, 18824, 18863, 18870, 18873, 18887, 18921, 18952, 18961.
 
 * The obsolete header <regexp.h> has been removed.  Programs that require
   this header must be updated to use <regex.h> instead.
index 15c91461e803bf107ea768c75db4a487eb9ed10f..9da01fb1faf7be2abb58200f75c155c49d3db8df 100644 (file)
@@ -1396,6 +1396,17 @@ exp -0x1.75f113c30b1c8p+9
 exp -max
 exp -11342.8125
 exp -0x2.c5b2319c4843acc0p12
+exp -0x2.c469d9p+8
+exp -0x2.c46d96p+8
+exp -0x2.c46727p+8
+exp -0x2.c469dep+8
+exp -0x2.c46c04p+8
+exp -0x2.c46adep+8
+exp -0x2.c471b3p+8
+exp -0x2.c46993p+8
+exp -0x2.c49fap+8
+exp -0x2.c4ac1p+8
+exp -0x2.c4d89p+8
 exp 0x1p-10
 exp -0x1p-10
 exp 0x1p-20
index c007f2424757fd3750489d3338757f52a5ee6ba5..c539498295cd2610d105473021b7b4d4c91393c9 100644 (file)
@@ -114691,6 +114691,589 @@ exp -0x2.c5b2319c4843acc0p12
 = exp tonearest ldbl-128ibm -0x2.c5b2319c4843accp+12L : 0x0p+0L : inexact-ok underflow errno-erange
 = exp towardzero ldbl-128ibm -0x2.c5b2319c4843accp+12L : 0x0p+0L : inexact-ok underflow errno-erange
 = exp upward ldbl-128ibm -0x2.c5b2319c4843accp+12L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
+exp -0x2.c469d9p+8
+= exp downward flt-32 -0x2.c469d8p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c469d8p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c469d8p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c469d8p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c469d8p+8 : 0x3.eeb48df211bep-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c469d8p+8 : 0x3.eeb48df211be4p-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c469d8p+8 : 0x3.eeb48df211bep-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c469d8p+8 : 0x3.eeb48df211be4p-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c469d8p+8L : 0x3.eeb48df211be369p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c469d8p+8L : 0x3.eeb48df211be3694p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c469d8p+8L : 0x3.eeb48df211be369p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c469d8p+8L : 0x3.eeb48df211be3694p-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c469d8p+8L : 0x3.eeb48df211be369p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c469d8p+8L : 0x3.eeb48df211be3694p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c469d8p+8L : 0x3.eeb48df211be369p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c469d8p+8L : 0x3.eeb48df211be3694p-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c469d8p+8L : 0x3.eeb48df211be3692ba54c47bcc8p-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c469d8p+8L : 0x3.eeb48df211be3692ba54c47bcc8p-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c469d8p+8L : 0x3.eeb48df211be3692ba54c47bcc8p-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c469d8p+8L : 0x3.eeb48df211be3692ba54c47bcc82p-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c469d8p+8L : 0x3.eeb48df211bep-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c469d8p+8L : 0x3.eeb48df211be4p-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c469d8p+8L : 0x3.eeb48df211bep-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c469d8p+8L : 0x3.eeb48df211be4p-1024L : inexact-ok underflow errno-erange-ok
+= exp downward flt-32 -0x2.c469dcp+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c469dcp+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c469dcp+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c469dcp+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c469dcp+8 : 0x3.eea4d33f4f704p-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c469dcp+8 : 0x3.eea4d33f4f708p-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c469dcp+8 : 0x3.eea4d33f4f704p-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c469dcp+8 : 0x3.eea4d33f4f708p-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c469dcp+8L : 0x3.eea4d33f4f706d2p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c469dcp+8L : 0x3.eea4d33f4f706d24p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c469dcp+8L : 0x3.eea4d33f4f706d2p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c469dcp+8L : 0x3.eea4d33f4f706d24p-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c469dcp+8L : 0x3.eea4d33f4f706d2p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c469dcp+8L : 0x3.eea4d33f4f706d24p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c469dcp+8L : 0x3.eea4d33f4f706d2p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c469dcp+8L : 0x3.eea4d33f4f706d24p-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c469dcp+8L : 0x3.eea4d33f4f706d23cb49d8c61f8ap-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c469dcp+8L : 0x3.eea4d33f4f706d23cb49d8c61f8cp-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c469dcp+8L : 0x3.eea4d33f4f706d23cb49d8c61f8ap-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c469dcp+8L : 0x3.eea4d33f4f706d23cb49d8c61f8cp-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c469dcp+8L : 0x3.eea4d33f4f704p-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c469dcp+8L : 0x3.eea4d33f4f708p-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c469dcp+8L : 0x3.eea4d33f4f704p-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c469dcp+8L : 0x3.eea4d33f4f708p-1024L : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c469d9p+8 : 0x3.eeb09f3f7b25cp-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c469d9p+8 : 0x3.eeb09f3f7b25cp-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c469d9p+8 : 0x3.eeb09f3f7b25cp-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c469d9p+8 : 0x3.eeb09f3f7b26p-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c469d9p+8L : 0x3.eeb09f3f7b25c404p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c469d9p+8L : 0x3.eeb09f3f7b25c404p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c469d9p+8L : 0x3.eeb09f3f7b25c404p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c469d9p+8L : 0x3.eeb09f3f7b25c408p-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c469d9p+8L : 0x3.eeb09f3f7b25c404p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c469d9p+8L : 0x3.eeb09f3f7b25c404p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c469d9p+8L : 0x3.eeb09f3f7b25c404p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c469d9p+8L : 0x3.eeb09f3f7b25c408p-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c469d9p+8L : 0x3.eeb09f3f7b25c404f4404aac7ae8p-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c469d9p+8L : 0x3.eeb09f3f7b25c404f4404aac7ae8p-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c469d9p+8L : 0x3.eeb09f3f7b25c404f4404aac7ae8p-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c469d9p+8L : 0x3.eeb09f3f7b25c404f4404aac7aeap-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c469d9p+8L : 0x3.eeb09f3f7b25cp-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c469d9p+8L : 0x3.eeb09f3f7b25cp-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c469d9p+8L : 0x3.eeb09f3f7b25cp-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c469d9p+8L : 0x3.eeb09f3f7b26p-1024L : inexact-ok underflow errno-erange-ok
+exp -0x2.c46d96p+8
+= exp downward flt-32 -0x2.c46d94p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c46d94p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c46d94p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c46d94p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c46d94p+8 : 0x3.e0206d364fe2p-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c46d94p+8 : 0x3.e0206d364fe24p-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c46d94p+8 : 0x3.e0206d364fe2p-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c46d94p+8 : 0x3.e0206d364fe24p-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c46d94p+8L : 0x3.e0206d364fe236d8p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c46d94p+8L : 0x3.e0206d364fe236d8p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c46d94p+8L : 0x3.e0206d364fe236d8p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c46d94p+8L : 0x3.e0206d364fe236dcp-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c46d94p+8L : 0x3.e0206d364fe236d8p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c46d94p+8L : 0x3.e0206d364fe236d8p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c46d94p+8L : 0x3.e0206d364fe236d8p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c46d94p+8L : 0x3.e0206d364fe236dcp-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c46d94p+8L : 0x3.e0206d364fe236d9c5d77c55c0cep-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c46d94p+8L : 0x3.e0206d364fe236d9c5d77c55c0cep-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c46d94p+8L : 0x3.e0206d364fe236d9c5d77c55c0cep-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c46d94p+8L : 0x3.e0206d364fe236d9c5d77c55c0dp-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c46d94p+8L : 0x3.e0206d364fe2p-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c46d94p+8L : 0x3.e0206d364fe24p-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c46d94p+8L : 0x3.e0206d364fe2p-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c46d94p+8L : 0x3.e0206d364fe24p-1024L : inexact-ok underflow errno-erange-ok
+= exp downward flt-32 -0x2.c46d98p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c46d98p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c46d98p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c46d98p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c46d98p+8 : 0x3.e010ecd39be3p-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c46d98p+8 : 0x3.e010ecd39be3p-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c46d98p+8 : 0x3.e010ecd39be3p-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c46d98p+8 : 0x3.e010ecd39be34p-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c46d98p+8L : 0x3.e010ecd39be30a7cp-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c46d98p+8L : 0x3.e010ecd39be30a7cp-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c46d98p+8L : 0x3.e010ecd39be30a7cp-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c46d98p+8L : 0x3.e010ecd39be30a8p-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c46d98p+8L : 0x3.e010ecd39be30a7cp-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c46d98p+8L : 0x3.e010ecd39be30a7cp-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c46d98p+8L : 0x3.e010ecd39be30a7cp-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c46d98p+8L : 0x3.e010ecd39be30a8p-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c46d98p+8L : 0x3.e010ecd39be30a7d887797e1f9dap-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c46d98p+8L : 0x3.e010ecd39be30a7d887797e1f9dcp-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c46d98p+8L : 0x3.e010ecd39be30a7d887797e1f9dap-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c46d98p+8L : 0x3.e010ecd39be30a7d887797e1f9dcp-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c46d98p+8L : 0x3.e010ecd39be3p-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c46d98p+8L : 0x3.e010ecd39be3p-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c46d98p+8L : 0x3.e010ecd39be3p-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c46d98p+8L : 0x3.e010ecd39be34p-1024L : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c46d96p+8 : 0x3.e018acfd35b14p-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c46d96p+8 : 0x3.e018acfd35b14p-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c46d96p+8 : 0x3.e018acfd35b14p-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c46d96p+8 : 0x3.e018acfd35b18p-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c46d96p+8L : 0x3.e018acfd35b146acp-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c46d96p+8L : 0x3.e018acfd35b146bp-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c46d96p+8L : 0x3.e018acfd35b146acp-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c46d96p+8L : 0x3.e018acfd35b146bp-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c46d96p+8L : 0x3.e018acfd35b146acp-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c46d96p+8L : 0x3.e018acfd35b146bp-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c46d96p+8L : 0x3.e018acfd35b146acp-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c46d96p+8L : 0x3.e018acfd35b146bp-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c46d96p+8L : 0x3.e018acfd35b146aea65f341569fp-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c46d96p+8L : 0x3.e018acfd35b146aea65f341569fp-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c46d96p+8L : 0x3.e018acfd35b146aea65f341569fp-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c46d96p+8L : 0x3.e018acfd35b146aea65f341569f2p-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c46d96p+8L : 0x3.e018acfd35b14p-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c46d96p+8L : 0x3.e018acfd35b14p-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c46d96p+8L : 0x3.e018acfd35b14p-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c46d96p+8L : 0x3.e018acfd35b18p-1024L : inexact-ok underflow errno-erange-ok
+exp -0x2.c46727p+8
+= exp downward flt-32 -0x2.c46724p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c46724p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c46724p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c46724p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c46724p+8 : 0x3.f96438ed17abcp-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c46724p+8 : 0x3.f96438ed17acp-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c46724p+8 : 0x3.f96438ed17abcp-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c46724p+8 : 0x3.f96438ed17acp-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c46724p+8L : 0x3.f96438ed17abe5p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c46724p+8L : 0x3.f96438ed17abe504p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c46724p+8L : 0x3.f96438ed17abe5p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c46724p+8L : 0x3.f96438ed17abe504p-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c46724p+8L : 0x3.f96438ed17abe5p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c46724p+8L : 0x3.f96438ed17abe504p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c46724p+8L : 0x3.f96438ed17abe5p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c46724p+8L : 0x3.f96438ed17abe504p-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c46724p+8L : 0x3.f96438ed17abe50216a8a6561002p-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c46724p+8L : 0x3.f96438ed17abe50216a8a6561002p-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c46724p+8L : 0x3.f96438ed17abe50216a8a6561002p-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c46724p+8L : 0x3.f96438ed17abe50216a8a6561004p-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c46724p+8L : 0x3.f96438ed17abcp-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c46724p+8L : 0x3.f96438ed17acp-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c46724p+8L : 0x3.f96438ed17abcp-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c46724p+8L : 0x3.f96438ed17acp-1024L : inexact-ok underflow errno-erange-ok
+= exp downward flt-32 -0x2.c46728p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c46728p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c46728p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c46728p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c46728p+8 : 0x3.f954537bfeeecp-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c46728p+8 : 0x3.f954537bfeefp-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c46728p+8 : 0x3.f954537bfeeecp-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c46728p+8 : 0x3.f954537bfeefp-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c46728p+8L : 0x3.f954537bfeeee9b8p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c46728p+8L : 0x3.f954537bfeeee9b8p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c46728p+8L : 0x3.f954537bfeeee9b8p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c46728p+8L : 0x3.f954537bfeeee9bcp-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c46728p+8L : 0x3.f954537bfeeee9b8p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c46728p+8L : 0x3.f954537bfeeee9b8p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c46728p+8L : 0x3.f954537bfeeee9b8p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c46728p+8L : 0x3.f954537bfeeee9bcp-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c46728p+8L : 0x3.f954537bfeeee9b89a29977f429ep-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c46728p+8L : 0x3.f954537bfeeee9b89a29977f429ep-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c46728p+8L : 0x3.f954537bfeeee9b89a29977f429ep-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c46728p+8L : 0x3.f954537bfeeee9b89a29977f42ap-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c46728p+8L : 0x3.f954537bfeeecp-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c46728p+8L : 0x3.f954537bfeefp-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c46728p+8L : 0x3.f954537bfeeecp-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c46728p+8L : 0x3.f954537bfeefp-1024L : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c46727p+8 : 0x3.f9584cd24f158p-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c46727p+8 : 0x3.f9584cd24f15cp-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c46727p+8 : 0x3.f9584cd24f158p-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c46727p+8 : 0x3.f9584cd24f15cp-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c46727p+8L : 0x3.f9584cd24f15bbfp-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c46727p+8L : 0x3.f9584cd24f15bbf4p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c46727p+8L : 0x3.f9584cd24f15bbfp-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c46727p+8L : 0x3.f9584cd24f15bbf4p-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c46727p+8L : 0x3.f9584cd24f15bbfp-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c46727p+8L : 0x3.f9584cd24f15bbf4p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c46727p+8L : 0x3.f9584cd24f15bbfp-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c46727p+8L : 0x3.f9584cd24f15bbf4p-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c46727p+8L : 0x3.f9584cd24f15bbf3bba7324c7258p-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c46727p+8L : 0x3.f9584cd24f15bbf3bba7324c725ap-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c46727p+8L : 0x3.f9584cd24f15bbf3bba7324c7258p-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c46727p+8L : 0x3.f9584cd24f15bbf3bba7324c725ap-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c46727p+8L : 0x3.f9584cd24f158p-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c46727p+8L : 0x3.f9584cd24f15cp-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c46727p+8L : 0x3.f9584cd24f158p-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c46727p+8L : 0x3.f9584cd24f15cp-1024L : inexact-ok underflow errno-erange-ok
+exp -0x2.c469dep+8
+= exp downward flt-32 -0x2.c469dcp+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c469dcp+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c469dcp+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c469dcp+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c469dcp+8 : 0x3.eea4d33f4f704p-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c469dcp+8 : 0x3.eea4d33f4f708p-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c469dcp+8 : 0x3.eea4d33f4f704p-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c469dcp+8 : 0x3.eea4d33f4f708p-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c469dcp+8L : 0x3.eea4d33f4f706d2p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c469dcp+8L : 0x3.eea4d33f4f706d24p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c469dcp+8L : 0x3.eea4d33f4f706d2p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c469dcp+8L : 0x3.eea4d33f4f706d24p-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c469dcp+8L : 0x3.eea4d33f4f706d2p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c469dcp+8L : 0x3.eea4d33f4f706d24p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c469dcp+8L : 0x3.eea4d33f4f706d2p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c469dcp+8L : 0x3.eea4d33f4f706d24p-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c469dcp+8L : 0x3.eea4d33f4f706d23cb49d8c61f8ap-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c469dcp+8L : 0x3.eea4d33f4f706d23cb49d8c61f8cp-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c469dcp+8L : 0x3.eea4d33f4f706d23cb49d8c61f8ap-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c469dcp+8L : 0x3.eea4d33f4f706d23cb49d8c61f8cp-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c469dcp+8L : 0x3.eea4d33f4f704p-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c469dcp+8L : 0x3.eea4d33f4f708p-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c469dcp+8L : 0x3.eea4d33f4f704p-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c469dcp+8L : 0x3.eea4d33f4f708p-1024L : inexact-ok underflow errno-erange-ok
+= exp downward flt-32 -0x2.c469ep+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c469ep+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c469ep+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c469ep+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c469ep+8 : 0x3.ee9518cb776fcp-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c469ep+8 : 0x3.ee9518cb776fcp-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c469ep+8 : 0x3.ee9518cb776fcp-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c469ep+8 : 0x3.ee9518cb777p-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c469ep+8L : 0x3.ee9518cb776fd7fcp-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c469ep+8L : 0x3.ee9518cb776fd7fcp-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c469ep+8L : 0x3.ee9518cb776fd7fcp-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c469ep+8L : 0x3.ee9518cb776fd8p-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c469ep+8L : 0x3.ee9518cb776fd7fcp-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c469ep+8L : 0x3.ee9518cb776fd7fcp-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c469ep+8L : 0x3.ee9518cb776fd7fcp-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c469ep+8L : 0x3.ee9518cb776fd8p-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c469ep+8L : 0x3.ee9518cb776fd7fdb6575a15d89ap-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c469ep+8L : 0x3.ee9518cb776fd7fdb6575a15d89cp-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c469ep+8L : 0x3.ee9518cb776fd7fdb6575a15d89ap-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c469ep+8L : 0x3.ee9518cb776fd7fdb6575a15d89cp-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c469ep+8L : 0x3.ee9518cb776fcp-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c469ep+8L : 0x3.ee9518cb776fcp-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c469ep+8L : 0x3.ee9518cb776fcp-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c469ep+8L : 0x3.ee9518cb777p-1024L : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c469dep+8 : 0x3.ee9cf5fd8636p-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c469dep+8 : 0x3.ee9cf5fd86364p-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c469dep+8 : 0x3.ee9cf5fd8636p-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c469dep+8 : 0x3.ee9cf5fd86364p-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c469dep+8L : 0x3.ee9cf5fd8636369p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c469dep+8L : 0x3.ee9cf5fd86363694p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c469dep+8L : 0x3.ee9cf5fd8636369p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c469dep+8L : 0x3.ee9cf5fd86363694p-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c469dep+8L : 0x3.ee9cf5fd8636369p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c469dep+8L : 0x3.ee9cf5fd86363694p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c469dep+8L : 0x3.ee9cf5fd8636369p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c469dep+8L : 0x3.ee9cf5fd86363694p-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c469dep+8L : 0x3.ee9cf5fd863636931550dd9e73d2p-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c469dep+8L : 0x3.ee9cf5fd863636931550dd9e73d4p-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c469dep+8L : 0x3.ee9cf5fd863636931550dd9e73d2p-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c469dep+8L : 0x3.ee9cf5fd863636931550dd9e73d4p-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c469dep+8L : 0x3.ee9cf5fd8636p-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c469dep+8L : 0x3.ee9cf5fd86364p-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c469dep+8L : 0x3.ee9cf5fd8636p-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c469dep+8L : 0x3.ee9cf5fd86364p-1024L : inexact-ok underflow errno-erange-ok
+exp -0x2.c46c04p+8
+= exp downward flt-32 -0x2.c46c04p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c46c04p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c46c04p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c46c04p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c46c04p+8 : 0x3.e6335d7047b58p-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c46c04p+8 : 0x3.e6335d7047b5cp-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c46c04p+8 : 0x3.e6335d7047b58p-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c46c04p+8 : 0x3.e6335d7047b5cp-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c46c04p+8L : 0x3.e6335d7047b5b9b8p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c46c04p+8L : 0x3.e6335d7047b5b9b8p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c46c04p+8L : 0x3.e6335d7047b5b9b8p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c46c04p+8L : 0x3.e6335d7047b5b9bcp-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c46c04p+8L : 0x3.e6335d7047b5b9b8p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c46c04p+8L : 0x3.e6335d7047b5b9b8p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c46c04p+8L : 0x3.e6335d7047b5b9b8p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c46c04p+8L : 0x3.e6335d7047b5b9bcp-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c46c04p+8L : 0x3.e6335d7047b5b9b96c422bdab03ap-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c46c04p+8L : 0x3.e6335d7047b5b9b96c422bdab03ap-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c46c04p+8L : 0x3.e6335d7047b5b9b96c422bdab03ap-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c46c04p+8L : 0x3.e6335d7047b5b9b96c422bdab03cp-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c46c04p+8L : 0x3.e6335d7047b58p-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c46c04p+8L : 0x3.e6335d7047b5cp-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c46c04p+8L : 0x3.e6335d7047b58p-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c46c04p+8L : 0x3.e6335d7047b5cp-1024L : inexact-ok underflow errno-erange-ok
+exp -0x2.c46adep+8
+= exp downward flt-32 -0x2.c46adcp+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c46adcp+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c46adcp+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c46adcp+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c46adcp+8 : 0x3.eab82516dd868p-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c46adcp+8 : 0x3.eab82516dd868p-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c46adcp+8 : 0x3.eab82516dd868p-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c46adcp+8 : 0x3.eab82516dd86cp-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c46adcp+8L : 0x3.eab82516dd8695e8p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c46adcp+8L : 0x3.eab82516dd8695e8p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c46adcp+8L : 0x3.eab82516dd8695e8p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c46adcp+8L : 0x3.eab82516dd8695ecp-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c46adcp+8L : 0x3.eab82516dd8695e8p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c46adcp+8L : 0x3.eab82516dd8695e8p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c46adcp+8L : 0x3.eab82516dd8695e8p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c46adcp+8L : 0x3.eab82516dd8695ecp-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c46adcp+8L : 0x3.eab82516dd8695e83929b0026a4ap-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c46adcp+8L : 0x3.eab82516dd8695e83929b0026a4ap-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c46adcp+8L : 0x3.eab82516dd8695e83929b0026a4ap-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c46adcp+8L : 0x3.eab82516dd8695e83929b0026a4cp-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c46adcp+8L : 0x3.eab82516dd868p-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c46adcp+8L : 0x3.eab82516dd868p-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c46adcp+8L : 0x3.eab82516dd868p-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c46adcp+8L : 0x3.eab82516dd86cp-1024L : inexact-ok underflow errno-erange-ok
+= exp downward flt-32 -0x2.c46aep+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c46aep+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c46aep+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c46aep+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c46aep+8 : 0x3.eaa87a559ec28p-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c46aep+8 : 0x3.eaa87a559ec28p-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c46aep+8 : 0x3.eaa87a559ec28p-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c46aep+8 : 0x3.eaa87a559ec2cp-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c46aep+8L : 0x3.eaa87a559ec281p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c46aep+8L : 0x3.eaa87a559ec28104p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c46aep+8L : 0x3.eaa87a559ec281p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c46aep+8L : 0x3.eaa87a559ec28104p-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c46aep+8L : 0x3.eaa87a559ec281p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c46aep+8L : 0x3.eaa87a559ec28104p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c46aep+8L : 0x3.eaa87a559ec281p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c46aep+8L : 0x3.eaa87a559ec28104p-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c46aep+8L : 0x3.eaa87a559ec281025eff09824818p-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c46aep+8L : 0x3.eaa87a559ec281025eff0982481ap-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c46aep+8L : 0x3.eaa87a559ec281025eff09824818p-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c46aep+8L : 0x3.eaa87a559ec281025eff0982481ap-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c46aep+8L : 0x3.eaa87a559ec28p-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c46aep+8L : 0x3.eaa87a559ec28p-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c46aep+8L : 0x3.eaa87a559ec28p-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c46aep+8L : 0x3.eaa87a559ec2cp-1024L : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c46adep+8 : 0x3.eab04fae68c3cp-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c46adep+8 : 0x3.eab04fae68c4p-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c46adep+8 : 0x3.eab04fae68c3cp-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c46adep+8 : 0x3.eab04fae68c4p-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c46adep+8L : 0x3.eab04fae68c3ec14p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c46adep+8L : 0x3.eab04fae68c3ec14p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c46adep+8L : 0x3.eab04fae68c3ec14p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c46adep+8L : 0x3.eab04fae68c3ec18p-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c46adep+8L : 0x3.eab04fae68c3ec14p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c46adep+8L : 0x3.eab04fae68c3ec14p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c46adep+8L : 0x3.eab04fae68c3ec14p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c46adep+8L : 0x3.eab04fae68c3ec18p-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c46adep+8L : 0x3.eab04fae68c3ec15de16fa21fe0ap-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c46adep+8L : 0x3.eab04fae68c3ec15de16fa21fe0cp-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c46adep+8L : 0x3.eab04fae68c3ec15de16fa21fe0ap-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c46adep+8L : 0x3.eab04fae68c3ec15de16fa21fe0cp-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c46adep+8L : 0x3.eab04fae68c3cp-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c46adep+8L : 0x3.eab04fae68c4p-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c46adep+8L : 0x3.eab04fae68c3cp-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c46adep+8L : 0x3.eab04fae68c4p-1024L : inexact-ok underflow errno-erange-ok
+exp -0x2.c471b3p+8
+= exp downward flt-32 -0x2.c471bp+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c471bp+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c471bp+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c471bp+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c471bp+8 : 0x3.d053f45176d68p-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c471bp+8 : 0x3.d053f45176d6cp-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c471bp+8 : 0x3.d053f45176d68p-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c471bp+8 : 0x3.d053f45176d6cp-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c471bp+8L : 0x3.d053f45176d6b17p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c471bp+8L : 0x3.d053f45176d6b17p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c471bp+8L : 0x3.d053f45176d6b17p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c471bp+8L : 0x3.d053f45176d6b174p-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c471bp+8L : 0x3.d053f45176d6b17p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c471bp+8L : 0x3.d053f45176d6b17p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c471bp+8L : 0x3.d053f45176d6b17p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c471bp+8L : 0x3.d053f45176d6b174p-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c471bp+8L : 0x3.d053f45176d6b170998260fa99e2p-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c471bp+8L : 0x3.d053f45176d6b170998260fa99e4p-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c471bp+8L : 0x3.d053f45176d6b170998260fa99e2p-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c471bp+8L : 0x3.d053f45176d6b170998260fa99e4p-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c471bp+8L : 0x3.d053f45176d68p-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c471bp+8L : 0x3.d053f45176d6cp-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c471bp+8L : 0x3.d053f45176d68p-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c471bp+8L : 0x3.d053f45176d6cp-1024L : inexact-ok underflow errno-erange-ok
+= exp downward flt-32 -0x2.c471b4p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c471b4p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c471b4p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c471b4p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c471b4p+8 : 0x3.d044b3202807cp-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c471b4p+8 : 0x3.d044b3202807cp-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c471b4p+8 : 0x3.d044b3202807cp-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c471b4p+8 : 0x3.d044b3202808p-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c471b4p+8L : 0x3.d044b3202807caap-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c471b4p+8L : 0x3.d044b3202807caap-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c471b4p+8L : 0x3.d044b3202807caap-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c471b4p+8L : 0x3.d044b3202807caa4p-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c471b4p+8L : 0x3.d044b3202807caap-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c471b4p+8L : 0x3.d044b3202807caap-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c471b4p+8L : 0x3.d044b3202807caap-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c471b4p+8L : 0x3.d044b3202807caa4p-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c471b4p+8L : 0x3.d044b3202807caa00a6f8afedc28p-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c471b4p+8L : 0x3.d044b3202807caa00a6f8afedc28p-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c471b4p+8L : 0x3.d044b3202807caa00a6f8afedc28p-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c471b4p+8L : 0x3.d044b3202807caa00a6f8afedc2ap-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c471b4p+8L : 0x3.d044b3202807cp-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c471b4p+8L : 0x3.d044b3202807cp-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c471b4p+8L : 0x3.d044b3202807cp-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c471b4p+8L : 0x3.d044b3202808p-1024L : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c471b3p+8 : 0x3.d0488366c34acp-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c471b3p+8 : 0x3.d0488366c34bp-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c471b3p+8 : 0x3.d0488366c34acp-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c471b3p+8 : 0x3.d0488366c34bp-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c471b3p+8L : 0x3.d0488366c34aeeecp-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c471b3p+8L : 0x3.d0488366c34aeefp-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c471b3p+8L : 0x3.d0488366c34aeeecp-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c471b3p+8L : 0x3.d0488366c34aeefp-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c471b3p+8L : 0x3.d0488366c34aeeecp-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c471b3p+8L : 0x3.d0488366c34aeefp-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c471b3p+8L : 0x3.d0488366c34aeeecp-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c471b3p+8L : 0x3.d0488366c34aeefp-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c471b3p+8L : 0x3.d0488366c34aeeee2f9bbbae7086p-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c471b3p+8L : 0x3.d0488366c34aeeee2f9bbbae7086p-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c471b3p+8L : 0x3.d0488366c34aeeee2f9bbbae7086p-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c471b3p+8L : 0x3.d0488366c34aeeee2f9bbbae7088p-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c471b3p+8L : 0x3.d0488366c34acp-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c471b3p+8L : 0x3.d0488366c34bp-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c471b3p+8L : 0x3.d0488366c34acp-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c471b3p+8L : 0x3.d0488366c34bp-1024L : inexact-ok underflow errno-erange-ok
+exp -0x2.c46993p+8
+= exp downward flt-32 -0x2.c4699p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c4699p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c4699p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c4699p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c4699p+8 : 0x3.efcfd88e9dc8cp-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c4699p+8 : 0x3.efcfd88e9dc9p-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c4699p+8 : 0x3.efcfd88e9dc8cp-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c4699p+8 : 0x3.efcfd88e9dc9p-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c4699p+8L : 0x3.efcfd88e9dc8fe08p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c4699p+8L : 0x3.efcfd88e9dc8fe0cp-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c4699p+8L : 0x3.efcfd88e9dc8fe08p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c4699p+8L : 0x3.efcfd88e9dc8fe0cp-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c4699p+8L : 0x3.efcfd88e9dc8fe08p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c4699p+8L : 0x3.efcfd88e9dc8fe0cp-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c4699p+8L : 0x3.efcfd88e9dc8fe08p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c4699p+8L : 0x3.efcfd88e9dc8fe0cp-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c4699p+8L : 0x3.efcfd88e9dc8fe0b263c320689dep-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c4699p+8L : 0x3.efcfd88e9dc8fe0b263c320689ep-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c4699p+8L : 0x3.efcfd88e9dc8fe0b263c320689dep-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c4699p+8L : 0x3.efcfd88e9dc8fe0b263c320689ep-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c4699p+8L : 0x3.efcfd88e9dc8cp-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c4699p+8L : 0x3.efcfd88e9dc9p-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c4699p+8L : 0x3.efcfd88e9dc8cp-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c4699p+8L : 0x3.efcfd88e9dc9p-1024L : inexact-ok underflow errno-erange-ok
+= exp downward flt-32 -0x2.c46994p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c46994p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c46994p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c46994p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c46994p+8 : 0x3.efc0196eb9e34p-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c46994p+8 : 0x3.efc0196eb9e34p-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c46994p+8 : 0x3.efc0196eb9e34p-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c46994p+8 : 0x3.efc0196eb9e38p-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c46994p+8L : 0x3.efc0196eb9e34d84p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c46994p+8L : 0x3.efc0196eb9e34d88p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c46994p+8L : 0x3.efc0196eb9e34d84p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c46994p+8L : 0x3.efc0196eb9e34d88p-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c46994p+8L : 0x3.efc0196eb9e34d84p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c46994p+8L : 0x3.efc0196eb9e34d88p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c46994p+8L : 0x3.efc0196eb9e34d84p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c46994p+8L : 0x3.efc0196eb9e34d88p-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c46994p+8L : 0x3.efc0196eb9e34d87beedb9c2a6cp-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c46994p+8L : 0x3.efc0196eb9e34d87beedb9c2a6c2p-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c46994p+8L : 0x3.efc0196eb9e34d87beedb9c2a6cp-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c46994p+8L : 0x3.efc0196eb9e34d87beedb9c2a6c2p-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c46994p+8L : 0x3.efc0196eb9e34p-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c46994p+8L : 0x3.efc0196eb9e34p-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c46994p+8L : 0x3.efc0196eb9e34p-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c46994p+8L : 0x3.efc0196eb9e38p-1024L : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c46993p+8 : 0x3.efc40930cb328p-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c46993p+8 : 0x3.efc40930cb32cp-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c46993p+8 : 0x3.efc40930cb328p-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c46993p+8 : 0x3.efc40930cb32cp-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c46993p+8L : 0x3.efc40930cb32bc14p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c46993p+8L : 0x3.efc40930cb32bc18p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c46993p+8L : 0x3.efc40930cb32bc14p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c46993p+8L : 0x3.efc40930cb32bc18p-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c46993p+8L : 0x3.efc40930cb32bc14p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c46993p+8L : 0x3.efc40930cb32bc18p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c46993p+8L : 0x3.efc40930cb32bc14p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c46993p+8L : 0x3.efc40930cb32bc18p-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c46993p+8L : 0x3.efc40930cb32bc17ecf6f28f4974p-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c46993p+8L : 0x3.efc40930cb32bc17ecf6f28f4976p-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c46993p+8L : 0x3.efc40930cb32bc17ecf6f28f4974p-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c46993p+8L : 0x3.efc40930cb32bc17ecf6f28f4976p-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c46993p+8L : 0x3.efc40930cb328p-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c46993p+8L : 0x3.efc40930cb32cp-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c46993p+8L : 0x3.efc40930cb328p-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c46993p+8L : 0x3.efc40930cb32cp-1024L : inexact-ok underflow errno-erange-ok
+exp -0x2.c49fap+8
+= exp downward flt-32 -0x2.c49fap+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c49fap+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c49fap+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c49fap+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c49fap+8 : 0x3.2ff3a3a879b0cp-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c49fap+8 : 0x3.2ff3a3a879b1p-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c49fap+8 : 0x3.2ff3a3a879b0cp-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c49fap+8 : 0x3.2ff3a3a879b1p-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c49fap+8L : 0x3.2ff3a3a879b0f404p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c49fap+8L : 0x3.2ff3a3a879b0f404p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c49fap+8L : 0x3.2ff3a3a879b0f404p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c49fap+8L : 0x3.2ff3a3a879b0f408p-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c49fap+8L : 0x3.2ff3a3a879b0f404p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c49fap+8L : 0x3.2ff3a3a879b0f404p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c49fap+8L : 0x3.2ff3a3a879b0f404p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c49fap+8L : 0x3.2ff3a3a879b0f408p-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c49fap+8L : 0x3.2ff3a3a879b0f4051f06a63de3fp-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c49fap+8L : 0x3.2ff3a3a879b0f4051f06a63de3f2p-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c49fap+8L : 0x3.2ff3a3a879b0f4051f06a63de3fp-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c49fap+8L : 0x3.2ff3a3a879b0f4051f06a63de3f2p-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c49fap+8L : 0x3.2ff3a3a879b0cp-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c49fap+8L : 0x3.2ff3a3a879b1p-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c49fap+8L : 0x3.2ff3a3a879b0cp-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c49fap+8L : 0x3.2ff3a3a879b1p-1024L : inexact-ok underflow errno-erange-ok
+exp -0x2.c4ac1p+8
+= exp downward flt-32 -0x2.c4ac1p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c4ac1p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c4ac1p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c4ac1p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c4ac1p+8 : 0x3.0941d1ff351b4p-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c4ac1p+8 : 0x3.0941d1ff351b8p-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c4ac1p+8 : 0x3.0941d1ff351b4p-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c4ac1p+8 : 0x3.0941d1ff351b8p-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c4ac1p+8L : 0x3.0941d1ff351b7598p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c4ac1p+8L : 0x3.0941d1ff351b759cp-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c4ac1p+8L : 0x3.0941d1ff351b7598p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c4ac1p+8L : 0x3.0941d1ff351b759cp-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c4ac1p+8L : 0x3.0941d1ff351b7598p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c4ac1p+8L : 0x3.0941d1ff351b759cp-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c4ac1p+8L : 0x3.0941d1ff351b7598p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c4ac1p+8L : 0x3.0941d1ff351b759cp-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c4ac1p+8L : 0x3.0941d1ff351b759b1317765f769p-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c4ac1p+8L : 0x3.0941d1ff351b759b1317765f7692p-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c4ac1p+8L : 0x3.0941d1ff351b759b1317765f769p-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c4ac1p+8L : 0x3.0941d1ff351b759b1317765f7692p-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c4ac1p+8L : 0x3.0941d1ff351b4p-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c4ac1p+8L : 0x3.0941d1ff351b8p-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c4ac1p+8L : 0x3.0941d1ff351b4p-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c4ac1p+8L : 0x3.0941d1ff351b8p-1024L : inexact-ok underflow errno-erange-ok
+exp -0x2.c4d89p+8
+= exp downward flt-32 -0x2.c4d89p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp tonearest flt-32 -0x2.c4d89p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp towardzero flt-32 -0x2.c4d89p+8f : 0x0p+0f : inexact-ok underflow errno-erange
+= exp upward flt-32 -0x2.c4d89p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
+= exp downward dbl-64 -0x2.c4d89p+8 : 0x2.8d3d2f65d4648p-1024 : inexact-ok underflow errno-erange-ok
+= exp tonearest dbl-64 -0x2.c4d89p+8 : 0x2.8d3d2f65d464cp-1024 : inexact-ok underflow errno-erange-ok
+= exp towardzero dbl-64 -0x2.c4d89p+8 : 0x2.8d3d2f65d4648p-1024 : inexact-ok underflow errno-erange-ok
+= exp upward dbl-64 -0x2.c4d89p+8 : 0x2.8d3d2f65d464cp-1024 : inexact-ok underflow errno-erange-ok
+= exp downward ldbl-96-intel -0x2.c4d89p+8L : 0x2.8d3d2f65d464b28p-1024L : inexact-ok
+= exp tonearest ldbl-96-intel -0x2.c4d89p+8L : 0x2.8d3d2f65d464b28p-1024L : inexact-ok
+= exp towardzero ldbl-96-intel -0x2.c4d89p+8L : 0x2.8d3d2f65d464b28p-1024L : inexact-ok
+= exp upward ldbl-96-intel -0x2.c4d89p+8L : 0x2.8d3d2f65d464b284p-1024L : inexact-ok
+= exp downward ldbl-96-m68k -0x2.c4d89p+8L : 0x2.8d3d2f65d464b28p-1024L : inexact-ok
+= exp tonearest ldbl-96-m68k -0x2.c4d89p+8L : 0x2.8d3d2f65d464b28p-1024L : inexact-ok
+= exp towardzero ldbl-96-m68k -0x2.c4d89p+8L : 0x2.8d3d2f65d464b28p-1024L : inexact-ok
+= exp upward ldbl-96-m68k -0x2.c4d89p+8L : 0x2.8d3d2f65d464b284p-1024L : inexact-ok
+= exp downward ldbl-128 -0x2.c4d89p+8L : 0x2.8d3d2f65d464b281f702d1fadab4p-1024L : inexact-ok
+= exp tonearest ldbl-128 -0x2.c4d89p+8L : 0x2.8d3d2f65d464b281f702d1fadab4p-1024L : inexact-ok
+= exp towardzero ldbl-128 -0x2.c4d89p+8L : 0x2.8d3d2f65d464b281f702d1fadab4p-1024L : inexact-ok
+= exp upward ldbl-128 -0x2.c4d89p+8L : 0x2.8d3d2f65d464b281f702d1fadab6p-1024L : inexact-ok
+= exp downward ldbl-128ibm -0x2.c4d89p+8L : 0x2.8d3d2f65d4648p-1024L : inexact-ok underflow errno-erange-ok
+= exp tonearest ldbl-128ibm -0x2.c4d89p+8L : 0x2.8d3d2f65d464cp-1024L : inexact-ok underflow errno-erange-ok
+= exp towardzero ldbl-128ibm -0x2.c4d89p+8L : 0x2.8d3d2f65d4648p-1024L : inexact-ok underflow errno-erange-ok
+= exp upward ldbl-128ibm -0x2.c4d89p+8L : 0x2.8d3d2f65d464cp-1024L : 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
index 2c331d9ed6f675f9993aed14e548fddf7175ef90..c00beedfe5c4748a6b70245df234107a93172cdb 100644 (file)
@@ -5,9 +5,25 @@
 
 #include <machine/asm.h>
 
+       .section .rodata.cst8,"aM",@progbits,8
 
+       .p2align 3
+       .type dbl_min,@object
+dbl_min:       .byte 0, 0, 0, 0, 0, 0, 0x10, 0
+       ASM_SIZE_DIRECTIVE(dbl_min)
+
+#ifdef PIC
+# define MO(op) op##@GOTOFF(%ecx)
+#else
+# define MO(op) op
+#endif
+
+       .text
 /* e^x = 2^(x * log2(e)) */
 ENTRY(__ieee754_exp)
+#ifdef  PIC
+       LOAD_PIC_REG (cx)
+#endif
        fldl    4(%esp)
 /* I added the following ugly construct because exp(+-Inf) resulted
    in NaN.  The ugliness results from the bright minds at Intel.
@@ -30,7 +46,22 @@ ENTRY(__ieee754_exp)
        faddp                           /* 2^(fract(x * log2(e))) */
        fscale                          /* e^x */
        fstp    %st(1)
-       ret
+       fldl    MO(dbl_min)
+       fld     %st(1)
+       fucompp
+       fnstsw
+       sahf
+       jnc 3f
+       subl    $8, %esp
+       cfi_adjust_cfa_offset (8)
+       fld     %st(0)
+       fmul    %st(0)
+       fstpl   (%esp)
+       fstpl   (%esp)
+       fldl    (%esp)
+       addl    $8, %esp
+       cfi_adjust_cfa_offset (-8)
+3:     ret
 
 1:     testl   $0x200, %eax            /* Test sign.  */
        jz      2f                      /* If positive, jump.  */
@@ -41,6 +72,9 @@ END (__ieee754_exp)
 
 
 ENTRY(__exp_finite)
+#ifdef  PIC
+       LOAD_PIC_REG (cx)
+#endif
        fldl2e
        fmull   4(%esp)                 /* x * log2(e) */
        fld     %st
@@ -52,5 +86,20 @@ ENTRY(__exp_finite)
        faddp                           /* 2^(fract(x * log2(e))) */
        fscale                          /* e^x */
        fstp    %st(1)
-       ret
+       fldl    MO(dbl_min)
+       fld     %st(1)
+       fucompp
+       fnstsw
+       sahf
+       jnc 4f
+       subl    $8, %esp
+       cfi_adjust_cfa_offset (8)
+       fld     %st(0)
+       fmul    %st(0)
+       fstpl   (%esp)
+       fstpl   (%esp)
+       fldl    (%esp)
+       addl    $8, %esp
+       cfi_adjust_cfa_offset (-8)
+4:     ret
 END(__exp_finite)
index 4e4f6a0df7ceeb4ae47ffc9770e9074340e89690..306afd1122dabba1224f6d50c1e7e0a58a1eae7a 100644 (file)
@@ -6,9 +6,25 @@
 
 #include <machine/asm.h>
 
+       .section .rodata.cst4,"aM",@progbits,4
 
+       .p2align 2
+       .type flt_min,@object
+flt_min:       .byte 0, 0, 0x80, 0
+       ASM_SIZE_DIRECTIVE(flt_min)
+
+#ifdef PIC
+# define MO(op) op##@GOTOFF(%ecx)
+#else
+# define MO(op) op
+#endif
+
+       .text
 /* e^x = 2^(x * log2(e)) */
 ENTRY(__ieee754_expf)
+#ifdef  PIC
+       LOAD_PIC_REG (cx)
+#endif
        flds    4(%esp)
 /* I added the following ugly construct because exp(+-Inf) resulted
    in NaN.  The ugliness results from the bright minds at Intel.
@@ -31,7 +47,22 @@ ENTRY(__ieee754_expf)
        faddp                           /* 2^(fract(x * log2(e))) */
        fscale                          /* e^x */
        fstp    %st(1)
-       ret
+       flds    MO(flt_min)
+       fld     %st(1)
+       fucompp
+       fnstsw
+       sahf
+       jnc 3f
+       subl    $4, %esp
+       cfi_adjust_cfa_offset (4)
+       fld     %st(0)
+       fmul    %st(0)
+       fstps   (%esp)
+       fstps   (%esp)
+       flds    (%esp)
+       addl    $4, %esp
+       cfi_adjust_cfa_offset (-4)
+3:     ret
 
 1:     testl   $0x200, %eax            /* Test sign.  */
        jz      2f                      /* If positive, jump.  */
@@ -42,6 +73,9 @@ END (__ieee754_expf)
 
 
 ENTRY(__expf_finite)
+#ifdef  PIC
+       LOAD_PIC_REG (cx)
+#endif
        fldl2e
        fmuls   4(%esp)                 /* x * log2(e) */
        fld     %st
@@ -53,5 +87,20 @@ ENTRY(__expf_finite)
        faddp                           /* 2^(fract(x * log2(e))) */
        fscale                          /* e^x */
        fstp    %st(1)
-       ret
+       flds    MO(flt_min)
+       fld     %st(1)
+       fucompp
+       fnstsw
+       sahf
+       jnc 4f
+       subl    $4, %esp
+       cfi_adjust_cfa_offset (4)
+       fld     %st(0)
+       fmul    %st(0)
+       fstps   (%esp)
+       fstps   (%esp)
+       flds    (%esp)
+       addl    $4, %esp
+       cfi_adjust_cfa_offset (-4)
+4:     ret
 END(__expf_finite)