diff options
| author | Joseph Myers <joseph@codesourcery.com> | 2015-09-25 22:29:10 +0000 |
|---|---|---|
| committer | Joseph Myers <joseph@codesourcery.com> | 2015-09-25 22:29:10 +0000 |
| commit | 6ace39382120dd0668b2168591611f71b04ac8f3 (patch) | |
| tree | 2cee18351450bd4f9586f033cae63aa4d1ec8d4d | |
| parent | 5a9af6376d43b58c6545feb86002812a57956654 (diff) | |
| download | glibc-6ace39382120dd0668b2168591611f71b04ac8f3.tar.xz glibc-6ace39382120dd0668b2168591611f71b04ac8f3.zip | |
Fix pow missing underflows (bug 18825).
Similar to various other bugs in this area, pow functions can fail to
raise the underflow exception when the result is tiny and inexact but
one or more low bits of the intermediate result that is scaled down
(or, in the i386 case, converted from a wider evaluation format) are
zero. This patch forces the exception in a similar way to previous
fixes, thereby concluding the fixes for known bugs with missing
underflow exceptions currently filed in Bugzilla.
Tested for x86_64, x86, mips64 and powerpc.
[BZ #18825]
* sysdeps/i386/fpu/i386-math-asm.h (FLT_NARROW_EVAL_UFLOW_NONNAN):
New macro.
(DBL_NARROW_EVAL_UFLOW_NONNAN): Likewise.
(LDBL_CHECK_FORCE_UFLOW_NONNAN): Likewise.
* sysdeps/i386/fpu/e_pow.S: Use DEFINE_DBL_MIN.
(__ieee754_pow): Use DBL_NARROW_EVAL_UFLOW_NONNAN instead of
DBL_NARROW_EVAL, reloading the PIC register as needed.
* sysdeps/i386/fpu/e_powf.S: Use DEFINE_FLT_MIN.
(__ieee754_powf): Use FLT_NARROW_EVAL_UFLOW_NONNAN instead of
FLT_NARROW_EVAL. Use separate return path for case when first
argument is NaN.
* sysdeps/i386/fpu/e_powl.S: Include <i386-math-asm.h>. Use
DEFINE_LDBL_MIN.
(__ieee754_powl): Use LDBL_CHECK_FORCE_UFLOW_NONNAN, reloading the
PIC register.
* sysdeps/ieee754/dbl-64/e_pow.c (__ieee754_pow): Use
math_check_force_underflow_nonneg.
* sysdeps/ieee754/flt-32/e_powf.c (__ieee754_powf): Force
underflow for subnormal result.
* sysdeps/ieee754/ldbl-128/e_powl.c (__ieee754_powl): Likewise.
* sysdeps/ieee754/ldbl-128ibm/e_powl.c (__ieee754_powl): Use
math_check_force_underflow_nonneg.
* sysdeps/x86/fpu/powl_helper.c (__powl_helper): Use
math_check_force_underflow.
* sysdeps/x86_64/fpu/x86_64-math-asm.h
(LDBL_CHECK_FORCE_UFLOW_NONNAN): New macro.
* sysdeps/x86_64/fpu/e_powl.S: Include <x86_64-math-asm.h>. Use
DEFINE_LDBL_MIN.
(__ieee754_powl): Use LDBL_CHECK_FORCE_UFLOW_NONNAN.
* math/auto-libm-test-in: Add more tests of pow.
* math/auto-libm-test-out: Regenerated.
| -rw-r--r-- | ChangeLog | 35 | ||||
| -rw-r--r-- | NEWS | 6 | ||||
| -rw-r--r-- | math/auto-libm-test-in | 145 | ||||
| -rw-r--r-- | math/auto-libm-test-out | 3644 | ||||
| -rw-r--r-- | sysdeps/i386/fpu/e_pow.S | 8 | ||||
| -rw-r--r-- | sysdeps/i386/fpu/e_powf.S | 13 | ||||
| -rw-r--r-- | sysdeps/i386/fpu/e_powl.S | 6 | ||||
| -rw-r--r-- | sysdeps/i386/fpu/i386-math-asm.h | 46 | ||||
| -rw-r--r-- | sysdeps/ieee754/dbl-64/e_pow.c | 2 | ||||
| -rw-r--r-- | sysdeps/ieee754/flt-32/e_powf.c | 7 | ||||
| -rw-r--r-- | sysdeps/ieee754/ldbl-128/e_powl.c | 6 | ||||
| -rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/e_powl.c | 1 | ||||
| -rw-r--r-- | sysdeps/x86/fpu/powl_helper.c | 1 | ||||
| -rw-r--r-- | sysdeps/x86_64/fpu/e_powl.S | 3 | ||||
| -rw-r--r-- | sysdeps/x86_64/fpu/x86_64-math-asm.h | 13 |
15 files changed, 3926 insertions, 10 deletions
@@ -1,3 +1,38 @@ +2015-09-25 Joseph Myers <joseph@codesourcery.com> + + [BZ #18825] + * sysdeps/i386/fpu/i386-math-asm.h (FLT_NARROW_EVAL_UFLOW_NONNAN): + New macro. + (DBL_NARROW_EVAL_UFLOW_NONNAN): Likewise. + (LDBL_CHECK_FORCE_UFLOW_NONNAN): Likewise. + * sysdeps/i386/fpu/e_pow.S: Use DEFINE_DBL_MIN. + (__ieee754_pow): Use DBL_NARROW_EVAL_UFLOW_NONNAN instead of + DBL_NARROW_EVAL, reloading the PIC register as needed. + * sysdeps/i386/fpu/e_powf.S: Use DEFINE_FLT_MIN. + (__ieee754_powf): Use FLT_NARROW_EVAL_UFLOW_NONNAN instead of + FLT_NARROW_EVAL. Use separate return path for case when first + argument is NaN. + * sysdeps/i386/fpu/e_powl.S: Include <i386-math-asm.h>. Use + DEFINE_LDBL_MIN. + (__ieee754_powl): Use LDBL_CHECK_FORCE_UFLOW_NONNAN, reloading the + PIC register. + * sysdeps/ieee754/dbl-64/e_pow.c (__ieee754_pow): Use + math_check_force_underflow_nonneg. + * sysdeps/ieee754/flt-32/e_powf.c (__ieee754_powf): Force + underflow for subnormal result. + * sysdeps/ieee754/ldbl-128/e_powl.c (__ieee754_powl): Likewise. + * sysdeps/ieee754/ldbl-128ibm/e_powl.c (__ieee754_powl): Use + math_check_force_underflow_nonneg. + * sysdeps/x86/fpu/powl_helper.c (__powl_helper): Use + math_check_force_underflow. + * sysdeps/x86_64/fpu/x86_64-math-asm.h + (LDBL_CHECK_FORCE_UFLOW_NONNAN): New macro. + * sysdeps/x86_64/fpu/e_powl.S: Include <x86_64-math-asm.h>. Use + DEFINE_LDBL_MIN. + (__ieee754_powl): Use LDBL_CHECK_FORCE_UFLOW_NONNAN. + * math/auto-libm-test-in: Add more tests of pow. + * math/auto-libm-test-out: Regenerated. + 2015-09-25 Florian Weimer <fweimer@redhat.com> * nss/bug17079.c (init_test_items): Add diagnostic for @@ -14,9 +14,9 @@ Version 2.23 16985, 17118, 17243, 17244, 17250, 17441, 17787, 17886, 17887, 17905, 18084, 18086, 18240, 18265, 18370, 18421, 18480, 18525, 18595, 18610, 18618, 18647, 18661, 18674, 18675, 18681, 18757, 18778, 18781, 18787, - 18789, 18790, 18795, 18796, 18803, 18820, 18823, 18824, 18857, 18863, - 18870, 18872, 18873, 18875, 18887, 18921, 18951, 18952, 18961, 18966, - 18967, 18970, 18977, 18980, 18981, 19003. + 18789, 18790, 18795, 18796, 18803, 18820, 18823, 18824, 18825, 18857, + 18863, 18870, 18872, 18873, 18875, 18887, 18921, 18951, 18952, 18961, + 18966, 18967, 18970, 18977, 18980, 18981, 19003. * 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 2403216b6b..4b93857efb 100644 --- a/math/auto-libm-test-in +++ b/math/auto-libm-test-in @@ -3067,6 +3067,151 @@ pow 1.01 -min_subnorm pow 2.0 -100000.0 +pow 2 -126.125 +pow 2 -126.25 +pow 2 -126.375 +pow 2 -126.5 +pow 2 -126.625 +pow 2 -126.75 +pow 2 -126.875 +pow 2 -969.125 +pow 2 -969.25 +pow 2 -969.375 +pow 2 -969.5 +pow 2 -969.625 +pow 2 -969.75 +pow 2 -969.875 +pow 2 -1022.125 +pow 2 -1022.25 +pow 2 -1022.375 +pow 2 -1022.5 +pow 2 -1022.625 +pow 2 -1022.75 +pow 2 -1022.875 +pow 2 -16382.125 +pow 2 -16382.25 +pow 2 -16382.375 +pow 2 -16382.5 +pow 2 -16382.625 +pow 2 -16382.75 +pow 2 -16382.875 +pow 2 -16383.125 +pow 2 -16383.25 +pow 2 -16383.375 +pow 2 -16383.5 +pow 2 -16383.625 +pow 2 -16383.75 +pow 2 -16383.875 +pow 0.5 126.125 +pow 0.5 126.25 +pow 0.5 126.375 +pow 0.5 126.5 +pow 0.5 126.625 +pow 0.5 126.75 +pow 0.5 126.875 +pow 0.5 969.125 +pow 0.5 969.25 +pow 0.5 969.375 +pow 0.5 969.5 +pow 0.5 969.625 +pow 0.5 969.75 +pow 0.5 969.875 +pow 0.5 1022.125 +pow 0.5 1022.25 +pow 0.5 1022.375 +pow 0.5 1022.5 +pow 0.5 1022.625 +pow 0.5 1022.75 +pow 0.5 1022.875 +pow 0.5 16382.125 +pow 0.5 16382.25 +pow 0.5 16382.375 +pow 0.5 16382.5 +pow 0.5 16382.625 +pow 0.5 16382.75 +pow 0.5 16382.875 +pow 0.5 16383.125 +pow 0.5 16383.25 +pow 0.5 16383.375 +pow 0.5 16383.5 +pow 0.5 16383.625 +pow 0.5 16383.75 +pow 0.5 16383.875 +pow 0x1.00001p1 -126 +pow -0x1.00002p1 -126 +pow 0x1.00003p1 -126 +pow -0x1.00004p1 -126 +pow 0x1.00005p1 -126 +pow -0x1.00006p1 -126 +pow 0x1.00007p1 -126 +pow 0x1.00001p1 -969 +pow -0x1.00002p1 -969 +pow 0x1.00003p1 -969 +pow -0x1.00004p1 -969 +pow 0x1.00005p1 -969 +pow -0x1.00006p1 -969 +pow 0x1.00007p1 -969 +pow 0x1.00001p1 -1022 +pow -0x1.00002p1 -1022 +pow 0x1.00003p1 -1022 +pow -0x1.00004p1 -1022 +pow 0x1.00005p1 -1022 +pow -0x1.00006p1 -1022 +pow 0x1.00007p1 -1022 +pow 0x1.00001p1 -16382 +pow -0x1.00002p1 -16382 +pow 0x1.00003p1 -16382 +pow -0x1.00004p1 -16382 +pow 0x1.00005p1 -16382 +pow -0x1.00006p1 -16382 +pow 0x1.00007p1 -16382 +pow 0x1.00001p1 -16383 +pow -0x1.00002p1 -16383 +pow 0x1.00003p1 -16383 +pow -0x1.00004p1 -16383 +pow 0x1.00005p1 -16383 +pow -0x1.00006p1 -16383 +pow 0x1.00007p1 -16383 +pow 0x0.ffff1p-1 126 +pow -0x0.ffff2p-1 126 +pow 0x0.ffff3p-1 126 +pow -0x0.ffff4p-1 126 +pow 0x0.ffff5p-1 126 +pow -0x0.ffff6p-1 126 +pow 0x0.ffff7p-1 126 +pow 0x0.ffff1p-1 969 +pow -0x0.ffff2p-1 969 +pow 0x0.ffff3p-1 969 +pow -0x0.ffff4p-1 969 +pow 0x0.ffff5p-1 969 +pow -0x0.ffff6p-1 969 +pow 0x0.ffff7p-1 969 +pow 0x0.ffff1p-1 1022 +pow -0x0.ffff2p-1 1022 +pow 0x0.ffff3p-1 1022 +pow -0x0.ffff4p-1 1022 +pow 0x0.ffff5p-1 1022 +pow -0x0.ffff6p-1 1022 +pow 0x0.ffff7p-1 1022 +pow 0x0.ffff1p-1 16382 +pow -0x0.ffff2p-1 16382 +pow 0x0.ffff3p-1 16382 +pow -0x0.ffff4p-1 16382 +pow 0x0.ffff5p-1 16382 +pow -0x0.ffff6p-1 16382 +pow 0x0.ffff7p-1 16382 +pow 0x0.ffff1p-1 16383 +pow -0x0.ffff2p-1 16383 +pow 0x0.ffff3p-1 16383 +pow -0x0.ffff4p-1 16383 +pow 0x0.ffff5p-1 16383 +pow -0x0.ffff6p-1 16383 +pow 0x0.ffff7p-1 16383 +pow 0x2.000b3p0 -1022 +pow 0x2.000582p0 -1022 +pow 2 -0x3.fe513p+8 +pow 2 -0x3.fe4e8p+8 + pow 1.0625 1.125 pow 1.5 1.03125 pow 0x1.7d1a0a6f2p+681 1.5 diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out index ac392cb9f9..4126a7cd07 100644 --- a/math/auto-libm-test-out +++ b/math/auto-libm-test-out @@ -222650,6 +222650,3650 @@ pow 2.0 -100000.0 = pow tonearest ldbl-128ibm 0x2p+0L -0x1.86ap+16L : 0x0p+0L : inexact-ok underflow errno-erange = pow towardzero ldbl-128ibm 0x2p+0L -0x1.86ap+16L : 0x0p+0L : inexact-ok underflow errno-erange = pow upward ldbl-128ibm 0x2p+0L -0x1.86ap+16L : 0x4p-1076L : inexact-ok underflow errno-erange-ok +pow 2 -126.125 += pow downward flt-32 0x2p+0f -0x7.e2p+4f : 0x3.ab0318p-128f : inexact-ok underflow errno-erange-ok += pow tonearest flt-32 0x2p+0f -0x7.e2p+4f : 0x3.ab0318p-128f : inexact-ok underflow errno-erange-ok += pow towardzero flt-32 0x2p+0f -0x7.e2p+4f : 0x3.ab0318p-128f : inexact-ok underflow errno-erange-ok += pow upward flt-32 0x2p+0f -0x7.e2p+4f : 0x3.ab032p-128f : inexact-ok underflow errno-erange-ok += pow downward dbl-64 0x2p+0 -0x7.e2p+4 : 0x3.ab031b9f7490ep-128 : inexact-ok += pow tonearest dbl-64 0x2p+0 -0x7.e2p+4 : 0x3.ab031b9f7490ep-128 : inexact-ok += pow towardzero dbl-64 0x2p+0 -0x7.e2p+4 : 0x3.ab031b9f7490ep-128 : inexact-ok += pow upward dbl-64 0x2p+0 -0x7.e2p+4 : 0x3.ab031b9f7491p-128 : inexact-ok += pow downward ldbl-96-intel 0x2p+0L -0x7.e2p+4L : 0x3.ab031b9f7490e4b8p-128L : inexact-ok += pow tonearest ldbl-96-intel 0x2p+0L -0x7.e2p+4L : 0x3.ab031b9f7490e4bcp-128L : inexact-ok += pow towardzero ldbl-96-intel 0x2p+0L -0x7.e2p+4L : 0x3.ab031b9f7490e4b8p-128L : inexact-ok += pow upward ldbl-96-intel 0x2p+0L -0x7.e2p+4L : 0x3.ab031b9f7490e4bcp-128L : inexact-ok += pow downward ldbl-96-m68k 0x2p+0L -0x7.e2p+4L : 0x3.ab031b9f7490e4b8p-128L : inexact-ok += pow tonearest ldbl-96-m68k 0x2p+0L -0x7.e2p+4L : 0x3.ab031b9f7490e4bcp-128L : inexact-ok += pow towardzero ldbl-96-m68k 0x2p+0L -0x7.e2p+4L : 0x3.ab031b9f7490e4b8p-128L : inexact-ok += pow upward ldbl-96-m68k 0x2p+0L -0x7.e2p+4L : 0x3.ab031b9f7490e4bcp-128L : inexact-ok += pow downward ldbl-128 0x2p+0L -0x7.e2p+4L : 0x3.ab031b9f7490e4bb40b5d6cdc1b8p-128L : inexact-ok += pow tonearest ldbl-128 0x2p+0L -0x7.e2p+4L : 0x3.ab031b9f7490e4bb40b5d6cdc1bap-128L : inexact-ok += pow towardzero ldbl-128 0x2p+0L -0x7.e2p+4L : 0x3.ab031b9f7490e4bb40b5d6cdc1b8p-128L : inexact-ok += pow upward ldbl-128 0x2p+0L -0x7.e2p+4L : 0x3.ab031b9f7490e4bb40b5d6cdc1bap-128L : inexact-ok += pow downward ldbl-128ibm 0x2p+0L -0x7.e2p+4L : 0x3.ab031b9f7490e4bb40b5d6cdc1p-128L : inexact-ok += pow tonearest ldbl-128ibm 0x2p+0L -0x7.e2p+4L : 0x3.ab031b9f7490e4bb40b5d6cdc2p-128L : inexact-ok += pow towardzero ldbl-128ibm 0x2p+0L -0x7.e2p+4L : 0x3.ab031b9f7490e4bb40b5d6cdc1p-128L : inexact-ok += pow upward ldbl-128ibm 0x2p+0L -0x7.e2p+4L : 0x3.ab031b9f7490e4bb40b5d6cdc2p-128L : inexact-ok +pow 2 -126.25 += pow downward flt-32 0x2p+0f -0x7.e4p+4f : 0x3.5d13fp-128f : inexact-ok underflow errno-erange-ok += pow tonearest flt-32 0x2p+0f -0x7.e4p+4f : 0x3.5d13fp-128f : inexact-ok underflow errno-erange-ok += pow towardzero flt-32 0x2p+0f -0x7.e4p+4f : 0x3.5d13fp-128f : inexact-ok underflow errno-erange-ok += pow upward flt-32 0x2p+0f -0x7.e4p+4f : 0x3.5d13f8p-128f : inexact-ok underflow errno-erange-ok += pow downward dbl-64 0x2p+0 -0x7.e4p+4 : 0x3.5d13f32b5a75ap-128 : inexact-ok += pow tonearest dbl-64 0x2p+0 -0x7.e4p+4 : 0x3.5d13f32b5a75ap-128 : inexact-ok += pow towardzero dbl-64 0x2p+0 -0x7.e4p+4 : 0x3.5d13f32b5a75ap-128 : inexact-ok += pow upward dbl-64 0x2p+0 -0x7.e4p+4 : 0x3.5d13f32b5a75cp-128 : inexact-ok += pow downward ldbl-96-intel 0x2p+0L -0x7.e4p+4L : 0x3.5d13f32b5a75abdp-128L : inexact-ok += pow tonearest ldbl-96-intel 0x2p+0L -0x7.e4p+4L : 0x3.5d13f32b5a75abdp-128L : inexact-ok += pow towardzero ldbl-96-intel 0x2p+0L -0x7.e4p+4L : 0x3.5d13f32b5a75abdp-128L : inexact-ok += pow upward ldbl-96-intel 0x2p+0L -0x7.e4p+4L : 0x3.5d13f32b5a75abd4p-128L : inexact-ok += pow downward ldbl-96-m68k 0x2p+0L -0x7.e4p+4L : 0x3.5d13f32b5a75abdp-128L : inexact-ok += pow tonearest ldbl-96-m68k 0x2p+0L -0x7.e4p+4L : 0x3.5d13f32b5a75abdp-128L : inexact-ok += pow towardzero ldbl-96-m68k 0x2p+0L -0x7.e4p+4L : 0x3.5d13f32b5a75abdp-128L : inexact-ok += pow upward ldbl-96-m68k 0x2p+0L -0x7.e4p+4L : 0x3.5d13f32b5a75abd4p-128L : inexact-ok += pow downward ldbl-128 0x2p+0L -0x7.e4p+4L : 0x3.5d13f32b5a75abd0e69a2ee640b4p-128L : inexact-ok += pow tonearest ldbl-128 0x2p+0L -0x7.e4p+4L : 0x3.5d13f32b5a75abd0e69a2ee640b4p-128L : inexact-ok += pow towardzero ldbl-128 0x2p+0L -0x7.e4p+4L : 0x3.5d13f32b5a75abd0e69a2ee640b4p-128L : inexact-ok += pow upward ldbl-128 0x2p+0L -0x7.e4p+4L : 0x3.5d13f32b5a75abd0e69a2ee640b6p-128L : inexact-ok += pow downward ldbl-128ibm 0x2p+0L -0x7.e4p+4L : 0x3.5d13f32b5a75abd0e69a2ee64p-128L : inexact-ok += pow tonearest ldbl-128ibm 0x2p+0L -0x7.e4p+4L : 0x3.5d13f32b5a75abd0e69a2ee641p-128L : inexact-ok += pow towardzero ldbl-128ibm 0x2p+0L -0x7.e4p+4L : 0x3.5d13f32b5a75abd0e69a2ee64p-128L : inexact-ok += pow upward ldbl-128ibm 0x2p+0L -0x7.e4p+4L : 0x3.5d13f32b5a75abd0e69a2ee641p-128L : inexact-ok +pow 2 -126.375 += pow downward flt-32 0x2p+0f -0x7.e6p+4f : 0x3.159ca8p-128f : inexact-ok underflow errno-erange-ok += pow tonearest flt-32 0x2p+0f -0x7.e6p+4f : 0x3.159ca8p-128f : inexact-ok underflow errno-erange-ok += pow towardzero flt-32 0x2p+0f -0x7.e6p+4f : 0x3.159ca8p-128f : inexact-ok underflow errno-erange-ok += pow upward flt-32 0x2p+0f -0x7.e6p+4f : 0x3.159cbp-128f : inexact-ok underflow errno-erange-ok += pow downward dbl-64 0x2p+0 -0x7.e6p+4 : 0x3.159ca845541b6p-128 : inexact-ok += pow tonearest dbl-64 0x2p+0 -0x7.e6p+4 : 0x3.159ca845541b6p-128 : inexact-ok += pow towardzero dbl-64 0x2p+0 -0x7.e6p+4 : 0x3.159ca845541b6p-128 : inexact-ok += pow upward dbl-64 0x2p+0 -0x7.e6p+4 : 0x3.159ca845541b8p-128 : inexact-ok += pow downward ldbl-96-intel 0x2p+0L -0x7.e6p+4L : 0x3.159ca845541b6b74p-128L : inexact-ok += pow tonearest ldbl-96-intel 0x2p+0L -0x7.e6p+4L : 0x3.159ca845541b6b74p-128L : inexact-ok += pow towardzero ldbl-96-intel 0x2p+0L -0x7.e6p+4L : 0x3.159ca845541b6b74p-128L : inexact-ok += pow upward ldbl-96-intel 0x2p+0L -0x7.e6p+4L : 0x3.159ca845541b6b78p-128L : inexact-ok += pow downward ldbl-96-m68k 0x2p+0L -0x7.e6p+4L : 0x3.159ca845541b6b74p-128L : inexact-ok += pow tonearest ldbl-96-m68k 0x2p+0L -0x7.e6p+4L : 0x3.159ca845541b6b74p-128L : inexact-ok += pow towardzero ldbl-96-m68k 0x2p+0L -0x7.e6p+4L : 0x3.159ca845541b6b74p-128L : inexact-ok += pow upward ldbl-96-m68k 0x2p+0L -0x7.e6p+4L : 0x3.159ca845541b6b78p-128L : inexact-ok += pow downward ldbl-128 0x2p+0L -0x7.e6p+4L : 0x3.159ca845541b6b74f8ab43259376p-128L : inexact-ok += pow tonearest ldbl-128 0x2p+0L -0x7.e6p+4L : 0x3.159ca845541b6b74f8ab43259376p-128L : inexact-ok += pow towardzero ldbl-128 0x2p+0L -0x7.e6p+4L : 0x3.159ca845541b6b74f8ab43259376p-128L : inexact-ok += pow upward ldbl-128 0x2p+0L -0x7.e6p+4L : 0x3.159ca845541b6b74f8ab43259378p-128L : inexact-ok += pow downward ldbl-128ibm 0x2p+0L -0x7.e6p+4L : 0x3.159ca845541b6b74f8ab432593p-128L : inexact-ok += pow tonearest ldbl-128ibm 0x2p+0L -0x7.e6p+4L : 0x3.159ca845541b6b74f8ab432593p-128L : inexact-ok += pow towardzero ldbl-128ibm 0x2p+0L -0x7.e6p+4L : 0x3.159ca845541b6b74f8ab432593p-128L : inexact-ok += pow upward ldbl-128ibm 0x2p+0L -0x7.e6p+4L : 0x3.159ca845541b6b74f8ab432594p-128L : inexact-ok +pow 2 -126.5 += pow downward flt-32 0x2p+0f -0x7.e8p+4f : 0x2.d413c8p-128f : inexact-ok underflow errno-erange-ok += pow tonearest flt-32 0x2p+0f -0x7.e8p+4f : 0x2.d413dp-128f : inexact-ok underflow errno-erange-ok += pow towardzero flt-32 0x2p+0f -0x7.e8p+4f : 0x2.d413c8p-128f : inexact-ok underflow errno-erange-ok += pow upward flt-32 0x2p+0f -0x7.e8p+4f : 0x2.d413dp-128f : inexact-ok underflow errno-erange-ok += pow downward dbl-64 0x2p+0 -0x7.e8p+4 : 0x2.d413cccfe7798p-128 : inexact-ok += pow tonearest dbl-64 0x2p+0 -0x7.e8p+4 : 0x2.d413cccfe779ap-128 : inexact-ok += pow towardzero dbl-64 0x2p+0 -0x7.e8p+4 : 0x2.d413cccfe7798p-128 : inexact-ok += pow upward dbl-64 0x2p+0 -0x7.e8p+4 : 0x2.d413cccfe779ap-128 : inexact-ok += pow downward ldbl-96-intel 0x2p+0L -0x7.e8p+4L : 0x2.d413cccfe779921p-128L : inexact-ok += pow tonearest ldbl-96-intel 0x2p+0L -0x7.e8p+4L : 0x2.d413cccfe779921p-128L : inexact-ok += pow towardzero ldbl-96-intel 0x2p+0L -0x7.e8p+4L : 0x2.d413cccfe779921p-128L : inexact-ok += pow upward ldbl-96-intel 0x2p+0L -0x7.e8p+4L : 0x2.d413cccfe7799214p-128L : inexact-ok += pow downward ldbl-96-m68k 0x2p+0L -0x7.e8p+4L : 0x2.d413cccfe779921p-128L : inexact-ok += pow tonearest ldbl-96-m68k 0x2p+0L -0x7.e8p+4L : 0x2.d413cccfe779921p-128L : inexact-ok += pow towardzero ldbl-96-m68k 0x2p+0L -0x7.e8p+4L : 0x2.d413cccfe779921p-128L : inexact-ok += pow upward ldbl-96-m68k 0x2p+0L -0x7.e8p+4L : 0x2.d413cccfe7799214p-128L : inexact-ok += pow downward ldbl-128 0x2p+0L -0x7.e8p+4L : 0x2.d413cccfe779921165f626cdd52ap-128L : inexact-ok += pow tonearest ldbl-128 0x2p+0L -0x7.e8p+4L : 0x2.d413cccfe779921165f626cdd52ap-128L : inexact-ok += pow towardzero ldbl-128 0x2p+0L -0x7.e8p+4L : 0x2.d413cccfe779921165f626cdd52ap-128L : inexact-ok += pow upward ldbl-128 0x2p+0L -0x7.e8p+4L : 0x2.d413cccfe779921165f626cdd52cp-128L : inexact-ok += pow downward ldbl-128ibm 0x2p+0L -0x7.e8p+4L : 0x2.d413cccfe779921165f626cdd5p-128L : inexact-ok += pow tonearest ldbl-128ibm 0x2p+0L -0x7.e8p+4L : 0x2.d413cccfe779921165f626cdd5p-128L : inexact-ok += pow towardzero ldbl-128ibm 0x2p+0L -0x7.e8p+4L : 0x2.d413cccfe779921165f626cdd5p-128L : inexact-ok += pow upward ldbl-128ibm 0x2p+0L -0x7.e8p+4L : 0x2.d413cccfe779921165f626cdd6p-128L : inexact-ok +pow 2 -126.625 += pow downward flt-32 0x2p+0f -0x7.eap+4f : 0x2.97fb58p-128f : inexact-ok underflow errno-erange-ok += pow tonearest flt-32 0x2p+0f -0x7.eap+4f : 0x2.97fb58p-128f : inexact-ok underflow errno-erange-ok += pow towardzero flt-32 0x2p+0f -0x7.eap+4f : 0x2.97fb58p-128f : inexact-ok underflow errno-erange-ok += pow upward flt-32 0x2p+0f -0x7.eap+4f : 0x2.97fb6p-128f : inexact-ok underflow errno-erange-ok += pow downward dbl-64 0x2p+0 -0x7.eap+4 : 0x2.97fb5aa6c544ep-128 : inexact-ok += pow tonearest dbl-64 0x2p+0 -0x7.eap+4 : 0x2.97fb5aa6c544ep-128 : inexact-ok += pow towardzero dbl-64 0x2p+0 -0x7.eap+4 : 0x2.97fb5aa6c544ep-128 : inexact-ok += pow upward dbl-64 0x2p+0 -0x7.eap+4 : 0x2.97fb5aa6c545p-128 : inexact-ok += pow downward ldbl-96-intel 0x2p+0L -0x7.eap+4L : 0x2.97fb5aa6c544e3a8p-128L : inexact-ok += pow tonearest ldbl-96-intel 0x2p+0L -0x7.eap+4L : 0x2.97fb5aa6c544e3a8p-128L : inexact-ok += pow towardzero ldbl-96-intel 0x2p+0L -0x7.eap+4L : 0x2.97fb5aa6c544e3a8p-128L : inexact-ok += pow upward ldbl-96-intel 0x2p+0L -0x7.eap+4L : 0x2.97fb5aa6c544e3acp-128L : inexact-ok += pow downward ldbl-96-m68k 0x2p+0L -0x7.eap+4L : 0x2.97fb5aa6c544e3a8p-128L : inexact-ok += pow tonearest ldbl-96-m68k 0x2p+0L -0x7.eap+4L : 0x2.97fb5aa6c544e3a8p-128L : inexact-ok += pow towardzero ldbl-96-m68k 0x2p+0L -0x7.eap+4L : 0x2.97fb5aa6c544e3a8p-128L : inexact-ok += pow upward ldbl-96-m68k 0x2p+0L -0x7.eap+4L : 0x2.97fb5aa6c544e3acp-128L : inexact-ok += pow downward ldbl-128 0x2p+0L -0x7.eap+4L : 0x2.97fb5aa6c544e3a872f5fd885c4p-128L : inexact-ok += pow tonearest ldbl-128 0x2p+0L -0x7.eap+4L : 0x2.97fb5aa6c544e3a872f5fd885c42p-128L : inexact-ok += pow towardzero ldbl-128 0x2p+0L -0x7.eap+4L : 0x2.97fb5aa6c544e3a872f5fd885c4p-128L : inexact-ok += pow upward ldbl-128 0x2p+0L -0x7.eap+4L : 0x2.97fb5aa6c544e3a872f5fd885c42p-128L : inexact-ok += pow downward ldbl-128ibm 0x2p+0L -0x7.eap+4L : 0x2.97fb5aa6c544e3a872f5fd885cp-128L : inexact-ok += pow tonearest ldbl-128ibm 0x2p+0L -0x7.eap+4L : 0x2.97fb5aa6c544e3a872f5fd885cp-128L : inexact-ok += pow towardzero ldbl-128ibm 0x2p+0L -0x7.eap+4L : 0x2.97fb5aa6c544e3a872f5fd885cp-128L : inexact-ok += pow upward ldbl-128ibm 0x2p+0L -0x7.eap+4L : 0x2.97fb5aa6c544e3a872f5fd885dp-128L : inexact-ok +pow 2 -126.75 += pow downward flt-32 0x2p+0f -0x7.ecp+4f : 0x2.60dfcp-128f : inexact-ok underflow errno-erange-ok += pow tonearest flt-32 0x2p+0f -0x7.ecp+4f : 0x2.60dfcp-128f : inexact-ok underflow errno-erange-ok += pow towardzero flt-32 0x2p+0f -0x7.ecp+4f : 0x2.60dfcp-128f : inexact-ok underflow errno-erange-ok += pow upward flt-32 0x2p+0f -0x7.ecp+4f : 0x2.60dfc8p-128f : inexact-ok underflow errno-erange-ok += pow downward dbl-64 0x2p+0 -0x7.ecp+4 : 0x2.60dfc14636e2ap-128 : inexact-ok += pow tonearest dbl-64 0x2p+0 -0x7.ecp+4 : 0x2.60dfc14636e2ap-128 : inexact-ok += pow towardzero dbl-64 0x2p+0 -0x7.ecp+4 : 0x2.60dfc14636e2ap-128 : inexact-ok += pow upward dbl-64 0x2p+0 -0x7.ecp+4 : 0x2.60dfc14636e2cp-128 : inexact-ok += pow downward ldbl-96-intel 0x2p+0L -0x7.ecp+4L : 0x2.60dfc14636e2a5bcp-128L : inexact-ok += pow tonearest ldbl-96-intel 0x2p+0L -0x7.ecp+4L : 0x2.60dfc14636e2a5bcp-128L : inexact-ok += pow towardzero ldbl-96-intel 0x2p+0L -0x7.ecp+4L : 0x2.60dfc14636e2a5bcp-128L : inexact-ok += pow upward ldbl-96-intel 0x2p+0L -0x7.ecp+4L : 0x2.60dfc14636e2a5cp-128L : inexact-ok += pow downward ldbl-96-m68k 0x2p+0L -0x7.ecp+4L : 0x2.60dfc14636e2a5bcp-128L : inexact-ok += pow tonearest ldbl-96-m68k 0x2p+0L -0x7.ecp+4L : 0x2.60dfc14636e2a5bcp-128L : inexact-ok += pow towardzero ldbl-96-m68k 0x2p+0L -0x7.ecp+4L : 0x2.60dfc14636e2a5bcp-128L : inexact-ok += pow upward ldbl-96-m68k 0x2p+0L -0x7.ecp+4L : 0x2.60dfc14636e2a5cp-128L : inexact-ok += pow downward ldbl-128 0x2p+0L -0x7.ecp+4L : 0x2.60dfc14636e2a5bd1ab48c60b90ap-128L : inexact-ok += pow tonearest ldbl-128 0x2p+0L -0x7.ecp+4L : 0x2.60dfc14636e2a5bd1ab48c60b90cp-128L : inexact-ok += pow towardzero ldbl-128 0x2p+0L -0x7.ecp+4L : 0x2.60dfc14636e2a5bd1ab48c60b90ap-128L : inexact-ok += pow upward ldbl-128 0x2p+0L -0x7.ecp+4L : 0x2.60dfc14636e2a5bd1ab48c60b90cp-128L : inexact-ok += pow downward ldbl-128ibm 0x2p+0L -0x7.ecp+4L : 0x2.60dfc14636e2a5bd1ab48c60b9p-128L : inexact-ok += pow tonearest ldbl-128ibm 0x2p+0L -0x7.ecp+4L : 0x2.60dfc14636e2a5bd1ab48c60b9p-128L : inexact-ok += pow towardzero ldbl-128ibm 0x2p+0L -0x7.ecp+4L : 0x2.60dfc14636e2a5bd1ab48c60b9p-128L : inexact-ok += pow upward ldbl-128ibm 0x2p+0L -0x7.ecp+4L : 0x2.60dfc14636e2a5bd1ab48c60bap-128L : inexact-ok +pow 2 -126.875 += pow downward flt-32 0x2p+0f -0x7.eep+4f : 0x2.2e57p-128f : inexact-ok underflow errno-erange-ok += pow tonearest flt-32 0x2p+0f -0x7.eep+4f : 0x2.2e5708p-128f : inexact-ok underflow errno-erange-ok += pow towardzero flt-32 0x2p+0f -0x7.eep+4f : 0x2.2e57p-128f : inexact-ok underflow errno-erange-ok += pow upward flt-32 0x2p+0f -0x7.eep+4f : 0x2.2e5708p-128f : inexact-ok underflow errno-erange-ok += pow downward dbl-64 0x2p+0 -0x7.eep+4 : 0x2.2e57078faa2f4p-128 : inexact-ok += pow tonearest dbl-64 0x2p+0 -0x7.eep+4 : 0x2.2e57078faa2f6p-128 : inexact-ok += pow towardzero dbl-64 0x2p+0 -0x7.eep+4 : 0x2.2e57078faa2f4p-128 : inexact-ok += pow upward dbl-64 0x2p+0 -0x7.eep+4 : 0x2.2e57078faa2f6p-128 : inexact-ok += pow downward ldbl-96-intel 0x2p+0L -0x7.eep+4L : 0x2.2e57078faa2f5b98p-128L : inexact-ok += pow tonearest ldbl-96-intel 0x2p+0L -0x7.eep+4L : 0x2.2e57078faa2f5b9cp-128L : inexact-ok += pow towardzero ldbl-96-intel 0x2p+0L -0x7.eep+4L : 0x2.2e57078faa2f5b98p-128L : inexact-ok += pow upward ldbl-96-intel 0x2p+0L -0x7.eep+4L : 0x2.2e57078faa2f5b9cp-128L : inexact-ok += pow downward ldbl-96-m68k 0x2p+0L -0x7.eep+4L : 0x2.2e57078faa2f5b98p-128L : inexact-ok += pow tonearest ldbl-96-m68k 0x2p+0L -0x7.eep+4L : 0x2.2e57078faa2f5b9cp-128L : inexact-ok += pow towardzero ldbl-96-m68k 0x2p+0L -0x7.eep+4L : 0x2.2e57078faa2f5b98p-128L : inexact-ok += pow upward ldbl-96-m68k 0x2p+0L -0x7.eep+4L : 0x2.2e57078faa2f5b9cp-128L : inexact-ok += pow downward ldbl-128 0x2p+0L -0x7.eep+4L : 0x2.2e57078faa2f5b9bef918a1d6294p-128L : inexact-ok += pow tonearest ldbl-128 0x2p+0L -0x7.eep+4L : 0x2.2e57078faa2f5b9bef918a1d6294p-128L : inexact-ok += pow towardzero ldbl-128 0x2p+0L -0x7.eep+4L : 0x2.2e57078faa2f5b9bef918a1d6294p-128L : inexact-ok += pow upward ldbl-128 0x2p+0L -0x7.eep+4L : 0x2.2e57078faa2f5b9bef918a1d6296p-128L : inexact-ok += pow downward ldbl-128ibm 0x2p+0L -0x7.eep+4L : 0x2.2e57078faa2f5b9bef918a1d62p-128L : inexact-ok += pow tonearest ldbl-128ibm 0x2p+0L -0x7.eep+4L : 0x2.2e57078faa2f5b9bef918a1d63p-128L : inexact-ok += pow towardzero ldbl-128ibm 0x2p+0L -0x7.eep+4L : 0x2.2e57078faa2f5b9bef918a1d62p-128L : inexact-ok += pow upward ldbl-128ibm 0x2p+0L -0x7.eep+4L : 0x2.2e57078faa2f5b9bef918a1d63p-128L : inexact-ok +pow 2 -969.125 += pow downward flt-32 0x2p+0f -0x3.c92p+8f : 0x0p+0f : inexact-ok underflow errno-erange += pow tonearest flt-32 0x2p+0f -0x3.c92p+8f : 0x0p+0f : inexact-ok underflow errno-erange += pow towardzero flt-32 0x2p+0f -0x3.c92 |
