aboutsummaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
authorJoseph Myers <josmyers@redhat.com>2024-12-04 10:20:44 +0000
committerJoseph Myers <josmyers@redhat.com>2024-12-04 10:20:44 +0000
commit0ae0af68d8fa3bf6cbe1e4f1de5929ff71de67b3 (patch)
tree532181355fdc15427d84f2927db7ee807d2618c4 /math
parent1c4cebb84b9e33aea9a90adfadb031d1f1eba927 (diff)
downloadglibc-0ae0af68d8fa3bf6cbe1e4f1de5929ff71de67b3.tar.xz
glibc-0ae0af68d8fa3bf6cbe1e4f1de5929ff71de67b3.zip
Implement C23 cospi
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the cospi functions (cos(pi*x)). Tested for x86_64 and x86, and with build-many-glibcs.py.
Diffstat (limited to 'math')
-rw-r--r--math/Makefile6
-rw-r--r--math/Versions6
-rw-r--r--math/auto-libm-test-in91
-rw-r--r--math/auto-libm-test-out-cospi9258
-rw-r--r--math/bits/mathcalls.h5
-rw-r--r--math/gen-auto-libm-tests.c1
-rwxr-xr-xmath/gen-tgmath-tests.py1
-rw-r--r--math/libm-test-cospi.inc49
-rw-r--r--math/s_cospi_template.c39
-rw-r--r--math/test-tgmath.c12
-rw-r--r--math/tgmath.h4
11 files changed, 9471 insertions, 1 deletions
diff --git a/math/Makefile b/math/Makefile
index 2d5e016496..602797584e 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -105,6 +105,7 @@ gen-libm-calls = \
s_cexpF \
s_clog10F \
s_clogF \
+ s_cospiF \
s_cpowF \
s_cprojF \
s_csinF \
@@ -635,6 +636,7 @@ libm-test-funcs-auto = \
clog10 \
cos \
cosh \
+ cospi \
cpow \
csin \
csinh \
@@ -932,6 +934,7 @@ tgmath3-macros = \
copysign \
cos \
cosh \
+ cospi \
cproj \
creal \
erf \
@@ -1324,6 +1327,7 @@ CFLAGS-s_conj.c += -fno-builtin-conjl
CFLAGS-s_copysign.c += -fno-builtin-copysignl
CFLAGS-s_cos.c += -fno-builtin-cosl
CFLAGS-w_cosh.c += -fno-builtin-coshl
+CFLAGS-s_cospi.c += -fno-builtin-cospil
CFLAGS-s_cpow.c += -fno-builtin-cpowl
CFLAGS-s_cproj.c += -fno-builtin-cprojl
CFLAGS-s_creal.c += -fno-builtin-creall
@@ -1462,6 +1466,7 @@ CFLAGS-s_conj.c += -fno-builtin-conjf32x -fno-builtin-conjf64
CFLAGS-s_copysign.c += -fno-builtin-copysignf32x -fno-builtin-copysignf64
CFLAGS-s_cos.c += -fno-builtin-cosf32x -fno-builtin-cosf64
CFLAGS-w_cosh.c += -fno-builtin-coshf32x -fno-builtin-coshf64
+CFLAGS-s_cospi.c += -fno-builtin-cospif32x -fno-builtin-cospif64
CFLAGS-s_cpow.c += -fno-builtin-cpowf32x -fno-builtin-cpowf64
CFLAGS-s_cproj.c += -fno-builtin-cprojf32x -fno-builtin-cprojf64
CFLAGS-s_creal.c += -fno-builtin-crealf32x -fno-builtin-crealf64
@@ -1586,6 +1591,7 @@ CFLAGS-s_conjf.c += -fno-builtin-conjf32
CFLAGS-s_copysignf.c += -fno-builtin-copysignf32
CFLAGS-s_cosf.c += -fno-builtin-cosf32
CFLAGS-w_coshf.c += -fno-builtin-coshf32
+CFLAGS-s_cospif.c += -fno-builtin-cospif32
CFLAGS-s_cpowf.c += -fno-builtin-cpowf32
CFLAGS-s_cprojf.c += -fno-builtin-cprojf32
CFLAGS-s_crealf.c += -fno-builtin-crealf32
diff --git a/math/Versions b/math/Versions
index 49d61f212f..72dff5ff5b 100644
--- a/math/Versions
+++ b/math/Versions
@@ -653,4 +653,10 @@ libm {
log10p1f64x; log10p1f128;
logp1f64x; logp1f128;
}
+ GLIBC_2.41 {
+ # Functions not involving _Float64x or _Float128, for all configurations.
+ cospi; cospif; cospil; cospif32; cospif64; cospif32x;
+ # Functions involving _Float64x or _Float128, for some configurations.
+ cospif64x; cospif128;
+ }
}
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index b570e88e78..04fe31b863 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -4463,6 +4463,97 @@ cos 0x2.3c6ef4p-12
# the next value generates larger error bounds on x86_64 (binary128)
cos 0xe.6672d458b05edf50af4fab1a42p+40
+cospi 0
+cospi -0
+cospi min
+cospi -min
+cospi min_subnorm
+cospi -min_subnorm
+cospi max
+cospi -max
+cospi 1
+cospi -1
+cospi 2
+cospi -2
+cospi 3
+cospi -3
+cospi 0.1
+cospi -0.1
+cospi 0.2
+cospi -0.2
+cospi 0.3
+cospi -0.3
+cospi 0.4
+cospi -0.4
+cospi 0.5
+cospi -0.5
+cospi 0.6
+cospi -0.6
+cospi 0.7
+cospi -0.7
+cospi 0.8
+cospi -0.8
+cospi 0.9
+cospi -0.9
+cospi 1.1
+cospi -1.1
+cospi 1.2
+cospi -1.2
+cospi 1.3
+cospi -1.3
+cospi 1.4
+cospi -1.4
+cospi 1.5
+cospi -1.5
+cospi 2.5
+cospi -2.5
+cospi 3.5
+cospi -3.5
+cospi 4.5
+cospi -4.5
+cospi 0.24
+cospi -0.24
+cospi 0.49
+cospi -0.49
+cospi 0.51
+cospi -0.51
+cospi 0.76
+cospi -0.76
+cospi 1.24
+cospi -1.24
+cospi 1.49
+cospi -1.49
+cospi 1.51
+cospi -1.51
+cospi 1.76
+cospi -1.76
+cospi 100.24
+cospi -100.24
+cospi 100.49
+cospi -100.49
+cospi 100.51
+cospi -100.51
+cospi 100.76
+cospi -100.76
+cospi 1234.56
+cospi -1234.56
+cospi 0x1fffff.6p0
+cospi -0x1fffff.6p0
+cospi 0x1fffff.ap0
+cospi -0x1fffff.ap0
+cospi 0x3ffffffffffff.6p0
+cospi -0x3ffffffffffff.6p0
+cospi 0x3ffffffffffff.ap0
+cospi -0x3ffffffffffff.ap0
+cospi 0x1fffffffffffffff.6p0
+cospi -0x1fffffffffffffff.6p0
+cospi 0x1fffffffffffffff.ap0
+cospi -0x1fffffffffffffff.ap0
+cospi 0x3fffffffffffffffffffffffffff.6p0
+cospi -0x3fffffffffffffffffffffffffff.6p0
+cospi 0x3fffffffffffffffffffffffffff.ap0
+cospi -0x3fffffffffffffffffffffffffff.ap0
+
cosh 0
cosh -0
cosh 0.75
diff --git a/math/auto-libm-test-out-cospi b/math/auto-libm-test-out-cospi
new file mode 100644
index 0000000000..cc6db07614
--- /dev/null
+++ b/math/auto-libm-test-out-cospi
@@ -0,0 +1,9258 @@
+cospi 0
+= cospi downward binary32 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi tonearest binary32 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi towardzero binary32 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi upward binary32 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi downward binary64 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi tonearest binary64 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi towardzero binary64 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi upward binary64 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi downward intel96 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi tonearest intel96 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi towardzero intel96 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi upward intel96 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi downward m68k96 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi tonearest m68k96 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi towardzero m68k96 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi upward m68k96 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi downward binary128 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi tonearest binary128 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi towardzero binary128 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi upward binary128 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi downward ibm128 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi tonearest ibm128 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi towardzero ibm128 0x0p+0 : 0x1p+0 : inexact-ok
+= cospi upward ibm128 0x0p+0 : 0x1p+0 : inexact-ok
+cospi -0
+= cospi downward binary32 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi tonearest binary32 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi towardzero binary32 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi upward binary32 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi downward binary64 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi tonearest binary64 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi towardzero binary64 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi upward binary64 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi downward intel96 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi tonearest intel96 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi towardzero intel96 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi upward intel96 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi downward m68k96 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi tonearest m68k96 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi towardzero m68k96 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi upward m68k96 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi downward binary128 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi tonearest binary128 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi towardzero binary128 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi upward binary128 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi downward ibm128 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi tonearest ibm128 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi towardzero ibm128 -0x0p+0 : 0x1p+0 : inexact-ok
+= cospi upward ibm128 -0x0p+0 : 0x1p+0 : inexact-ok
+cospi min
+= cospi downward binary32 0x4p-128 : 0xf.fffffp-4 : inexact-ok
+= cospi tonearest binary32 0x4p-128 : 0x1p+0 : inexact-ok
+= cospi towardzero binary32 0x4p-128 : 0xf.fffffp-4 : inexact-ok
+= cospi upward binary32 0x4p-128 : 0x1p+0 : inexact-ok
+= cospi downward binary64 0x4p-128 : 0xf.ffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary64 0x4p-128 : 0x1p+0 : inexact-ok
+= cospi towardzero binary64 0x4p-128 : 0xf.ffffffffffff8p-4 : inexact-ok
+= cospi upward binary64 0x4p-128 : 0x1p+0 : inexact-ok
+= cospi downward intel96 0x4p-128 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest intel96 0x4p-128 : 0x1p+0 : inexact-ok
+= cospi towardzero intel96 0x4p-128 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward intel96 0x4p-128 : 0x1p+0 : inexact-ok
+= cospi downward m68k96 0x4p-128 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest m68k96 0x4p-128 : 0x1p+0 : inexact-ok
+= cospi towardzero m68k96 0x4p-128 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward m68k96 0x4p-128 : 0x1p+0 : inexact-ok
+= cospi downward binary128 0x4p-128 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary128 0x4p-128 : 0x1p+0 : inexact-ok
+= cospi towardzero binary128 0x4p-128 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi upward binary128 0x4p-128 : 0x1p+0 : inexact-ok
+= cospi downward ibm128 0x4p-128 : 0xf.fffffffffffffffffffffffffcp-4 : inexact-ok
+= cospi tonearest ibm128 0x4p-128 : 0x1p+0 : inexact-ok
+= cospi towardzero ibm128 0x4p-128 : 0xf.fffffffffffffffffffffffffcp-4 : inexact-ok
+= cospi upward ibm128 0x4p-128 : 0x1p+0 : inexact-ok
+= cospi downward binary64 0x4p-1024 : 0xf.ffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary64 0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi towardzero binary64 0x4p-1024 : 0xf.ffffffffffff8p-4 : inexact-ok
+= cospi upward binary64 0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi downward intel96 0x4p-1024 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest intel96 0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi towardzero intel96 0x4p-1024 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward intel96 0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi downward m68k96 0x4p-1024 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest m68k96 0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi towardzero m68k96 0x4p-1024 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward m68k96 0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi downward binary128 0x4p-1024 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary128 0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi towardzero binary128 0x4p-1024 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi upward binary128 0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi downward ibm128 0x4p-1024 : 0xf.fffffffffffffffffffffffffcp-4 : inexact-ok
+= cospi tonearest ibm128 0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi towardzero ibm128 0x4p-1024 : 0xf.fffffffffffffffffffffffffcp-4 : inexact-ok
+= cospi upward ibm128 0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi downward intel96 0x4p-16384 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest intel96 0x4p-16384 : 0x1p+0 : inexact-ok
+= cospi towardzero intel96 0x4p-16384 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward intel96 0x4p-16384 : 0x1p+0 : inexact-ok
+= cospi downward m68k96 0x4p-16384 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest m68k96 0x4p-16384 : 0x1p+0 : inexact-ok
+= cospi towardzero m68k96 0x4p-16384 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward m68k96 0x4p-16384 : 0x1p+0 : inexact-ok
+= cospi downward binary128 0x4p-16384 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary128 0x4p-16384 : 0x1p+0 : inexact-ok
+= cospi towardzero binary128 0x4p-16384 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi upward binary128 0x4p-16384 : 0x1p+0 : inexact-ok
+= cospi downward intel96 0x2p-16384 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest intel96 0x2p-16384 : 0x1p+0 : inexact-ok
+= cospi towardzero intel96 0x2p-16384 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward intel96 0x2p-16384 : 0x1p+0 : inexact-ok
+= cospi downward m68k96 0x2p-16384 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest m68k96 0x2p-16384 : 0x1p+0 : inexact-ok
+= cospi towardzero m68k96 0x2p-16384 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward m68k96 0x2p-16384 : 0x1p+0 : inexact-ok
+= cospi downward binary128 0x2p-16384 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary128 0x2p-16384 : 0x1p+0 : inexact-ok
+= cospi towardzero binary128 0x2p-16384 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi upward binary128 0x2p-16384 : 0x1p+0 : inexact-ok
+= cospi downward binary64 0x8p-972 : 0xf.ffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary64 0x8p-972 : 0x1p+0 : inexact-ok
+= cospi towardzero binary64 0x8p-972 : 0xf.ffffffffffff8p-4 : inexact-ok
+= cospi upward binary64 0x8p-972 : 0x1p+0 : inexact-ok
+= cospi downward intel96 0x8p-972 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest intel96 0x8p-972 : 0x1p+0 : inexact-ok
+= cospi towardzero intel96 0x8p-972 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward intel96 0x8p-972 : 0x1p+0 : inexact-ok
+= cospi downward m68k96 0x8p-972 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest m68k96 0x8p-972 : 0x1p+0 : inexact-ok
+= cospi towardzero m68k96 0x8p-972 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward m68k96 0x8p-972 : 0x1p+0 : inexact-ok
+= cospi downward binary128 0x8p-972 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary128 0x8p-972 : 0x1p+0 : inexact-ok
+= cospi towardzero binary128 0x8p-972 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi upward binary128 0x8p-972 : 0x1p+0 : inexact-ok
+= cospi downward ibm128 0x8p-972 : 0xf.fffffffffffffffffffffffffcp-4 : inexact-ok
+= cospi tonearest ibm128 0x8p-972 : 0x1p+0 : inexact-ok
+= cospi towardzero ibm128 0x8p-972 : 0xf.fffffffffffffffffffffffffcp-4 : inexact-ok
+= cospi upward ibm128 0x8p-972 : 0x1p+0 : inexact-ok
+cospi -min
+= cospi downward binary32 -0x4p-128 : 0xf.fffffp-4 : inexact-ok
+= cospi tonearest binary32 -0x4p-128 : 0x1p+0 : inexact-ok
+= cospi towardzero binary32 -0x4p-128 : 0xf.fffffp-4 : inexact-ok
+= cospi upward binary32 -0x4p-128 : 0x1p+0 : inexact-ok
+= cospi downward binary64 -0x4p-128 : 0xf.ffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary64 -0x4p-128 : 0x1p+0 : inexact-ok
+= cospi towardzero binary64 -0x4p-128 : 0xf.ffffffffffff8p-4 : inexact-ok
+= cospi upward binary64 -0x4p-128 : 0x1p+0 : inexact-ok
+= cospi downward intel96 -0x4p-128 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest intel96 -0x4p-128 : 0x1p+0 : inexact-ok
+= cospi towardzero intel96 -0x4p-128 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward intel96 -0x4p-128 : 0x1p+0 : inexact-ok
+= cospi downward m68k96 -0x4p-128 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest m68k96 -0x4p-128 : 0x1p+0 : inexact-ok
+= cospi towardzero m68k96 -0x4p-128 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward m68k96 -0x4p-128 : 0x1p+0 : inexact-ok
+= cospi downward binary128 -0x4p-128 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary128 -0x4p-128 : 0x1p+0 : inexact-ok
+= cospi towardzero binary128 -0x4p-128 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi upward binary128 -0x4p-128 : 0x1p+0 : inexact-ok
+= cospi downward ibm128 -0x4p-128 : 0xf.fffffffffffffffffffffffffcp-4 : inexact-ok
+= cospi tonearest ibm128 -0x4p-128 : 0x1p+0 : inexact-ok
+= cospi towardzero ibm128 -0x4p-128 : 0xf.fffffffffffffffffffffffffcp-4 : inexact-ok
+= cospi upward ibm128 -0x4p-128 : 0x1p+0 : inexact-ok
+= cospi downward binary64 -0x4p-1024 : 0xf.ffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary64 -0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi towardzero binary64 -0x4p-1024 : 0xf.ffffffffffff8p-4 : inexact-ok
+= cospi upward binary64 -0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi downward intel96 -0x4p-1024 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest intel96 -0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi towardzero intel96 -0x4p-1024 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward intel96 -0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi downward m68k96 -0x4p-1024 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest m68k96 -0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi towardzero m68k96 -0x4p-1024 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward m68k96 -0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi downward binary128 -0x4p-1024 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary128 -0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi towardzero binary128 -0x4p-1024 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi upward binary128 -0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi downward ibm128 -0x4p-1024 : 0xf.fffffffffffffffffffffffffcp-4 : inexact-ok
+= cospi tonearest ibm128 -0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi towardzero ibm128 -0x4p-1024 : 0xf.fffffffffffffffffffffffffcp-4 : inexact-ok
+= cospi upward ibm128 -0x4p-1024 : 0x1p+0 : inexact-ok
+= cospi downward intel96 -0x4p-16384 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest intel96 -0x4p-16384 : 0x1p+0 : inexact-ok
+= cospi towardzero intel96 -0x4p-16384 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward intel96 -0x4p-16384 : 0x1p+0 : inexact-ok
+= cospi downward m68k96 -0x4p-16384 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest m68k96 -0x4p-16384 : 0x1p+0 : inexact-ok
+= cospi towardzero m68k96 -0x4p-16384 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward m68k96 -0x4p-16384 : 0x1p+0 : inexact-ok
+= cospi downward binary128 -0x4p-16384 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary128 -0x4p-16384 : 0x1p+0 : inexact-ok
+= cospi towardzero binary128 -0x4p-16384 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi upward binary128 -0x4p-16384 : 0x1p+0 : inexact-ok
+= cospi downward intel96 -0x2p-16384 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest intel96 -0x2p-16384 : 0x1p+0 : inexact-ok
+= cospi towardzero intel96 -0x2p-16384 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward intel96 -0x2p-16384 : 0x1p+0 : inexact-ok
+= cospi downward m68k96 -0x2p-16384 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest m68k96 -0x2p-16384 : 0x1p+0 : inexact-ok
+= cospi towardzero m68k96 -0x2p-16384 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward m68k96 -0x2p-16384 : 0x1p+0 : inexact-ok
+= cospi downward binary128 -0x2p-16384 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary128 -0x2p-16384 : 0x1p+0 : inexact-ok
+= cospi towardzero binary128 -0x2p-16384 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi upward binary128 -0x2p-16384 : 0x1p+0 : inexact-ok
+= cospi downward binary64 -0x8p-972 : 0xf.ffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary64 -0x8p-972 : 0x1p+0 : inexact-ok
+= cospi towardzero binary64 -0x8p-972 : 0xf.ffffffffffff8p-4 : inexact-ok
+= cospi upward binary64 -0x8p-972 : 0x1p+0 : inexact-ok
+= cospi downward intel96 -0x8p-972 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest intel96 -0x8p-972 : 0x1p+0 : inexact-ok
+= cospi towardzero intel96 -0x8p-972 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward intel96 -0x8p-972 : 0x1p+0 : inexact-ok
+= cospi downward m68k96 -0x8p-972 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest m68k96 -0x8p-972 : 0x1p+0 : inexact-ok
+= cospi towardzero m68k96 -0x8p-972 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward m68k96 -0x8p-972 : 0x1p+0 : inexact-ok
+= cospi downward binary128 -0x8p-972 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary128 -0x8p-972 : 0x1p+0 : inexact-ok
+= cospi towardzero binary128 -0x8p-972 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi upward binary128 -0x8p-972 : 0x1p+0 : inexact-ok
+= cospi downward ibm128 -0x8p-972 : 0xf.fffffffffffffffffffffffffcp-4 : inexact-ok
+= cospi tonearest ibm128 -0x8p-972 : 0x1p+0 : inexact-ok
+= cospi towardzero ibm128 -0x8p-972 : 0xf.fffffffffffffffffffffffffcp-4 : inexact-ok
+= cospi upward ibm128 -0x8p-972 : 0x1p+0 : inexact-ok
+cospi min_subnorm
+= cospi downward binary32 0x8p-152 : 0xf.fffffp-4 : inexact-ok
+= cospi tonearest binary32 0x8p-152 : 0x1p+0 : inexact-ok
+= cospi towardzero binary32 0x8p-152 : 0xf.fffffp-4 : inexact-ok
+= cospi upward binary32 0x8p-152 : 0x1p+0 : inexact-ok
+= cospi downward binary64 0x8p-152 : 0xf.ffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary64 0x8p-152 : 0x1p+0 : inexact-ok
+= cospi towardzero binary64 0x8p-152 : 0xf.ffffffffffff8p-4 : inexact-ok
+= cospi upward binary64 0x8p-152 : 0x1p+0 : inexact-ok
+= cospi downward intel96 0x8p-152 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest intel96 0x8p-152 : 0x1p+0 : inexact-ok
+= cospi towardzero intel96 0x8p-152 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward intel96 0x8p-152 : 0x1p+0 : inexact-ok
+= cospi downward m68k96 0x8p-152 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest m68k96 0x8p-152 : 0x1p+0 : inexact-ok
+= cospi towardzero m68k96 0x8p-152 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward m68k96 0x8p-152 : 0x1p+0 : inexact-ok
+= cospi downward binary128 0x8p-152 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary128 0x8p-152 : 0x1p+0 : inexact-ok
+= cospi towardzero binary128 0x8p-152 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi upward binary128 0x8p-152 : 0x1p+0 : inexact-ok
+= cospi downward ibm128 0x8p-152 : 0xf.fffffffffffffffffffffffffcp-4 : inexact-ok
+= cospi tonearest ibm128 0x8p-152 : 0x1p+0 : inexact-ok
+= cospi towardzero ibm128 0x8p-152 : 0xf.fffffffffffffffffffffffffcp-4 : inexact-ok
+= cospi upward ibm128 0x8p-152 : 0x1p+0 : inexact-ok
+= cospi downward binary64 0x4p-1076 : 0xf.ffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary64 0x4p-1076 : 0x1p+0 : inexact-ok
+= cospi towardzero binary64 0x4p-1076 : 0xf.ffffffffffff8p-4 : inexact-ok
+= cospi upward binary64 0x4p-1076 : 0x1p+0 : inexact-ok
+= cospi downward intel96 0x4p-1076 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest intel96 0x4p-1076 : 0x1p+0 : inexact-ok
+= cospi towardzero intel96 0x4p-1076 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward intel96 0x4p-1076 : 0x1p+0 : inexact-ok
+= cospi downward m68k96 0x4p-1076 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest m68k96 0x4p-1076 : 0x1p+0 : inexact-ok
+= cospi towardzero m68k96 0x4p-1076 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward m68k96 0x4p-1076 : 0x1p+0 : inexact-ok
+= cospi downward binary128 0x4p-1076 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary128 0x4p-1076 : 0x1p+0 : inexact-ok
+= cospi towardzero binary128 0x4p-1076 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi upward binary128 0x4p-1076 : 0x1p+0 : inexact-ok
+= cospi downward ibm128 0x4p-1076 : 0xf.fffffffffffffffffffffffffcp-4 : inexact-ok
+= cospi tonearest ibm128 0x4p-1076 : 0x1p+0 : inexact-ok
+= cospi towardzero ibm128 0x4p-1076 : 0xf.fffffffffffffffffffffffffcp-4 : inexact-ok
+= cospi upward ibm128 0x4p-1076 : 0x1p+0 : inexact-ok
+= cospi downward intel96 0x8p-16448 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest intel96 0x8p-16448 : 0x1p+0 : inexact-ok
+= cospi towardzero intel96 0x8p-16448 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward intel96 0x8p-16448 : 0x1p+0 : inexact-ok
+= cospi downward m68k96 0x8p-16448 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest m68k96 0x8p-16448 : 0x1p+0 : inexact-ok
+= cospi towardzero m68k96 0x8p-16448 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward m68k96 0x8p-16448 : 0x1p+0 : inexact-ok
+= cospi downward binary128 0x8p-16448 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary128 0x8p-16448 : 0x1p+0 : inexact-ok
+= cospi towardzero binary128 0x8p-16448 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi upward binary128 0x8p-16448 : 0x1p+0 : inexact-ok
+= cospi downward m68k96 0x4p-16448 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi tonearest m68k96 0x4p-16448 : 0x1p+0 : inexact-ok
+= cospi towardzero m68k96 0x4p-16448 : 0xf.fffffffffffffffp-4 : inexact-ok
+= cospi upward m68k96 0x4p-16448 : 0x1p+0 : inexact-ok
+= cospi downward binary128 0x4p-16448 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary128 0x4p-16448 : 0x1p+0 : inexact-ok
+= cospi towardzero binary128 0x4p-16448 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi upward binary128 0x4p-16448 : 0x1p+0 : inexact-ok
+= cospi downward binary128 0x4p-16496 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary128 0x4p-16496 : 0x1p+0 : inexact-ok
+= cospi towardzero binary128 0x4p-16496 : 0xf.fffffffffffffffffffffffffff8p-4 : inexact-ok
+= cospi upward binary128 0x4p-16496 : 0x1p+0 : inexact-ok
+cospi -min_subnorm
+= cospi downward binary32 -0x8p-152 : 0xf.fffffp-4 : inexact-ok
+= cospi tonearest binary32 -0x8p-152 : 0x1p+0 : inexact-ok
+= cospi towardzero binary32 -0x8p-152 : 0xf.fffffp-4 : inexact-ok
+= cospi upward binary32 -0x8p-152 : 0x1p+0 : inexact-ok
+= cospi downward binary64 -0x8p-152 : 0xf.ffffffffffff8p-4 : inexact-ok
+= cospi tonearest binary64 -0x8p-152 : 0x1p+0 : inexact-ok
+= cospi towardzero b