From 03d95bd48319256bd29cfaece45919fc58bf56cc Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 12 Feb 2015 19:02:45 +0000 Subject: 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. --- math/auto-libm-test-in | 18 ++ math/auto-libm-test-out | 666 ++++++++++++++++++++++++++++++++++++++++++++++++ math/e_exp2l.c | 9 + 3 files changed, 693 insertions(+) (limited to 'math') diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in index ad43113fd1..6bcfd54e55 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 daa1468c03..7b569cf12a 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 bb7feefeff..9eb7bafadd 100644 --- a/math/e_exp2l.c +++ b/math/e_exp2l.c @@ -20,6 +20,13 @@ #include #include +/* 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 -- cgit 1.4.1