about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog14
-rw-r--r--math/auto-libm-test-in10
-rw-r--r--math/auto-libm-test-out214
-rw-r--r--math/gen-auto-libm-tests.c44
-rwxr-xr-xmath/gen-libm-test.pl4
-rw-r--r--math/libm-test.inc4
-rw-r--r--sysdeps/i386/fpu/libm-test-ulps48
-rw-r--r--sysdeps/x86_64/fpu/libm-test-ulps48
8 files changed, 251 insertions, 135 deletions
diff --git a/ChangeLog b/ChangeLog
index e8947fb5b0..54aaeaea25 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,19 @@
 2014-06-23  Joseph Myers  <joseph@codesourcery.com>
 
+	* 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.
+
 	[BZ #16315]
 	* sysdeps/i386/fpu/e_pow.S (__ieee754_pow): Ensure possibly
 	overflowing or underflowing operations take place with sign of
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 0053340e18..673a4446a2 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 a1f33d77eb..aad46a4bba 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 132cca2b2e..12c530a335 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 5f62872b21..b5d599ff4a 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 c138778be7..45eaaef9fd 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);
 }
 
 
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index eb934e36c4..8d9c83d0ca 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
@@ -916,6 +916,54 @@ ifloat: 1
 ildouble: 4
 ldouble: 4
 
+Function: Real part of "cpow_downward":
+double: 5
+float: 8
+idouble: 5
+ifloat: 8
+ildouble: 7
+ldouble: 7
+
+Function: Imaginary part of "cpow_downward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: Real part of "cpow_towardzero":
+double: 5
+float: 8
+idouble: 5
+ifloat: 8
+ildouble: 7
+ldouble: 7
+
+Function: Imaginary part of "cpow_towardzero":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: Real part of "cpow_upward":
+double: 4
+float: 1
+idouble: 4
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: Imaginary part of "cpow_upward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
 Function: Real part of "csin":
 double: 1
 float: 1
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index 8edd40b640..5469887099 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -959,6 +959,54 @@ ifloat: 2
 ildouble: 4
 ldouble: 4
 
+Function: Real part of "cpow_downward":
+double: 4
+float: 8
+idouble: 4
+ifloat: 8
+ildouble: 7
+ldouble: 7
+
+Function: Imaginary part of "cpow_downward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: Real part of "cpow_towardzero":
+double: 4
+float: 8
+idouble: 4
+ifloat: 8
+ildouble: 7
+ldouble: 7
+
+Function: Imaginary part of "cpow_towardzero":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 1
+ldouble: 1
+
+Function: Real part of "cpow_upward":
+double: 4
+float: 1
+idouble: 4
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: Imaginary part of "cpow_upward":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
 Function: Real part of "csin":
 double: 1
 float: 1