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.
This commit is contained in:
Joseph Myers 2015-02-12 19:02:45 +00:00
parent 98408b95b1
commit 03d95bd483
9 changed files with 733 additions and 3 deletions

View File

@ -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

2
NEWS
View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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);

View File

@ -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