This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.21-67-g03d95bd


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  03d95bd48319256bd29cfaece45919fc58bf56cc (commit)
      from  98408b95b155464e760c22dce4842f29499db821 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=03d95bd48319256bd29cfaece45919fc58bf56cc

commit 03d95bd48319256bd29cfaece45919fc58bf56cc
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Thu Feb 12 19:02:45 2015 +0000

    Fix exp2 spurious underflows (bug 16560).
    
    This patch fixes the remaining part of bug 16560, spurious underflows
    from exp2 of arguments close to 0 (when the result is close to 1, so
    should not underflow), by just using 1+x instead of a more complicated
    calculation when the argument is sufficiently small.
    
    Tested for x86_64, x86 and mips64.
    
    	[BZ #16560]
    	* math/e_exp2l.c [LDBL_MANT_DIG == 106] (LDBL_EPSILON): Undefine
    	and redefine.
    	(__ieee754_exp2l): Do not multiply small fractional parts by
    	M_LN2l.
    	* sysdeps/i386/fpu/e_exp2l.S (__ieee754_exp2l): Just add 1 to
    	small argument.
    	* sysdeps/ieee754/dbl-64/e_exp2.c (__ieee754_exp2): Likewise.
    	* sysdeps/ieee754/flt-32/e_exp2f.c (__ieee754_exp2f): Likewise.
    	* sysdeps/x86_64/fpu/e_exp2l.S (__ieee754_exp2l): Likewise.
    	* math/auto-libm-test-in: Add more tests of exp2.
    	* math/auto-libm-test-out: Regenerated.

diff --git a/ChangeLog b/ChangeLog
index d431c29..54da8c5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2015-02-12  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #16560]
+	* math/e_exp2l.c [LDBL_MANT_DIG == 106] (LDBL_EPSILON): Undefine
+	and redefine.
+	(__ieee754_exp2l): Do not multiply small fractional parts by
+	M_LN2l.
+	* sysdeps/i386/fpu/e_exp2l.S (__ieee754_exp2l): Just add 1 to
+	small argument.
+	* sysdeps/ieee754/dbl-64/e_exp2.c (__ieee754_exp2): Likewise.
+	* sysdeps/ieee754/flt-32/e_exp2f.c (__ieee754_exp2f): Likewise.
+	* sysdeps/x86_64/fpu/e_exp2l.S (__ieee754_exp2l): Likewise.
+	* math/auto-libm-test-in: Add more tests of exp2.
+	* math/auto-libm-test-out: Regenerated.
+
 2015-02-12  Rajalakshmi Srinivasaraghavan  <raji@linux.vnet.ibm.com>
 
 	* sysdeps/powerpc/powerpc64/power7/strncpy.S (strncpy): Optimize
diff --git a/NEWS b/NEWS
index 2938f6e..c3d2c97 100644
--- a/NEWS
+++ b/NEWS
@@ -9,7 +9,7 @@ Version 2.22
 
 * The following bugs are resolved with this release:
 
-  4719, 15467, 15790, 17912, 17932, 17944, 17949.
+  4719, 15467, 15790, 16560, 17912, 17932, 17944, 17949.
 
 Version 2.21
 
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index ad43113..6bcfd54 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -938,6 +938,24 @@ exp2 1023
 exp2 -1074
 exp2 16383
 exp2 -16400
+exp2 0x1p-10
+exp2 -0x1p-10
+exp2 0x1p-20
+exp2 -0x1p-20
+exp2 0x1p-30
+exp2 -0x1p-30
+exp2 0x1p-40
+exp2 -0x1p-40
+exp2 0x1p-50
+exp2 -0x1p-50
+exp2 0x1p-60
+exp2 -0x1p-60
+exp2 0x1p-100
+exp2 -0x1p-100
+exp2 min
+exp2 -min
+exp2 min_subnorm
+exp2 -min_subnorm
 
 expm1 0
 expm1 -0
diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out
index daa1468..7b569cf 100644
--- a/math/auto-libm-test-out
+++ b/math/auto-libm-test-out
@@ -92448,6 +92448,672 @@ exp2 -16400
 = exp2 tonearest ldbl-128ibm -0x4.01p+12L : 0x0p+0L : inexact-ok underflow errno-erange
 = exp2 towardzero ldbl-128ibm -0x4.01p+12L : 0x0p+0L : inexact-ok underflow errno-erange
 = exp2 upward ldbl-128ibm -0x4.01p+12L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
+exp2 0x1p-10
+= exp2 downward flt-32 0x4p-12f : 0x1.002c6p+0f : inexact-ok
+= exp2 tonearest flt-32 0x4p-12f : 0x1.002c6p+0f : inexact-ok
+= exp2 towardzero flt-32 0x4p-12f : 0x1.002c6p+0f : inexact-ok
+= exp2 upward flt-32 0x4p-12f : 0x1.002c62p+0f : inexact-ok
+= exp2 downward dbl-64 0x4p-12 : 0x1.002c605e2e8cep+0 : inexact-ok
+= exp2 tonearest dbl-64 0x4p-12 : 0x1.002c605e2e8cfp+0 : inexact-ok
+= exp2 towardzero dbl-64 0x4p-12 : 0x1.002c605e2e8cep+0 : inexact-ok
+= exp2 upward dbl-64 0x4p-12 : 0x1.002c605e2e8cfp+0 : inexact-ok
+= exp2 downward ldbl-96-intel 0x4p-12L : 0x1.002c605e2e8cec5p+0L : inexact-ok
+= exp2 tonearest ldbl-96-intel 0x4p-12L : 0x1.002c605e2e8cec5p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel 0x4p-12L : 0x1.002c605e2e8cec5p+0L : inexact-ok
+= exp2 upward ldbl-96-intel 0x4p-12L : 0x1.002c605e2e8cec52p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k 0x4p-12L : 0x1.002c605e2e8cec5p+0L : inexact-ok
+= exp2 tonearest ldbl-96-m68k 0x4p-12L : 0x1.002c605e2e8cec5p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k 0x4p-12L : 0x1.002c605e2e8cec5p+0L : inexact-ok
+= exp2 upward ldbl-96-m68k 0x4p-12L : 0x1.002c605e2e8cec52p+0L : inexact-ok
+= exp2 downward ldbl-128 0x4p-12L : 0x1.002c605e2e8cec506d21bfc89a23p+0L : inexact-ok
+= exp2 tonearest ldbl-128 0x4p-12L : 0x1.002c605e2e8cec506d21bfc89a24p+0L : inexact-ok
+= exp2 towardzero ldbl-128 0x4p-12L : 0x1.002c605e2e8cec506d21bfc89a23p+0L : inexact-ok
+= exp2 upward ldbl-128 0x4p-12L : 0x1.002c605e2e8cec506d21bfc89a24p+0L : inexact-ok
+= exp2 downward ldbl-128ibm 0x4p-12L : 0x1.002c605e2e8cec506d21bfc89ap+0L : inexact-ok
+= exp2 tonearest ldbl-128ibm 0x4p-12L : 0x1.002c605e2e8cec506d21bfc89ap+0L : inexact-ok
+= exp2 towardzero ldbl-128ibm 0x4p-12L : 0x1.002c605e2e8cec506d21bfc89ap+0L : inexact-ok
+= exp2 upward ldbl-128ibm 0x4p-12L : 0x1.002c605e2e8cec506d21bfc89a8p+0L : inexact-ok
+exp2 -0x1p-10
+= exp2 downward flt-32 -0x4p-12f : 0xf.fd3a7p-4f : inexact-ok
+= exp2 tonearest flt-32 -0x4p-12f : 0xf.fd3a7p-4f : inexact-ok
+= exp2 towardzero flt-32 -0x4p-12f : 0xf.fd3a7p-4f : inexact-ok
+= exp2 upward flt-32 -0x4p-12f : 0xf.fd3a8p-4f : inexact-ok
+= exp2 downward dbl-64 -0x4p-12 : 0xf.fd3a751c0f7ep-4 : inexact-ok
+= exp2 tonearest dbl-64 -0x4p-12 : 0xf.fd3a751c0f7ep-4 : inexact-ok
+= exp2 towardzero dbl-64 -0x4p-12 : 0xf.fd3a751c0f7ep-4 : inexact-ok
+= exp2 upward dbl-64 -0x4p-12 : 0xf.fd3a751c0f7e8p-4 : inexact-ok
+= exp2 downward ldbl-96-intel -0x4p-12L : 0xf.fd3a751c0f7e10bp-4L : inexact-ok
+= exp2 tonearest ldbl-96-intel -0x4p-12L : 0xf.fd3a751c0f7e10cp-4L : inexact-ok
+= exp2 towardzero ldbl-96-intel -0x4p-12L : 0xf.fd3a751c0f7e10bp-4L : inexact-ok
+= exp2 upward ldbl-96-intel -0x4p-12L : 0xf.fd3a751c0f7e10cp-4L : inexact-ok
+= exp2 downward ldbl-96-m68k -0x4p-12L : 0xf.fd3a751c0f7e10bp-4L : inexact-ok
+= exp2 tonearest ldbl-96-m68k -0x4p-12L : 0xf.fd3a751c0f7e10cp-4L : inexact-ok
+= exp2 towardzero ldbl-96-m68k -0x4p-12L : 0xf.fd3a751c0f7e10bp-4L : inexact-ok
+= exp2 upward ldbl-96-m68k -0x4p-12L : 0xf.fd3a751c0f7e10cp-4L : inexact-ok
+= exp2 downward ldbl-128 -0x4p-12L : 0xf.fd3a751c0f7e10bd3b9f8ae012f8p-4L : inexact-ok
+= exp2 tonearest ldbl-128 -0x4p-12L : 0xf.fd3a751c0f7e10bd3b9f8ae012f8p-4L : inexact-ok
+= exp2 towardzero ldbl-128 -0x4p-12L : 0xf.fd3a751c0f7e10bd3b9f8ae012f8p-4L : inexact-ok
+= exp2 upward ldbl-128 -0x4p-12L : 0xf.fd3a751c0f7e10bd3b9f8ae013p-4L : inexact-ok
+= exp2 downward ldbl-128ibm -0x4p-12L : 0xf.fd3a751c0f7e10bd3b9f8ae01p-4L : inexact-ok
+= exp2 tonearest ldbl-128ibm -0x4p-12L : 0xf.fd3a751c0f7e10bd3b9f8ae014p-4L : inexact-ok
+= exp2 towardzero ldbl-128ibm -0x4p-12L : 0xf.fd3a751c0f7e10bd3b9f8ae01p-4L : inexact-ok
+= exp2 upward ldbl-128ibm -0x4p-12L : 0xf.fd3a751c0f7e10bd3b9f8ae014p-4L : inexact-ok
+exp2 0x1p-20
+= exp2 downward flt-32 0x1p-20f : 0x1.00000ap+0f : inexact-ok
+= exp2 tonearest flt-32 0x1p-20f : 0x1.00000cp+0f : inexact-ok
+= exp2 towardzero flt-32 0x1p-20f : 0x1.00000ap+0f : inexact-ok
+= exp2 upward flt-32 0x1p-20f : 0x1.00000cp+0f : inexact-ok
+= exp2 downward dbl-64 0x1p-20 : 0x1.00000b1721bcfp+0 : inexact-ok
+= exp2 tonearest dbl-64 0x1p-20 : 0x1.00000b1721bdp+0 : inexact-ok
+= exp2 towardzero dbl-64 0x1p-20 : 0x1.00000b1721bcfp+0 : inexact-ok
+= exp2 upward dbl-64 0x1p-20 : 0x1.00000b1721bdp+0 : inexact-ok
+= exp2 downward ldbl-96-intel 0x1p-20L : 0x1.00000b1721bcfc98p+0L : inexact-ok
+= exp2 tonearest ldbl-96-intel 0x1p-20L : 0x1.00000b1721bcfc9ap+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel 0x1p-20L : 0x1.00000b1721bcfc98p+0L : inexact-ok
+= exp2 upward ldbl-96-intel 0x1p-20L : 0x1.00000b1721bcfc9ap+0L : inexact-ok
+= exp2 downward ldbl-96-m68k 0x1p-20L : 0x1.00000b1721bcfc98p+0L : inexact-ok
+= exp2 tonearest ldbl-96-m68k 0x1p-20L : 0x1.00000b1721bcfc9ap+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k 0x1p-20L : 0x1.00000b1721bcfc98p+0L : inexact-ok
+= exp2 upward ldbl-96-m68k 0x1p-20L : 0x1.00000b1721bcfc9ap+0L : inexact-ok
+= exp2 downward ldbl-128 0x1p-20L : 0x1.00000b1721bcfc99d9f890ea0691p+0L : inexact-ok
+= exp2 tonearest ldbl-128 0x1p-20L : 0x1.00000b1721bcfc99d9f890ea0691p+0L : inexact-ok
+= exp2 towardzero ldbl-128 0x1p-20L : 0x1.00000b1721bcfc99d9f890ea0691p+0L : inexact-ok
+= exp2 upward ldbl-128 0x1p-20L : 0x1.00000b1721bcfc99d9f890ea0692p+0L : inexact-ok
+= exp2 downward ldbl-128ibm 0x1p-20L : 0x1.00000b1721bcfc99d9f890ea068p+0L : inexact-ok
+= exp2 tonearest ldbl-128ibm 0x1p-20L : 0x1.00000b1721bcfc99d9f890ea068p+0L : inexact-ok
+= exp2 towardzero ldbl-128ibm 0x1p-20L : 0x1.00000b1721bcfc99d9f890ea068p+0L : inexact-ok
+= exp2 upward ldbl-128ibm 0x1p-20L : 0x1.00000b1721bcfc99d9f890ea07p+0L : inexact-ok
+exp2 -0x1p-20
+= exp2 downward flt-32 -0x1p-20f : 0xf.ffff4p-4f : inexact-ok
+= exp2 tonearest flt-32 -0x1p-20f : 0xf.ffff5p-4f : inexact-ok
+= exp2 towardzero flt-32 -0x1p-20f : 0xf.ffff4p-4f : inexact-ok
+= exp2 upward flt-32 -0x1p-20f : 0xf.ffff5p-4f : inexact-ok
+= exp2 downward dbl-64 -0x1p-20 : 0xf.ffff4e8debep-4 : inexact-ok
+= exp2 tonearest dbl-64 -0x1p-20 : 0xf.ffff4e8debep-4 : inexact-ok
+= exp2 towardzero dbl-64 -0x1p-20 : 0xf.ffff4e8debep-4 : inexact-ok
+= exp2 upward dbl-64 -0x1p-20 : 0xf.ffff4e8debe08p-4 : inexact-ok
+= exp2 downward ldbl-96-intel -0x1p-20L : 0xf.ffff4e8debe025ep-4L : inexact-ok
+= exp2 tonearest ldbl-96-intel -0x1p-20L : 0xf.ffff4e8debe025ep-4L : inexact-ok
+= exp2 towardzero ldbl-96-intel -0x1p-20L : 0xf.ffff4e8debe025ep-4L : inexact-ok
+= exp2 upward ldbl-96-intel -0x1p-20L : 0xf.ffff4e8debe025fp-4L : inexact-ok
+= exp2 downward ldbl-96-m68k -0x1p-20L : 0xf.ffff4e8debe025ep-4L : inexact-ok
+= exp2 tonearest ldbl-96-m68k -0x1p-20L : 0xf.ffff4e8debe025ep-4L : inexact-ok
+= exp2 towardzero ldbl-96-m68k -0x1p-20L : 0xf.ffff4e8debe025ep-4L : inexact-ok
+= exp2 upward ldbl-96-m68k -0x1p-20L : 0xf.ffff4e8debe025fp-4L : inexact-ok
+= exp2 downward ldbl-128 -0x1p-20L : 0xf.ffff4e8debe025e24128a3d4607p-4L : inexact-ok
+= exp2 tonearest ldbl-128 -0x1p-20L : 0xf.ffff4e8debe025e24128a3d4607p-4L : inexact-ok
+= exp2 towardzero ldbl-128 -0x1p-20L : 0xf.ffff4e8debe025e24128a3d4607p-4L : inexact-ok
+= exp2 upward ldbl-128 -0x1p-20L : 0xf.ffff4e8debe025e24128a3d46078p-4L : inexact-ok
+= exp2 downward ldbl-128ibm -0x1p-20L : 0xf.ffff4e8debe025e24128a3d46p-4L : inexact-ok
+= exp2 tonearest ldbl-128ibm -0x1p-20L : 0xf.ffff4e8debe025e24128a3d46p-4L : inexact-ok
+= exp2 towardzero ldbl-128ibm -0x1p-20L : 0xf.ffff4e8debe025e24128a3d46p-4L : inexact-ok
+= exp2 upward ldbl-128ibm -0x1p-20L : 0xf.ffff4e8debe025e24128a3d464p-4L : inexact-ok
+exp2 0x1p-30
+= exp2 downward flt-32 0x4p-32f : 0x1p+0f : inexact-ok
+= exp2 tonearest flt-32 0x4p-32f : 0x1p+0f : inexact-ok
+= exp2 towardzero flt-32 0x4p-32f : 0x1p+0f : inexact-ok
+= exp2 upward flt-32 0x4p-32f : 0x1.000002p+0f : inexact-ok
+= exp2 downward dbl-64 0x4p-32 : 0x1.00000002c5c85p+0 : inexact-ok
+= exp2 tonearest dbl-64 0x4p-32 : 0x1.00000002c5c86p+0 : inexact-ok
+= exp2 towardzero dbl-64 0x4p-32 : 0x1.00000002c5c85p+0 : inexact-ok
+= exp2 upward dbl-64 0x4p-32 : 0x1.00000002c5c86p+0 : inexact-ok
+= exp2 downward ldbl-96-intel 0x4p-32L : 0x1.00000002c5c85fe2p+0L : inexact-ok
+= exp2 tonearest ldbl-96-intel 0x4p-32L : 0x1.00000002c5c85fe4p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel 0x4p-32L : 0x1.00000002c5c85fe2p+0L : inexact-ok
+= exp2 upward ldbl-96-intel 0x4p-32L : 0x1.00000002c5c85fe4p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k 0x4p-32L : 0x1.00000002c5c85fe2p+0L : inexact-ok
+= exp2 tonearest ldbl-96-m68k 0x4p-32L : 0x1.00000002c5c85fe4p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k 0x4p-32L : 0x1.00000002c5c85fe2p+0L : inexact-ok
+= exp2 upward ldbl-96-m68k 0x4p-32L : 0x1.00000002c5c85fe4p+0L : inexact-ok
+= exp2 downward ldbl-128 0x4p-32L : 0x1.00000002c5c85fe31f35a6a30da1p+0L : inexact-ok
+= exp2 tonearest ldbl-128 0x4p-32L : 0x1.00000002c5c85fe31f35a6a30da2p+0L : inexact-ok
+= exp2 towardzero ldbl-128 0x4p-32L : 0x1.00000002c5c85fe31f35a6a30da1p+0L : inexact-ok
+= exp2 upward ldbl-128 0x4p-32L : 0x1.00000002c5c85fe31f35a6a30da2p+0L : inexact-ok
+= exp2 downward ldbl-128ibm 0x4p-32L : 0x1.00000002c5c85fe31f35a6a30d8p+0L : inexact-ok
+= exp2 tonearest ldbl-128ibm 0x4p-32L : 0x1.00000002c5c85fe31f35a6a30d8p+0L : inexact-ok
+= exp2 towardzero ldbl-128ibm 0x4p-32L : 0x1.00000002c5c85fe31f35a6a30d8p+0L : inexact-ok
+= exp2 upward ldbl-128ibm 0x4p-32L : 0x1.00000002c5c85fe31f35a6a30ep+0L : inexact-ok
+exp2 -0x1p-30
+= exp2 downward flt-32 -0x4p-32f : 0xf.fffffp-4f : inexact-ok
+= exp2 tonearest flt-32 -0x4p-32f : 0x1p+0f : inexact-ok
+= exp2 towardzero flt-32 -0x4p-32f : 0xf.fffffp-4f : inexact-ok
+= exp2 upward flt-32 -0x4p-32f : 0x1p+0f : inexact-ok
+= exp2 downward dbl-64 -0x4p-32 : 0xf.ffffffd3a37ap-4 : inexact-ok
+= exp2 tonearest dbl-64 -0x4p-32 : 0xf.ffffffd3a37ap-4 : inexact-ok
+= exp2 towardzero dbl-64 -0x4p-32 : 0xf.ffffffd3a37ap-4 : inexact-ok
+= exp2 upward dbl-64 -0x4p-32 : 0xf.ffffffd3a37a8p-4 : inexact-ok
+= exp2 downward ldbl-96-intel -0x4p-32L : 0xf.ffffffd3a37a024p-4L : inexact-ok
+= exp2 tonearest ldbl-96-intel -0x4p-32L : 0xf.ffffffd3a37a025p-4L : inexact-ok
+= exp2 towardzero ldbl-96-intel -0x4p-32L : 0xf.ffffffd3a37a024p-4L : inexact-ok
+= exp2 upward ldbl-96-intel -0x4p-32L : 0xf.ffffffd3a37a025p-4L : inexact-ok
+= exp2 downward ldbl-96-m68k -0x4p-32L : 0xf.ffffffd3a37a024p-4L : inexact-ok
+= exp2 tonearest ldbl-96-m68k -0x4p-32L : 0xf.ffffffd3a37a025p-4L : inexact-ok
+= exp2 towardzero ldbl-96-m68k -0x4p-32L : 0xf.ffffffd3a37a024p-4L : inexact-ok
+= exp2 upward ldbl-96-m68k -0x4p-32L : 0xf.ffffffd3a37a025p-4L : inexact-ok
+= exp2 downward ldbl-128 -0x4p-32L : 0xf.ffffffd3a37a02490b9d93da3c18p-4L : inexact-ok
+= exp2 tonearest ldbl-128 -0x4p-32L : 0xf.ffffffd3a37a02490b9d93da3c2p-4L : inexact-ok
+= exp2 towardzero ldbl-128 -0x4p-32L : 0xf.ffffffd3a37a02490b9d93da3c18p-4L : inexact-ok
+= exp2 upward ldbl-128 -0x4p-32L : 0xf.ffffffd3a37a02490b9d93da3c2p-4L : inexact-ok
+= exp2 downward ldbl-128ibm -0x4p-32L : 0xf.ffffffd3a37a02490b9d93da3cp-4L : inexact-ok
+= exp2 tonearest ldbl-128ibm -0x4p-32L : 0xf.ffffffd3a37a02490b9d93da3cp-4L : inexact-ok
+= exp2 towardzero ldbl-128ibm -0x4p-32L : 0xf.ffffffd3a37a02490b9d93da3cp-4L : inexact-ok
+= exp2 upward ldbl-128ibm -0x4p-32L : 0xf.ffffffd3a37a02490b9d93da4p-4L : inexact-ok
+exp2 0x1p-40
+= exp2 downward flt-32 0x1p-40f : 0x1p+0f : inexact-ok
+= exp2 tonearest flt-32 0x1p-40f : 0x1p+0f : inexact-ok
+= exp2 towardzero flt-32 0x1p-40f : 0x1p+0f : inexact-ok
+= exp2 upward flt-32 0x1p-40f : 0x1.000002p+0f : inexact-ok
+= exp2 downward dbl-64 0x1p-40 : 0x1.0000000000b17p+0 : inexact-ok
+= exp2 tonearest dbl-64 0x1p-40 : 0x1.0000000000b17p+0 : inexact-ok
+= exp2 towardzero dbl-64 0x1p-40 : 0x1.0000000000b17p+0 : inexact-ok
+= exp2 upward dbl-64 0x1p-40 : 0x1.0000000000b18p+0 : inexact-ok
+= exp2 downward ldbl-96-intel 0x1p-40L : 0x1.0000000000b17216p+0L : inexact-ok
+= exp2 tonearest ldbl-96-intel 0x1p-40L : 0x1.0000000000b17218p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel 0x1p-40L : 0x1.0000000000b17216p+0L : inexact-ok
+= exp2 upward ldbl-96-intel 0x1p-40L : 0x1.0000000000b17218p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k 0x1p-40L : 0x1.0000000000b17216p+0L : inexact-ok
+= exp2 tonearest ldbl-96-m68k 0x1p-40L : 0x1.0000000000b17218p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k 0x1p-40L : 0x1.0000000000b17216p+0L : inexact-ok
+= exp2 upward ldbl-96-m68k 0x1p-40L : 0x1.0000000000b17218p+0L : inexact-ok
+= exp2 downward ldbl-128 0x1p-40L : 0x1.0000000000b17217f7d20cf927c8p+0L : inexact-ok
+= exp2 tonearest ldbl-128 0x1p-40L : 0x1.0000000000b17217f7d20cf927c9p+0L : inexact-ok
+= exp2 towardzero ldbl-128 0x1p-40L : 0x1.0000000000b17217f7d20cf927c8p+0L : inexact-ok
+= exp2 upward ldbl-128 0x1p-40L : 0x1.0000000000b17217f7d20cf927c9p+0L : inexact-ok
+= exp2 downward ldbl-128ibm 0x1p-40L : 0x1.0000000000b17217f7d20cf9278p+0L : inexact-ok
+= exp2 tonearest ldbl-128ibm 0x1p-40L : 0x1.0000000000b17217f7d20cf928p+0L : inexact-ok
+= exp2 towardzero ldbl-128ibm 0x1p-40L : 0x1.0000000000b17217f7d20cf9278p+0L : inexact-ok
+= exp2 upward ldbl-128ibm 0x1p-40L : 0x1.0000000000b17217f7d20cf928p+0L : inexact-ok
+exp2 -0x1p-40
+= exp2 downward flt-32 -0x1p-40f : 0xf.fffffp-4f : inexact-ok
+= exp2 tonearest flt-32 -0x1p-40f : 0x1p+0f : inexact-ok
+= exp2 towardzero flt-32 -0x1p-40f : 0xf.fffffp-4f : inexact-ok
+= exp2 upward flt-32 -0x1p-40f : 0x1p+0f : inexact-ok
+= exp2 downward dbl-64 -0x1p-40 : 0xf.fffffffff4e88p-4 : inexact-ok
+= exp2 tonearest dbl-64 -0x1p-40 : 0xf.fffffffff4e9p-4 : inexact-ok
+= exp2 towardzero dbl-64 -0x1p-40 : 0xf.fffffffff4e88p-4 : inexact-ok
+= exp2 upward dbl-64 -0x1p-40 : 0xf.fffffffff4e9p-4 : inexact-ok
+= exp2 downward ldbl-96-intel -0x1p-40L : 0xf.fffffffff4e8de8p-4L : inexact-ok
+= exp2 tonearest ldbl-96-intel -0x1p-40L : 0xf.fffffffff4e8de8p-4L : inexact-ok
+= exp2 towardzero ldbl-96-intel -0x1p-40L : 0xf.fffffffff4e8de8p-4L : inexact-ok
+= exp2 upward ldbl-96-intel -0x1p-40L : 0xf.fffffffff4e8de9p-4L : inexact-ok
+= exp2 downward ldbl-96-m68k -0x1p-40L : 0xf.fffffffff4e8de8p-4L : inexact-ok
+= exp2 tonearest ldbl-96-m68k -0x1p-40L : 0xf.fffffffff4e8de8p-4L : inexact-ok
+= exp2 towardzero ldbl-96-m68k -0x1p-40L : 0xf.fffffffff4e8de8p-4L : inexact-ok
+= exp2 upward ldbl-96-m68k -0x1p-40L : 0xf.fffffffff4e8de9p-4L : inexact-ok
+= exp2 downward ldbl-128 -0x1p-40L : 0xf.fffffffff4e8de8082e6e05d035p-4L : inexact-ok
+= exp2 tonearest ldbl-128 -0x1p-40L : 0xf.fffffffff4e8de8082e6e05d035p-4L : inexact-ok
+= exp2 towardzero ldbl-128 -0x1p-40L : 0xf.fffffffff4e8de8082e6e05d035p-4L : inexact-ok
+= exp2 upward ldbl-128 -0x1p-40L : 0xf.fffffffff4e8de8082e6e05d0358p-4L : inexact-ok
+= exp2 downward ldbl-128ibm -0x1p-40L : 0xf.fffffffff4e8de8082e6e05dp-4L : inexact-ok
+= exp2 tonearest ldbl-128ibm -0x1p-40L : 0xf.fffffffff4e8de8082e6e05d04p-4L : inexact-ok
+= exp2 towardzero ldbl-128ibm -0x1p-40L : 0xf.fffffffff4e8de8082e6e05dp-4L : inexact-ok
+= exp2 upward ldbl-128ibm -0x1p-40L : 0xf.fffffffff4e8de8082e6e05d04p-4L : inexact-ok
+exp2 0x1p-50
+= exp2 downward flt-32 0x4p-52f : 0x1p+0f : inexact-ok
+= exp2 tonearest flt-32 0x4p-52f : 0x1p+0f : inexact-ok
+= exp2 towardzero flt-32 0x4p-52f : 0x1p+0f : inexact-ok
+= exp2 upward flt-32 0x4p-52f : 0x1.000002p+0f : inexact-ok
+= exp2 downward dbl-64 0x4p-52 : 0x1.0000000000002p+0 : inexact-ok
+= exp2 tonearest dbl-64 0x4p-52 : 0x1.0000000000003p+0 : inexact-ok
+= exp2 towardzero dbl-64 0x4p-52 : 0x1.0000000000002p+0 : inexact-ok
+= exp2 upward dbl-64 0x4p-52 : 0x1.0000000000003p+0 : inexact-ok
+= exp2 downward ldbl-96-intel 0x4p-52L : 0x1.0000000000002c5cp+0L : inexact-ok
+= exp2 tonearest ldbl-96-intel 0x4p-52L : 0x1.0000000000002c5cp+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel 0x4p-52L : 0x1.0000000000002c5cp+0L : inexact-ok
+= exp2 upward ldbl-96-intel 0x4p-52L : 0x1.0000000000002c5ep+0L : inexact-ok
+= exp2 downward ldbl-96-m68k 0x4p-52L : 0x1.0000000000002c5cp+0L : inexact-ok
+= exp2 tonearest ldbl-96-m68k 0x4p-52L : 0x1.0000000000002c5cp+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k 0x4p-52L : 0x1.0000000000002c5cp+0L : inexact-ok
+= exp2 upward ldbl-96-m68k 0x4p-52L : 0x1.0000000000002c5ep+0L : inexact-ok
+= exp2 downward ldbl-128 0x4p-52L : 0x1.0000000000002c5c85fdf473e242p+0L : inexact-ok
+= exp2 tonearest ldbl-128 0x4p-52L : 0x1.0000000000002c5c85fdf473e243p+0L : inexact-ok
+= exp2 towardzero ldbl-128 0x4p-52L : 0x1.0000000000002c5c85fdf473e242p+0L : inexact-ok
+= exp2 upward ldbl-128 0x4p-52L : 0x1.0000000000002c5c85fdf473e243p+0L : inexact-ok
+= exp2 downward ldbl-128ibm 0x4p-52L : 0x1.0000000000002c5c85fdf473e2p+0L : inexact-ok
+= exp2 tonearest ldbl-128ibm 0x4p-52L : 0x1.0000000000002c5c85fdf473e28p+0L : inexact-ok
+= exp2 towardzero ldbl-128ibm 0x4p-52L : 0x1.0000000000002c5c85fdf473e2p+0L : inexact-ok
+= exp2 upward ldbl-128ibm 0x4p-52L : 0x1.0000000000002c5c85fdf473e28p+0L : inexact-ok
+exp2 -0x1p-50
+= exp2 downward flt-32 -0x4p-52f : 0xf.fffffp-4f : inexact-ok
+= exp2 tonearest flt-32 -0x4p-52f : 0x1p+0f : inexact-ok
+= exp2 towardzero flt-32 -0x4p-52f : 0xf.fffffp-4f : inexact-ok
+= exp2 upward flt-32 -0x4p-52f : 0x1p+0f : inexact-ok
+= exp2 downward dbl-64 -0x4p-52 : 0xf.fffffffffffdp-4 : inexact-ok
+= exp2 tonearest dbl-64 -0x4p-52 : 0xf.fffffffffffdp-4 : inexact-ok
+= exp2 towardzero dbl-64 -0x4p-52 : 0xf.fffffffffffdp-4 : inexact-ok
+= exp2 upward dbl-64 -0x4p-52 : 0xf.fffffffffffd8p-4 : inexact-ok
+= exp2 downward ldbl-96-intel -0x4p-52L : 0xf.fffffffffffd3a3p-4L : inexact-ok
+= exp2 tonearest ldbl-96-intel -0x4p-52L : 0xf.fffffffffffd3a3p-4L : inexact-ok
+= exp2 towardzero ldbl-96-intel -0x4p-52L : 0xf.fffffffffffd3a3p-4L : inexact-ok
+= exp2 upward ldbl-96-intel -0x4p-52L : 0xf.fffffffffffd3a4p-4L : inexact-ok
+= exp2 downward ldbl-96-m68k -0x4p-52L : 0xf.fffffffffffd3a3p-4L : inexact-ok
+= exp2 tonearest ldbl-96-m68k -0x4p-52L : 0xf.fffffffffffd3a3p-4L : inexact-ok
+= exp2 towardzero ldbl-96-m68k -0x4p-52L : 0xf.fffffffffffd3a3p-4L : inexact-ok
+= exp2 upward ldbl-96-m68k -0x4p-52L : 0xf.fffffffffffd3a4p-4L : inexact-ok
+= exp2 downward ldbl-128 -0x4p-52L : 0xf.fffffffffffd3a37a020b8c256dp-4L : inexact-ok
+= exp2 tonearest ldbl-128 -0x4p-52L : 0xf.fffffffffffd3a37a020b8c256dp-4L : inexact-ok
+= exp2 towardzero ldbl-128 -0x4p-52L : 0xf.fffffffffffd3a37a020b8c256dp-4L : inexact-ok
+= exp2 upward ldbl-128 -0x4p-52L : 0xf.fffffffffffd3a37a020b8c256d8p-4L : inexact-ok
+= exp2 downward ldbl-128ibm -0x4p-52L : 0xf.fffffffffffd3a37a020b8c254p-4L : inexact-ok
+= exp2 tonearest ldbl-128ibm -0x4p-52L : 0xf.fffffffffffd3a37a020b8c258p-4L : inexact-ok
+= exp2 towardzero ldbl-128ibm -0x4p-52L : 0xf.fffffffffffd3a37a020b8c254p-4L : inexact-ok
+= exp2 upward ldbl-128ibm -0x4p-52L : 0xf.fffffffffffd3a37a020b8c258p-4L : inexact-ok
+exp2 0x1p-60
+= exp2 downward flt-32 0x1p-60f : 0x1p+0f : inexact-ok
+= exp2 tonearest flt-32 0x1p-60f : 0x1p+0f : inexact-ok
+= exp2 towardzero flt-32 0x1p-60f : 0x1p+0f : inexact-ok
+= exp2 upward flt-32 0x1p-60f : 0x1.000002p+0f : inexact-ok
+= exp2 downward dbl-64 0x1p-60 : 0x1p+0 : inexact-ok
+= exp2 tonearest dbl-64 0x1p-60 : 0x1p+0 : inexact-ok
+= exp2 towardzero dbl-64 0x1p-60 : 0x1p+0 : inexact-ok
+= exp2 upward dbl-64 0x1p-60 : 0x1.0000000000001p+0 : inexact-ok
+= exp2 downward ldbl-96-intel 0x1p-60L : 0x1.000000000000000ap+0L : inexact-ok
+= exp2 tonearest ldbl-96-intel 0x1p-60L : 0x1.000000000000000cp+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel 0x1p-60L : 0x1.000000000000000ap+0L : inexact-ok
+= exp2 upward ldbl-96-intel 0x1p-60L : 0x1.000000000000000cp+0L : inexact-ok
+= exp2 downward ldbl-96-m68k 0x1p-60L : 0x1.000000000000000ap+0L : inexact-ok
+= exp2 tonearest ldbl-96-m68k 0x1p-60L : 0x1.000000000000000cp+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k 0x1p-60L : 0x1.000000000000000ap+0L : inexact-ok
+= exp2 upward ldbl-96-m68k 0x1p-60L : 0x1.000000000000000cp+0L : inexact-ok
+= exp2 downward ldbl-128 0x1p-60L : 0x1.000000000000000b17217f7d1cf7p+0L : inexact-ok
+= exp2 tonearest ldbl-128 0x1p-60L : 0x1.000000000000000b17217f7d1cf8p+0L : inexact-ok
+= exp2 towardzero ldbl-128 0x1p-60L : 0x1.000000000000000b17217f7d1cf7p+0L : inexact-ok
+= exp2 upward ldbl-128 0x1p-60L : 0x1.000000000000000b17217f7d1cf8p+0L : inexact-ok
+= exp2 downward ldbl-128ibm 0x1p-60L : 0x1.000000000000000b17217f7d1c8p+0L : inexact-ok
+= exp2 tonearest ldbl-128ibm 0x1p-60L : 0x1.000000000000000b17217f7d1dp+0L : inexact-ok
+= exp2 towardzero ldbl-128ibm 0x1p-60L : 0x1.000000000000000b17217f7d1c8p+0L : inexact-ok
+= exp2 upward ldbl-128ibm 0x1p-60L : 0x1.000000000000000b17217f7d1dp+0L : inexact-ok
+exp2 -0x1p-60
+= exp2 downward flt-32 -0x1p-60f : 0xf.fffffp-4f : inexact-ok
+= exp2 tonearest flt-32 -0x1p-60f : 0x1p+0f : inexact-ok
+= exp2 towardzero flt-32 -0x1p-60f : 0xf.fffffp-4f : inexact-ok
+= exp2 upward flt-32 -0x1p-60f : 0x1p+0f : inexact-ok
+= exp2 downward dbl-64 -0x1p-60 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp2 tonearest dbl-64 -0x1p-60 : 0x1p+0 : inexact-ok
+= exp2 towardzero dbl-64 -0x1p-60 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp2 upward dbl-64 -0x1p-60 : 0x1p+0 : inexact-ok
+= exp2 downward ldbl-96-intel -0x1p-60L : 0xf.ffffffffffffff4p-4L : inexact-ok
+= exp2 tonearest ldbl-96-intel -0x1p-60L : 0xf.ffffffffffffff5p-4L : inexact-ok
+= exp2 towardzero ldbl-96-intel -0x1p-60L : 0xf.ffffffffffffff4p-4L : inexact-ok
+= exp2 upward ldbl-96-intel -0x1p-60L : 0xf.ffffffffffffff5p-4L : inexact-ok
+= exp2 downward ldbl-96-m68k -0x1p-60L : 0xf.ffffffffffffff4p-4L : inexact-ok
+= exp2 tonearest ldbl-96-m68k -0x1p-60L : 0xf.ffffffffffffff5p-4L : inexact-ok
+= exp2 towardzero ldbl-96-m68k -0x1p-60L : 0xf.ffffffffffffff4p-4L : inexact-ok
+= exp2 upward ldbl-96-m68k -0x1p-60L : 0xf.ffffffffffffff5p-4L : inexact-ok
+= exp2 downward ldbl-128 -0x1p-60L : 0xf.ffffffffffffff4e8de8082e308p-4L : inexact-ok
+= exp2 tonearest ldbl-128 -0x1p-60L : 0xf.ffffffffffffff4e8de8082e3088p-4L : inexact-ok
+= exp2 towardzero ldbl-128 -0x1p-60L : 0xf.ffffffffffffff4e8de8082e308p-4L : inexact-ok
+= exp2 upward ldbl-128 -0x1p-60L : 0xf.ffffffffffffff4e8de8082e3088p-4L : inexact-ok
+= exp2 downward ldbl-128ibm -0x1p-60L : 0xf.ffffffffffffff4e8de8082e3p-4L : inexact-ok
+= exp2 tonearest ldbl-128ibm -0x1p-60L : 0xf.ffffffffffffff4e8de8082e3p-4L : inexact-ok
+= exp2 towardzero ldbl-128ibm -0x1p-60L : 0xf.ffffffffffffff4e8de8082e3p-4L : inexact-ok
+= exp2 upward ldbl-128ibm -0x1p-60L : 0xf.ffffffffffffff4e8de8082e34p-4L : inexact-ok
+exp2 0x1p-100
+= exp2 downward flt-32 0x1p-100f : 0x1p+0f : inexact-ok
+= exp2 tonearest flt-32 0x1p-100f : 0x1p+0f : inexact-ok
+= exp2 towardzero flt-32 0x1p-100f : 0x1p+0f : inexact-ok
+= exp2 upward flt-32 0x1p-100f : 0x1.000002p+0f : inexact-ok
+= exp2 downward dbl-64 0x1p-100 : 0x1p+0 : inexact-ok
+= exp2 tonearest dbl-64 0x1p-100 : 0x1p+0 : inexact-ok
+= exp2 towardzero dbl-64 0x1p-100 : 0x1p+0 : inexact-ok
+= exp2 upward dbl-64 0x1p-100 : 0x1.0000000000001p+0 : inexact-ok
+= exp2 downward ldbl-96-intel 0x1p-100L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-intel 0x1p-100L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel 0x1p-100L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-intel 0x1p-100L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k 0x1p-100L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-m68k 0x1p-100L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k 0x1p-100L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-m68k 0x1p-100L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-128 0x1p-100L : 0x1.0000000000000000000000000b17p+0L : inexact-ok
+= exp2 tonearest ldbl-128 0x1p-100L : 0x1.0000000000000000000000000b17p+0L : inexact-ok
+= exp2 towardzero ldbl-128 0x1p-100L : 0x1.0000000000000000000000000b17p+0L : inexact-ok
+= exp2 upward ldbl-128 0x1p-100L : 0x1.0000000000000000000000000b18p+0L : inexact-ok
+= exp2 downward ldbl-128ibm 0x1p-100L : 0x1.0000000000000000000000000bp+0L : inexact-ok
+= exp2 tonearest ldbl-128ibm 0x1p-100L : 0x1.0000000000000000000000000bp+0L : inexact-ok
+= exp2 towardzero ldbl-128ibm 0x1p-100L : 0x1.0000000000000000000000000bp+0L : inexact-ok
+= exp2 upward ldbl-128ibm 0x1p-100L : 0x1.0000000000000000000000000b8p+0L : inexact-ok
+exp2 -0x1p-100
+= exp2 downward flt-32 -0x1p-100f : 0xf.fffffp-4f : inexact-ok
+= exp2 tonearest flt-32 -0x1p-100f : 0x1p+0f : inexact-ok
+= exp2 towardzero flt-32 -0x1p-100f : 0xf.fffffp-4f : inexact-ok
+= exp2 upward flt-32 -0x1p-100f : 0x1p+0f : inexact-ok
+= exp2 downward dbl-64 -0x1p-100 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp2 tonearest dbl-64 -0x1p-100 : 0x1p+0 : inexact-ok
+= exp2 towardzero dbl-64 -0x1p-100 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp2 upward dbl-64 -0x1p-100 : 0x1p+0 : inexact-ok
+= exp2 downward ldbl-96-intel -0x1p-100L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-intel -0x1p-100L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel -0x1p-100L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-intel -0x1p-100L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k -0x1p-100L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-m68k -0x1p-100L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k -0x1p-100L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-m68k -0x1p-100L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-128 -0x1p-100L : 0xf.ffffffffffffffffffffffff4e88p-4L : inexact-ok
+= exp2 tonearest ldbl-128 -0x1p-100L : 0xf.ffffffffffffffffffffffff4e9p-4L : inexact-ok
+= exp2 towardzero ldbl-128 -0x1p-100L : 0xf.ffffffffffffffffffffffff4e88p-4L : inexact-ok
+= exp2 upward ldbl-128 -0x1p-100L : 0xf.ffffffffffffffffffffffff4e9p-4L : inexact-ok
+= exp2 downward ldbl-128ibm -0x1p-100L : 0xf.ffffffffffffffffffffffff4cp-4L : inexact-ok
+= exp2 tonearest ldbl-128ibm -0x1p-100L : 0xf.ffffffffffffffffffffffff5p-4L : inexact-ok
+= exp2 towardzero ldbl-128ibm -0x1p-100L : 0xf.ffffffffffffffffffffffff4cp-4L : inexact-ok
+= exp2 upward ldbl-128ibm -0x1p-100L : 0xf.ffffffffffffffffffffffff5p-4L : inexact-ok
+exp2 min
+= exp2 downward flt-32 0x4p-128f : 0x1p+0f : inexact-ok
+= exp2 tonearest flt-32 0x4p-128f : 0x1p+0f : inexact-ok
+= exp2 towardzero flt-32 0x4p-128f : 0x1p+0f : inexact-ok
+= exp2 upward flt-32 0x4p-128f : 0x1.000002p+0f : inexact-ok
+= exp2 downward dbl-64 0x4p-128 : 0x1p+0 : inexact-ok
+= exp2 tonearest dbl-64 0x4p-128 : 0x1p+0 : inexact-ok
+= exp2 towardzero dbl-64 0x4p-128 : 0x1p+0 : inexact-ok
+= exp2 upward dbl-64 0x4p-128 : 0x1.0000000000001p+0 : inexact-ok
+= exp2 downward ldbl-96-intel 0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-intel 0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel 0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-intel 0x4p-128L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k 0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-m68k 0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k 0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-m68k 0x4p-128L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-128 0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-128 0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-128 0x4p-128L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp2 downward ldbl-128ibm 0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-128ibm 0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128ibm 0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-128ibm 0x4p-128L : 0x1.000000000000000000000000008p+0L : inexact-ok
+= exp2 downward dbl-64 0x4p-1024 : 0x1p+0 : inexact-ok
+= exp2 tonearest dbl-64 0x4p-1024 : 0x1p+0 : inexact-ok
+= exp2 towardzero dbl-64 0x4p-1024 : 0x1p+0 : inexact-ok
+= exp2 upward dbl-64 0x4p-1024 : 0x1.0000000000001p+0 : inexact-ok
+= exp2 downward ldbl-96-intel 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-intel 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-intel 0x4p-1024L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-m68k 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-m68k 0x4p-1024L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-128 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-128 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-128 0x4p-1024L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp2 downward ldbl-128ibm 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-128ibm 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128ibm 0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-128ibm 0x4p-1024L : 0x1.000000000000000000000000008p+0L : inexact-ok
+= exp2 downward ldbl-96-intel 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-intel 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-intel 0x4p-16384L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-m68k 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-m68k 0x4p-16384L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-128 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-128 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 0x4p-16384L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-128 0x4p-16384L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp2 downward ldbl-96-intel 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-intel 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-intel 0x2p-16384L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-m68k 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-m68k 0x2p-16384L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-128 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-128 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 0x2p-16384L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-128 0x2p-16384L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp2 downward dbl-64 0x8p-972 : 0x1p+0 : inexact-ok
+= exp2 tonearest dbl-64 0x8p-972 : 0x1p+0 : inexact-ok
+= exp2 towardzero dbl-64 0x8p-972 : 0x1p+0 : inexact-ok
+= exp2 upward dbl-64 0x8p-972 : 0x1.0000000000001p+0 : inexact-ok
+= exp2 downward ldbl-96-intel 0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-intel 0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel 0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-intel 0x8p-972L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k 0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-m68k 0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k 0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-m68k 0x8p-972L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-128 0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-128 0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-128 0x8p-972L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp2 downward ldbl-128ibm 0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-128ibm 0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128ibm 0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-128ibm 0x8p-972L : 0x1.000000000000000000000000008p+0L : inexact-ok
+exp2 -min
+= exp2 downward flt-32 -0x4p-128f : 0xf.fffffp-4f : inexact-ok
+= exp2 tonearest flt-32 -0x4p-128f : 0x1p+0f : inexact-ok
+= exp2 towardzero flt-32 -0x4p-128f : 0xf.fffffp-4f : inexact-ok
+= exp2 upward flt-32 -0x4p-128f : 0x1p+0f : inexact-ok
+= exp2 downward dbl-64 -0x4p-128 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp2 tonearest dbl-64 -0x4p-128 : 0x1p+0 : inexact-ok
+= exp2 towardzero dbl-64 -0x4p-128 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp2 upward dbl-64 -0x4p-128 : 0x1p+0 : inexact-ok
+= exp2 downward ldbl-96-intel -0x4p-128L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-intel -0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel -0x4p-128L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-intel -0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k -0x4p-128L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-m68k -0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k -0x4p-128L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-m68k -0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-128 -0x4p-128L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 tonearest ldbl-128 -0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 -0x4p-128L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 upward ldbl-128 -0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-128ibm -0x4p-128L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp2 tonearest ldbl-128ibm -0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128ibm -0x4p-128L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp2 upward ldbl-128ibm -0x4p-128L : 0x1p+0L : inexact-ok
+= exp2 downward dbl-64 -0x4p-1024 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp2 tonearest dbl-64 -0x4p-1024 : 0x1p+0 : inexact-ok
+= exp2 towardzero dbl-64 -0x4p-1024 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp2 upward dbl-64 -0x4p-1024 : 0x1p+0 : inexact-ok
+= exp2 downward ldbl-96-intel -0x4p-1024L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-intel -0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel -0x4p-1024L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-intel -0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k -0x4p-1024L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-m68k -0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k -0x4p-1024L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-m68k -0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-128 -0x4p-1024L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 tonearest ldbl-128 -0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 -0x4p-1024L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 upward ldbl-128 -0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-128ibm -0x4p-1024L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp2 tonearest ldbl-128ibm -0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128ibm -0x4p-1024L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp2 upward ldbl-128ibm -0x4p-1024L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-96-intel -0x4p-16384L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-intel -0x4p-16384L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel -0x4p-16384L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-intel -0x4p-16384L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k -0x4p-16384L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-m68k -0x4p-16384L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k -0x4p-16384L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-m68k -0x4p-16384L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-128 -0x4p-16384L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 tonearest ldbl-128 -0x4p-16384L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 -0x4p-16384L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 upward ldbl-128 -0x4p-16384L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-96-intel -0x2p-16384L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-intel -0x2p-16384L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel -0x2p-16384L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-intel -0x2p-16384L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k -0x2p-16384L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-m68k -0x2p-16384L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k -0x2p-16384L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-m68k -0x2p-16384L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-128 -0x2p-16384L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 tonearest ldbl-128 -0x2p-16384L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 -0x2p-16384L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 upward ldbl-128 -0x2p-16384L : 0x1p+0L : inexact-ok
+= exp2 downward dbl-64 -0x8p-972 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp2 tonearest dbl-64 -0x8p-972 : 0x1p+0 : inexact-ok
+= exp2 towardzero dbl-64 -0x8p-972 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp2 upward dbl-64 -0x8p-972 : 0x1p+0 : inexact-ok
+= exp2 downward ldbl-96-intel -0x8p-972L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-intel -0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel -0x8p-972L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-intel -0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k -0x8p-972L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-m68k -0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k -0x8p-972L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-m68k -0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-128 -0x8p-972L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 tonearest ldbl-128 -0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 -0x8p-972L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 upward ldbl-128 -0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-128ibm -0x8p-972L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp2 tonearest ldbl-128ibm -0x8p-972L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128ibm -0x8p-972L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp2 upward ldbl-128ibm -0x8p-972L : 0x1p+0L : inexact-ok
+exp2 min_subnorm
+= exp2 downward flt-32 0x8p-152f : 0x1p+0f : inexact-ok
+= exp2 tonearest flt-32 0x8p-152f : 0x1p+0f : inexact-ok
+= exp2 towardzero flt-32 0x8p-152f : 0x1p+0f : inexact-ok
+= exp2 upward flt-32 0x8p-152f : 0x1.000002p+0f : inexact-ok
+= exp2 downward dbl-64 0x8p-152 : 0x1p+0 : inexact-ok
+= exp2 tonearest dbl-64 0x8p-152 : 0x1p+0 : inexact-ok
+= exp2 towardzero dbl-64 0x8p-152 : 0x1p+0 : inexact-ok
+= exp2 upward dbl-64 0x8p-152 : 0x1.0000000000001p+0 : inexact-ok
+= exp2 downward ldbl-96-intel 0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-intel 0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel 0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-intel 0x8p-152L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k 0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-m68k 0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k 0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-m68k 0x8p-152L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-128 0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-128 0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-128 0x8p-152L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp2 downward ldbl-128ibm 0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-128ibm 0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128ibm 0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-128ibm 0x8p-152L : 0x1.000000000000000000000000008p+0L : inexact-ok
+= exp2 downward dbl-64 0x4p-1076 : 0x1p+0 : inexact-ok
+= exp2 tonearest dbl-64 0x4p-1076 : 0x1p+0 : inexact-ok
+= exp2 towardzero dbl-64 0x4p-1076 : 0x1p+0 : inexact-ok
+= exp2 upward dbl-64 0x4p-1076 : 0x1.0000000000001p+0 : inexact-ok
+= exp2 downward ldbl-96-intel 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-intel 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-intel 0x4p-1076L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-m68k 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-m68k 0x4p-1076L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-128 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-128 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-128 0x4p-1076L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp2 downward ldbl-128ibm 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-128ibm 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128ibm 0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-128ibm 0x4p-1076L : 0x1.000000000000000000000000008p+0L : inexact-ok
+= exp2 downward ldbl-96-intel 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-intel 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-intel 0x8p-16448L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-m68k 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-m68k 0x8p-16448L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-128 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-128 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 0x8p-16448L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-128 0x8p-16448L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k 0x4p-16448L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-96-m68k 0x4p-16448L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k 0x4p-16448L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-96-m68k 0x4p-16448L : 0x1.0000000000000002p+0L : inexact-ok
+= exp2 downward ldbl-128 0x4p-16448L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-128 0x4p-16448L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 0x4p-16448L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-128 0x4p-16448L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+= exp2 downward ldbl-128 0x4p-16496L : 0x1p+0L : inexact-ok
+= exp2 tonearest ldbl-128 0x4p-16496L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 0x4p-16496L : 0x1p+0L : inexact-ok
+= exp2 upward ldbl-128 0x4p-16496L : 0x1.0000000000000000000000000001p+0L : inexact-ok
+exp2 -min_subnorm
+= exp2 downward flt-32 -0x8p-152f : 0xf.fffffp-4f : inexact-ok
+= exp2 tonearest flt-32 -0x8p-152f : 0x1p+0f : inexact-ok
+= exp2 towardzero flt-32 -0x8p-152f : 0xf.fffffp-4f : inexact-ok
+= exp2 upward flt-32 -0x8p-152f : 0x1p+0f : inexact-ok
+= exp2 downward dbl-64 -0x8p-152 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp2 tonearest dbl-64 -0x8p-152 : 0x1p+0 : inexact-ok
+= exp2 towardzero dbl-64 -0x8p-152 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp2 upward dbl-64 -0x8p-152 : 0x1p+0 : inexact-ok
+= exp2 downward ldbl-96-intel -0x8p-152L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-intel -0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel -0x8p-152L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-intel -0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k -0x8p-152L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-m68k -0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k -0x8p-152L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-m68k -0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-128 -0x8p-152L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 tonearest ldbl-128 -0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 -0x8p-152L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 upward ldbl-128 -0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-128ibm -0x8p-152L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp2 tonearest ldbl-128ibm -0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128ibm -0x8p-152L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp2 upward ldbl-128ibm -0x8p-152L : 0x1p+0L : inexact-ok
+= exp2 downward dbl-64 -0x4p-1076 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp2 tonearest dbl-64 -0x4p-1076 : 0x1p+0 : inexact-ok
+= exp2 towardzero dbl-64 -0x4p-1076 : 0xf.ffffffffffff8p-4 : inexact-ok
+= exp2 upward dbl-64 -0x4p-1076 : 0x1p+0 : inexact-ok
+= exp2 downward ldbl-96-intel -0x4p-1076L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-intel -0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel -0x4p-1076L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-intel -0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k -0x4p-1076L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-m68k -0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k -0x4p-1076L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-m68k -0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-128 -0x4p-1076L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 tonearest ldbl-128 -0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 -0x4p-1076L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 upward ldbl-128 -0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-128ibm -0x4p-1076L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp2 tonearest ldbl-128ibm -0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128ibm -0x4p-1076L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= exp2 upward ldbl-128ibm -0x4p-1076L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-96-intel -0x8p-16448L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-intel -0x8p-16448L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-intel -0x8p-16448L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-intel -0x8p-16448L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k -0x8p-16448L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-m68k -0x8p-16448L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k -0x8p-16448L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-m68k -0x8p-16448L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-128 -0x8p-16448L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 tonearest ldbl-128 -0x8p-16448L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 -0x8p-16448L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 upward ldbl-128 -0x8p-16448L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-96-m68k -0x4p-16448L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 tonearest ldbl-96-m68k -0x4p-16448L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-96-m68k -0x4p-16448L : 0xf.fffffffffffffffp-4L : inexact-ok
+= exp2 upward ldbl-96-m68k -0x4p-16448L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-128 -0x4p-16448L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 tonearest ldbl-128 -0x4p-16448L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 -0x4p-16448L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 upward ldbl-128 -0x4p-16448L : 0x1p+0L : inexact-ok
+= exp2 downward ldbl-128 -0x4p-16496L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 tonearest ldbl-128 -0x4p-16496L : 0x1p+0L : inexact-ok
+= exp2 towardzero ldbl-128 -0x4p-16496L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= exp2 upward ldbl-128 -0x4p-16496L : 0x1p+0L : inexact-ok
 expm1 0
 = expm1 downward flt-32 0x0p+0f : 0x0p+0f : inexact-ok
 = expm1 tonearest flt-32 0x0p+0f : 0x0p+0f : inexact-ok
diff --git a/math/e_exp2l.c b/math/e_exp2l.c
index bb7feef..9eb7baf 100644
--- a/math/e_exp2l.c
+++ b/math/e_exp2l.c
@@ -20,6 +20,13 @@
 #include <math_private.h>
 #include <float.h>
 
+/* To avoid spurious underflows, use this definition to treat IBM long
+   double as approximating an IEEE-style format.  */
+#if LDBL_MANT_DIG == 106
+# undef LDBL_EPSILON
+# define LDBL_EPSILON 0x1p-106L
+#endif
+
 long double
 __ieee754_exp2l (long double x)
 {
@@ -31,6 +38,8 @@ __ieee754_exp2l (long double x)
 	{
 	  int intx = (int) x;
 	  long double fractx = x - intx;
+	  if (fabsl (fractx) < LDBL_EPSILON / 4.0L)
+	    return __scalbnl (1.0L + fractx, intx);
 	  return __scalbnl (__ieee754_expl (M_LN2l * fractx), intx);
 	}
       else
diff --git a/sysdeps/i386/fpu/e_exp2l.S b/sysdeps/i386/fpu/e_exp2l.S
index 203dd00..2bf9a25 100644
--- a/sysdeps/i386/fpu/e_exp2l.S
+++ b/sysdeps/i386/fpu/e_exp2l.S
@@ -18,7 +18,15 @@ ENTRY(__ieee754_exp2l)
 	andb	%ah, %dh
 	cmpb	$0x05, %dh
 	je	1f			/* Is +-Inf, jump.  */
-	fld	%st
+	movzwl	4+8(%esp), %eax
+	andl	$0x7fff, %eax
+	cmpl	$0x3fbe, %eax
+	jge	3f
+	/* Argument's exponent below -65, result rounds to 1.  */
+	fld1
+	faddp
+	ret
+3:	fld	%st
 	frndint				/* int(x) */
 	fsubr	%st,%st(1)		/* fract(x) */
 	fxch
diff --git a/sysdeps/ieee754/dbl-64/e_exp2.c b/sysdeps/ieee754/dbl-64/e_exp2.c
index 3666c6a..f964a5a 100644
--- a/sysdeps/ieee754/dbl-64/e_exp2.c
+++ b/sysdeps/ieee754/dbl-64/e_exp2.c
@@ -61,6 +61,9 @@ __ieee754_exp2 (double x)
       double rx, x22, result;
       union ieee754_double ex2_u, scale_u;
 
+      if (fabs (x) < DBL_EPSILON / 4.0)
+	return 1.0 + x;
+
       {
 	SET_RESTORE_ROUND_NOEX (FE_TONEAREST);
 
diff --git a/sysdeps/ieee754/flt-32/e_exp2f.c b/sysdeps/ieee754/flt-32/e_exp2f.c
index 01cd444..f3e3a8e 100644
--- a/sysdeps/ieee754/flt-32/e_exp2f.c
+++ b/sysdeps/ieee754/flt-32/e_exp2f.c
@@ -54,6 +54,9 @@ __ieee754_exp2f (float x)
       float rx, x22, result;
       union ieee754_float ex2_u, scale_u;
 
+      if (fabsf (x) < FLT_EPSILON / 4.0f)
+	return 1.0f + x;
+
       {
 	SET_RESTORE_ROUND_NOEXF (FE_TONEAREST);
 
diff --git a/sysdeps/x86_64/fpu/e_exp2l.S b/sysdeps/x86_64/fpu/e_exp2l.S
index 7abf425..7d42a93 100644
--- a/sysdeps/x86_64/fpu/e_exp2l.S
+++ b/sysdeps/x86_64/fpu/e_exp2l.S
@@ -19,7 +19,15 @@ ENTRY(__ieee754_exp2l)
 	andb	%ah, %dh
 	cmpb	$0x05, %dh
 	je	1f			/* Is +-Inf, jump.  */
-	fld	%st
+	movzwl	8+8(%rsp), %eax
+	andl	$0x7fff, %eax
+	cmpl	$0x3fbe, %eax
+	jge	3f
+	/* Argument's exponent below -65, result rounds to 1.  */
+	fld1
+	faddp
+	ret
+3:	fld	%st
 	frndint				/* int(x) */
 	fsubr	%st,%st(1)		/* fract(x) */
 	fxch

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                        |   15 +
 NEWS                             |    2 +-
 math/auto-libm-test-in           |   18 +
 math/auto-libm-test-out          |  666 ++++++++++++++++++++++++++++++++++++++
 math/e_exp2l.c                   |    9 +
 sysdeps/i386/fpu/e_exp2l.S       |   10 +-
 sysdeps/ieee754/dbl-64/e_exp2.c  |    3 +
 sysdeps/ieee754/flt-32/e_exp2f.c |    3 +
 sysdeps/x86_64/fpu/e_exp2l.S     |   10 +-
 9 files changed, 733 insertions(+), 3 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]