aboutsummaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
Diffstat (limited to 'math')
-rw-r--r--math/Makefile6
-rw-r--r--math/Versions2
-rw-r--r--math/auto-libm-test-in307
-rw-r--r--math/auto-libm-test-out-powr17775
-rw-r--r--math/bits/mathcalls.h3
-rw-r--r--math/gen-auto-libm-tests.c1
-rwxr-xr-xmath/gen-tgmath-tests.py1
-rw-r--r--math/libm-test-powr.inc454
-rw-r--r--math/s_powr_template.c50
-rw-r--r--math/test-tgmath.c12
-rw-r--r--math/tgmath.h4
11 files changed, 18614 insertions, 1 deletions
diff --git a/math/Makefile b/math/Makefile
index b1d7c767f7..64d9d4d1e5 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -139,6 +139,7 @@ gen-libm-calls = \
s_log2p1F \
s_nanF \
s_nextdownF \
+ s_powrF \
s_rsqrtF \
s_significandF \
s_sinpiF \
@@ -685,6 +686,7 @@ libm-test-funcs-auto = \
log1p \
log2p1 \
pow \
+ powr \
rsqrt \
sin \
sincos \
@@ -1016,6 +1018,7 @@ tgmath3-macros = \
nexttoward \
nextup \
pow \
+ powr \
remainder \
remquo \
rint \
@@ -1439,6 +1442,7 @@ CFLAGS-s_nexttoward.c += -fno-builtin-nexttoward -fno-builtin-nexttowardl
CFLAGS-s_nexttowardf.c += -fno-builtin-nexttowardf
CFLAGS-s_nextup.c += -fno-builtin-nextupl
CFLAGS-e_pow.c += -fno-builtin-powl
+CFLAGS-s_powr.c += -fno-builtin-powrl
CFLAGS-w_remainder.c += -fno-builtin-remainderl -fno-builtin-dreml
CFLAGS-s_remquo.c += -fno-builtin-remquol
CFLAGS-s_rint.c += -fno-builtin-rintl
@@ -1574,6 +1578,7 @@ CFLAGS-s_nextafter.c += -fno-builtin-nextafterf32x -fno-builtin-nextafterf64
CFLAGS-s_nextdown.c += -fno-builtin-nextdownf32x -fno-builtin-nextdownf64
CFLAGS-s_nextup.c += -fno-builtin-nextupf32x -fno-builtin-nextupf64
CFLAGS-e_pow.c += -fno-builtin-powf32x -fno-builtin-powf64
+CFLAGS-s_powr.c += -fno-builtin-powrf32x -fno-builtin-powrf64
CFLAGS-w_remainder.c += -fno-builtin-remainderf32x -fno-builtin-remainderf64
CFLAGS-s_remquo.c += -fno-builtin-remquof32x -fno-builtin-remquof64
CFLAGS-s_rint.c += -fno-builtin-rintf32x -fno-builtin-rintf64
@@ -1700,6 +1705,7 @@ CFLAGS-s_nextafterf.c += -fno-builtin-nextafterf32
CFLAGS-s_nextdownf.c += -fno-builtin-nextdownf32
CFLAGS-s_nextupf.c += -fno-builtin-nextupf32
CFLAGS-e_powf.c += -fno-builtin-powf32
+CFLAGS-s_powrf.c += -fno-builtin-powrf32
CFLAGS-w_remainderf.c += -fno-builtin-remainderf32
CFLAGS-s_remquof.c += -fno-builtin-remquof32
CFLAGS-s_rintf.c += -fno-builtin-rintf32
diff --git a/math/Versions b/math/Versions
index 34cdf2f8e8..f92707545a 100644
--- a/math/Versions
+++ b/math/Versions
@@ -673,8 +673,10 @@ libm {
}
GLIBC_2.42 {
# Functions not involving _Float64x or _Float128, for all configurations.
+ powr; powrf; powrl; powrf32; powrf64; powrf32x;
rsqrt; rsqrtf; rsqrtl; rsqrtf32; rsqrtf64; rsqrtf32x;
# Functions involving _Float64x or _Float128, for some configurations.
+ powrf64x; powrf128;
rsqrtf64x; rsqrtf128;
}
}
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 989ce5d736..09069e985d 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -8151,6 +8151,313 @@ pow 0x1.059c76p+0 0x1.ff80bep+11
pow 0x1.7ac7cp+5 23
pow -0x1.7ac7cp+5 23
+powr 10 0
+powr 10 -0
+
+powr 1 1
+powr 1 -1
+powr 1 1.25
+powr 1 -1.25
+powr 1 0x1p62
+powr 1 0x1p63
+powr 1 0x1p64
+powr 1 0x1p72
+powr 1 min_subnorm
+powr 1 -min_subnorm
+
+# powr (x, +-0) == 1.
+powr 32.75 0
+powr 32.75 -0
+powr 0x1p72 0
+powr 0x1p72 -0
+powr 0x1p-72 0
+powr 0x1p-72 -0
+
+powr 0x1p72 0x1p72
+powr 10 -0x1p72
+powr max max
+powr 10 -max
+
+powr 0 1
+powr 0 11
+
+powr -0 1
+powr -0 11
+
+powr 0 2
+powr 0 11.1
+
+powr -0 2
+powr -0 11.1
+
+# powr (+0, y) == +0 for y an odd integer > 0.
+powr 0.0 27
+powr 0.0 0xffffff
+powr 0.0 0x1.fffffffffffffp+52
+powr 0.0 0x1.fffffffffffffffep+63
+powr 0.0 0x1.ffffffffffffffffffffffffff8p+105
+powr 0.0 0x1.ffffffffffffffffffffffffffffp+112
+
+# powr (-0, y) == +0 (unlike pow) for y an odd integer > 0.
+powr -0 27
+powr -0 0xffffff
+powr -0 0x1fffffe
+powr -0 0x1.fffffffffffffp+52
+powr -0 0x1.fffffffffffffp+53
+powr -0 0x1.fffffffffffffffep+63
+powr -0 0x1.fffffffffffffffep+64 xfail-rounding:ibm128-libgcc
+powr -0 0x1.ffffffffffffffffffffffffff8p+105 xfail-rounding:ibm128-libgcc
+powr -0 0x1.ffffffffffffffffffffffffff8p+106 xfail-rounding:ibm128-libgcc
+powr -0 0x1.ffffffffffffffffffffffffffffp+112 xfail-rounding:ibm128-libgcc
+powr -0 0x1.ffffffffffffffffffffffffffffp+113 xfail-rounding:ibm128-libgcc
+
+# powr (+0, y) == +0 for y > 0 and not an odd integer.
+powr 0.0 4
+powr 0.0 0x1p24
+powr 0.0 0x1p127
+powr 0.0 max
+powr 0.0 min_subnorm
+
+# powr (-0, y) == +0 for y > 0 and not an odd integer.
+powr -0 0.5
+powr -0 4
+powr -0 0x1p24
+powr -0 0x1p127
+powr -0 max
+powr -0 min_subnorm
+
+powr 16 0.25
+powr 0x1p64 0.125
+powr 2 4
+powr 256 8
+
+powr 0.75 1.25
+
+powr 0x0.ffffffp0 10
+powr 0x0.ffffffp0 100
+powr 0x0.ffffffp0 1000
+powr 0x0.ffffffp0 0x1p24
+powr 0x0.ffffffp0 0x1p30
+powr 0x0.ffffffp0 0x1.234566p30
+powr 0x0.ffffffp0 -10
+powr 0x0.ffffffp0 -100
+powr 0x0.ffffffp0 -1000
+powr 0x0.ffffffp0 -0x1p24
+powr 0x0.ffffffp0 -0x1p30
+powr 0x0.ffffffp0 -0x1.234566p30
+powr 0x1.000002p0 0x1p24
+powr 0x1.000002p0 0x1.234566p29
+powr 0x1.000002p0 -0x1.234566p29
+
+powr 0x0.fffffffffffff8p0 0x1.23456789abcdfp62
+powr 0x0.fffffffffffff8p0 -0x1.23456789abcdfp62
+powr 0x1.0000000000001p0 0x1.23456789abcdfp61
+powr 0x1.0000000000001p0 -0x1.23456789abcdfp61
+
+powr 0x0.ffffffffffffffffp0 0x1.23456789abcdef0ep77
+powr 0x0.ffffffffffffffffp0 -0x1.23456789abcdef0ep77
+powr 0x1.0000000000000002p0 0x1.23456789abcdef0ep76
+powr 0x1.0000000000000002p0 -0x1.23456789abcdef0ep76
+
+powr 0x0.ffffffffffffffffffffffffffff8p0 0x1.23456789abcdef0123456789abcdp126
+powr 0x0.ffffffffffffffffffffffffffff8p0 -0x1.23456789abcdef0123456789abcdp126
+powr 0x1.0000000000000000000000000001p0 0x1.23456789abcdef0123456789abcdp125
+powr 0x1.0000000000000000000000000001p0 -0x1.23456789abcdef0123456789abcdp125
+
+powr 0x1.000002p0 0x1p30
+powr 0x1.000002p0 max
+powr 0x1.00000ep0 0x1p30
+powr 0x1.00000ep0 max
+
+powr 1e4932 0.75
+powr 1e4928 0.75
+powr 1e4924 0.75
+powr 1e4920 0.75
+powr 10.0 4932.0
+powr 10.0 4931.0
+powr 10.0 4930.0
+powr 10.0 4929.0
+powr 10.0 -4931.0
+powr 10.0 -4930.0
+powr 10.0 -4929.0
+powr 1e27 182.0
+powr 1e27 -182.0
+
+powr min_subnorm min_subnorm
+powr min_subnorm -min_subnorm
+powr max min_subnorm
+powr max -min_subnorm
+powr 0.99 min_subnorm
+powr 0.99 -min_subnorm
+powr 1.01 min_subnorm
+powr 1.01 -min_subnorm
+
+powr 2.0 -100000.0
+
+powr 2 -126.125
+powr 2 -126.25
+powr 2 -126.375
+powr 2 -126.5
+powr 2 -126.625
+powr 2 -126.75
+powr 2 -126.875
+powr 2 -969.125
+powr 2 -969.25
+powr 2 -969.375
+powr 2 -969.5
+powr 2 -969.625
+powr 2 -969.75
+powr 2 -969.875
+powr 2 -1022.125
+powr 2 -1022.25
+powr 2 -1022.375
+powr 2 -1022.5
+powr 2 -1022.625
+powr 2 -1022.75
+powr 2 -1022.875
+powr 2 -16382.125
+powr 2 -16382.25
+powr 2 -16382.375
+powr 2 -16382.5
+powr 2 -16382.625
+powr 2 -16382.75
+powr 2 -16382.875
+powr 2 -16383.125
+powr 2 -16383.25
+powr 2 -16383.375
+powr 2 -16383.5
+powr 2 -16383.625
+powr 2 -16383.75
+powr 2 -16383.875
+powr 0.5 126.125
+powr 0.5 126.25
+powr 0.5 126.375
+powr 0.5 126.5
+powr 0.5 126.625
+powr 0.5 126.75
+powr 0.5 126.875
+powr 0.5 969.125
+powr 0.5 969.25
+powr 0.5 969.375
+powr 0.5 969.5
+powr 0.5 969.625
+powr 0.5 969.75
+powr 0.5 969.875
+powr 0.5 1022.125
+powr 0.5 1022.25
+powr 0.5 1022.375
+powr 0.5 1022.5
+powr 0.5 1022.625
+powr 0.5 1022.75
+powr 0.5 1022.875
+powr 0.5 16382.125
+powr 0.5 16382.25
+powr 0.5 16382.375
+powr 0.5 16382.5
+powr 0.5 16382.625
+powr 0.5 16382.75
+powr 0.5 16382.875
+powr 0.5 16383.125
+powr 0.5 16383.25
+powr 0.5 16383.375
+powr 0.5 16383.5
+powr 0.5 16383.625
+powr 0.5 16383.75
+powr 0.5 16383.875
+powr 0x1.00001p1 -126
+powr 0x1.00003p1 -126
+powr 0x1.00005p1 -126
+powr 0x1.00007p1 -126
+powr 0x1.00001p1 -969
+powr 0x1.00003p1 -969
+powr 0x1.00005p1 -969
+powr 0x1.00007p1 -969
+powr 0x1.00001p1 -1022
+powr 0x1.00003p1 -1022
+powr 0x1.00005p1 -1022
+powr 0x1.00007p1 -1022
+powr 0x1.00001p1 -16382
+powr 0x1.00003p1 -16382
+powr 0x1.00005p1 -16382
+powr 0x1.00007p1 -16382
+powr 0x1.00001p1 -16383
+powr 0x1.00003p1 -16383
+powr 0x1.00005p1 -16383
+powr 0x1.00007p1 -16383
+powr 0x0.ffff1p-1 126
+powr 0x0.ffff3p-1 126
+powr 0x0.ffff5p-1 126
+powr 0x0.ffff7p-1 126
+powr 0x0.ffff1p-1 969
+powr 0x0.ffff3p-1 969
+powr 0x0.ffff5p-1 969
+powr 0x0.ffff7p-1 969
+powr 0x0.ffff1p-1 1022
+powr 0x0.ffff3p-1 1022
+powr 0x0.ffff5p-1 1022
+powr 0x0.ffff7p-1 1022
+powr 0x0.ffff1p-1 16382
+powr 0x0.ffff3p-1 16382
+powr 0x0.ffff5p-1 16382
+powr 0x0.ffff7p-1 16382
+powr 0x0.ffff1p-1 16383
+powr 0x0.ffff3p-1 16383
+powr 0x0.ffff5p-1 16383
+powr 0x0.ffff7p-1 16383
+powr 0x2.000b3p0 -1022
+powr 0x2.000582p0 -1022
+powr 2 -0x3.fe513p+8
+powr 2 -0x3.fe4e8p+8
+
+powr 10 -1
+powr 10 -2
+powr 10 -3
+powr 10 -4
+powr 10 -5
+powr 10 -6
+powr 10 -7
+
+powr 0x0.ffffffffffffffffp0 1
+powr 0x0.ffffffffffffffffp0 2
+powr 0x0.ffffffffffffffffp0 3
+powr 0x0.ffffffffffffffffp0 4
+powr 0x0.ffffffffffffffffp0 5
+powr 0x0.ffffffffffffffffp0 6
+powr 0x0.ffffffffffffffffp0 7
+powr 0x0.ffffffffffffffffp0 -1
+powr 0x0.ffffffffffffffffp0 -2
+powr 0x0.ffffffffffffffffp0 -3
+powr 0x0.ffffffffffffffffp0 -4
+powr 0x0.ffffffffffffffffp0 -5
+powr 0x0.ffffffffffffffffp0 -6
+powr 0x0.ffffffffffffffffp0 -7
+
+powr 0x1.0000000000000002p0 1
+powr 0x1.0000000000000002p0 2
+powr 0x1.0000000000000002p0 3
+powr 0x1.0000000000000002p0 4
+powr 0x1.0000000000000002p0 5
+powr 0x1.0000000000000002p0 6
+powr 0x1.0000000000000002p0 7
+powr 0x1.0000000000000002p0 -1
+powr 0x1.0000000000000002p0 -2
+powr 0x1.0000000000000002p0 -3
+powr 0x1.0000000000000002p0 -4
+powr 0x1.0000000000000002p0 -5
+powr 0x1.0000000000000002p0 -6
+powr 0x1.0000000000000002p0 -7
+
+powr 1.0625 1.125
+powr 1.5 1.03125
+powr 0x1.7d1a0a6f2p+681 1.5
+powr 0x1.ce78f2p+0 -0x2.7f1f78p+4
+powr 0xf.fffffp+124 -0x5.b5b648p+0
+powr 0x1.430d4cp+0 0x5.0e462p+4
+powr 0x9.8b82ap-4 -0x1.99907ap+12
+powr 0xd.73035p-4 -0x1.47bb8p+8
+powr 0x1.059c76p+0 0x1.ff80bep+11
+powr 0x1.7ac7cp+5 23
+
rsqrt 2209
rsqrt 4
rsqrt 2
diff --git a/math/auto-libm-test-out-powr b/math/auto-libm-test-out-powr
new file mode 100644
index 0000000000..e0112aa05b
--- /dev/null
+++ b/math/auto-libm-test-out-powr
@@ -0,0 +1,17775 @@
+powr 10 0
+= powr downward binary32 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary32 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary32 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr upward binary32 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr downward binary64 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary64 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary64 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr upward binary64 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr downward intel96 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr tonearest intel96 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr towardzero intel96 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr upward intel96 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr downward m68k96 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr tonearest m68k96 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr towardzero m68k96 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr upward m68k96 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr downward binary128 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary128 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary128 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr upward binary128 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr downward ibm128 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr tonearest ibm128 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr towardzero ibm128 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+= powr upward ibm128 0xap+0 0x0p+0 : 0x1p+0 : inexact-ok
+powr 10 -0
+= powr downward binary32 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary32 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary32 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr upward binary32 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr downward binary64 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary64 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary64 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr upward binary64 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr downward intel96 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr tonearest intel96 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr towardzero intel96 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr upward intel96 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr downward m68k96 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr tonearest m68k96 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr towardzero m68k96 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr upward m68k96 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr downward binary128 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary128 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary128 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr upward binary128 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr downward ibm128 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr tonearest ibm128 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr towardzero ibm128 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+= powr upward ibm128 0xap+0 -0x0p+0 : 0x1p+0 : inexact-ok
+powr 1 1
+= powr downward binary32 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary32 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary32 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr upward binary32 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr downward binary64 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary64 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary64 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr upward binary64 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr downward intel96 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr tonearest intel96 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr towardzero intel96 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr upward intel96 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr downward m68k96 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr tonearest m68k96 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr towardzero m68k96 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr upward m68k96 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr downward binary128 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary128 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary128 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr upward binary128 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr downward ibm128 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr tonearest ibm128 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr towardzero ibm128 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+= powr upward ibm128 0x1p+0 0x1p+0 : 0x1p+0 : inexact-ok
+powr 1 -1
+= powr downward binary32 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary32 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary32 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr upward binary32 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr downward binary64 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary64 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary64 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr upward binary64 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr downward intel96 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr tonearest intel96 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr towardzero intel96 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr upward intel96 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr downward m68k96 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr tonearest m68k96 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr towardzero m68k96 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr upward m68k96 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr downward binary128 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary128 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary128 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr upward binary128 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr downward ibm128 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr tonearest ibm128 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr towardzero ibm128 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+= powr upward ibm128 0x1p+0 -0x1p+0 : 0x1p+0 : inexact-ok
+powr 1 1.25
+= powr downward binary32 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary32 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary32 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr upward binary32 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr downward binary64 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary64 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary64 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr upward binary64 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr downward intel96 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr tonearest intel96 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr towardzero intel96 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr upward intel96 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr downward m68k96 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr tonearest m68k96 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr towardzero m68k96 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr upward m68k96 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr downward binary128 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary128 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary128 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr upward binary128 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr downward ibm128 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr tonearest ibm128 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr towardzero ibm128 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr upward ibm128 0x1p+0 0x1.4p+0 : 0x1p+0 : inexact-ok
+powr 1 -1.25
+= powr downward binary32 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary32 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary32 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr upward binary32 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr downward binary64 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary64 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary64 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr upward binary64 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr downward intel96 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr tonearest intel96 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr towardzero intel96 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr upward intel96 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr downward m68k96 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr tonearest m68k96 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr towardzero m68k96 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr upward m68k96 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr downward binary128 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr tonearest binary128 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr towardzero binary128 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr upward binary128 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr downward ibm128 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr tonearest ibm128 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr towardzero ibm128 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+= powr upward ibm128 0x1p+0 -0x1.4p+0 : 0x1p+0 : inexact-ok
+powr 1 0x1p62
+= powr downward binary32 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr tonearest binary32 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr towardzero binary32 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr upward binary32 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr downward binary64 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr tonearest binary64 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr towardzero binary64 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr upward binary64 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr downward intel96 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr tonearest intel96 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr towardzero intel96 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr upward intel96 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr downward m68k96 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr tonearest m68k96 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr towardzero m68k96 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr upward m68k96 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr downward binary128 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr tonearest binary128 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr towardzero binary128 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr upward binary128 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr downward ibm128 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr tonearest ibm128 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr towardzero ibm128 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+= powr upward ibm128 0x1p+0 0x4p+60 : 0x1p+0 : inexact-ok
+powr 1 0x1p63
+= powr downward binary32 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr tonearest binary32 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr towardzero binary32 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr upward binary32 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr downward binary64 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr tonearest binary64 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr towardzero binary64 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr upward binary64 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr downward intel96 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr tonearest intel96 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr towardzero intel96 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr upward intel96 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr downward m68k96 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr tonearest m68k96 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr towardzero m68k96 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr upward m68k96 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr downward binary128 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr tonearest binary128 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr towardzero binary128 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr upward binary128 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr downward ibm128 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr tonearest ibm128 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr towardzero ibm128 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+= powr upward ibm128 0x1p+0 0x8p+60 : 0x1p+0 : inexact-ok
+powr 1 0x1p64
+= powr downward binary32 0x1p+0 0x1p+64 : 0x1p+0 : inexact-ok
+= powr tonearest binary32 0x1p+0 0x1p+64 : 0x1p+0 : inexact-ok
+= powr towardzero binary32 0x1p+0 0x1p+64 : 0x1p+0 : inexact-ok
+= powr upward binary32 0x1p+0 0x1p+64 : 0x1p+0 : inexact-ok
+= powr downward binary64 0x1p+0 0x1p+64 : 0x1p+0 : inexact-ok
+= powr tonearest binary64 0x1p+0 0x1p+64 : 0x1p+0 : inexact-ok
+= powr towardzero binary64 0x1p+0 0x1p+64 : 0x1p+0 : inexact-ok
+= powr upward binary64 0x1p+0 0x1p+64 : 0x1p+0 : inexact-ok
+= powr downward intel96 0x1p+0 0x1p+64 : 0x1p+0 : inexact-ok
+= powr tonearest intel96 0x1p+0 0x1p+64 : 0x1p+0 : inexact-ok
+= powr towardzero intel96 0x1p+0 0x1p+64 : 0x1p+0 : inexact-ok
+= powr upward intel96 0x1p+0 0x1p+64 : 0x1p+0 : inexact-ok
+= powr downward m68k96 0x1p+0 0x1p+64 : 0x1p+0 : inexact-ok
+= powr tonearest m68k96 0x1p+0 0x1p+64 : 0x1p+0 : inexact-ok
+= powr towardzero m68k96 0x1p+0 0x1p+64 : 0x1p+0 : inexact-ok
+= powr upward m68k96 0x1p+0 0x1p+64 : 0x1p+0 : inexact-ok
+= powr downward binary128 0x1p+0 0x1p+64