aboutsummaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
authorJoseph Myers <josmyers@redhat.com>2024-12-04 20:04:04 +0000
committerJoseph Myers <josmyers@redhat.com>2024-12-04 20:04:04 +0000
commit776938e8b8dcf2b59998979e91cc0f9db7d771a8 (patch)
tree65d6e7bf7f140a54d4d0b0848b1ba247691d662b /math
parent0ae0af68d8fa3bf6cbe1e4f1de5929ff71de67b3 (diff)
downloadglibc-776938e8b8dcf2b59998979e91cc0f9db7d771a8.tar.xz
glibc-776938e8b8dcf2b59998979e91cc0f9db7d771a8.zip
Implement C23 sinpi
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the sinpi functions (sin(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/Versions2
-rw-r--r--math/auto-libm-test-in101
-rw-r--r--math/auto-libm-test-out-sinpi9908
-rw-r--r--math/bits/mathcalls.h2
-rw-r--r--math/gen-auto-libm-tests.c1
-rwxr-xr-xmath/gen-tgmath-tests.py1
-rw-r--r--math/libm-test-sinpi.inc49
-rw-r--r--math/s_sinpi_template.c47
-rw-r--r--math/test-tgmath.c12
-rw-r--r--math/tgmath.h2
11 files changed, 10130 insertions, 1 deletions
diff --git a/math/Makefile b/math/Makefile
index 602797584e..c9b2c7b47f 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -135,6 +135,7 @@ gen-libm-calls = \
s_nanF \
s_nextdownF \
s_significandF \
+ s_sinpiF \
w_acosF \
w_acoshF \
w_asinF \
@@ -667,6 +668,7 @@ libm-test-funcs-auto = \
sin \
sincos \
sinh \
+ sinpi \
sqrt \
tan \
tanh \
@@ -998,6 +1000,7 @@ tgmath3-macros = \
scalbn \
sin \
sinh \
+ sinpi \
sqrt \
tan \
tanh \
@@ -1423,6 +1426,7 @@ CFLAGS-s_significand.c += -fno-builtin-significandl
CFLAGS-s_sin.c += -fno-builtin-sinl
CFLAGS-s_sincos.c += -fno-builtin-sincosl
CFLAGS-w_sinh.c += -fno-builtin-sinhl
+CFLAGS-s_sinpi.c += -fno-builtin-sinpil
CFLAGS-w_sqrt.c += -fno-builtin-sqrtl
CFLAGS-s_tan.c += -fno-builtin-tanl
CFLAGS-s_tanh.c += -fno-builtin-tanhl
@@ -1549,6 +1553,7 @@ CFLAGS-s_setpayloadsig.c += -fno-builtin-setpayloadsigf32x -fno-builtin-setpaylo
CFLAGS-s_sin.c += -fno-builtin-sinf32x -fno-builtin-sinf64
CFLAGS-s_sincos.c += -fno-builtin-sincosf32x -fno-builtin-sincosf64
CFLAGS-w_sinh.c += -fno-builtin-sinhf32x -fno-builtin-sinhf64
+CFLAGS-s_sinpi.c += -fno-builtin-sinpif32x -fno-builtin-sinpif64
CFLAGS-w_sqrt.c += -fno-builtin-sqrtf32x -fno-builtin-sqrtf64
CFLAGS-s_tan.c += -fno-builtin-tanf32x -fno-builtin-tanf64
CFLAGS-s_tanh.c += -fno-builtin-tanhf32x -fno-builtin-tanhf64
@@ -1668,6 +1673,7 @@ CFLAGS-s_setpayloadsigf.c += -fno-builtin-setpayloadsigf32
CFLAGS-s_sinf.c += -fno-builtin-sinf32
CFLAGS-s_sincosf.c += -fno-builtin-sincosf32
CFLAGS-w_sinhf.c += -fno-builtin-sinhf32
+CFLAGS-s_sinpif.c += -fno-builtin-sinpif32
CFLAGS-w_sqrtf.c += -fno-builtin-sqrtf32
CFLAGS-s_tanf.c += -fno-builtin-tanf32
CFLAGS-s_tanhf.c += -fno-builtin-tanhf32
diff --git a/math/Versions b/math/Versions
index 72dff5ff5b..b14ea92392 100644
--- a/math/Versions
+++ b/math/Versions
@@ -656,7 +656,9 @@ libm {
GLIBC_2.41 {
# Functions not involving _Float64x or _Float128, for all configurations.
cospi; cospif; cospil; cospif32; cospif64; cospif32x;
+ sinpi; sinpif; sinpil; sinpif32; sinpif64; sinpif32x;
# Functions involving _Float64x or _Float128, for some configurations.
cospif64x; cospif128;
+ sinpif64x; sinpif128;
}
}
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 04fe31b863..ec9a0963f2 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -7985,6 +7985,107 @@ sinh 0x2.c5d37700c6bb03a6c24b6c9b494ep+12
# the next value generates larger error bounds on x86_64 (binary64)
sinh -0x1.633c62890fa14p+9
+sinpi 0
+sinpi -0
+sinpi min
+sinpi -min
+sinpi min_subnorm
+sinpi -min_subnorm
+sinpi max
+sinpi -max
+sinpi 1
+sinpi -1
+sinpi 2
+sinpi -2
+sinpi 3
+sinpi -3
+sinpi 0.1
+sinpi -0.1
+sinpi 0.2
+sinpi -0.2
+sinpi 0.3
+sinpi -0.3
+sinpi 0.4
+sinpi -0.4
+sinpi 0.5
+sinpi -0.5
+sinpi 0.6
+sinpi -0.6
+sinpi 0.7
+sinpi -0.7
+sinpi 0.8
+sinpi -0.8
+sinpi 0.9
+sinpi -0.9
+sinpi 1.1
+sinpi -1.1
+sinpi 1.2
+sinpi -1.2
+sinpi 1.3
+sinpi -1.3
+sinpi 1.4
+sinpi -1.4
+sinpi 1.5
+sinpi -1.5
+sinpi 2.5
+sinpi -2.5
+sinpi 3.5
+sinpi -3.5
+sinpi 4.5
+sinpi -4.5
+sinpi 0.24
+sinpi -0.24
+sinpi 0.49
+sinpi -0.49
+sinpi 0.51
+sinpi -0.51
+sinpi 0.76
+sinpi -0.76
+sinpi 1.24
+sinpi -1.24
+sinpi 1.49
+sinpi -1.49
+sinpi 1.51
+sinpi -1.51
+sinpi 1.76
+sinpi -1.76
+sinpi 100.24
+sinpi -100.24
+sinpi 100.49
+sinpi -100.49
+sinpi 100.51
+sinpi -100.51
+sinpi 100.76
+sinpi -100.76
+sinpi 1234.56
+sinpi -1234.56
+sinpi 0x1fffff.2p0
+sinpi -0x1fffff.2p0
+sinpi 0x1fffff.ep0
+sinpi -0x1fffff.ep0
+sinpi 0x3ffffffffffff.2p0
+sinpi -0x3ffffffffffff.2p0
+sinpi 0x3ffffffffffff.ep0
+sinpi -0x3ffffffffffff.ep0
+sinpi 0x1fffffffffffffff.2p0
+sinpi -0x1fffffffffffffff.2p0
+sinpi 0x1fffffffffffffff.ep0
+sinpi -0x1fffffffffffffff.ep0
+sinpi 0x3fffffffffffffffffffffffffff.2p0
+sinpi -0x3fffffffffffffffffffffffffff.2p0
+sinpi 0x3fffffffffffffffffffffffffff.ep0
+sinpi -0x3fffffffffffffffffffffffffff.ep0
+sinpi 0x1p-128
+sinpi -0x1p-128
+sinpi 0x1p-971
+sinpi -0x1p-971
+sinpi 0x1p-1024
+sinpi -0x1p-1024
+sinpi 0x1p-16384
+sinpi -0x1p-16384
+sinpi 0x1p-16385
+sinpi -0x1p-16385
+
sub 0 0
sub 0 -0
sub -0 0
diff --git a/math/auto-libm-test-out-sinpi b/math/auto-libm-test-out-sinpi
new file mode 100644
index 0000000000..8b380092ee
--- /dev/null
+++ b/math/auto-libm-test-out-sinpi
@@ -0,0 +1,9908 @@
+sinpi 0
+= sinpi downward binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi tonearest binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi towardzero binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi upward binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi downward binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi tonearest binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi towardzero binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi upward binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi downward intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi tonearest intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi towardzero intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi upward intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi downward m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi tonearest m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi towardzero m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi upward m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi downward binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi tonearest binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi towardzero binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi upward binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi downward ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi tonearest ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi towardzero ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= sinpi upward ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+sinpi -0
+= sinpi downward binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi tonearest binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi towardzero binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi upward binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi downward binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi tonearest binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi towardzero binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi upward binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi downward intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi tonearest intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi towardzero intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi upward intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi downward m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi tonearest m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi towardzero m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi upward m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi downward binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi tonearest binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi towardzero binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi upward binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi downward ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi tonearest ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi towardzero ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= sinpi upward ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+sinpi min
+= sinpi downward binary32 0x4p-128 : 0xc.90fdap-128 : inexact-ok
+= sinpi tonearest binary32 0x4p-128 : 0xc.90fdbp-128 : inexact-ok
+= sinpi towardzero binary32 0x4p-128 : 0xc.90fdap-128 : inexact-ok
+= sinpi upward binary32 0x4p-128 : 0xc.90fdbp-128 : inexact-ok
+= sinpi downward binary64 0x4p-128 : 0xc.90fdaa22168cp-128 : inexact-ok
+= sinpi tonearest binary64 0x4p-128 : 0xc.90fdaa22168cp-128 : inexact-ok
+= sinpi towardzero binary64 0x4p-128 : 0xc.90fdaa22168cp-128 : inexact-ok
+= sinpi upward binary64 0x4p-128 : 0xc.90fdaa22168c8p-128 : inexact-ok
+= sinpi downward intel96 0x4p-128 : 0xc.90fdaa22168c234p-128 : inexact-ok
+= sinpi tonearest intel96 0x4p-128 : 0xc.90fdaa22168c235p-128 : inexact-ok
+= sinpi towardzero intel96 0x4p-128 : 0xc.90fdaa22168c234p-128 : inexact-ok
+= sinpi upward intel96 0x4p-128 : 0xc.90fdaa22168c235p-128 : inexact-ok
+= sinpi downward m68k96 0x4p-128 : 0xc.90fdaa22168c234p-128 : inexact-ok
+= sinpi tonearest m68k96 0x4p-128 : 0xc.90fdaa22168c235p-128 : inexact-ok
+= sinpi towardzero m68k96 0x4p-128 : 0xc.90fdaa22168c234p-128 : inexact-ok
+= sinpi upward m68k96 0x4p-128 : 0xc.90fdaa22168c235p-128 : inexact-ok
+= sinpi downward binary128 0x4p-128 : 0xc.90fdaa22168c234c4c6628b80dcp-128 : inexact-ok
+= sinpi tonearest binary128 0x4p-128 : 0xc.90fdaa22168c234c4c6628b80dcp-128 : inexact-ok
+= sinpi towardzero binary128 0x4p-128 : 0xc.90fdaa22168c234c4c6628b80dcp-128 : inexact-ok
+= sinpi upward binary128 0x4p-128 : 0xc.90fdaa22168c234c4c6628b80dc8p-128 : inexact-ok
+= sinpi downward ibm128 0x4p-128 : 0xc.90fdaa22168c234c4c6628b80cp-128 : inexact-ok
+= sinpi tonearest ibm128 0x4p-128 : 0xc.90fdaa22168c234c4c6628b80cp-128 : inexact-ok
+= sinpi towardzero ibm128 0x4p-128 : 0xc.90fdaa22168c234c4c6628b80cp-128 : inexact-ok
+= sinpi upward ibm128 0x4p-128 : 0xc.90fdaa22168c234c4c6628b81p-128 : inexact-ok
+= sinpi downward binary64 0x4p-1024 : 0xc.90fdaa22168cp-1024 : inexact-ok
+= sinpi tonearest binary64 0x4p-1024 : 0xc.90fdaa22168cp-1024 : inexact-ok
+= sinpi towardzero binary64 0x4p-1024 : 0xc.90fdaa22168cp-1024 : inexact-ok
+= sinpi upward binary64 0x4p-1024 : 0xc.90fdaa22168c8p-1024 : inexact-ok
+= sinpi downward intel96 0x4p-1024 : 0xc.90fdaa22168c234p-1024 : inexact-ok
+= sinpi tonearest intel96 0x4p-1024 : 0xc.90fdaa22168c235p-1024 : inexact-ok
+= sinpi towardzero intel96 0x4p-1024 : 0xc.90fdaa22168c234p-1024 : inexact-ok
+= sinpi upward intel96 0x4p-1024 : 0xc.90fdaa22168c235p-1024 : inexact-ok
+= sinpi downward m68k96 0x4p-1024 : 0xc.90fdaa22168c234p-1024 : inexact-ok
+= sinpi tonearest m68k96 0x4p-1024 : 0xc.90fdaa22168c235p-1024 : inexact-ok
+= sinpi towardzero m68k96 0x4p-1024 : 0xc.90fdaa22168c234p-1024 : inexact-ok
+= sinpi upward m68k96 0x4p-1024 : 0xc.90fdaa22168c235p-1024 : inexact-ok
+= sinpi downward binary128 0x4p-1024 : 0xc.90fdaa22168c234c4c6628b80dcp-1024 : inexact-ok
+= sinpi tonearest binary128 0x4p-1024 : 0xc.90fdaa22168c234c4c6628b80dcp-1024 : inexact-ok
+= sinpi towardzero binary128 0x4p-1024 : 0xc.90fdaa22168c234c4c6628b80dcp-1024 : inexact-ok
+= sinpi upward binary128 0x4p-1024 : 0xc.90fdaa22168c234c4c6628b80dc8p-1024 : inexact-ok
+= sinpi downward ibm128 0x4p-1024 : 0xc.90fdaa22168cp-1024 : inexact-ok underflow errno-erange-ok
+= sinpi tonearest ibm128 0x4p-1024 : 0xc.90fdaa22168c4p-1024 : inexact-ok underflow errno-erange-ok
+= sinpi towardzero ibm128 0x4p-1024 : 0xc.90fdaa22168cp-1024 : inexact-ok underflow errno-erange-ok
+= sinpi upward ibm128 0x4p-1024 : 0xc.90fdaa22168c4p-1024 : inexact-ok underflow errno-erange-ok
+= sinpi downward intel96 0x4p-16384 : 0xc.90fdaa22168c234p-16384 : inexact-ok
+= sinpi tonearest intel96 0x4p-16384 : 0xc.90fdaa22168c235p-16384 : inexact-ok
+= sinpi towardzero intel96 0x4p-16384 : 0xc.90fdaa22168c234p-16384 : inexact-ok
+= sinpi upward intel96 0x4p-16384 : 0xc.90fdaa22168c235p-16384 : inexact-ok
+= sinpi downward m68k96 0x4p-16384 : 0xc.90fdaa22168c234p-16384 : inexact-ok
+= sinpi tonearest m68k96 0x4p-16384 : 0xc.90fdaa22168c235p-16384 : inexact-ok
+= sinpi towardzero m68k96 0x4p-16384 : 0xc.90fdaa22168c234p-16384 : inexact-ok
+= sinpi upward m68k96 0x4p-16384 : 0xc.90fdaa22168c235p-16384 : inexact-ok
+= sinpi downward binary128 0x4p-16384 : 0xc.90fdaa22168c234c4c6628b80dcp-16384 : inexact-ok
+= sinpi tonearest binary128 0x4p-16384 : 0xc.90fdaa22168c234c4c6628b80dcp-16384 : inexact-ok
+= sinpi towardzero binary128 0x4p-16384 : 0xc.90fdaa22168c234c4c6628b80dcp-16384 : inexact-ok
+= sinpi upward binary128 0x4p-16384 : 0xc.90fdaa22168c234c4c6628b80dc8p-16384 : inexact-ok
+= sinpi downward intel96 0x2p-16384 : 0x6.487ed5110b4611ap-16384 : inexact-ok
+= sinpi tonearest intel96 0x2p-16384 : 0x6.487ed5110b4611a8p-16384 : inexact-ok
+= sinpi towardzero intel96 0x2p-16384 : 0x6.487ed5110b4611ap-16384 : inexact-ok
+= sinpi upward intel96 0x2p-16384 : 0x6.487ed5110b4611a8p-16384 : inexact-ok
+= sinpi downward m68k96 0x2p-16384 : 0x6.487ed5110b4611ap-16384 : inexact-ok
+= sinpi tonearest m68k96 0x2p-16384 : 0x6.487ed5110b4611a8p-16384 : inexact-ok
+= sinpi towardzero m68k96 0x2p-16384 : 0x6.487ed5110b4611ap-16384 : inexact-ok
+= sinpi upward m68k96 0x2p-16384 : 0x6.487ed5110b4611a8p-16384 : inexact-ok
+= sinpi downward binary128 0x2p-16384 : 0x6.487ed5110b4611a62633145c06ep-16384 : inexact-ok
+= sinpi tonearest binary128 0x2p-16384 : 0x6.487ed5110b4611a62633145c06ep-16384 : inexact-ok
+= sinpi towardzero binary128 0x2p-16384 : 0x6.487ed5110b4611a62633145c06ep-16384 : inexact-ok
+= sinpi upward binary128 0x2p-16384 : 0x6.487ed5110b4611a62633145c06e4p-16384 : inexact-ok
+= sinpi downward binary64 0x8p-972 : 0x1.921fb54442d18p-968 : inexact-ok
+= sinpi tonearest binary64 0x8p-972 : 0x1.921fb54442d18p-968 : inexact-ok
+= sinpi towardzero binary64 0x8p-972 : 0x1.921fb54442d18p-968 : inexact-ok
+= sinpi upward binary64 0x8p-972 : 0x1.921fb54442d19p-968 : inexact-ok
+= sinpi downward intel96 0x8p-972 : 0x1.921fb54442d18468p-968 : inexact-ok
+= sinpi tonearest intel96 0x8p-972 : 0x1.921fb54442d1846ap-968 : inexact-ok
+= sinpi towardzero intel96 0x8p-972 : 0x1.921fb54442d18468p-968 : inexact-ok
+= sinpi upward intel96 0x8p-972 : 0x1.921fb54442d1846ap-968 : inexact-ok
+= sinpi downward m68k96 0x8p-972 : 0x1.921fb54442d18468p-968 : inexact-ok
+= sinpi tonearest m68k96 0x8p-972 : 0x1.921fb54442d1846ap-968 : inexact-ok
+= sinpi towardzero m68k96 0x8p-972 : 0x1.921fb54442d18468p-968 : inexact-ok
+= sinpi upward m68k96 0x8p-972 : 0x1.921fb54442d1846ap-968 : inexact-ok
+= sinpi downward binary128 0x8p-972 : 0x1.921fb54442d18469898cc51701b8p-968 : inexact-ok
+= sinpi tonearest binary128 0x8p-972 : 0x1.921fb54442d18469898cc51701b8p-968 : inexact-ok
+= sinpi towardzero binary128 0x8p-972 : 0x1.921fb54442d18469898cc51701b8p-968 : inexact-ok
+= sinpi upward binary128 0x8p-972 : 0x1.921fb54442d18469898cc51701b9p-968 : inexact-ok
+= sinpi downward ibm128 0x8p-972 : 0x1.921fb54442d18469898cc517018p-968 : inexact-ok
+= sinpi tonearest ibm128 0x8p-972 : 0x1.921fb54442d18469898cc517018p-968 : inexact-ok
+= sinpi towardzero ibm128 0x8p-972 : 0x1.921fb54442d18469898cc517018p-968 : inexact-ok
+= sinpi upward ibm128 0x8p-972 : 0x1.921fb54442d18469898cc51702p-968 : inexact-ok
+sinpi -min
+= sinpi downward binary32 -0x4p-128 : -0xc.90fdbp-128 : inexact-ok
+= sinpi tonearest binary32 -0x4p-128 : -0xc.90fdbp-128 : inexact-ok
+= sinpi towardzero binary32 -0x4p-128 : -0xc.90fdap-128 : inexact-ok
+= sinpi upward binary32 -0x4p-128 : -0xc.90fdap-128 : inexact-ok
+= sinpi downward binary64 -0x4p-128 : -0xc.90fdaa22168c8p-128 : inexact-ok
+= sinpi tonearest binary64 -0x4p-128 : -0xc.90fdaa22168cp-128 : inexact-ok
+= sinpi towardzero binary64 -0x4p-128 : -0xc.90fdaa22168cp-128 : inexact-ok
+= sinpi upward binary64 -0x4p-128 : -0xc.90fdaa22168cp-128 : inexact-ok
+= sinpi downward intel96 -0x4p-128 : -0xc.90fdaa22168c235p-128 : inexact-ok
+= sinpi tonearest intel96 -0x4p-128 : -0xc.90fdaa22168c235p-128 : inexact-ok
+= sinpi towardzero intel96 -0x4p-128 : -0xc.90fdaa22168c234p-128 : inexact-ok
+= sinpi upward intel96 -0x4p-128 : -0xc.90fdaa22168c234p-128 : inexact-ok
+= sinpi downward m68k96 -0x4p-128 : -0xc.90fdaa22168c235p-128 : inexact-ok
+= sinpi tonearest m68k96 -0x4p-128 : -0xc.90fdaa22168c235p-128 : inexact-ok
+= sinpi towardzero m68k96 -0x4p-128 : -0xc.90fdaa22168c234p-128 : inexact-ok
+= sinpi upward m68k96 -0x4p-128 : -0xc.90fdaa22168c234p-128 : inexact-ok
+= sinpi downward binary128 -0x4p-128 : -0xc.90fdaa22168c234c4c6628b80dc8p-128 : inexact-ok
+= sinpi tonearest binary128 -0x4p-128 : -0xc.90fdaa22168c234c4c6628b80dcp-128 : inexact-ok
+= sinpi towardzero binary128 -0x4p-128 : -0xc.90fdaa22168c234c4c6628b80dcp-128 : inexact-ok
+= sinpi upward binary128 -0x4p-128 : -0xc.90fdaa22168c234c4c6628b80dcp-128 : inexact-ok
+= sinpi downward ibm128 -0x4p-128 : -0xc.90fdaa22168c234c4c6628b81p-128 : inexact-ok
+= sinpi tonearest ibm128 -0x4p-128 : -0xc.90fdaa22168c234c4c6628b80cp-128 : inexact-ok
+= sinpi towardzero ibm128 -0x4p-128 : -0xc.90fdaa22168c234c4c6628b80cp-128 : inexact-ok
+= sinpi upward ibm128 -0x4p-128 : -0xc.90fdaa22168c234c4c6628b80cp-128 : inexact-ok
+= sinpi downward binary64 -0x4p-1024 : -0xc.90fdaa22168c8p-1024 : inexact-ok
+= sinpi tonearest binary64 -0x4p-1024 : -0xc.90fdaa22168cp-1024 : inexact-ok
+= sinpi towardzero binary64 -0x4p-1024 : -0xc.90fdaa22168cp-1024 : inexact-ok
+= sinpi upward binary64 -0x4p-1024 : -0xc.90fdaa22168cp-1024 : inexact-ok
+= sinpi downward intel96 -0x4p-1024 : -0xc.90fdaa22168c235p-1024 : inexact-ok
+= sinpi tonearest intel96 -0x4p-1024 : -0xc.90fdaa22168c235p-1024 : inexact-ok
+= sinpi towardzero intel96 -0x4p-1024 : -0xc.90fdaa22168c234p-1024 : inexact-ok
+= sinpi upward intel96 -0x4p-1024 : -0xc.90fdaa22168c234p-1024 : inexact-ok
+= sinpi downward m68k96 -0x4p-1024 : -0xc.90fdaa22168c235p-1024 : inexact-ok
+= sinpi tonearest m68k96 -0x4p-1024 : -0xc.90fdaa22168c235p-1024 : inexact-ok
+= sinpi towardzero m68k96 -0x4p-1024 : -0xc.90fdaa22168c234p-1024 : inexact-ok
+= sinpi upward m68k96 -0x4p-1024 : -0xc.90fdaa22168c234p-1024 : inexact-ok
+= sinpi downward binary128 -0x4p-1024 : -0xc.90fdaa22168c234c4c6628b80dc8p-1024 : inexact-ok
+= sinpi tonearest binary128 -0x4p-1024 : -0xc.90fdaa22168c234c4c6628b80dcp-1024 : inexact-ok
+= sinpi towardzero binary128 -0x4p-1024 : -0xc.90fdaa22168c234c4c6628b80dcp-1024 : inexact-ok
+= sinpi upward binary128 -0x4p-1024 : -0xc.90fdaa22168c234c4c6628b80dcp-1024 : inexact-ok
+= sinpi downward ibm128 -0x4p-1024 : -0xc.90fdaa22168c4p-1024 : inexact-ok underflow errno-erange-ok
+= sinpi tonearest ibm128 -0x4p-1024 : -0xc.90fdaa22168c4p-1024 : inexact-ok underflow errno-erange-ok
+= sinpi towardzero ibm128 -0x4p-1024 : -0xc.90fdaa22168cp-1024 : inexact-ok underflow errno-erange-ok
+= sinpi upward ibm128 -0x4p-1024 : -0xc.90fdaa22168cp-1024 : inexact-ok underflow errno-erange-ok
+= sinpi downward intel96 -0x4p-16384 : -0xc.90fdaa22168c235p-16384 : inexact-ok
+= sinpi tonearest intel96 -0x4p-16384 : -0xc.90fdaa22168c235p-16384 : inexact-ok
+= sinpi towardzero intel96 -0x4p-16384 : -0xc.90fdaa22168c234p-16384 : inexact-ok
+= sinpi upward intel96 -0x4p-16384 : -0xc.90fdaa22168c234p-16384 : inexact-ok
+= sinpi downward m68k96 -0x4p-16384 : -0xc.90fdaa22168c235p-16384 : inexact-ok
+= sinpi tonearest m68k96 -0x4p-16384 : -0xc.90fdaa22168c235p-16384 : inexact-ok
+= sinpi towardzero m68k96 -0x4p-16384 : -0xc.90fdaa22168c234p-16384 : inexact-ok
+= sinpi upward m68k96 -0x4p-16384 : -0xc.90fdaa22168c234p-16384 : inexact-ok
+= sinpi downward binary128 -0x4p-16384 : -0xc.90fdaa22168c234c4c6628b80dc8p-16384 : inexact-ok
+= sinpi tonearest binary128 -0x4p-16384 : -0xc.90fdaa22168c234c4c6628b80dcp-16384 : inexact-ok
+= sinpi towardzero binary128 -0x4p-16384 : -0xc.90fdaa22168c234c4c6628b80dcp-16384 : inexact-ok
+= sinpi upward binary128 -0x4p-16384 : -0xc.90fdaa22168c234c4c6628b80dcp-16384 : inexact-ok
+= sinpi downward intel96 -0x2p-16384 : -0x6.487ed5110b4611a8p-16384 : inexact-ok
+= sinpi tonearest intel96 -0x2p-16384 : -0x6.487ed5110b4611a8p-16384 : inexact-ok
+= sinpi towardzero intel96 -0x2p-16384 : -0x6.487ed5110b4611ap-16384 : inexact-ok
+= sinpi upward intel96 -0x2p-16384 : -0x6.487ed5110b4611ap-16384 : inexact-ok
+= sinpi downward m68k96 -0x2p-16384 : -0x6.487ed5110b4611a8p-16384 : inexact-ok
+= sinpi tonearest m68k96 -0x2p-16384 : -0x6.487ed5110b4611a8p-16384 : inexact-ok
+= sinpi towardzero m68k96 -0x2p-16384 : -0x6.487ed5110b4611ap-16384 : inexact-ok
+= sinpi upward m68k96 -0x2p-16384 : -0x6.487ed5110b4611ap-16384 : inexact-ok
+= sinpi downward binary128 -0x2p-16384 : -0x6.487ed5110b4611a62633145c06e4p-16384 : inexact-ok
+= sinpi tonearest binary128 -0x2p-16384 : -0x6.487ed5110b4611a62633145c06ep-16384 : inexact-ok
+= sinpi towardzero binary128 -0x2p-16384 : -0x6.487ed5110b4611a62633145c06ep-16384 : inexact-ok
+= sinpi upward binary128 -0x2p-16384 : -0x6.487ed5110b4611a62633145c06ep-16384 : inexact-ok
+= sinpi downward binary64 -0x8p-972 : -0x1.921fb54442d19p-968 : inexact-ok
+= sinpi tonearest binary64 -0x8p-972 : -0x1.921fb54442d18p-968 : inexact-ok
+= sinpi towardzero binary64 -0x8p-972 : -0x1.921fb54442d18p-968 : inexact-ok
+= sinpi upward binary64 -0x8p-972 : -0x1.921fb54442d18p-968 : inexact-ok
+= sinpi downward intel96 -0x8p-972 : -0x1.921fb54442d1846ap-968 : inexact-ok
+= sinpi tonearest intel96 -0x8p-972 : -0x1.921fb54442d1846ap-968 : inexact-ok
+= sinpi towardzero intel96 -0x8p-972 : -0x1.921fb54442d18468p-968 : inexact-ok
+= sinpi upward intel96 -0x8p-972 : -0x1.921fb54442d18468p-968 : inexact-ok
+= sinpi downward m68k96 -0x8p-972 : -0x1.921fb54442d1846ap-968 : inexact-ok
+= sinpi tonearest m68k96 -0x8p-972 : -0x1.921fb54442d1846ap-968 : inexact-ok
+= sinpi towardzero m68k96 -0x8p-972 : -0x1.921fb54442d18468p-968 : inexact-ok
+= sinpi upward m68k96 -0x8p-972 : -0x1.921fb54442d18468p-968 : inexact-ok
+= sinpi downward binary128 -0x8p-972 : -0x1.921fb54442d18469898cc51701b9p-968 : inexact-ok
+= sinpi tonearest binary128 -0x8p-972 : -0x1.921fb54442d18469898cc51701b8p-968 : inexact-ok
+= sinpi towardzero binary128 -0x8p-972 : -0x1.921fb54442d18469898cc51701b8p-968 : inexact-ok
+= sinpi upward binary128 -0x8p-972 : -0x1.921fb54442d18469898cc51701b8p-968 : inexact-ok
+= sinpi downward ibm128 -0x8p-972 : -0x1.921fb54442d18469898cc51702p-968 : inexact-ok
+= sinpi tonearest ibm128 -0x8p-972 : -0x1.921fb54442d18469898cc517018p-968 : inexact-ok
+= sinpi towardzero ibm128 -0x8p-972 : -0x1.921fb54442d18469898cc517018p-968 : inexact-ok
+= sinpi upward ibm128 -0x8p-972 : -0x1.921fb54442d18469898cc517018p-968 : inexact-ok
+sinpi min_subnorm
+= sinpi downward binary32 0x8p-152 : 0x1.8p-148 : inexact-ok underflow errno-erange-ok
+= sinpi tonearest binary32 0x8p-152 : 0x1.8p-148 : inexact-ok underflow errno-erange-ok
+= sinpi towardzero binary32 0x8p-152 : 0x1.8p-148 : inexact-ok underflow errno-erange-ok
+= sinpi upward binary32 0x8p-152 : 0x2p-148 : inexact-ok underflow errno-erange-ok
+= sinpi downward binary64 0x8p-152 : 0x1.921fb54442d18p-148 : inexact-ok
+= sinpi tonearest binary64 0x8p-152 : 0x1.921fb54442d18p-148 : inexact-ok
+= sinpi towardzero binary64 0x8p-152 : 0x1.921fb54442d18p-148 : inexact-ok
+= sinpi upward binary64 0x8p-152 : 0x1.921fb54442d19p-148 : inexact-ok
+= sinpi downward intel96 0x8p-152 : 0x1.921fb54442d18468p-148 : inexact-ok
+= sinpi tonearest intel96 0x8p-152 : 0x1.921fb54442d1846ap-148 : inexact-ok
+= sinpi towardzero intel96 0x8p-152 : 0x1.921fb54442d18468p-148 : inexact-ok
+= sinpi upward intel96 0x8p-152 : 0x1.921fb54442d1846ap-148 : inexact-ok
+= sinpi downward m68k96 0x8p-152 : 0x1.921fb54442d18468p-148 : inexact-ok
+= sinpi tonearest m68k96 0x8p-152 : 0x1.921fb54442d1846ap-148 : inexact-ok
+= sinpi towardzero m68k96 0x8p-152 : 0x1.921fb54442d18468p-148 : inexact-ok
+= sinpi upward m68k96 0x8p-152 : 0x1.921fb54442d1846ap-148 : inexact-ok
+= sinpi downward binary128 0x8p-152 : 0x1.921fb54442d18469898cc51701b8p-148 : inexact-ok
+= sinpi tonearest binary128 0x8p-152 : 0x1.921fb54442d18469898cc51701b8p-148 : inexact-ok
+= sinpi towardzero binary128 0x8p-152 : 0x1.921fb54442d18469898cc51701b8p-148 : inexact-ok
+= sinpi upward binary128 0x8p-152 : 0x1.921fb54442d18469898cc51701b9p-148 : inexact-ok
+= sinpi downward ibm128 0x8p-152 : 0x1.921fb54442d18469898cc517018p-148 : inexact-ok
+= sinpi tonearest ibm128 0x8p-152 : 0x1.921fb54442d18469898cc517018p-148 : inexact-ok
+= sinpi towardzero ibm128 0x8p-152 : 0x1.921fb54442d18469898cc517018p-148 : inexact-ok
+= sinpi upward ibm128 0x8p-152 : 0x1.921fb54442d18469898cc51702p-148 : inexact-ok
+= sinpi downward binary64 0x4p-1076 : 0xcp-1076 : inexact-ok underflow errno-erange-ok
+= sinpi tonearest binary64 0x4p-1076 : 0xcp-1076 : inexact-ok underflow errno-erange-ok
+= sinpi towardzero binary64 0x4p-1076 : 0xcp-1076 : inexact-ok underflow errno-erange-ok
+= sinpi upward binary64 0x4p-1076 : 0x1p-1072 : inexact-ok underflow errno-erange-ok
+= sinpi downward intel96 0x4p-1076 : 0xc.90fdaa22168c234p-1076 : inexact-ok
+= sinpi tonearest intel96 0x4p-1076 : 0xc.90fdaa22168c235p-1076 : inexact-ok
+= sinpi towardzero intel96 0x4p-1076 : 0xc.90fdaa22168c234p-1076 : inexact-ok
+= sinpi upward inte