diff options
-rw-r--r-- | ChangeLog | 25 | ||||
-rw-r--r-- | NEWS | 8 | ||||
-rw-r--r-- | math/auto-libm-test-in | 23 | ||||
-rw-r--r-- | math/auto-libm-test-out | 575 | ||||
-rw-r--r-- | math/e_exp2l.c | 12 | ||||
-rw-r--r-- | sysdeps/i386/fpu/e_exp2.S | 34 | ||||
-rw-r--r-- | sysdeps/i386/fpu/e_exp2f.S | 34 | ||||
-rw-r--r-- | sysdeps/i386/fpu/e_exp2l.S | 29 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/e_exp2.c | 10 | ||||
-rw-r--r-- | sysdeps/ieee754/flt-32/e_exp2f.c | 10 | ||||
-rw-r--r-- | sysdeps/x86_64/fpu/e_exp2l.S | 25 |
11 files changed, 773 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog index 261f9440a6..3b372ccd53 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,28 @@ +2015-09-14 Joseph Myers <joseph@codesourcery.com> + + [BZ #16521] + [BZ #18875] + * math/e_exp2l.c (__ieee754_exp2l): Force underflow exception for + small results. + * sysdeps/i386/fpu/e_exp2.S (dbl_min): New object. + (MO): New macro. + (__ieee754_exp2): For small results, force underflow exception and + remove excess range and precision from return value. + * sysdeps/i386/fpu/e_exp2f.S (flt_min): New object. + (MO): New macro. + (__ieee754_exp2f): For small results, force underflow exception + and remove excess range and precision from return value. + * sysdeps/i386/fpu/e_exp2l.S (ldbl_min): New object. + (MO): New macro. + (__ieee754_exp2l): Force underflow exception for small results. + * 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 (ldbl_min): New object. + (MO): New macro. + (__ieee754_exp2l): Force underflow exception for small results. + * math/auto-libm-test-in: Add more tests or exp2. + * math/auto-libm-test-out: Regenerated. + 2015-09-14 Carlos O'Donell <carlos@redhat.com> * malloc/malloc.c (systrim): Use ALIGN_DOWN. diff --git a/NEWS b/NEWS index cf7fd5f211..0a37eddac7 100644 --- a/NEWS +++ b/NEWS @@ -10,10 +10,10 @@ Version 2.23 * The following bugs are resolved with this release: 2542, 2543, 2558, 2898, 14341, 14912, 15786, 16141, 16517, 16519, 16520, - 16734, 16973, 16985, 17787, 17905, 18084, 18086, 18240, 18265, 18370, - 18421, 18480, 18525, 18610, 18618, 18647, 18661, 18674, 18675, 18681, - 18757, 18778, 18781, 18787, 18789, 18790, 18795, 18796, 18820, 18823, - 18824, 18863, 18870, 18873, 18887, 18921, 18952. + 16521, 16734, 16973, 16985, 17787, 17905, 18084, 18086, 18240, 18265, + 18370, 18421, 18480, 18525, 18610, 18618, 18647, 18661, 18674, 18675, + 18681, 18757, 18778, 18781, 18787, 18789, 18790, 18795, 18796, 18820, + 18823, 18824, 18863, 18870, 18873, 18887, 18921, 18952. * The obsolete header <regexp.h> has been removed. Programs that require this header must be updated to use <regex.h> instead. diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in index 002a1fc852..15c91461e8 100644 --- a/math/auto-libm-test-in +++ b/math/auto-libm-test-in @@ -1497,6 +1497,29 @@ exp2 1023 exp2 -1074 exp2 16383 exp2 -16400 +exp2 -126.125 +exp2 -126.25 +exp2 -126.375 +exp2 -126.5 +exp2 -126.625 +exp2 -126.75 +exp2 -126.875 +exp2 -1022.125 +exp2 -1022.25 +exp2 -1022.375 +exp2 -1022.5 +exp2 -1022.625 +exp2 -1022.75 +exp2 -1022.875 +exp2 -0x3.fe4e8p+8 +exp2 -0x3.fe513p+8 +exp2 -16382.125 +exp2 -16382.25 +exp2 -16382.375 +exp2 -16382.5 +exp2 -16382.625 +exp2 -16382.75 +exp2 -16382.875 exp2 0x1p-10 exp2 -0x1p-10 exp2 0x1p-20 diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out index 42fa83eca3..c007f24247 100644 --- a/math/auto-libm-test-out +++ b/math/auto-libm-test-out @@ -117963,6 +117963,581 @@ 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 -126.125 += exp2 downward flt-32 -0x7.e2p+4f : 0x3.ab0318p-128f : inexact-ok underflow errno-erange-ok += exp2 tonearest flt-32 -0x7.e2p+4f : 0x3.ab0318p-128f : inexact-ok underflow errno-erange-ok += exp2 towardzero flt-32 -0x7.e2p+4f : 0x3.ab0318p-128f : inexact-ok underflow errno-erange-ok += exp2 upward flt-32 -0x7.e2p+4f : 0x3.ab032p-128f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x7.e2p+4 : 0x3.ab031b9f7490ep-128 : inexact-ok += exp2 tonearest dbl-64 -0x7.e2p+4 : 0x3.ab031b9f7490ep-128 : inexact-ok += exp2 towardzero dbl-64 -0x7.e2p+4 : 0x3.ab031b9f7490ep-128 : inexact-ok += exp2 upward dbl-64 -0x7.e2p+4 : 0x3.ab031b9f7491p-128 : inexact-ok += exp2 downward ldbl-96-intel -0x7.e2p+4L : 0x3.ab031b9f7490e4b8p-128L : inexact-ok += exp2 tonearest ldbl-96-intel -0x7.e2p+4L : 0x3.ab031b9f7490e4bcp-128L : inexact-ok += exp2 towardzero ldbl-96-intel -0x7.e2p+4L : 0x3.ab031b9f7490e4b8p-128L : inexact-ok += exp2 upward ldbl-96-intel -0x7.e2p+4L : 0x3.ab031b9f7490e4bcp-128L : inexact-ok += exp2 downward ldbl-96-m68k -0x7.e2p+4L : 0x3.ab031b9f7490e4b8p-128L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x7.e2p+4L : 0x3.ab031b9f7490e4bcp-128L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x7.e2p+4L : 0x3.ab031b9f7490e4b8p-128L : inexact-ok += exp2 upward ldbl-96-m68k -0x7.e2p+4L : 0x3.ab031b9f7490e4bcp-128L : inexact-ok += exp2 downward ldbl-128 -0x7.e2p+4L : 0x3.ab031b9f7490e4bb40b5d6cdc1b8p-128L : inexact-ok += exp2 tonearest ldbl-128 -0x7.e2p+4L : 0x3.ab031b9f7490e4bb40b5d6cdc1bap-128L : inexact-ok += exp2 towardzero ldbl-128 -0x7.e2p+4L : 0x3.ab031b9f7490e4bb40b5d6cdc1b8p-128L : inexact-ok += exp2 upward ldbl-128 -0x7.e2p+4L : 0x3.ab031b9f7490e4bb40b5d6cdc1bap-128L : inexact-ok += exp2 downward ldbl-128ibm -0x7.e2p+4L : 0x3.ab031b9f7490e4bb40b5d6cdc1p-128L : inexact-ok += exp2 tonearest ldbl-128ibm -0x7.e2p+4L : 0x3.ab031b9f7490e4bb40b5d6cdc2p-128L : inexact-ok += exp2 towardzero ldbl-128ibm -0x7.e2p+4L : 0x3.ab031b9f7490e4bb40b5d6cdc1p-128L : inexact-ok += exp2 upward ldbl-128ibm -0x7.e2p+4L : 0x3.ab031b9f7490e4bb40b5d6cdc2p-128L : inexact-ok +exp2 -126.25 += exp2 downward flt-32 -0x7.e4p+4f : 0x3.5d13fp-128f : inexact-ok underflow errno-erange-ok += exp2 tonearest flt-32 -0x7.e4p+4f : 0x3.5d13fp-128f : inexact-ok underflow errno-erange-ok += exp2 towardzero flt-32 -0x7.e4p+4f : 0x3.5d13fp-128f : inexact-ok underflow errno-erange-ok += exp2 upward flt-32 -0x7.e4p+4f : 0x3.5d13f8p-128f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x7.e4p+4 : 0x3.5d13f32b5a75ap-128 : inexact-ok += exp2 tonearest dbl-64 -0x7.e4p+4 : 0x3.5d13f32b5a75ap-128 : inexact-ok += exp2 towardzero dbl-64 -0x7.e4p+4 : 0x3.5d13f32b5a75ap-128 : inexact-ok += exp2 upward dbl-64 -0x7.e4p+4 : 0x3.5d13f32b5a75cp-128 : inexact-ok += exp2 downward ldbl-96-intel -0x7.e4p+4L : 0x3.5d13f32b5a75abdp-128L : inexact-ok += exp2 tonearest ldbl-96-intel -0x7.e4p+4L : 0x3.5d13f32b5a75abdp-128L : inexact-ok += exp2 towardzero ldbl-96-intel -0x7.e4p+4L : 0x3.5d13f32b5a75abdp-128L : inexact-ok += exp2 upward ldbl-96-intel -0x7.e4p+4L : 0x3.5d13f32b5a75abd4p-128L : inexact-ok += exp2 downward ldbl-96-m68k -0x7.e4p+4L : 0x3.5d13f32b5a75abdp-128L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x7.e4p+4L : 0x3.5d13f32b5a75abdp-128L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x7.e4p+4L : 0x3.5d13f32b5a75abdp-128L : inexact-ok += exp2 upward ldbl-96-m68k -0x7.e4p+4L : 0x3.5d13f32b5a75abd4p-128L : inexact-ok += exp2 downward ldbl-128 -0x7.e4p+4L : 0x3.5d13f32b5a75abd0e69a2ee640b4p-128L : inexact-ok += exp2 tonearest ldbl-128 -0x7.e4p+4L : 0x3.5d13f32b5a75abd0e69a2ee640b4p-128L : inexact-ok += exp2 towardzero ldbl-128 -0x7.e4p+4L : 0x3.5d13f32b5a75abd0e69a2ee640b4p-128L : inexact-ok += exp2 upward ldbl-128 -0x7.e4p+4L : 0x3.5d13f32b5a75abd0e69a2ee640b6p-128L : inexact-ok += exp2 downward ldbl-128ibm -0x7.e4p+4L : 0x3.5d13f32b5a75abd0e69a2ee64p-128L : inexact-ok += exp2 tonearest ldbl-128ibm -0x7.e4p+4L : 0x3.5d13f32b5a75abd0e69a2ee641p-128L : inexact-ok += exp2 towardzero ldbl-128ibm -0x7.e4p+4L : 0x3.5d13f32b5a75abd0e69a2ee64p-128L : inexact-ok += exp2 upward ldbl-128ibm -0x7.e4p+4L : 0x3.5d13f32b5a75abd0e69a2ee641p-128L : inexact-ok +exp2 -126.375 += exp2 downward flt-32 -0x7.e6p+4f : 0x3.159ca8p-128f : inexact-ok underflow errno-erange-ok += exp2 tonearest flt-32 -0x7.e6p+4f : 0x3.159ca8p-128f : inexact-ok underflow errno-erange-ok += exp2 towardzero flt-32 -0x7.e6p+4f : 0x3.159ca8p-128f : inexact-ok underflow errno-erange-ok += exp2 upward flt-32 -0x7.e6p+4f : 0x3.159cbp-128f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x7.e6p+4 : 0x3.159ca845541b6p-128 : inexact-ok += exp2 tonearest dbl-64 -0x7.e6p+4 : 0x3.159ca845541b6p-128 : inexact-ok += exp2 towardzero dbl-64 -0x7.e6p+4 : 0x3.159ca845541b6p-128 : inexact-ok += exp2 upward dbl-64 -0x7.e6p+4 : 0x3.159ca845541b8p-128 : inexact-ok += exp2 downward ldbl-96-intel -0x7.e6p+4L : 0x3.159ca845541b6b74p-128L : inexact-ok += exp2 tonearest ldbl-96-intel -0x7.e6p+4L : 0x3.159ca845541b6b74p-128L : inexact-ok += exp2 towardzero ldbl-96-intel -0x7.e6p+4L : 0x3.159ca845541b6b74p-128L : inexact-ok += exp2 upward ldbl-96-intel -0x7.e6p+4L : 0x3.159ca845541b6b78p-128L : inexact-ok += exp2 downward ldbl-96-m68k -0x7.e6p+4L : 0x3.159ca845541b6b74p-128L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x7.e6p+4L : 0x3.159ca845541b6b74p-128L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x7.e6p+4L : 0x3.159ca845541b6b74p-128L : inexact-ok += exp2 upward ldbl-96-m68k -0x7.e6p+4L : 0x3.159ca845541b6b78p-128L : inexact-ok += exp2 downward ldbl-128 -0x7.e6p+4L : 0x3.159ca845541b6b74f8ab43259376p-128L : inexact-ok += exp2 tonearest ldbl-128 -0x7.e6p+4L : 0x3.159ca845541b6b74f8ab43259376p-128L : inexact-ok += exp2 towardzero ldbl-128 -0x7.e6p+4L : 0x3.159ca845541b6b74f8ab43259376p-128L : inexact-ok += exp2 upward ldbl-128 -0x7.e6p+4L : 0x3.159ca845541b6b74f8ab43259378p-128L : inexact-ok += exp2 downward ldbl-128ibm -0x7.e6p+4L : 0x3.159ca845541b6b74f8ab432593p-128L : inexact-ok += exp2 tonearest ldbl-128ibm -0x7.e6p+4L : 0x3.159ca845541b6b74f8ab432593p-128L : inexact-ok += exp2 towardzero ldbl-128ibm -0x7.e6p+4L : 0x3.159ca845541b6b74f8ab432593p-128L : inexact-ok += exp2 upward ldbl-128ibm -0x7.e6p+4L : 0x3.159ca845541b6b74f8ab432594p-128L : inexact-ok +exp2 -126.5 += exp2 downward flt-32 -0x7.e8p+4f : 0x2.d413c8p-128f : inexact-ok underflow errno-erange-ok += exp2 tonearest flt-32 -0x7.e8p+4f : 0x2.d413dp-128f : inexact-ok underflow errno-erange-ok += exp2 towardzero flt-32 -0x7.e8p+4f : 0x2.d413c8p-128f : inexact-ok underflow errno-erange-ok += exp2 upward flt-32 -0x7.e8p+4f : 0x2.d413dp-128f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x7.e8p+4 : 0x2.d413cccfe7798p-128 : inexact-ok += exp2 tonearest dbl-64 -0x7.e8p+4 : 0x2.d413cccfe779ap-128 : inexact-ok += exp2 towardzero dbl-64 -0x7.e8p+4 : 0x2.d413cccfe7798p-128 : inexact-ok += exp2 upward dbl-64 -0x7.e8p+4 : 0x2.d413cccfe779ap-128 : inexact-ok += exp2 downward ldbl-96-intel -0x7.e8p+4L : 0x2.d413cccfe779921p-128L : inexact-ok += exp2 tonearest ldbl-96-intel -0x7.e8p+4L : 0x2.d413cccfe779921p-128L : inexact-ok += exp2 towardzero ldbl-96-intel -0x7.e8p+4L : 0x2.d413cccfe779921p-128L : inexact-ok += exp2 upward ldbl-96-intel -0x7.e8p+4L : 0x2.d413cccfe7799214p-128L : inexact-ok += exp2 downward ldbl-96-m68k -0x7.e8p+4L : 0x2.d413cccfe779921p-128L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x7.e8p+4L : 0x2.d413cccfe779921p-128L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x7.e8p+4L : 0x2.d413cccfe779921p-128L : inexact-ok += exp2 upward ldbl-96-m68k -0x7.e8p+4L : 0x2.d413cccfe7799214p-128L : inexact-ok += exp2 downward ldbl-128 -0x7.e8p+4L : 0x2.d413cccfe779921165f626cdd52ap-128L : inexact-ok += exp2 tonearest ldbl-128 -0x7.e8p+4L : 0x2.d413cccfe779921165f626cdd52ap-128L : inexact-ok += exp2 towardzero ldbl-128 -0x7.e8p+4L : 0x2.d413cccfe779921165f626cdd52ap-128L : inexact-ok += exp2 upward ldbl-128 -0x7.e8p+4L : 0x2.d413cccfe779921165f626cdd52cp-128L : inexact-ok += exp2 downward ldbl-128ibm -0x7.e8p+4L : 0x2.d413cccfe779921165f626cdd5p-128L : inexact-ok += exp2 tonearest ldbl-128ibm -0x7.e8p+4L : 0x2.d413cccfe779921165f626cdd5p-128L : inexact-ok += exp2 towardzero ldbl-128ibm -0x7.e8p+4L : 0x2.d413cccfe779921165f626cdd5p-128L : inexact-ok += exp2 upward ldbl-128ibm -0x7.e8p+4L : 0x2.d413cccfe779921165f626cdd6p-128L : inexact-ok +exp2 -126.625 += exp2 downward flt-32 -0x7.eap+4f : 0x2.97fb58p-128f : inexact-ok underflow errno-erange-ok += exp2 tonearest flt-32 -0x7.eap+4f : 0x2.97fb58p-128f : inexact-ok underflow errno-erange-ok += exp2 towardzero flt-32 -0x7.eap+4f : 0x2.97fb58p-128f : inexact-ok underflow errno-erange-ok += exp2 upward flt-32 -0x7.eap+4f : 0x2.97fb6p-128f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x7.eap+4 : 0x2.97fb5aa6c544ep-128 : inexact-ok += exp2 tonearest dbl-64 -0x7.eap+4 : 0x2.97fb5aa6c544ep-128 : inexact-ok += exp2 towardzero dbl-64 -0x7.eap+4 : 0x2.97fb5aa6c544ep-128 : inexact-ok += exp2 upward dbl-64 -0x7.eap+4 : 0x2.97fb5aa6c545p-128 : inexact-ok += exp2 downward ldbl-96-intel -0x7.eap+4L : 0x2.97fb5aa6c544e3a8p-128L : inexact-ok += exp2 tonearest ldbl-96-intel -0x7.eap+4L : 0x2.97fb5aa6c544e3a8p-128L : inexact-ok += exp2 towardzero ldbl-96-intel -0x7.eap+4L : 0x2.97fb5aa6c544e3a8p-128L : inexact-ok += exp2 upward ldbl-96-intel -0x7.eap+4L : 0x2.97fb5aa6c544e3acp-128L : inexact-ok += exp2 downward ldbl-96-m68k -0x7.eap+4L : 0x2.97fb5aa6c544e3a8p-128L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x7.eap+4L : 0x2.97fb5aa6c544e3a8p-128L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x7.eap+4L : 0x2.97fb5aa6c544e3a8p-128L : inexact-ok += exp2 upward ldbl-96-m68k -0x7.eap+4L : 0x2.97fb5aa6c544e3acp-128L : inexact-ok += exp2 downward ldbl-128 -0x7.eap+4L : 0x2.97fb5aa6c544e3a872f5fd885c4p-128L : inexact-ok += exp2 tonearest ldbl-128 -0x7.eap+4L : 0x2.97fb5aa6c544e3a872f5fd885c42p-128L : inexact-ok += exp2 towardzero ldbl-128 -0x7.eap+4L : 0x2.97fb5aa6c544e3a872f5fd885c4p-128L : inexact-ok += exp2 upward ldbl-128 -0x7.eap+4L : 0x2.97fb5aa6c544e3a872f5fd885c42p-128L : inexact-ok += exp2 downward ldbl-128ibm -0x7.eap+4L : 0x2.97fb5aa6c544e3a872f5fd885cp-128L : inexact-ok += exp2 tonearest ldbl-128ibm -0x7.eap+4L : 0x2.97fb5aa6c544e3a872f5fd885cp-128L : inexact-ok += exp2 towardzero ldbl-128ibm -0x7.eap+4L : 0x2.97fb5aa6c544e3a872f5fd885cp-128L : inexact-ok += exp2 upward ldbl-128ibm -0x7.eap+4L : 0x2.97fb5aa6c544e3a872f5fd885dp-128L : inexact-ok +exp2 -126.75 += exp2 downward flt-32 -0x7.ecp+4f : 0x2.60dfcp-128f : inexact-ok underflow errno-erange-ok += exp2 tonearest flt-32 -0x7.ecp+4f : 0x2.60dfcp-128f : inexact-ok underflow errno-erange-ok += exp2 towardzero flt-32 -0x7.ecp+4f : 0x2.60dfcp-128f : inexact-ok underflow errno-erange-ok += exp2 upward flt-32 -0x7.ecp+4f : 0x2.60dfc8p-128f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x7.ecp+4 : 0x2.60dfc14636e2ap-128 : inexact-ok += exp2 tonearest dbl-64 -0x7.ecp+4 : 0x2.60dfc14636e2ap-128 : inexact-ok += exp2 towardzero dbl-64 -0x7.ecp+4 : 0x2.60dfc14636e2ap-128 : inexact-ok += exp2 upward dbl-64 -0x7.ecp+4 : 0x2.60dfc14636e2cp-128 : inexact-ok += exp2 downward ldbl-96-intel -0x7.ecp+4L : 0x2.60dfc14636e2a5bcp-128L : inexact-ok += exp2 tonearest ldbl-96-intel -0x7.ecp+4L : 0x2.60dfc14636e2a5bcp-128L : inexact-ok += exp2 towardzero ldbl-96-intel -0x7.ecp+4L : 0x2.60dfc14636e2a5bcp-128L : inexact-ok += exp2 upward ldbl-96-intel -0x7.ecp+4L : 0x2.60dfc14636e2a5cp-128L : inexact-ok += exp2 downward ldbl-96-m68k -0x7.ecp+4L : 0x2.60dfc14636e2a5bcp-128L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x7.ecp+4L : 0x2.60dfc14636e2a5bcp-128L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x7.ecp+4L : 0x2.60dfc14636e2a5bcp-128L : inexact-ok += exp2 upward ldbl-96-m68k -0x7.ecp+4L : 0x2.60dfc14636e2a5cp-128L : inexact-ok += exp2 downward ldbl-128 -0x7.ecp+4L : 0x2.60dfc14636e2a5bd1ab48c60b90ap-128L : inexact-ok += exp2 tonearest ldbl-128 -0x7.ecp+4L : 0x2.60dfc14636e2a5bd1ab48c60b90cp-128L : inexact-ok += exp2 towardzero ldbl-128 -0x7.ecp+4L : 0x2.60dfc14636e2a5bd1ab48c60b90ap-128L : inexact-ok += exp2 upward ldbl-128 -0x7.ecp+4L : 0x2.60dfc14636e2a5bd1ab48c60b90cp-128L : inexact-ok += exp2 downward ldbl-128ibm -0x7.ecp+4L : 0x2.60dfc14636e2a5bd1ab48c60b9p-128L : inexact-ok += exp2 tonearest ldbl-128ibm -0x7.ecp+4L : 0x2.60dfc14636e2a5bd1ab48c60b9p-128L : inexact-ok += exp2 towardzero ldbl-128ibm -0x7.ecp+4L : 0x2.60dfc14636e2a5bd1ab48c60b9p-128L : inexact-ok += exp2 upward ldbl-128ibm -0x7.ecp+4L : 0x2.60dfc14636e2a5bd1ab48c60bap-128L : inexact-ok +exp2 -126.875 += exp2 downward flt-32 -0x7.eep+4f : 0x2.2e57p-128f : inexact-ok underflow errno-erange-ok += exp2 tonearest flt-32 -0x7.eep+4f : 0x2.2e5708p-128f : inexact-ok underflow errno-erange-ok += exp2 towardzero flt-32 -0x7.eep+4f : 0x2.2e57p-128f : inexact-ok underflow errno-erange-ok += exp2 upward flt-32 -0x7.eep+4f : 0x2.2e5708p-128f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x7.eep+4 : 0x2.2e57078faa2f4p-128 : inexact-ok += exp2 tonearest dbl-64 -0x7.eep+4 : 0x2.2e57078faa2f6p-128 : inexact-ok += exp2 towardzero dbl-64 -0x7.eep+4 : 0x2.2e57078faa2f4p-128 : inexact-ok += exp2 upward dbl-64 -0x7.eep+4 : 0x2.2e57078faa2f6p-128 : inexact-ok += exp2 downward ldbl-96-intel -0x7.eep+4L : 0x2.2e57078faa2f5b98p-128L : inexact-ok += exp2 tonearest ldbl-96-intel -0x7.eep+4L : 0x2.2e57078faa2f5b9cp-128L : inexact-ok += exp2 towardzero ldbl-96-intel -0x7.eep+4L : 0x2.2e57078faa2f5b98p-128L : inexact-ok += exp2 upward ldbl-96-intel -0x7.eep+4L : 0x2.2e57078faa2f5b9cp-128L : inexact-ok += exp2 downward ldbl-96-m68k -0x7.eep+4L : 0x2.2e57078faa2f5b98p-128L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x7.eep+4L : 0x2.2e57078faa2f5b9cp-128L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x7.eep+4L : 0x2.2e57078faa2f5b98p-128L : inexact-ok += exp2 upward ldbl-96-m68k -0x7.eep+4L : 0x2.2e57078faa2f5b9cp-128L : inexact-ok += exp2 downward ldbl-128 -0x7.eep+4L : 0x2.2e57078faa2f5b9bef918a1d6294p-128L : inexact-ok += exp2 tonearest ldbl-128 -0x7.eep+4L : 0x2.2e57078faa2f5b9bef918a1d6294p-128L : inexact-ok += exp2 towardzero ldbl-128 -0x7.eep+4L : 0x2.2e57078faa2f5b9bef918a1d6294p-128L : inexact-ok += exp2 upward ldbl-128 -0x7.eep+4L : 0x2.2e57078faa2f5b9bef918a1d6296p-128L : inexact-ok += exp2 downward ldbl-128ibm -0x7.eep+4L : 0x2.2e57078faa2f5b9bef918a1d62p-128L : inexact-ok += exp2 tonearest ldbl-128ibm -0x7.eep+4L : 0x2.2e57078faa2f5b9bef918a1d63p-128L : inexact-ok += exp2 towardzero ldbl-128ibm -0x7.eep+4L : 0x2.2e57078faa2f5b9bef918a1d62p-128L : inexact-ok += exp2 upward ldbl-128ibm -0x7.eep+4L : 0x2.2e57078faa2f5b9bef918a1d63p-128L : inexact-ok +exp2 -1022.125 += exp2 downward flt-32 -0x3.fe2p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 tonearest flt-32 -0x3.fe2p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 towardzero flt-32 -0x3.fe2p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 upward flt-32 -0x3.fe2p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x3.fe2p+8 : 0x3.ab031b9f7490cp-1024 : inexact-ok underflow errno-erange-ok += exp2 tonearest dbl-64 -0x3.fe2p+8 : 0x3.ab031b9f7491p-1024 : inexact-ok underflow errno-erange-ok += exp2 towardzero dbl-64 -0x3.fe2p+8 : 0x3.ab031b9f7490cp-1024 : inexact-ok underflow errno-erange-ok += exp2 upward dbl-64 -0x3.fe2p+8 : 0x3.ab031b9f7491p-1024 : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-intel -0x3.fe2p+8L : 0x3.ab031b9f7490e4b8p-1024L : inexact-ok += exp2 tonearest ldbl-96-intel -0x3.fe2p+8L : 0x3.ab031b9f7490e4bcp-1024L : inexact-ok += exp2 towardzero ldbl-96-intel -0x3.fe2p+8L : 0x3.ab031b9f7490e4b8p-1024L : inexact-ok += exp2 upward ldbl-96-intel -0x3.fe2p+8L : 0x3.ab031b9f7490e4bcp-1024L : inexact-ok += exp2 downward ldbl-96-m68k -0x3.fe2p+8L : 0x3.ab031b9f7490e4b8p-1024L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x3.fe2p+8L : 0x3.ab031b9f7490e4bcp-1024L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x3.fe2p+8L : 0x3.ab031b9f7490e4b8p-1024L : inexact-ok += exp2 upward ldbl-96-m68k -0x3.fe2p+8L : 0x3.ab031b9f7490e4bcp-1024L : inexact-ok += exp2 downward ldbl-128 -0x3.fe2p+8L : 0x3.ab031b9f7490e4bb40b5d6cdc1b8p-1024L : inexact-ok += exp2 tonearest ldbl-128 -0x3.fe2p+8L : 0x3.ab031b9f7490e4bb40b5d6cdc1bap-1024L : inexact-ok += exp2 towardzero ldbl-128 -0x3.fe2p+8L : 0x3.ab031b9f7490e4bb40b5d6cdc1b8p-1024L : inexact-ok += exp2 upward ldbl-128 -0x3.fe2p+8L : 0x3.ab031b9f7490e4bb40b5d6cdc1bap-1024L : inexact-ok += exp2 downward ldbl-128ibm -0x3.fe2p+8L : 0x3.ab031b9f7490cp-1024L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-128ibm -0x3.fe2p+8L : 0x3.ab031b9f7491p-1024L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-128ibm -0x3.fe2p+8L : 0x3.ab031b9f7490cp-1024L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-128ibm -0x3.fe2p+8L : 0x3.ab031b9f7491p-1024L : inexact-ok underflow errno-erange-ok +exp2 -1022.25 += exp2 downward flt-32 -0x3.fe4p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 tonearest flt-32 -0x3.fe4p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 towardzero flt-32 -0x3.fe4p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 upward flt-32 -0x3.fe4p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x3.fe4p+8 : 0x3.5d13f32b5a758p-1024 : inexact-ok underflow errno-erange-ok += exp2 tonearest dbl-64 -0x3.fe4p+8 : 0x3.5d13f32b5a75cp-1024 : inexact-ok underflow errno-erange-ok += exp2 towardzero dbl-64 -0x3.fe4p+8 : 0x3.5d13f32b5a758p-1024 : inexact-ok underflow errno-erange-ok += exp2 upward dbl-64 -0x3.fe4p+8 : 0x3.5d13f32b5a75cp-1024 : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-intel -0x3.fe4p+8L : 0x3.5d13f32b5a75abdp-1024L : inexact-ok += exp2 tonearest ldbl-96-intel -0x3.fe4p+8L : 0x3.5d13f32b5a75abdp-1024L : inexact-ok += exp2 towardzero ldbl-96-intel -0x3.fe4p+8L : 0x3.5d13f32b5a75abdp-1024L : inexact-ok += exp2 upward ldbl-96-intel -0x3.fe4p+8L : 0x3.5d13f32b5a75abd4p-1024L : inexact-ok += exp2 downward ldbl-96-m68k -0x3.fe4p+8L : 0x3.5d13f32b5a75abdp-1024L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x3.fe4p+8L : 0x3.5d13f32b5a75abdp-1024L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x3.fe4p+8L : 0x3.5d13f32b5a75abdp-1024L : inexact-ok += exp2 upward ldbl-96-m68k -0x3.fe4p+8L : 0x3.5d13f32b5a75abd4p-1024L : inexact-ok += exp2 downward ldbl-128 -0x3.fe4p+8L : 0x3.5d13f32b5a75abd0e69a2ee640b4p-1024L : inexact-ok += exp2 tonearest ldbl-128 -0x3.fe4p+8L : 0x3.5d13f32b5a75abd0e69a2ee640b4p-1024L : inexact-ok += exp2 towardzero ldbl-128 -0x3.fe4p+8L : 0x3.5d13f32b5a75abd0e69a2ee640b4p-1024L : inexact-ok += exp2 upward ldbl-128 -0x3.fe4p+8L : 0x3.5d13f32b5a75abd0e69a2ee640b6p-1024L : inexact-ok += exp2 downward ldbl-128ibm -0x3.fe4p+8L : 0x3.5d13f32b5a758p-1024L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-128ibm -0x3.fe4p+8L : 0x3.5d13f32b5a75cp-1024L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-128ibm -0x3.fe4p+8L : 0x3.5d13f32b5a758p-1024L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-128ibm -0x3.fe4p+8L : 0x3.5d13f32b5a75cp-1024L : inexact-ok underflow errno-erange-ok +exp2 -1022.375 += exp2 downward flt-32 -0x3.fe6p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 tonearest flt-32 -0x3.fe6p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 towardzero flt-32 -0x3.fe6p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 upward flt-32 -0x3.fe6p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x3.fe6p+8 : 0x3.159ca845541b4p-1024 : inexact-ok underflow errno-erange-ok += exp2 tonearest dbl-64 -0x3.fe6p+8 : 0x3.159ca845541b8p-1024 : inexact-ok underflow errno-erange-ok += exp2 towardzero dbl-64 -0x3.fe6p+8 : 0x3.159ca845541b4p-1024 : inexact-ok underflow errno-erange-ok += exp2 upward dbl-64 -0x3.fe6p+8 : 0x3.159ca845541b8p-1024 : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-intel -0x3.fe6p+8L : 0x3.159ca845541b6b74p-1024L : inexact-ok += exp2 tonearest ldbl-96-intel -0x3.fe6p+8L : 0x3.159ca845541b6b74p-1024L : inexact-ok += exp2 towardzero ldbl-96-intel -0x3.fe6p+8L : 0x3.159ca845541b6b74p-1024L : inexact-ok += exp2 upward ldbl-96-intel -0x3.fe6p+8L : 0x3.159ca845541b6b78p-1024L : inexact-ok += exp2 downward ldbl-96-m68k -0x3.fe6p+8L : 0x3.159ca845541b6b74p-1024L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x3.fe6p+8L : 0x3.159ca845541b6b74p-1024L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x3.fe6p+8L : 0x3.159ca845541b6b74p-1024L : inexact-ok += exp2 upward ldbl-96-m68k -0x3.fe6p+8L : 0x3.159ca845541b6b78p-1024L : inexact-ok += exp2 downward ldbl-128 -0x3.fe6p+8L : 0x3.159ca845541b6b74f8ab43259376p-1024L : inexact-ok += exp2 tonearest ldbl-128 -0x3.fe6p+8L : 0x3.159ca845541b6b74f8ab43259376p-1024L : inexact-ok += exp2 towardzero ldbl-128 -0x3.fe6p+8L : 0x3.159ca845541b6b74f8ab43259376p-1024L : inexact-ok += exp2 upward ldbl-128 -0x3.fe6p+8L : 0x3.159ca845541b6b74f8ab43259378p-1024L : inexact-ok += exp2 downward ldbl-128ibm -0x3.fe6p+8L : 0x3.159ca845541b4p-1024L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-128ibm -0x3.fe6p+8L : 0x3.159ca845541b8p-1024L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-128ibm -0x3.fe6p+8L : 0x3.159ca845541b4p-1024L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-128ibm -0x3.fe6p+8L : 0x3.159ca845541b8p-1024L : inexact-ok underflow errno-erange-ok +exp2 -1022.5 += exp2 downward flt-32 -0x3.fe8p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 tonearest flt-32 -0x3.fe8p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 towardzero flt-32 -0x3.fe8p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 upward flt-32 -0x3.fe8p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x3.fe8p+8 : 0x2.d413cccfe7798p-1024 : inexact-ok underflow errno-erange-ok += exp2 tonearest dbl-64 -0x3.fe8p+8 : 0x2.d413cccfe7798p-1024 : inexact-ok underflow errno-erange-ok += exp2 towardzero dbl-64 -0x3.fe8p+8 : 0x2.d413cccfe7798p-1024 : inexact-ok underflow errno-erange-ok += exp2 upward dbl-64 -0x3.fe8p+8 : 0x2.d413cccfe779cp-1024 : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-intel -0x3.fe8p+8L : 0x2.d413cccfe779921p-1024L : inexact-ok += exp2 tonearest ldbl-96-intel -0x3.fe8p+8L : 0x2.d413cccfe779921p-1024L : inexact-ok += exp2 towardzero ldbl-96-intel -0x3.fe8p+8L : 0x2.d413cccfe779921p-1024L : inexact-ok += exp2 upward ldbl-96-intel -0x3.fe8p+8L : 0x2.d413cccfe7799214p-1024L : inexact-ok += exp2 downward ldbl-96-m68k -0x3.fe8p+8L : 0x2.d413cccfe779921p-1024L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x3.fe8p+8L : 0x2.d413cccfe779921p-1024L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x3.fe8p+8L : 0x2.d413cccfe779921p-1024L : inexact-ok += exp2 upward ldbl-96-m68k -0x3.fe8p+8L : 0x2.d413cccfe7799214p-1024L : inexact-ok += exp2 downward ldbl-128 -0x3.fe8p+8L : 0x2.d413cccfe779921165f626cdd52ap-1024L : inexact-ok += exp2 tonearest ldbl-128 -0x3.fe8p+8L : 0x2.d413cccfe779921165f626cdd52ap-1024L : inexact-ok += exp2 towardzero ldbl-128 -0x3.fe8p+8L : 0x2.d413cccfe779921165f626cdd52ap-1024L : inexact-ok += exp2 upward ldbl-128 -0x3.fe8p+8L : 0x2.d413cccfe779921165f626cdd52cp-1024L : inexact-ok += exp2 downward ldbl-128ibm -0x3.fe8p+8L : 0x2.d413cccfe7798p-1024L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-128ibm -0x3.fe8p+8L : 0x2.d413cccfe7798p-1024L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-128ibm -0x3.fe8p+8L : 0x2.d413cccfe7798p-1024L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-128ibm -0x3.fe8p+8L : 0x2.d413cccfe779cp-1024L : inexact-ok underflow errno-erange-ok +exp2 -1022.625 += exp2 downward flt-32 -0x3.feap+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 tonearest flt-32 -0x3.feap+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 towardzero flt-32 -0x3.feap+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 upward flt-32 -0x3.feap+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x3.feap+8 : 0x2.97fb5aa6c544cp-1024 : inexact-ok underflow errno-erange-ok += exp2 tonearest dbl-64 -0x3.feap+8 : 0x2.97fb5aa6c545p-1024 : inexact-ok underflow errno-erange-ok += exp2 towardzero dbl-64 -0x3.feap+8 : 0x2.97fb5aa6c544cp-1024 : inexact-ok underflow errno-erange-ok += exp2 upward dbl-64 -0x3.feap+8 : 0x2.97fb5aa6c545p-1024 : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-intel -0x3.feap+8L : 0x2.97fb5aa6c544e3a8p-1024L : inexact-ok += exp2 tonearest ldbl-96-intel -0x3.feap+8L : 0x2.97fb5aa6c544e3a8p-1024L : inexact-ok += exp2 towardzero ldbl-96-intel -0x3.feap+8L : 0x2.97fb5aa6c544e3a8p-1024L : inexact-ok += exp2 upward ldbl-96-intel -0x3.feap+8L : 0x2.97fb5aa6c544e3acp-1024L : inexact-ok += exp2 downward ldbl-96-m68k -0x3.feap+8L : 0x2.97fb5aa6c544e3a8p-1024L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x3.feap+8L : 0x2.97fb5aa6c544e3a8p-1024L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x3.feap+8L : 0x2.97fb5aa6c544e3a8p-1024L : inexact-ok += exp2 upward ldbl-96-m68k -0x3.feap+8L : 0x2.97fb5aa6c544e3acp-1024L : inexact-ok += exp2 downward ldbl-128 -0x3.feap+8L : 0x2.97fb5aa6c544e3a872f5fd885c4p-1024L : inexact-ok += exp2 tonearest ldbl-128 -0x3.feap+8L : 0x2.97fb5aa6c544e3a872f5fd885c42p-1024L : inexact-ok += exp2 towardzero ldbl-128 -0x3.feap+8L : 0x2.97fb5aa6c544e3a872f5fd885c4p-1024L : inexact-ok += exp2 upward ldbl-128 -0x3.feap+8L : 0x2.97fb5aa6c544e3a872f5fd885c42p-1024L : inexact-ok += exp2 downward ldbl-128ibm -0x3.feap+8L : 0x2.97fb5aa6c544cp-1024L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-128ibm -0x3.feap+8L : 0x2.97fb5aa6c545p-1024L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-128ibm -0x3.feap+8L : 0x2.97fb5aa6c544cp-1024L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-128ibm -0x3.feap+8L : 0x2.97fb5aa6c545p-1024L : inexact-ok underflow errno-erange-ok +exp2 -1022.75 += exp2 downward flt-32 -0x3.fecp+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 tonearest flt-32 -0x3.fecp+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 towardzero flt-32 -0x3.fecp+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 upward flt-32 -0x3.fecp+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x3.fecp+8 : 0x2.60dfc14636e28p-1024 : inexact-ok underflow errno-erange-ok += exp2 tonearest dbl-64 -0x3.fecp+8 : 0x2.60dfc14636e2cp-1024 : inexact-ok underflow errno-erange-ok += exp2 towardzero dbl-64 -0x3.fecp+8 : 0x2.60dfc14636e28p-1024 : inexact-ok underflow errno-erange-ok += exp2 upward dbl-64 -0x3.fecp+8 : 0x2.60dfc14636e2cp-1024 : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-intel -0x3.fecp+8L : 0x2.60dfc14636e2a5bcp-1024L : inexact-ok += exp2 tonearest ldbl-96-intel -0x3.fecp+8L : 0x2.60dfc14636e2a5bcp-1024L : inexact-ok += exp2 towardzero ldbl-96-intel -0x3.fecp+8L : 0x2.60dfc14636e2a5bcp-1024L : inexact-ok += exp2 upward ldbl-96-intel -0x3.fecp+8L : 0x2.60dfc14636e2a5cp-1024L : inexact-ok += exp2 downward ldbl-96-m68k -0x3.fecp+8L : 0x2.60dfc14636e2a5bcp-1024L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x3.fecp+8L : 0x2.60dfc14636e2a5bcp-1024L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x3.fecp+8L : 0x2.60dfc14636e2a5bcp-1024L : inexact-ok += exp2 upward ldbl-96-m68k -0x3.fecp+8L : 0x2.60dfc14636e2a5cp-1024L : inexact-ok += exp2 downward ldbl-128 -0x3.fecp+8L : 0x2.60dfc14636e2a5bd1ab48c60b90ap-1024L : inexact-ok += exp2 tonearest ldbl-128 -0x3.fecp+8L : 0x2.60dfc14636e2a5bd1ab48c60b90cp-1024L : inexact-ok += exp2 towardzero ldbl-128 -0x3.fecp+8L : 0x2.60dfc14636e2a5bd1ab48c60b90ap-1024L : inexact-ok += exp2 upward ldbl-128 -0x3.fecp+8L : 0x2.60dfc14636e2a5bd1ab48c60b90cp-1024L : inexact-ok += exp2 downward ldbl-128ibm -0x3.fecp+8L : 0x2.60dfc14636e28p-1024L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-128ibm -0x3.fecp+8L : 0x2.60dfc14636e2cp-1024L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-128ibm -0x3.fecp+8L : 0x2.60dfc14636e28p-1024L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-128ibm -0x3.fecp+8L : 0x2.60dfc14636e2cp-1024L : inexact-ok underflow errno-erange-ok +exp2 -1022.875 += exp2 downward flt-32 -0x3.feep+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 tonearest flt-32 -0x3.feep+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 towardzero flt-32 -0x3.feep+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 upward flt-32 -0x3.feep+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x3.feep+8 : 0x2.2e57078faa2f4p-1024 : inexact-ok underflow errno-erange-ok += exp2 tonearest dbl-64 -0x3.feep+8 : 0x2.2e57078faa2f4p-1024 : inexact-ok underflow errno-erange-ok += exp2 towardzero dbl-64 -0x3.feep+8 : 0x2.2e57078faa2f4p-1024 : inexact-ok underflow errno-erange-ok += exp2 upward dbl-64 -0x3.feep+8 : 0x2.2e57078faa2f8p-1024 : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-intel -0x3.feep+8L : 0x2.2e57078faa2f5b98p-1024L : inexact-ok += exp2 tonearest ldbl-96-intel -0x3.feep+8L : 0x2.2e57078faa2f5b9cp-1024L : inexact-ok += exp2 towardzero ldbl-96-intel -0x3.feep+8L : 0x2.2e57078faa2f5b98p-1024L : inexact-ok += exp2 upward ldbl-96-intel -0x3.feep+8L : 0x2.2e57078faa2f5b9cp-1024L : inexact-ok += exp2 downward ldbl-96-m68k -0x3.feep+8L : 0x2.2e57078faa2f5b98p-1024L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x3.feep+8L : 0x2.2e57078faa2f5b9cp-1024L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x3.feep+8L : 0x2.2e57078faa2f5b98p-1024L : inexact-ok += exp2 upward ldbl-96-m68k -0x3.feep+8L : 0x2.2e57078faa2f5b9cp-1024L : inexact-ok += exp2 downward ldbl-128 -0x3.feep+8L : 0x2.2e57078faa2f5b9bef918a1d6294p-1024L : inexact-ok += exp2 tonearest ldbl-128 -0x3.feep+8L : 0x2.2e57078faa2f5b9bef918a1d6294p-1024L : inexact-ok += exp2 towardzero ldbl-128 -0x3.feep+8L : 0x2.2e57078faa2f5b9bef918a1d6294p-1024L : inexact-ok += exp2 upward ldbl-128 -0x3.feep+8L : 0x2.2e57078faa2f5b9bef918a1d6296p-1024L : inexact-ok += exp2 downward ldbl-128ibm -0x3.feep+8L : 0x2.2e57078faa2f4p-1024L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-128ibm -0x3.feep+8L : 0x2.2e57078faa2f4p-1024L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-128ibm -0x3.feep+8L : 0x2.2e57078faa2f4p-1024L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-128ibm -0x3.feep+8L : 0x2.2e57078faa2f8p-1024L : inexact-ok underflow errno-erange-ok +exp2 -0x3.fe4e8p+8 += exp2 downward flt-32 -0x3.fe4e8p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 tonearest flt-32 -0x3.fe4e8p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 towardzero flt-32 -0x3.fe4e8p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 upward flt-32 -0x3.fe4e8p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x3.fe4e8p+8 : 0x3.3bed4179f82bcp-1024 : inexact-ok underflow errno-erange-ok += exp2 tonearest dbl-64 -0x3.fe4e8p+8 : 0x3.3bed4179f82bcp-1024 : inexact-ok underflow errno-erange-ok += exp2 towardzero dbl-64 -0x3.fe4e8p+8 : 0x3.3bed4179f82bcp-1024 : inexact-ok underflow errno-erange-ok += exp2 upward dbl-64 -0x3.fe4e8p+8 : 0x3.3bed4179f82cp-1024 : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-intel -0x3.fe4e8p+8L : 0x3.3bed4179f82bcp-1024L : inexact-ok += exp2 tonearest ldbl-96-intel -0x3.fe4e8p+8L : 0x3.3bed4179f82bc004p-1024L : inexact-ok += exp2 towardzero ldbl-96-intel -0x3.fe4e8p+8L : 0x3.3bed4179f82bcp-1024L : inexact-ok += exp2 upward ldbl-96-intel -0x3.fe4e8p+8L : 0x3.3bed4179f82bc004p-1024L : inexact-ok += exp2 downward ldbl-96-m68k -0x3.fe4e8p+8L : 0x3.3bed4179f82bcp-1024L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x3.fe4e8p+8L : 0x3.3bed4179f82bc004p-1024L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x3.fe4e8p+8L : 0x3.3bed4179f82bcp-1024L : inexact-ok += exp2 upward ldbl-96-m68k -0x3.fe4e8p+8L : 0x3.3bed4179f82bc004p-1024L : inexact-ok += exp2 downward ldbl-128 -0x3.fe4e8p+8L : 0x3.3bed4179f82bc002979648b91cf8p-1024L : inexact-ok += exp2 tonearest ldbl-128 -0x3.fe4e8p+8L : 0x3.3bed4179f82bc002979648b91cfap-1024L : inexact-ok += exp2 towardzero ldbl-128 -0x3.fe4e8p+8L : 0x3.3bed4179f82bc002979648b91cf8p-1024L : inexact-ok += exp2 upward ldbl-128 -0x3.fe4e8p+8L : 0x3.3bed4179f82bc002979648b91cfap-1024L : inexact-ok += exp2 downward ldbl-128ibm -0x3.fe4e8p+8L : 0x3.3bed4179f82bcp-1024L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-128ibm -0x3.fe4e8p+8L : 0x3.3bed4179f82bcp-1024L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-128ibm -0x3.fe4e8p+8L : 0x3.3bed4179f82bcp-1024L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-128ibm -0x3.fe4e8p+8L : 0x3.3bed4179f82cp-1024L : inexact-ok underflow errno-erange-ok +exp2 -0x3.fe513p+8 += exp2 downward flt-32 -0x3.fe513p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 tonearest flt-32 -0x3.fe513p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 towardzero flt-32 -0x3.fe513p+8f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 upward flt-32 -0x3.fe513p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x3.fe513p+8 : 0x3.35ec906f22fb8p-1024 : inexact-ok underflow errno-erange-ok += exp2 tonearest dbl-64 -0x3.fe513p+8 : 0x3.35ec906f22fbcp-1024 : inexact-ok underflow errno-erange-ok += exp2 towardzero dbl-64 -0x3.fe513p+8 : 0x3.35ec906f22fb8p-1024 : inexact-ok underflow errno-erange-ok += exp2 upward dbl-64 -0x3.fe513p+8 : 0x3.35ec906f22fbcp-1024 : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-intel -0x3.fe513p+8L : 0x3.35ec906f22fbbffcp-1024L : inexact-ok += exp2 tonearest ldbl-96-intel -0x3.fe513p+8L : 0x3.35ec906f22fbcp-1024L : inexact-ok += exp2 towardzero ldbl-96-intel -0x3.fe513p+8L : 0x3.35ec906f22fbbffcp-1024L : inexact-ok += exp2 upward ldbl-96-intel -0x3.fe513p+8L : 0x3.35ec906f22fbcp-1024L : inexact-ok += exp2 downward ldbl-96-m68k -0x3.fe513p+8L : 0x3.35ec906f22fbbffcp-1024L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x3.fe513p+8L : 0x3.35ec906f22fbcp-1024L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x3.fe513p+8L : 0x3.35ec906f22fbbffcp-1024L : inexact-ok += exp2 upward ldbl-96-m68k -0x3.fe513p+8L : 0x3.35ec906f22fbcp-1024L : inexact-ok += exp2 downward ldbl-128 -0x3.fe513p+8L : 0x3.35ec906f22fbbffeffc0d272938p-1024L : inexact-ok += exp2 tonearest ldbl-128 -0x3.fe513p+8L : 0x3.35ec906f22fbbffeffc0d272938p-1024L : inexact-ok += exp2 towardzero ldbl-128 -0x3.fe513p+8L : 0x3.35ec906f22fbbffeffc0d272938p-1024L : inexact-ok += exp2 upward ldbl-128 -0x3.fe513p+8L : 0x3.35ec906f22fbbffeffc0d2729382p-1024L : inexact-ok += exp2 downward ldbl-128ibm -0x3.fe513p+8L : 0x3.35ec906f22fb8p-1024L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-128ibm -0x3.fe513p+8L : 0x3.35ec906f22fbcp-1024L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-128ibm -0x3.fe513p+8L : 0x3.35ec906f22fb8p-1024L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-128ibm -0x3.fe513p+8L : 0x3.35ec906f22fbcp-1024L : inexact-ok underflow errno-erange-ok +exp2 -16382.125 += exp2 downward flt-32 -0x3.ffe2p+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 tonearest flt-32 -0x3.ffe2p+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 towardzero flt-32 -0x3.ffe2p+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 upward flt-32 -0x3.ffe2p+12f : 0x8p-152f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x3.ffe2p+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 tonearest dbl-64 -0x3.ffe2p+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 towardzero dbl-64 -0x3.ffe2p+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 upward dbl-64 -0x3.ffe2p+12 : 0x4p-1076 : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-intel -0x3.ffe2p+12L : 0x3.ab031b9f7490e4b8p-16384L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-96-intel -0x3.ffe2p+12L : 0x3.ab031b9f7490e4b8p-16384L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-96-intel -0x3.ffe2p+12L : 0x3.ab031b9f7490e4b8p-16384L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-96-intel -0x3.ffe2p+12L : 0x3.ab031b9f7490e4cp-16384L : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-m68k -0x3.ffe2p+12L : 0x3.ab031b9f7490e4b8p-16384L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x3.ffe2p+12L : 0x3.ab031b9f7490e4bcp-16384L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x3.ffe2p+12L : 0x3.ab031b9f7490e4b8p-16384L : inexact-ok += exp2 upward ldbl-96-m68k -0x3.ffe2p+12L : 0x3.ab031b9f7490e4bcp-16384L : inexact-ok += exp2 downward ldbl-128 -0x3.ffe2p+12L : 0x3.ab031b9f7490e4bb40b5d6cdc1b8p-16384L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-128 -0x3.ffe2p+12L : 0x3.ab031b9f7490e4bb40b5d6cdc1b8p-16384L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-128 -0x3.ffe2p+12L : 0x3.ab031b9f7490e4bb40b5d6cdc1b8p-16384L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-128 -0x3.ffe2p+12L : 0x3.ab031b9f7490e4bb40b5d6cdc1bcp-16384L : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-128ibm -0x3.ffe2p+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 tonearest ldbl-128ibm -0x3.ffe2p+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 towardzero ldbl-128ibm -0x3.ffe2p+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 upward ldbl-128ibm -0x3.ffe2p+12L : 0x4p-1076L : inexact-ok underflow errno-erange-ok +exp2 -16382.25 += exp2 downward flt-32 -0x3.ffe4p+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 tonearest flt-32 -0x3.ffe4p+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 towardzero flt-32 -0x3.ffe4p+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 upward flt-32 -0x3.ffe4p+12f : 0x8p-152f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x3.ffe4p+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 tonearest dbl-64 -0x3.ffe4p+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 towardzero dbl-64 -0x3.ffe4p+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 upward dbl-64 -0x3.ffe4p+12 : 0x4p-1076 : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-intel -0x3.ffe4p+12L : 0x3.5d13f32b5a75abdp-16384L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-96-intel -0x3.ffe4p+12L : 0x3.5d13f32b5a75abdp-16384L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-96-intel -0x3.ffe4p+12L : 0x3.5d13f32b5a75abdp-16384L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-96-intel -0x3.ffe4p+12L : 0x3.5d13f32b5a75abd8p-16384L : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-m68k -0x3.ffe4p+12L : 0x3.5d13f32b5a75abdp-16384L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x3.ffe4p+12L : 0x3.5d13f32b5a75abdp-16384L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x3.ffe4p+12L : 0x3.5d13f32b5a75abdp-16384L : inexact-ok += exp2 upward ldbl-96-m68k -0x3.ffe4p+12L : 0x3.5d13f32b5a75abd4p-16384L : inexact-ok += exp2 downward ldbl-128 -0x3.ffe4p+12L : 0x3.5d13f32b5a75abd0e69a2ee640b4p-16384L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-128 -0x3.ffe4p+12L : 0x3.5d13f32b5a75abd0e69a2ee640b4p-16384L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-128 -0x3.ffe4p+12L : 0x3.5d13f32b5a75abd0e69a2ee640b4p-16384L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-128 -0x3.ffe4p+12L : 0x3.5d13f32b5a75abd0e69a2ee640b8p-16384L : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-128ibm -0x3.ffe4p+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 tonearest ldbl-128ibm -0x3.ffe4p+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 towardzero ldbl-128ibm -0x3.ffe4p+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 upward ldbl-128ibm -0x3.ffe4p+12L : 0x4p-1076L : inexact-ok underflow errno-erange-ok +exp2 -16382.375 += exp2 downward flt-32 -0x3.ffe6p+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 tonearest flt-32 -0x3.ffe6p+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 towardzero flt-32 -0x3.ffe6p+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 upward flt-32 -0x3.ffe6p+12f : 0x8p-152f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x3.ffe6p+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 tonearest dbl-64 -0x3.ffe6p+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 towardzero dbl-64 -0x3.ffe6p+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 upward dbl-64 -0x3.ffe6p+12 : 0x4p-1076 : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-intel -0x3.ffe6p+12L : 0x3.159ca845541b6b7p-16384L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-96-intel -0x3.ffe6p+12L : 0x3.159ca845541b6b78p-16384L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-96-intel -0x3.ffe6p+12L : 0x3.159ca845541b6b7p-16384L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-96-intel -0x3.ffe6p+12L : 0x3.159ca845541b6b78p-16384L : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-m68k -0x3.ffe6p+12L : 0x3.159ca845541b6b74p-16384L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x3.ffe6p+12L : 0x3.159ca845541b6b74p-16384L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x3.ffe6p+12L : 0x3.159ca845541b6b74p-16384L : inexact-ok += exp2 upward ldbl-96-m68k -0x3.ffe6p+12L : 0x3.159ca845541b6b78p-16384L : inexact-ok += exp2 downward ldbl-128 -0x3.ffe6p+12L : 0x3.159ca845541b6b74f8ab43259374p-16384L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-128 -0x3.ffe6p+12L : 0x3.159ca845541b6b74f8ab43259378p-16384L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-128 -0x3.ffe6p+12L : 0x3.159ca845541b6b74f8ab43259374p-16384L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-128 -0x3.ffe6p+12L : 0x3.159ca845541b6b74f8ab43259378p-16384L : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-128ibm -0x3.ffe6p+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 tonearest ldbl-128ibm -0x3.ffe6p+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 towardzero ldbl-128ibm -0x3.ffe6p+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 upward ldbl-128ibm -0x3.ffe6p+12L : 0x4p-1076L : inexact-ok underflow errno-erange-ok +exp2 -16382.5 += exp2 downward flt-32 -0x3.ffe8p+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 tonearest flt-32 -0x3.ffe8p+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 towardzero flt-32 -0x3.ffe8p+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 upward flt-32 -0x3.ffe8p+12f : 0x8p-152f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x3.ffe8p+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 tonearest dbl-64 -0x3.ffe8p+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 towardzero dbl-64 -0x3.ffe8p+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 upward dbl-64 -0x3.ffe8p+12 : 0x4p-1076 : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-intel -0x3.ffe8p+12L : 0x2.d413cccfe779921p-16384L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-96-intel -0x3.ffe8p+12L : 0x2.d413cccfe779921p-16384L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-96-intel -0x3.ffe8p+12L : 0x2.d413cccfe779921p-16384L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-96-intel -0x3.ffe8p+12L : 0x2.d413cccfe7799218p-16384L : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-m68k -0x3.ffe8p+12L : 0x2.d413cccfe779921p-16384L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x3.ffe8p+12L : 0x2.d413cccfe779921p-16384L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x3.ffe8p+12L : 0x2.d413cccfe779921p-16384L : inexact-ok += exp2 upward ldbl-96-m68k -0x3.ffe8p+12L : 0x2.d413cccfe7799214p-16384L : inexact-ok += exp2 downward ldbl-128 -0x3.ffe8p+12L : 0x2.d413cccfe779921165f626cdd528p-16384L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-128 -0x3.ffe8p+12L : 0x2.d413cccfe779921165f626cdd52cp-16384L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-128 -0x3.ffe8p+12L : 0x2.d413cccfe779921165f626cdd528p-16384L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-128 -0x3.ffe8p+12L : 0x2.d413cccfe779921165f626cdd52cp-16384L : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-128ibm -0x3.ffe8p+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 tonearest ldbl-128ibm -0x3.ffe8p+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 towardzero ldbl-128ibm -0x3.ffe8p+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 upward ldbl-128ibm -0x3.ffe8p+12L : 0x4p-1076L : inexact-ok underflow errno-erange-ok +exp2 -16382.625 += exp2 downward flt-32 -0x3.ffeap+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 tonearest flt-32 -0x3.ffeap+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 towardzero flt-32 -0x3.ffeap+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 upward flt-32 -0x3.ffeap+12f : 0x8p-152f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x3.ffeap+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 tonearest dbl-64 -0x3.ffeap+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 towardzero dbl-64 -0x3.ffeap+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 upward dbl-64 -0x3.ffeap+12 : 0x4p-1076 : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-intel -0x3.ffeap+12L : 0x2.97fb5aa6c544e3a8p-16384L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-96-intel -0x3.ffeap+12L : 0x2.97fb5aa6c544e3a8p-16384L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-96-intel -0x3.ffeap+12L : 0x2.97fb5aa6c544e3a8p-16384L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-96-intel -0x3.ffeap+12L : 0x2.97fb5aa6c544e3bp-16384L : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-m68k -0x3.ffeap+12L : 0x2.97fb5aa6c544e3a8p-16384L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x3.ffeap+12L : 0x2.97fb5aa6c544e3a8p-16384L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x3.ffeap+12L : 0x2.97fb5aa6c544e3a8p-16384L : inexact-ok += exp2 upward ldbl-96-m68k -0x3.ffeap+12L : 0x2.97fb5aa6c544e3acp-16384L : inexact-ok += exp2 downward ldbl-128 -0x3.ffeap+12L : 0x2.97fb5aa6c544e3a872f5fd885c4p-16384L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-128 -0x3.ffeap+12L : 0x2.97fb5aa6c544e3a872f5fd885c4p-16384L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-128 -0x3.ffeap+12L : 0x2.97fb5aa6c544e3a872f5fd885c4p-16384L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-128 -0x3.ffeap+12L : 0x2.97fb5aa6c544e3a872f5fd885c44p-16384L : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-128ibm -0x3.ffeap+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 tonearest ldbl-128ibm -0x3.ffeap+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 towardzero ldbl-128ibm -0x3.ffeap+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 upward ldbl-128ibm -0x3.ffeap+12L : 0x4p-1076L : inexact-ok underflow errno-erange-ok +exp2 -16382.75 += exp2 downward flt-32 -0x3.ffecp+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 tonearest flt-32 -0x3.ffecp+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 towardzero flt-32 -0x3.ffecp+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 upward flt-32 -0x3.ffecp+12f : 0x8p-152f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x3.ffecp+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 tonearest dbl-64 -0x3.ffecp+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 towardzero dbl-64 -0x3.ffecp+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 upward dbl-64 -0x3.ffecp+12 : 0x4p-1076 : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-intel -0x3.ffecp+12L : 0x2.60dfc14636e2a5b8p-16384L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-96-intel -0x3.ffecp+12L : 0x2.60dfc14636e2a5cp-16384L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-96-intel -0x3.ffecp+12L : 0x2.60dfc14636e2a5b8p-16384L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-96-intel -0x3.ffecp+12L : 0x2.60dfc14636e2a5cp-16384L : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-m68k -0x3.ffecp+12L : 0x2.60dfc14636e2a5bcp-16384L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x3.ffecp+12L : 0x2.60dfc14636e2a5bcp-16384L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x3.ffecp+12L : 0x2.60dfc14636e2a5bcp-16384L : inexact-ok += exp2 upward ldbl-96-m68k -0x3.ffecp+12L : 0x2.60dfc14636e2a5cp-16384L : inexact-ok += exp2 downward ldbl-128 -0x3.ffecp+12L : 0x2.60dfc14636e2a5bd1ab48c60b908p-16384L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-128 -0x3.ffecp+12L : 0x2.60dfc14636e2a5bd1ab48c60b90cp-16384L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-128 -0x3.ffecp+12L : 0x2.60dfc14636e2a5bd1ab48c60b908p-16384L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-128 -0x3.ffecp+12L : 0x2.60dfc14636e2a5bd1ab48c60b90cp-16384L : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-128ibm -0x3.ffecp+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 tonearest ldbl-128ibm -0x3.ffecp+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 towardzero ldbl-128ibm -0x3.ffecp+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 upward ldbl-128ibm -0x3.ffecp+12L : 0x4p-1076L : inexact-ok underflow errno-erange-ok +exp2 -16382.875 += exp2 downward flt-32 -0x3.ffeep+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 tonearest flt-32 -0x3.ffeep+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 towardzero flt-32 -0x3.ffeep+12f : 0x0p+0f : inexact-ok underflow errno-erange += exp2 upward flt-32 -0x3.ffeep+12f : 0x8p-152f : inexact-ok underflow errno-erange-ok += exp2 downward dbl-64 -0x3.ffeep+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 tonearest dbl-64 -0x3.ffeep+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 towardzero dbl-64 -0x3.ffeep+12 : 0x0p+0 : inexact-ok underflow errno-erange += exp2 upward dbl-64 -0x3.ffeep+12 : 0x4p-1076 : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-intel -0x3.ffeep+12L : 0x2.2e57078faa2f5b98p-16384L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-96-intel -0x3.ffeep+12L : 0x2.2e57078faa2f5b98p-16384L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-96-intel -0x3.ffeep+12L : 0x2.2e57078faa2f5b98p-16384L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-96-intel -0x3.ffeep+12L : 0x2.2e57078faa2f5bap-16384L : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-96-m68k -0x3.ffeep+12L : 0x2.2e57078faa2f5b98p-16384L : inexact-ok += exp2 tonearest ldbl-96-m68k -0x3.ffeep+12L : 0x2.2e57078faa2f5b9cp-16384L : inexact-ok += exp2 towardzero ldbl-96-m68k -0x3.ffeep+12L : 0x2.2e57078faa2f5b98p-16384L : inexact-ok += exp2 upward ldbl-96-m68k -0x3.ffeep+12L : 0x2.2e57078faa2f5b9cp-16384L : inexact-ok += exp2 downward ldbl-128 -0x3.ffeep+12L : 0x2.2e57078faa2f5b9bef918a1d6294p-16384L : inexact-ok underflow errno-erange-ok += exp2 tonearest ldbl-128 -0x3.ffeep+12L : 0x2.2e57078faa2f5b9bef918a1d6294p-16384L : inexact-ok underflow errno-erange-ok += exp2 towardzero ldbl-128 -0x3.ffeep+12L : 0x2.2e57078faa2f5b9bef918a1d6294p-16384L : inexact-ok underflow errno-erange-ok += exp2 upward ldbl-128 -0x3.ffeep+12L : 0x2.2e57078faa2f5b9bef918a1d6298p-16384L : inexact-ok underflow errno-erange-ok += exp2 downward ldbl-128ibm -0x3.ffeep+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 tonearest ldbl-128ibm -0x3.ffeep+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 towardzero ldbl-128ibm -0x3.ffeep+12L : 0x0p+0L : inexact-ok underflow errno-erange += exp2 upward ldbl-128ibm -0x3.ffeep+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 diff --git a/math/e_exp2l.c b/math/e_exp2l.c index 8db34ada53..b8cd158b88 100644 --- a/math/e_exp2l.c +++ b/math/e_exp2l.c @@ -38,9 +38,17 @@ __ieee754_exp2l (long double x) { int intx = (int) x; long double fractx = x - intx; + long double result; if (fabsl (fractx) < LDBL_EPSILON / 4.0L) - return __scalbnl (1.0L + fractx, intx); - return __scalbnl (__ieee754_expl (M_LN2l * fractx), intx); + result = __scalbnl (1.0L + fractx, intx); + else + result = __scalbnl (__ieee754_expl (M_LN2l * fractx), intx); + if (result < LDBL_MIN) + { + long double force_underflow = result * result; + math_force_eval (force_underflow); + } + return result; } else { diff --git a/sysdeps/i386/fpu/e_exp2.S b/sysdeps/i386/fpu/e_exp2.S index f802cf8b98..b75a63a0b3 100644 --- a/sysdeps/i386/fpu/e_exp2.S +++ b/sysdeps/i386/fpu/e_exp2.S @@ -6,7 +6,24 @@ #include <machine/asm.h> + .section .rodata.cst8,"aM",@progbits,8 + + .p2align 3 + .type dbl_min,@object +dbl_min: .byte 0, 0, 0, 0, 0, 0, 0x10, 0 + ASM_SIZE_DIRECTIVE(dbl_min) + +#ifdef PIC +# define MO(op) op##@GOTOFF(%ecx) +#else +# define MO(op) op +#endif + + .text ENTRY(__ieee754_exp2) +#ifdef PIC + LOAD_PIC_REG (cx) +#endif fldl 4(%esp) /* I added the following ugly construct because exp(+-Inf) resulted in NaN. The ugliness results from the bright minds at Intel. @@ -27,7 +44,22 @@ ENTRY(__ieee754_exp2) faddp /* 2^(fract(x)) */ fscale /* e^x */ fstp %st(1) - ret + fldl MO(dbl_min) + fld %st(1) + fucompp + fnstsw + sahf + jnc 3f + subl $8, %esp + cfi_adjust_cfa_offset (8) + fld %st(0) + fmul %st(0) + fstpl (%esp) + fstpl (%esp) + fldl (%esp) + addl $8, %esp + cfi_adjust_cfa_offset (-8) +3: ret 1: testl $0x200, %eax /* Test sign. */ jz 2f /* If positive, jump. */ diff --git a/sysdeps/i386/fpu/e_exp2f.S b/sysdeps/i386/fpu/e_exp2f.S index f867d0d472..042c83b1ef 100644 --- a/sysdeps/i386/fpu/e_exp2f.S +++ b/sysdeps/i386/fpu/e_exp2f.S @@ -6,7 +6,24 @@ #include <machine/asm.h> + .section .rodata.cst4,"aM",@progbits,4 + + .p2align 2 + .type flt_min,@object +flt_min: .byte 0, 0, 0x80, 0 + ASM_SIZE_DIRECTIVE(flt_min) + +#ifdef PIC +# define MO(op) op##@GOTOFF(%ecx) +#else +# define MO(op) op +#endif + + .text ENTRY(__ieee754_exp2f) +#ifdef PIC + LOAD_PIC_REG (cx) +#endif flds 4(%esp) /* I added the following ugly construct because exp(+-Inf) resulted in NaN. The ugliness results from the bright minds at Intel. @@ -27,7 +44,22 @@ ENTRY(__ieee754_exp2f) faddp /* 2^(fract(x)) */ fscale /* e^x */ fstp %st(1) - ret + flds MO(flt_min) + fld %st(1) + fucompp + fnstsw + sahf + jnc 3f + subl $4, %esp + cfi_adjust_cfa_offset (4) + fld %st(0) + fmul %st(0) + fstps (%esp) + fstps (%esp) + flds (%esp) + addl $4, %esp + cfi_adjust_cfa_offset (-4) +3: ret 1: testl $0x200, %eax /* Test sign. */ jz 2f /* If positive, jump. */ diff --git a/sysdeps/i386/fpu/e_exp2l.S b/sysdeps/i386/fpu/e_exp2l.S index 2bf9a25727..9a5ff95a6c 100644 --- a/sysdeps/i386/fpu/e_exp2l.S +++ b/sysdeps/i386/fpu/e_exp2l.S @@ -6,7 +6,24 @@ #include <machine/asm.h> + .section .rodata.cst16,"aM",@progbits,16 + .p2align 4 + .type ldbl_min,@object +ldbl_min: .byte 0, 0, 0, 0, 0, 0, 0, 0x80, 0x1, 0 + .byte 0, 0, 0, 0, 0, 0 + ASM_SIZE_DIRECTIVE(ldbl_min) + +#ifdef PIC +# define MO(op) op##@GOTOFF(%ecx) +#else +# define MO(op) op +#endif + + .text ENTRY(__ieee754_exp2l) +#ifdef PIC + LOAD_PIC_REG (cx) +#endif fldt 4(%esp) /* I added the following ugly construct because exp(+-Inf) resulted in NaN. The ugliness results from the bright minds at Intel. @@ -35,7 +52,17 @@ ENTRY(__ieee754_exp2l) faddp /* 2^(fract(x)) */ fscale /* e^x */ fstp %st(1) - ret + /* Ensure underflow for tiny result. */ + fldt MO(ldbl_min) + fld %st(1) + fucompp + fnstsw + sahf + jnc 4f + fld %st + fmul %st + fstp %st +4: ret 1: testl $0x200, %eax /* Test sign. */ jz 2f /* If positive, jump. */ diff --git a/sysdeps/ieee754/dbl-64/e_exp2.c b/sysdeps/ieee754/dbl-64/e_exp2.c index 30f0a8f529..01df62150d 100644 --- a/sysdeps/ieee754/dbl-64/e_exp2.c +++ b/sysdeps/ieee754/dbl-64/e_exp2.c @@ -120,7 +120,15 @@ __ieee754_exp2 (double x) if (!unsafe) return result; else - return result * scale_u.d; + { + result *= scale_u.d; + if (result < DBL_MIN) + { + double force_underflow = result * result; + math_force_eval (force_underflow); + } + return result; + } } else /* Return x, if x is a NaN or Inf; or overflow, otherwise. */ diff --git a/sysdeps/ieee754/flt-32/e_exp2f.c b/sysdeps/ieee754/flt-32/e_exp2f.c index 0b75a7ea2a..bc62042966 100644 --- a/sysdeps/ieee754/flt-32/e_exp2f.c +++ b/sysdeps/ieee754/flt-32/e_exp2f.c @@ -109,7 +109,15 @@ __ieee754_exp2f (float x) if (!unsafe) return result; else - return result * scale_u.f; + { + result *= scale_u.f; + if (result < FLT_MIN) + { + float force_underflow = result * result; + math_force_eval (force_underflow); + } + return result; + } } /* Exceptional cases: */ else if (isless (x, himark)) diff --git a/sysdeps/x86_64/fpu/e_exp2l.S b/sysdeps/x86_64/fpu/e_exp2l.S index 7d42a932db..d634ad38f8 100644 --- a/sysdeps/x86_64/fpu/e_exp2l.S +++ b/sysdeps/x86_64/fpu/e_exp2l.S @@ -7,6 +7,20 @@ #include <machine/asm.h> + .section .rodata.cst16,"aM",@progbits,16 + .p2align 4 + .type ldbl_min,@object +ldbl_min: .byte 0, 0, 0, 0, 0, 0, 0, 0x80, 0x1, 0 + .byte 0, 0, 0, 0, 0, 0 + ASM_SIZE_DIRECTIVE(ldbl_min) + +#ifdef PIC +# define MO(op) op##(%rip) +#else +# define MO(op) op +#endif + + .text ENTRY(__ieee754_exp2l) fldt 8(%rsp) /* I added the following ugly construct because exp(+-Inf) resulted @@ -36,7 +50,16 @@ ENTRY(__ieee754_exp2l) faddp /* 2^(fract(x)) */ fscale /* e^x */ fstp %st(1) - ret + /* Ensure underflow for tiny result. */ + fldt MO(ldbl_min) + fld %st(1) + fucomip %st(1), %st + fstp %st + jnc 4f + fld %st + fmul %st + fstp %st +4: ret 1: testl $0x200, %eax /* Test sign. */ jz 2f /* If positive, jump. */ |