diff options
author | Joseph Myers <joseph@codesourcery.com> | 2014-06-23 20:15:14 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2014-06-23 20:15:14 +0000 |
commit | 863893ec95f316a3d156d487b99242ee1b52f803 (patch) | |
tree | 88b7b115fcd0036af09a8089645db9e9cc221f7a /math | |
parent | 4da6db51880289f0bf41b39e05cf9bb1c4769c47 (diff) | |
download | glibc-863893ec95f316a3d156d487b99242ee1b52f803.zip glibc-863893ec95f316a3d156d487b99242ee1b52f803.tar.gz glibc-863893ec95f316a3d156d487b99242ee1b52f803.tar.bz2 |
Test cpow in all rounding modes.
This patch enables testing of cpow in all rounding modes using
ALL_RM_TEST. There were two reasons this was previously deferred:
* MPC has complicated rounding-mode-dependent rules for the signs of
exact zero real or imaginary parts in the result of mpc_pow. Annex
G does not impose any such requirements and I don't think glibc
should try to implement any particular logic here. This patch adds
support for gen-auto-libm-tests passing the IGNORE_ZERO_INF_SIGN
flag to libm-test.inc.
* Error accumulations in some tests in non-default rounding modes
exceed the maximum error permitted in libm-test.inc. This patch
marks the problem tests with xfail-rounding. (It might be possible
to reduce the accumulations a bit by using round-to-nearest when
cpow calls clog, but I don't think there's much point; the
implementation approach for cpow is fundamentally deficient, as
discussed in the existing bug for cpow inaccuracy which can
reasonably be considered to cover these less-inaccurate cases as
well. It's possible that the test "cpow 2 0 10 0" will also need
xfail-rounding on some platforms.)
Tested x86_64 and x86 and ulps updated accordingly.
* math/gen-auto-libm-tests.c: Document use of
ignore-zero-inf-sign.
(input_flag_type): Add value flag_ignore_zero_inf_sign.
(input_flags): Add ignore-zero-inf-sign.
(output_for_one_input_case): Handle flag_ignore_zero_inf_sign.
* math/gen-libm-test.pl (generate_testfile): Handle
ignore-zero-inf-sign.
* math/auto-libm-test-in: Mark some cpow tests with
ignore-zero-inf-sign and some with xfail-rounding.
* math/auto-libm-test-out: Regenerated.
* math/libm-test.inc (cpow_test): Use ALL_RM_TEST.
* sysdeps/i386/fpu/libm-test-ulps: Update.
* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
Diffstat (limited to 'math')
-rw-r--r-- | math/auto-libm-test-in | 10 | ||||
-rw-r--r-- | math/auto-libm-test-out | 214 | ||||
-rw-r--r-- | math/gen-auto-libm-tests.c | 44 | ||||
-rwxr-xr-x | math/gen-libm-test.pl | 4 | ||||
-rw-r--r-- | math/libm-test.inc | 4 |
5 files changed, 141 insertions, 135 deletions
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in index 0053340..673a444 100644 --- a/math/auto-libm-test-in +++ b/math/auto-libm-test-in @@ -652,14 +652,14 @@ cosh 0x2.c5d37700c6bb03a6c24b6c9b494ep+12 no-test-inline xfail-rounding:ldbl-128 cosh -0x2.c5d37700c6bb03a6c24b6c9b494cp+12 no-test-inline xfail-rounding:ldbl-128ibm cosh -0x2.c5d37700c6bb03a6c24b6c9b494ep+12 no-test-inline xfail-rounding:ldbl-128ibm -cpow 1 0 0 0 -cpow 2 0 10 0 +cpow 1 0 0 0 ignore-zero-inf-sign +cpow 2 0 10 0 ignore-zero-inf-sign # Bug 14473: cpow results inaccurate. cpow e 0 0 2pi xfail -cpow 2 3 4 0 +cpow 2 3 4 0 xfail-rounding -cpow 0.75 1.25 0.75 1.25 -cpow 0.75 1.25 1.0 1.0 +cpow 0.75 1.25 0.75 1.25 xfail-rounding +cpow 0.75 1.25 1.0 1.0 xfail-rounding cpow 0.75 1.25 1.0 0.0 cpow 0.75 1.25 0.0 1.0 diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out index a1f33d7..aad46a4 100644 --- a/math/auto-libm-test-out +++ b/math/auto-libm-test-out @@ -77937,56 +77937,56 @@ cosh -0x2.c5d37700c6bb03a6c24b6c9b494ep+12 no-test-inline xfail-rounding:ldbl-12 = cosh tonearest ldbl-128ibm -0x2.c5d37700c6bb03a6c24b6c9b4ap+12L : plus_infty : no-test-inline inexact-ok overflow errno-erange = cosh towardzero ldbl-128ibm -0x2.c5d37700c6bb03a6c24b6c9b4ap+12L : 0xf.ffffffffffffbffffffffffffcp+1020L : no-test-inline xfail:ldbl-128ibm inexact-ok overflow errno-erange-ok = cosh upward ldbl-128ibm -0x2.c5d37700c6bb03a6c24b6c9b4ap+12L : plus_infty : no-test-inline xfail:ldbl-128ibm inexact-ok overflow errno-erange -cpow 1 0 0 0 -= cpow downward flt-32 0x1p+0f 0x0p+0f 0x0p+0f 0x0p+0f : 0x1p+0f -0x0p+0f : inexact-ok -= cpow tonearest flt-32 0x1p+0f 0x0p+0f 0x0p+0f 0x0p+0f : 0x1p+0f 0x0p+0f : inexact-ok -= cpow towardzero flt-32 0x1p+0f 0x0p+0f 0x0p+0f 0x0p+0f : 0x1p+0f 0x0p+0f : inexact-ok -= cpow upward flt-32 0x1p+0f 0x0p+0f 0x0p+0f 0x0p+0f : 0x1p+0f 0x0p+0f : inexact-ok -= cpow downward dbl-64 0x1p+0 0x0p+0 0x0p+0 0x0p+0 : 0x1p+0 -0x0p+0 : inexact-ok -= cpow tonearest dbl-64 0x1p+0 0x0p+0 0x0p+0 0x0p+0 : 0x1p+0 0x0p+0 : inexact-ok -= cpow towardzero dbl-64 0x1p+0 0x0p+0 0x0p+0 0x0p+0 : 0x1p+0 0x0p+0 : inexact-ok -= cpow upward dbl-64 0x1p+0 0x0p+0 0x0p+0 0x0p+0 : 0x1p+0 0x0p+0 : inexact-ok -= cpow downward ldbl-96-intel 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L -0x0p+0L : inexact-ok -= cpow tonearest ldbl-96-intel 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : inexact-ok -= cpow towardzero ldbl-96-intel 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : inexact-ok -= cpow upward ldbl-96-intel 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : inexact-ok -= cpow downward ldbl-96-m68k 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L -0x0p+0L : inexact-ok -= cpow tonearest ldbl-96-m68k 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : inexact-ok -= cpow towardzero ldbl-96-m68k 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : inexact-ok -= cpow upward ldbl-96-m68k 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : inexact-ok -= cpow downward ldbl-128 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L -0x0p+0L : inexact-ok -= cpow tonearest ldbl-128 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : inexact-ok -= cpow towardzero ldbl-128 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : inexact-ok -= cpow upward ldbl-128 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : inexact-ok -= cpow downward ldbl-128ibm 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L -0x0p+0L : inexact-ok -= cpow tonearest ldbl-128ibm 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : inexact-ok -= cpow towardzero ldbl-128ibm 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : inexact-ok -= cpow upward ldbl-128ibm 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : inexact-ok -cpow 2 0 10 0 -= cpow downward flt-32 0x2p+0f 0x0p+0f 0xap+0f 0x0p+0f : 0x4p+8f -0x0p+0f : inexact-ok -= cpow tonearest flt-32 0x2p+0f 0x0p+0f 0xap+0f 0x0p+0f : 0x4p+8f 0x0p+0f : inexact-ok -= cpow towardzero flt-32 0x2p+0f 0x0p+0f 0xap+0f 0x0p+0f : 0x4p+8f 0x0p+0f : inexact-ok -= cpow upward flt-32 0x2p+0f 0x0p+0f 0xap+0f 0x0p+0f : 0x4p+8f 0x0p+0f : inexact-ok -= cpow downward dbl-64 0x2p+0 0x0p+0 0xap+0 0x0p+0 : 0x4p+8 -0x0p+0 : inexact-ok -= cpow tonearest dbl-64 0x2p+0 0x0p+0 0xap+0 0x0p+0 : 0x4p+8 0x0p+0 : inexact-ok -= cpow towardzero dbl-64 0x2p+0 0x0p+0 0xap+0 0x0p+0 : 0x4p+8 0x0p+0 : inexact-ok -= cpow upward dbl-64 0x2p+0 0x0p+0 0xap+0 0x0p+0 : 0x4p+8 0x0p+0 : inexact-ok -= cpow downward ldbl-96-intel 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L -0x0p+0L : inexact-ok -= cpow tonearest ldbl-96-intel 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : inexact-ok -= cpow towardzero ldbl-96-intel 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : inexact-ok -= cpow upward ldbl-96-intel 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : inexact-ok -= cpow downward ldbl-96-m68k 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L -0x0p+0L : inexact-ok -= cpow tonearest ldbl-96-m68k 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : inexact-ok -= cpow towardzero ldbl-96-m68k 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : inexact-ok -= cpow upward ldbl-96-m68k 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : inexact-ok -= cpow downward ldbl-128 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L -0x0p+0L : inexact-ok -= cpow tonearest ldbl-128 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : inexact-ok -= cpow towardzero ldbl-128 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : inexact-ok -= cpow upward ldbl-128 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : inexact-ok -= cpow downward ldbl-128ibm 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L -0x0p+0L : inexact-ok -= cpow tonearest ldbl-128ibm 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : inexact-ok -= cpow towardzero ldbl-128ibm 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : inexact-ok -= cpow upward ldbl-128ibm 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : inexact-ok +cpow 1 0 0 0 ignore-zero-inf-sign += cpow downward flt-32 0x1p+0f 0x0p+0f 0x0p+0f 0x0p+0f : 0x1p+0f -0x0p+0f : ignore-zero-inf-sign inexact-ok += cpow tonearest flt-32 0x1p+0f 0x0p+0f 0x0p+0f 0x0p+0f : 0x1p+0f 0x0p+0f : ignore-zero-inf-sign inexact-ok += cpow towardzero flt-32 0x1p+0f 0x0p+0f 0x0p+0f 0x0p+0f : 0x1p+0f 0x0p+0f : ignore-zero-inf-sign inexact-ok += cpow upward flt-32 0x1p+0f 0x0p+0f 0x0p+0f 0x0p+0f : 0x1p+0f 0x0p+0f : ignore-zero-inf-sign inexact-ok += cpow downward dbl-64 0x1p+0 0x0p+0 0x0p+0 0x0p+0 : 0x1p+0 -0x0p+0 : ignore-zero-inf-sign inexact-ok += cpow tonearest dbl-64 0x1p+0 0x0p+0 0x0p+0 0x0p+0 : 0x1p+0 0x0p+0 : ignore-zero-inf-sign inexact-ok += cpow towardzero dbl-64 0x1p+0 0x0p+0 0x0p+0 0x0p+0 : 0x1p+0 0x0p+0 : ignore-zero-inf-sign inexact-ok += cpow upward dbl-64 0x1p+0 0x0p+0 0x0p+0 0x0p+0 : 0x1p+0 0x0p+0 : ignore-zero-inf-sign inexact-ok += cpow downward ldbl-96-intel 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L -0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow tonearest ldbl-96-intel 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow towardzero ldbl-96-intel 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow upward ldbl-96-intel 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow downward ldbl-96-m68k 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L -0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow tonearest ldbl-96-m68k 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow towardzero ldbl-96-m68k 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow upward ldbl-96-m68k 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow downward ldbl-128 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L -0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow tonearest ldbl-128 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow towardzero ldbl-128 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow upward ldbl-128 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow downward ldbl-128ibm 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L -0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow tonearest ldbl-128ibm 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow towardzero ldbl-128ibm 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow upward ldbl-128ibm 0x1p+0L 0x0p+0L 0x0p+0L 0x0p+0L : 0x1p+0L 0x0p+0L : ignore-zero-inf-sign inexact-ok +cpow 2 0 10 0 ignore-zero-inf-sign += cpow downward flt-32 0x2p+0f 0x0p+0f 0xap+0f 0x0p+0f : 0x4p+8f -0x0p+0f : ignore-zero-inf-sign inexact-ok += cpow tonearest flt-32 0x2p+0f 0x0p+0f 0xap+0f 0x0p+0f : 0x4p+8f 0x0p+0f : ignore-zero-inf-sign inexact-ok += cpow towardzero flt-32 0x2p+0f 0x0p+0f 0xap+0f 0x0p+0f : 0x4p+8f 0x0p+0f : ignore-zero-inf-sign inexact-ok += cpow upward flt-32 0x2p+0f 0x0p+0f 0xap+0f 0x0p+0f : 0x4p+8f 0x0p+0f : ignore-zero-inf-sign inexact-ok += cpow downward dbl-64 0x2p+0 0x0p+0 0xap+0 0x0p+0 : 0x4p+8 -0x0p+0 : ignore-zero-inf-sign inexact-ok += cpow tonearest dbl-64 0x2p+0 0x0p+0 0xap+0 0x0p+0 : 0x4p+8 0x0p+0 : ignore-zero-inf-sign inexact-ok += cpow towardzero dbl-64 0x2p+0 0x0p+0 0xap+0 0x0p+0 : 0x4p+8 0x0p+0 : ignore-zero-inf-sign inexact-ok += cpow upward dbl-64 0x2p+0 0x0p+0 0xap+0 0x0p+0 : 0x4p+8 0x0p+0 : ignore-zero-inf-sign inexact-ok += cpow downward ldbl-96-intel 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L -0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow tonearest ldbl-96-intel 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow towardzero ldbl-96-intel 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow upward ldbl-96-intel 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow downward ldbl-96-m68k 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L -0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow tonearest ldbl-96-m68k 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow towardzero ldbl-96-m68k 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow upward ldbl-96-m68k 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow downward ldbl-128 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L -0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow tonearest ldbl-128 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow towardzero ldbl-128 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow upward ldbl-128 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow downward ldbl-128ibm 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L -0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow tonearest ldbl-128ibm 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow towardzero ldbl-128ibm 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : ignore-zero-inf-sign inexact-ok += cpow upward ldbl-128ibm 0x2p+0L 0x0p+0L 0xap+0L 0x0p+0L : 0x4p+8L 0x0p+0L : ignore-zero-inf-sign inexact-ok cpow e 0 0 2pi xfail = cpow downward flt-32 0x2.b7e154p+0f 0x0p+0f 0x0p+0f 0x6.487ed8p+0f : 0xf.fffffp-4f 0x8.fa605p-24f : xfail inexact-ok = cpow tonearest flt-32 0x2.b7e154p+0f 0x0p+0f 0x0p+0f 0x6.487ed8p+0f : 0x1p+0f 0x8.fa605p-24f : xfail inexact-ok @@ -79012,81 +79012,81 @@ cpow e 0 0 2pi xfail = cpow tonearest ldbl-128ibm 0x2.b7e151628aed2a6abf7158809cp+0L 0x0p+0L 0x0p+0L 0x6.487ed5110b4611a62633145c06p+0L : 0x1p+0L -0x3.1718b9f46bd64de2f0226f7109p-104L : xfail inexact-ok = cpow towardzero ldbl-128ibm 0x2.b7e151628aed2a6abf7158809cp+0L 0x0p+0L 0x0p+0L 0x6.487ed5110b4611a62633145c06p+0L : 0xf.fffffffffffffffffffffffffcp-4L -0x3.1718b9f46bd64de2f0226f7108p-104L : xfail inexact-ok = cpow upward ldbl-128ibm 0x2.b7e151628aed2a6abf7158809cp+0L 0x0p+0L 0x0p+0L 0x6.487ed5110b4611a62633145c06p+0L : 0x1p+0L -0x3.1718b9f46bd64de2f0226f7108p-104L : xfail inexact-ok -cpow 2 3 4 0 -= cpow downward flt-32 0x2p+0f 0x3p+0f 0x4p+0f 0x0p+0f : -0x7.7p+4f -0x7.8p+4f : inexact-ok +cpow 2 3 4 0 xfail-rounding += cpow downward flt-32 0x2p+0f 0x3p+0f 0x4p+0f 0x0p+0f : -0x7.7p+4f -0x7.8p+4f : xfail inexact-ok = cpow tonearest flt-32 0x2p+0f 0x3p+0f 0x4p+0f 0x0p+0f : -0x7.7p+4f -0x7.8p+4f : inexact-ok -= cpow towardzero flt-32 0x2p+0f 0x3p+0f 0x4p+0f 0x0p+0f : -0x7.7p+4f -0x7.8p+4f : inexact-ok -= cpow upward flt-32 0x2p+0f 0x3p+0f 0x4p+0f 0x0p+0f : -0x7.7p+4f -0x7.8p+4f : inexact-ok -= cpow downward dbl-64 0x2p+0 0x3p+0 0x4p+0 0x0p+0 : -0x7.7p+4 -0x7.8p+4 : inexact-ok += cpow towardzero flt-32 0x2p+0f 0x3p+0f 0x4p+0f 0x0p+0f : -0x7.7p+4f -0x7.8p+4f : xfail inexact-ok += cpow upward flt-32 0x2p+0f 0x3p+0f 0x4p+0f 0x0p+0f : -0x7.7p+4f -0x7.8p+4f : xfail inexact-ok += cpow downward dbl-64 0x2p+0 0x3p+0 0x4p+0 0x0p+0 : -0x7.7p+4 -0x7.8p+4 : xfail inexact-ok = cpow tonearest dbl-64 0x2p+0 0x3p+0 0x4p+0 0x0p+0 : -0x7.7p+4 -0x7.8p+4 : inexact-ok -= cpow towardzero dbl-64 0x2p+0 0x3p+0 0x4p+0 0x0p+0 : -0x7.7p+4 -0x7.8p+4 : inexact-ok -= cpow upward dbl-64 0x2p+0 0x3p+0 0x4p+0 0x0p+0 : -0x7.7p+4 -0x7.8p+4 : inexact-ok -= cpow downward ldbl-96-intel 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : inexact-ok += cpow towardzero dbl-64 0x2p+0 0x3p+0 0x4p+0 0x0p+0 : -0x7.7p+4 -0x7.8p+4 : xfail inexact-ok += cpow upward dbl-64 0x2p+0 0x3p+0 0x4p+0 0x0p+0 : -0x7.7p+4 -0x7.8p+4 : xfail inexact-ok += cpow downward ldbl-96-intel 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : xfail inexact-ok = cpow tonearest ldbl-96-intel 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : inexact-ok -= cpow towardzero ldbl-96-intel 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : inexact-ok -= cpow upward ldbl-96-intel 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : inexact-ok -= cpow downward ldbl-96-m68k 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : inexact-ok += cpow towardzero ldbl-96-intel 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : xfail inexact-ok += cpow upward ldbl-96-intel 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : xfail inexact-ok += cpow downward ldbl-96-m68k 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : xfail inexact-ok = cpow tonearest ldbl-96-m68k 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : inexact-ok -= cpow towardzero ldbl-96-m68k 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : inexact-ok -= cpow upward ldbl-96-m68k 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : inexact-ok -= cpow downward ldbl-128 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : inexact-ok += cpow towardzero ldbl-96-m68k 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : xfail inexact-ok += cpow upward ldbl-96-m68k 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : xfail inexact-ok += cpow downward ldbl-128 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : xfail inexact-ok = cpow tonearest ldbl-128 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : inexact-ok -= cpow towardzero ldbl-128 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : inexact-ok -= cpow upward ldbl-128 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : inexact-ok -= cpow downward ldbl-128ibm 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : inexact-ok += cpow towardzero ldbl-128 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : xfail inexact-ok += cpow upward ldbl-128 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : xfail inexact-ok += cpow downward ldbl-128ibm 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : xfail inexact-ok = cpow tonearest ldbl-128ibm 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : inexact-ok -= cpow towardzero ldbl-128ibm 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : inexact-ok -= cpow upward ldbl-128ibm 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : inexact-ok -cpow 0.75 1.25 0.75 1.25 -= cpow downward flt-32 0xcp-4f 0x1.4p+0f 0xcp-4f 0x1.4p+0f : 0x1.e14e46p-4f 0x5.8b7aep-4f : inexact-ok += cpow towardzero ldbl-128ibm 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : xfail inexact-ok += cpow upward ldbl-128ibm 0x2p+0L 0x3p+0L 0x4p+0L 0x0p+0L : -0x7.7p+4L -0x7.8p+4L : xfail inexact-ok +cpow 0.75 1.25 0.75 1.25 xfail-rounding += cpow downward flt-32 0xcp-4f 0x1.4p+0f 0xcp-4f 0x1.4p+0f : 0x1.e14e46p-4f 0x5.8b7aep-4f : xfail inexact-ok = cpow tonearest flt-32 0xcp-4f 0x1.4p+0f 0xcp-4f 0x1.4p+0f : 0x1.e14e48p-4f 0x5.8b7ae8p-4f : inexact-ok -= cpow towardzero flt-32 0xcp-4f 0x1.4p+0f 0xcp-4f 0x1.4p+0f : 0x1.e14e46p-4f 0x5.8b7aep-4f : inexact-ok -= cpow upward flt-32 0xcp-4f 0x1.4p+0f 0xcp-4f 0x1.4p+0f : 0x1.e14e48p-4f 0x5.8b7ae8p-4f : inexact-ok -= cpow downward dbl-64 0xcp-4 0x1.4p+0 0xcp-4 0x1.4p+0 : 0x1.e14e4796fd3f1p-4 0x5.8b7ae4dbf0a78p-4 : inexact-ok += cpow towardzero flt-32 0xcp-4f 0x1.4p+0f 0xcp-4f 0x1.4p+0f : 0x1.e14e46p-4f 0x5.8b7aep-4f : xfail inexact-ok += cpow upward flt-32 0xcp-4f 0x1.4p+0f 0xcp-4f 0x1.4p+0f : 0x1.e14e48p-4f 0x5.8b7ae8p-4f : xfail inexact-ok += cpow downward dbl-64 0xcp-4 0x1.4p+0 0xcp-4 0x1.4p+0 : 0x1.e14e4796fd3f1p-4 0x5.8b7ae4dbf0a78p-4 : xfail inexact-ok = cpow tonearest dbl-64 0xcp-4 0x1.4p+0 0xcp-4 0x1.4p+0 : 0x1.e14e4796fd3f1p-4 0x5.8b7ae4dbf0a78p-4 : inexact-ok -= cpow towardzero dbl-64 0xcp-4 0x1.4p+0 0xcp-4 0x1.4p+0 : 0x1.e14e4796fd3f1p-4 0x5.8b7ae4dbf0a78p-4 : inexact-ok -= cpow upward dbl-64 0xcp-4 0x1.4p+0 0xcp-4 0x1.4p+0 : 0x1.e14e4796fd3f2p-4 0x5.8b7ae4dbf0a7cp-4 : inexact-ok -= cpow downward ldbl-96-intel 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16p-4L 0x5.8b7ae4dbf0a7933p-4L : inexact-ok += cpow towardzero dbl-64 0xcp-4 0x1.4p+0 0xcp-4 0x1.4p+0 : 0x1.e14e4796fd3f1p-4 0x5.8b7ae4dbf0a78p-4 : xfail inexact-ok += cpow upward dbl-64 0xcp-4 0x1.4p+0 0xcp-4 0x1.4p+0 : 0x1.e14e4796fd3f2p-4 0x5.8b7ae4dbf0a7cp-4 : xfail inexact-ok += cpow downward ldbl-96-intel 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16p-4L 0x5.8b7ae4dbf0a7933p-4L : xfail inexact-ok = cpow tonearest ldbl-96-intel 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f1602p-4L 0x5.8b7ae4dbf0a79338p-4L : inexact-ok -= cpow towardzero ldbl-96-intel 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16p-4L 0x5.8b7ae4dbf0a7933p-4L : inexact-ok -= cpow upward ldbl-96-intel 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f1602p-4L 0x5.8b7ae4dbf0a79338p-4L : inexact-ok -= cpow downward ldbl-96-m68k 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16p-4L 0x5.8b7ae4dbf0a7933p-4L : inexact-ok += cpow towardzero ldbl-96-intel 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16p-4L 0x5.8b7ae4dbf0a7933p-4L : xfail inexact-ok += cpow upward ldbl-96-intel 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f1602p-4L 0x5.8b7ae4dbf0a79338p-4L : xfail inexact-ok += cpow downward ldbl-96-m68k 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16p-4L 0x5.8b7ae4dbf0a7933p-4L : xfail inexact-ok = cpow tonearest ldbl-96-m68k 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f1602p-4L 0x5.8b7ae4dbf0a79338p-4L : inexact-ok -= cpow towardzero ldbl-96-m68k 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16p-4L 0x5.8b7ae4dbf0a7933p-4L : inexact-ok -= cpow upward ldbl-96-m68k 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f1602p-4L 0x5.8b7ae4dbf0a79338p-4L : inexact-ok -= cpow downward ldbl-128 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16019f9eb01485e3p-4L 0x5.8b7ae4dbf0a7933416f4a46c0bb8p-4L : inexact-ok += cpow towardzero ldbl-96-m68k 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16p-4L 0x5.8b7ae4dbf0a7933p-4L : xfail inexact-ok += cpow upward ldbl-96-m68k 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f1602p-4L 0x5.8b7ae4dbf0a79338p-4L : xfail inexact-ok += cpow downward ldbl-128 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16019f9eb01485e3p-4L 0x5.8b7ae4dbf0a7933416f4a46c0bb8p-4L : xfail inexact-ok = cpow tonearest ldbl-128 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16019f9eb01485e3p-4L 0x5.8b7ae4dbf0a7933416f4a46c0bbcp-4L : inexact-ok -= cpow towardzero ldbl-128 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16019f9eb01485e3p-4L 0x5.8b7ae4dbf0a7933416f4a46c0bb8p-4L : inexact-ok -= cpow upward ldbl-128 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16019f9eb01485e4p-4L 0x5.8b7ae4dbf0a7933416f4a46c0bbcp-4L : inexact-ok -= cpow downward ldbl-128ibm 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16019f9eb014858p-4L 0x5.8b7ae4dbf0a7933416f4a46c0ap-4L : inexact-ok += cpow towardzero ldbl-128 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16019f9eb01485e3p-4L 0x5.8b7ae4dbf0a7933416f4a46c0bb8p-4L : xfail inexact-ok += cpow upward ldbl-128 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16019f9eb01485e4p-4L 0x5.8b7ae4dbf0a7933416f4a46c0bbcp-4L : xfail inexact-ok += cpow downward ldbl-128ibm 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16019f9eb014858p-4L 0x5.8b7ae4dbf0a7933416f4a46c0ap-4L : xfail inexact-ok = cpow tonearest ldbl-128ibm 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16019f9eb01486p-4L 0x5.8b7ae4dbf0a7933416f4a46c0cp-4L : inexact-ok -= cpow towardzero ldbl-128ibm 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16019f9eb014858p-4L 0x5.8b7ae4dbf0a7933416f4a46c0ap-4L : inexact-ok -= cpow upward ldbl-128ibm 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16019f9eb01486p-4L 0x5.8b7ae4dbf0a7933416f4a46c0cp-4L : inexact-ok -cpow 0.75 1.25 1.0 1.0 -= cpow downward flt-32 0xcp-4f 0x1.4p+0f 0x1p+0f 0x1p+0f : 0x1.5aea02p-4f 0x8.366b1p-4f : inexact-ok += cpow towardzero ldbl-128ibm 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16019f9eb014858p-4L 0x5.8b7ae4dbf0a7933416f4a46c0ap-4L : xfail inexact-ok += cpow upward ldbl-128ibm 0xcp-4L 0x1.4p+0L 0xcp-4L 0x1.4p+0L : 0x1.e14e4796fd3f16019f9eb01486p-4L 0x5.8b7ae4dbf0a7933416f4a46c0cp-4L : xfail inexact-ok +cpow 0.75 1.25 1.0 1.0 xfail-rounding += cpow downward flt-32 0xcp-4f 0x1.4p+0f 0x1p+0f 0x1p+0f : 0x1.5aea02p-4f 0x8.366b1p-4f : xfail inexact-ok = cpow tonearest flt-32 0xcp-4f 0x1.4p+0f 0x1p+0f 0x1p+0f : 0x1.5aea04p-4f 0x8.366b2p-4f : inexact-ok -= cpow towardzero flt-32 0xcp-4f 0x1.4p+0f 0x1p+0f 0x1p+0f : 0x1.5aea02p-4f 0x8.366b1p-4f : inexact-ok -= cpow upward flt-32 0xcp-4f 0x1.4p+0f 0x1p+0f 0x1p+0f : 0x1.5aea04p-4f 0x8.366b2p-4f : inexact-ok -= cpow downward dbl-64 0xcp-4 0x1.4p+0 0x1p+0 0x1p+0 : 0x1.5aea037cc815ap-4 0x8.366b1e23e511p-4 : inexact-ok += cpow towardzero flt-32 0xcp-4f 0x1.4p+0f 0x1p+0f 0x1p+0f : 0x1.5aea02p-4f 0x8.366b1p-4f : xfail inexact-ok += cpow upward flt-32 0xcp-4f 0x1.4p+0f 0x1p+0f 0x1p+0f : 0x1.5aea04p-4f 0x8.366b2p-4f : xfail inexact-ok += cpow downward dbl-64 0xcp-4 0x1.4p+0 0x1p+0 0x1p+0 : 0x1.5aea037cc815ap-4 0x8.366b1e23e511p-4 : xfail inexact-ok = cpow tonearest dbl-64 0xcp-4 0x1.4p+0 0x1p+0 0x1p+0 : 0x1.5aea037cc815bp-4 0x8.366b1e23e5118p-4 : inexact-ok -= cpow towardzero dbl-64 0xcp-4 0x1.4p+0 0x1p+0 0x1p+0 : 0x1.5aea037cc815ap-4 0x8.366b1e23e511p-4 : inexact-ok -= cpow upward dbl-64 0xcp-4 0x1.4p+0 0x1p+0 0x1p+0 : 0x1.5aea037cc815bp-4 0x8.366b1e23e5118p-4 : inexact-ok -= cpow downward ldbl-96-intel 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16p-4L 0x8.366b1e23e511575p-4L : inexact-ok += cpow towardzero dbl-64 0xcp-4 0x1.4p+0 0x1p+0 0x1p+0 : 0x1.5aea037cc815ap-4 0x8.366b1e23e511p-4 : xfail inexact-ok += cpow upward dbl-64 0xcp-4 0x1.4p+0 0x1p+0 0x1p+0 : 0x1.5aea037cc815bp-4 0x8.366b1e23e5118p-4 : xfail inexact-ok += cpow downward ldbl-96-intel 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16p-4L 0x8.366b1e23e511575p-4L : xfail inexact-ok = cpow tonearest ldbl-96-intel 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16p-4L 0x8.366b1e23e511576p-4L : inexact-ok -= cpow towardzero ldbl-96-intel 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16p-4L 0x8.366b1e23e511575p-4L : inexact-ok -= cpow upward ldbl-96-intel 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad18p-4L 0x8.366b1e23e511576p-4L : inexact-ok -= cpow downward ldbl-96-m68k 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16p-4L 0x8.366b1e23e511575p-4L : inexact-ok += cpow towardzero ldbl-96-intel 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16p-4L 0x8.366b1e23e511575p-4L : xfail inexact-ok += cpow upward ldbl-96-intel 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad18p-4L 0x8.366b1e23e511576p-4L : xfail inexact-ok += cpow downward ldbl-96-m68k 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16p-4L 0x8.366b1e23e511575p-4L : xfail inexact-ok = cpow tonearest ldbl-96-m68k 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16p-4L 0x8.366b1e23e511576p-4L : inexact-ok -= cpow towardzero ldbl-96-m68k 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16p-4L 0x8.366b1e23e511575p-4L : inexact-ok -= cpow upward ldbl-96-m68k 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad18p-4L 0x8.366b1e23e511576p-4L : inexact-ok -= cpow downward ldbl-128 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16ef12e71ae37cp-4L 0x8.366b1e23e511575a102515116418p-4L : inexact-ok += cpow towardzero ldbl-96-m68k 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16p-4L 0x8.366b1e23e511575p-4L : xfail inexact-ok += cpow upward ldbl-96-m68k 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad18p-4L 0x8.366b1e23e511576p-4L : xfail inexact-ok += cpow downward ldbl-128 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16ef12e71ae37cp-4L 0x8.366b1e23e511575a102515116418p-4L : xfail inexact-ok = cpow tonearest ldbl-128 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16ef12e71ae37dp-4L 0x8.366b1e23e511575a102515116418p-4L : inexact-ok -= cpow towardzero ldbl-128 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16ef12e71ae37cp-4L 0x8.366b1e23e511575a102515116418p-4L : inexact-ok -= cpow upward ldbl-128 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16ef12e71ae37dp-4L 0x8.366b1e23e511575a10251511642p-4L : inexact-ok -= cpow downward ldbl-128ibm 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16ef12e71ae3p-4L 0x8.366b1e23e511575a1025151164p-4L : inexact-ok += cpow towardzero ldbl-128 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16ef12e71ae37cp-4L 0x8.366b1e23e511575a102515116418p-4L : xfail inexact-ok += cpow upward ldbl-128 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16ef12e71ae37dp-4L 0x8.366b1e23e511575a10251511642p-4L : xfail inexact-ok += cpow downward ldbl-128ibm 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16ef12e71ae3p-4L 0x8.366b1e23e511575a1025151164p-4L : xfail inexact-ok = cpow tonearest ldbl-128ibm 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16ef12e71ae38p-4L 0x8.366b1e23e511575a1025151164p-4L : inexact-ok -= cpow towardzero ldbl-128ibm 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16ef12e71ae3p-4L 0x8.366b1e23e511575a1025151164p-4L : inexact-ok -= cpow upward ldbl-128ibm 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16ef12e71ae38p-4L 0x8.366b1e23e511575a1025151168p-4L : inexact-ok += cpow towardzero ldbl-128ibm 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16ef12e71ae3p-4L 0x8.366b1e23e511575a1025151164p-4L : xfail inexact-ok += cpow upward ldbl-128ibm 0xcp-4L 0x1.4p+0L 0x1p+0L 0x1p+0L : 0x1.5aea037cc815ad16ef12e71ae38p-4L 0x8.366b1e23e511575a1025151168p-4L : xfail inexact-ok cpow 0.75 1.25 1.0 0.0 = cpow downward flt-32 0xcp-4f 0x1.4p+0f 0x1p+0f 0x0p+0f : 0xcp-4f 0x1.4p+0f : inexact-ok = cpow tonearest flt-32 0xcp-4f 0x1.4p+0f 0x1p+0f 0x0p+0f : 0xcp-4f 0x1.4p+0f : inexact-ok diff --git a/math/gen-auto-libm-tests.c b/math/gen-auto-libm-tests.c index 132cca2..12c530a 100644 --- a/math/gen-auto-libm-tests.c +++ b/math/gen-auto-libm-tests.c @@ -84,15 +84,16 @@ permitted), errno is expected to be left unchanged. The flag "no-test-inline" indicates a test is disabled for inline - function testing; "xfail" indicates the test is disabled as - expected to produce incorrect results, "xfail-rounding" indicates - the test is disabled only in rounding modes other than - round-to-nearest. Otherwise, test flags are of the form - "spurious-<exception>" and "missing-<exception>", for any exception - ("overflow", "underflow", "inexact", "invalid", "divbyzero"), - "spurious-errno" and "missing-errno", to indicate when tests are - expected to deviate from the exception and errno settings - corresponding to the mathematical results. "xfail", + function testing; "ignore-zero-inf-sign" indicates the the signs of + zero and infinite results should be ignored; "xfail" indicates the + test is disabled as expected to produce incorrect results, + "xfail-rounding" indicates the test is disabled only in rounding + modes other than round-to-nearest. Otherwise, test flags are of + the form "spurious-<exception>" and "missing-<exception>", for any + exception ("overflow", "underflow", "inexact", "invalid", + "divbyzero"), "spurious-errno" and "missing-errno", to indicate + when tests are expected to deviate from the exception and errno + settings corresponding to the mathematical results. "xfail", "xfail-rounding", "spurious-" and "missing-" flags should be accompanied by a comment referring to an open bug in glibc Bugzilla. @@ -109,17 +110,17 @@ plus_infty or minus_infty for infinite expected results, or as integer constant expressions (not necessarily with the right type) or IGNORE for integer inputs and outputs. Flags are - "no-test-inline", "xfail", "<exception>", "<exception>-ok", - "errno-<value>", "errno-<value>-ok", which may be unconditional or - conditional. "<exception>" indicates that a correct result means - the given exception should be raised. "errno-<value>" indicates - that a correct result means errno should be set to the given value. - "-ok" means not to test for the given exception or errno value - (whether because it was marked as possibly missing or spurious, or - because the calculation of correct results indicated it was - optional). Conditions "before-rounding" and "after-rounding" - indicate tests where expectations for underflow exceptions depend - on how the architecture detects tininess. */ + "no-test-inline", "ignore-zero-info-sign", "xfail", "<exception>", + "<exception>-ok", "errno-<value>", "errno-<value>-ok", which may be + unconditional or conditional. "<exception>" indicates that a + correct result means the given exception should be raised. + "errno-<value>" indicates that a correct result means errno should + be set to the given value. "-ok" means not to test for the given + exception or errno value (whether because it was marked as possibly + missing or spurious, or because the calculation of correct results + indicated it was optional). Conditions "before-rounding" and + "after-rounding" indicate tests where expectations for underflow + exceptions depend on how the architecture detects tininess. */ #define _GNU_SOURCE @@ -315,6 +316,7 @@ typedef struct typedef enum { flag_no_test_inline, + flag_ignore_zero_inf_sign, flag_xfail, flag_xfail_rounding, /* The "spurious" and "missing" flags must be in the same order as @@ -342,6 +344,7 @@ typedef enum static const char *const input_flags[num_input_flag_types] = { "no-test-inline", + "ignore-zero-inf-sign", "xfail", "xfail-rounding", "spurious-divbyzero", @@ -1950,6 +1953,7 @@ output_for_one_input_case (FILE *fp, const char *filename, test_function *tf, switch (it->flags[i].type) { case flag_no_test_inline: + case flag_ignore_zero_inf_sign: case flag_xfail: if (fprintf (fp, " %s%s", input_flags[it->flags[i].type], diff --git a/math/gen-libm-test.pl b/math/gen-libm-test.pl index 5f62872..b5d599f 100755 --- a/math/gen-libm-test.pl +++ b/math/gen-libm-test.pl @@ -442,6 +442,10 @@ sub generate_testfile { } } $flags_conv = ""; + if (defined ($flag_cond{"ignore-zero-inf-sign"})) { + $flags_conv .= or_cond_value ($flag_cond{"ignore-zero-inf-sign"}, + "IGNORE_ZERO_INF_SIGN", "0"); + } if (defined ($flag_cond{"no-test-inline"})) { $flags_conv .= or_cond_value ($flag_cond{"no-test-inline"}, "NO_TEST_INLINE", "0"); diff --git a/math/libm-test.inc b/math/libm-test.inc index c138778..45eaaef 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -6288,9 +6288,7 @@ static const struct test_cc_c_data cpow_test_data[] = static void cpow_test (void) { - START (cpow, 0); - RUN_TEST_LOOP_cc_c (cpow, cpow_test_data, ); - END_COMPLEX; + ALL_RM_TEST (cpow, 0, cpow_test_data, RUN_TEST_LOOP_cc_c, END_COMPLEX); } |