aboutsummaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
authorJoseph Myers <josmyers@redhat.com>2024-12-05 21:42:10 +0000
committerJoseph Myers <josmyers@redhat.com>2024-12-05 21:42:10 +0000
commitf9e90e4b4ce71f88470c8c8b0a16c21088294be4 (patch)
treef1480a938f936a29630f67901a86b7e2c750eff1 /math
parent062257c5d929e3c9a83a26624a09e57936ac6b5e (diff)
downloadglibc-f9e90e4b4ce71f88470c8c8b0a16c21088294be4.tar.xz
glibc-f9e90e4b4ce71f88470c8c8b0a16c21088294be4.zip
Implement C23 tanpi
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the tanpi functions (tan(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-in83
-rw-r--r--math/auto-libm-test-out-tanpi9058
-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-tanpi.inc89
-rw-r--r--math/s_tanpi_template.c65
-rw-r--r--math/test-tgmath.c12
-rw-r--r--math/tgmath.h2
11 files changed, 9320 insertions, 1 deletions
diff --git a/math/Makefile b/math/Makefile
index 4b1706b425..d204ac254c 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -136,6 +136,7 @@ gen-libm-calls = \
s_nextdownF \
s_significandF \
s_sinpiF \
+ s_tanpiF \
w_acosF \
w_acoshF \
w_asinF \
@@ -672,6 +673,7 @@ libm-test-funcs-auto = \
sqrt \
tan \
tanh \
+ tanpi \
tgamma \
y0 \
y1 \
@@ -1004,6 +1006,7 @@ tgmath3-macros = \
sqrt \
tan \
tanh \
+ tanpi \
tgamma \
trunc \
ufromfp \
@@ -1430,6 +1433,7 @@ 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
+CFLAGS-s_tanpi.c += -fno-builtin-tanpil
CFLAGS-w_tgamma.c += -fno-builtin-tgammal
CFLAGS-s_totalorder.c += -fno-builtin-totalorderl
CFLAGS-s_totalordermag.c += -fno-builtin-totalordermagl
@@ -1557,6 +1561,7 @@ 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
+CFLAGS-s_tanpi.c += -fno-builtin-tanpif32x -fno-builtin-tanpif64
CFLAGS-w_tgamma.c += -fno-builtin-tgammaf32x -fno-builtin-tgammaf64
CFLAGS-s_totalorder.c += -fno-builtin-totalorderf32x -fno-builtin-totalorderf64
CFLAGS-s_totalordermag.c += -fno-builtin-totalordermagf32x -fno-builtin-totalordermagf64
@@ -1677,6 +1682,7 @@ 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
+CFLAGS-s_tanpif.c += -fno-builtin-tanpif32
CFLAGS-w_tgammaf.c += -fno-builtin-tgammaf32
CFLAGS-s_totalorderf.c += -fno-builtin-totalorderf32
CFLAGS-s_totalordermagf.c += -fno-builtin-totalordermagf32
diff --git a/math/Versions b/math/Versions
index b14ea92392..baad0a8f93 100644
--- a/math/Versions
+++ b/math/Versions
@@ -657,8 +657,10 @@ libm {
# Functions not involving _Float64x or _Float128, for all configurations.
cospi; cospif; cospil; cospif32; cospif64; cospif32x;
sinpi; sinpif; sinpil; sinpif32; sinpif64; sinpif32x;
+ tanpi; tanpif; tanpil; tanpif32; tanpif64; tanpif32x;
# Functions involving _Float64x or _Float128, for some configurations.
cospif64x; cospif128;
sinpif64x; sinpif128;
+ tanpif64x; tanpif128;
}
}
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 0d765e8d27..42e75067c4 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -8427,6 +8427,89 @@ tanh -min
tanh min_subnorm
tanh -min_subnorm
+tanpi 0
+tanpi -0
+tanpi min
+tanpi -min
+tanpi min_subnorm
+tanpi -min_subnorm
+tanpi max
+tanpi -max
+tanpi 1
+tanpi -1
+tanpi 2
+tanpi -2
+tanpi 3
+tanpi -3
+tanpi 4
+tanpi -4
+tanpi 0.1
+tanpi -0.1
+tanpi 0.2
+tanpi -0.2
+tanpi 0.3
+tanpi -0.3
+tanpi 0.4
+tanpi -0.4
+tanpi 0.6
+tanpi -0.6
+tanpi 0.7
+tanpi -0.7
+tanpi 0.8
+tanpi -0.8
+tanpi 0.9
+tanpi -0.9
+tanpi 1.1
+tanpi -1.1
+tanpi 1.2
+tanpi -1.2
+tanpi 1.3
+tanpi -1.3
+tanpi 1.4
+tanpi -1.4
+tanpi 0.24
+tanpi -0.24
+tanpi 0.49
+tanpi -0.49
+tanpi 0.51
+tanpi -0.51
+tanpi 0.76
+tanpi -0.76
+tanpi 1.24
+tanpi -1.24
+tanpi 1.49
+tanpi -1.49
+tanpi 1.51
+tanpi -1.51
+tanpi 1.76
+tanpi -1.76
+tanpi 100.24
+tanpi -100.24
+tanpi 100.49
+tanpi -100.49
+tanpi 100.51
+tanpi -100.51
+tanpi 100.76
+tanpi -100.76
+tanpi 1234.56
+tanpi -1234.56
+tanpi 0x1fffff.6p0
+tanpi -0x1fffff.6p0
+tanpi 0x1fffff.ap0
+tanpi -0x1fffff.ap0
+tanpi 0x3ffffffffffff.6p0
+tanpi -0x3ffffffffffff.6p0
+tanpi 0x3ffffffffffff.ap0
+tanpi -0x3ffffffffffff.ap0
+tanpi 0x1fffffffffffffff.6p0
+tanpi -0x1fffffffffffffff.6p0
+tanpi 0x1fffffffffffffff.ap0
+tanpi -0x1fffffffffffffff.ap0
+tanpi 0x3fffffffffffffffffffffffffff.6p0
+tanpi -0x3fffffffffffffffffffffffffff.6p0
+tanpi 0x3fffffffffffffffffffffffffff.ap0
+tanpi -0x3fffffffffffffffffffffffffff.ap0
+
tgamma 0.5
tgamma -0.5
diff --git a/math/auto-libm-test-out-tanpi b/math/auto-libm-test-out-tanpi
new file mode 100644
index 0000000000..241a84c0a7
--- /dev/null
+++ b/math/auto-libm-test-out-tanpi
@@ -0,0 +1,9058 @@
+tanpi 0
+= tanpi downward binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi tonearest binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi towardzero binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi upward binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi downward binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi tonearest binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi towardzero binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi upward binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi downward intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi tonearest intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi towardzero intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi upward intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi downward m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi tonearest m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi towardzero m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi upward m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi downward binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi tonearest binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi towardzero binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi upward binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi downward ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi tonearest ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi towardzero ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= tanpi upward ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+tanpi -0
+= tanpi downward binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi tonearest binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi towardzero binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi upward binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi downward binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi tonearest binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi towardzero binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi upward binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi downward intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi tonearest intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi towardzero intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi upward intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi downward m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi tonearest m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi towardzero m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi upward m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi downward binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi tonearest binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi towardzero binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi upward binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi downward ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi tonearest ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi towardzero ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= tanpi upward ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+tanpi min
+= tanpi downward binary32 0x4p-128 : 0xc.90fdap-128 : inexact-ok
+= tanpi tonearest binary32 0x4p-128 : 0xc.90fdbp-128 : inexact-ok
+= tanpi towardzero binary32 0x4p-128 : 0xc.90fdap-128 : inexact-ok
+= tanpi upward binary32 0x4p-128 : 0xc.90fdbp-128 : inexact-ok
+= tanpi downward binary64 0x4p-128 : 0xc.90fdaa22168cp-128 : inexact-ok
+= tanpi tonearest binary64 0x4p-128 : 0xc.90fdaa22168cp-128 : inexact-ok
+= tanpi towardzero binary64 0x4p-128 : 0xc.90fdaa22168cp-128 : inexact-ok
+= tanpi upward binary64 0x4p-128 : 0xc.90fdaa22168c8p-128 : inexact-ok
+= tanpi downward intel96 0x4p-128 : 0xc.90fdaa22168c234p-128 : inexact-ok
+= tanpi tonearest intel96 0x4p-128 : 0xc.90fdaa22168c235p-128 : inexact-ok
+= tanpi towardzero intel96 0x4p-128 : 0xc.90fdaa22168c234p-128 : inexact-ok
+= tanpi upward intel96 0x4p-128 : 0xc.90fdaa22168c235p-128 : inexact-ok
+= tanpi downward m68k96 0x4p-128 : 0xc.90fdaa22168c234p-128 : inexact-ok
+= tanpi tonearest m68k96 0x4p-128 : 0xc.90fdaa22168c235p-128 : inexact-ok
+= tanpi towardzero m68k96 0x4p-128 : 0xc.90fdaa22168c234p-128 : inexact-ok
+= tanpi upward m68k96 0x4p-128 : 0xc.90fdaa22168c235p-128 : inexact-ok
+= tanpi downward binary128 0x4p-128 : 0xc.90fdaa22168c234c4c6628b80dcp-128 : inexact-ok
+= tanpi tonearest binary128 0x4p-128 : 0xc.90fdaa22168c234c4c6628b80dcp-128 : inexact-ok
+= tanpi towardzero binary128 0x4p-128 : 0xc.90fdaa22168c234c4c6628b80dcp-128 : inexact-ok
+= tanpi upward binary128 0x4p-128 : 0xc.90fdaa22168c234c4c6628b80dc8p-128 : inexact-ok
+= tanpi downward ibm128 0x4p-128 : 0xc.90fdaa22168c234c4c6628b80cp-128 : inexact-ok
+= tanpi tonearest ibm128 0x4p-128 : 0xc.90fdaa22168c234c4c6628b80cp-128 : inexact-ok
+= tanpi towardzero ibm128 0x4p-128 : 0xc.90fdaa22168c234c4c6628b80cp-128 : inexact-ok
+= tanpi upward ibm128 0x4p-128 : 0xc.90fdaa22168c234c4c6628b81p-128 : inexact-ok
+= tanpi downward binary64 0x4p-1024 : 0xc.90fdaa22168cp-1024 : inexact-ok
+= tanpi tonearest binary64 0x4p-1024 : 0xc.90fdaa22168cp-1024 : inexact-ok
+= tanpi towardzero binary64 0x4p-1024 : 0xc.90fdaa22168cp-1024 : inexact-ok
+= tanpi upward binary64 0x4p-1024 : 0xc.90fdaa22168c8p-1024 : inexact-ok
+= tanpi downward intel96 0x4p-1024 : 0xc.90fdaa22168c234p-1024 : inexact-ok
+= tanpi tonearest intel96 0x4p-1024 : 0xc.90fdaa22168c235p-1024 : inexact-ok
+= tanpi towardzero intel96 0x4p-1024 : 0xc.90fdaa22168c234p-1024 : inexact-ok
+= tanpi upward intel96 0x4p-1024 : 0xc.90fdaa22168c235p-1024 : inexact-ok
+= tanpi downward m68k96 0x4p-1024 : 0xc.90fdaa22168c234p-1024 : inexact-ok
+= tanpi tonearest m68k96 0x4p-1024 : 0xc.90fdaa22168c235p-1024 : inexact-ok
+= tanpi towardzero m68k96 0x4p-1024 : 0xc.90fdaa22168c234p-1024 : inexact-ok
+= tanpi upward m68k96 0x4p-1024 : 0xc.90fdaa22168c235p-1024 : inexact-ok
+= tanpi downward binary128 0x4p-1024 : 0xc.90fdaa22168c234c4c6628b80dcp-1024 : inexact-ok
+= tanpi tonearest binary128 0x4p-1024 : 0xc.90fdaa22168c234c4c6628b80dcp-1024 : inexact-ok
+= tanpi towardzero binary128 0x4p-1024 : 0xc.90fdaa22168c234c4c6628b80dcp-1024 : inexact-ok
+= tanpi upward binary128 0x4p-1024 : 0xc.90fdaa22168c234c4c6628b80dc8p-1024 : inexact-ok
+= tanpi downward ibm128 0x4p-1024 : 0xc.90fdaa22168cp-1024 : inexact-ok underflow errno-erange-ok
+= tanpi tonearest ibm128 0x4p-1024 : 0xc.90fdaa22168c4p-1024 : inexact-ok underflow errno-erange-ok
+= tanpi towardzero ibm128 0x4p-1024 : 0xc.90fdaa22168cp-1024 : inexact-ok underflow errno-erange-ok
+= tanpi upward ibm128 0x4p-1024 : 0xc.90fdaa22168c4p-1024 : inexact-ok underflow errno-erange-ok
+= tanpi downward intel96 0x4p-16384 : 0xc.90fdaa22168c234p-16384 : inexact-ok
+= tanpi tonearest intel96 0x4p-16384 : 0xc.90fdaa22168c235p-16384 : inexact-ok
+= tanpi towardzero intel96 0x4p-16384 : 0xc.90fdaa22168c234p-16384 : inexact-ok
+= tanpi upward intel96 0x4p-16384 : 0xc.90fdaa22168c235p-16384 : inexact-ok
+= tanpi downward m68k96 0x4p-16384 : 0xc.90fdaa22168c234p-16384 : inexact-ok
+= tanpi tonearest m68k96 0x4p-16384 : 0xc.90fdaa22168c235p-16384 : inexact-ok
+= tanpi towardzero m68k96 0x4p-16384 : 0xc.90fdaa22168c234p-16384 : inexact-ok
+= tanpi upward m68k96 0x4p-16384 : 0xc.90fdaa22168c235p-16384 : inexact-ok
+= tanpi downward binary128 0x4p-16384 : 0xc.90fdaa22168c234c4c6628b80dcp-16384 : inexact-ok
+= tanpi tonearest binary128 0x4p-16384 : 0xc.90fdaa22168c234c4c6628b80dcp-16384 : inexact-ok
+= tanpi towardzero binary128 0x4p-16384 : 0xc.90fdaa22168c234c4c6628b80dcp-16384 : inexact-ok
+= tanpi upward binary128 0x4p-16384 : 0xc.90fdaa22168c234c4c6628b80dc8p-16384 : inexact-ok
+= tanpi downward intel96 0x2p-16384 : 0x6.487ed5110b4611ap-16384 : inexact-ok
+= tanpi tonearest intel96 0x2p-16384 : 0x6.487ed5110b4611a8p-16384 : inexact-ok
+= tanpi towardzero intel96 0x2p-16384 : 0x6.487ed5110b4611ap-16384 : inexact-ok
+= tanpi upward intel96 0x2p-16384 : 0x6.487ed5110b4611a8p-16384 : inexact-ok
+= tanpi downward m68k96 0x2p-16384 : 0x6.487ed5110b4611ap-16384 : inexact-ok
+= tanpi tonearest m68k96 0x2p-16384 : 0x6.487ed5110b4611a8p-16384 : inexact-ok
+= tanpi towardzero m68k96 0x2p-16384 : 0x6.487ed5110b4611ap-16384 : inexact-ok
+= tanpi upward m68k96 0x2p-16384 : 0x6.487ed5110b4611a8p-16384 : inexact-ok
+= tanpi downward binary128 0x2p-16384 : 0x6.487ed5110b4611a62633145c06ep-16384 : inexact-ok
+= tanpi tonearest binary128 0x2p-16384 : 0x6.487ed5110b4611a62633145c06ep-16384 : inexact-ok
+= tanpi towardzero binary128 0x2p-16384 : 0x6.487ed5110b4611a62633145c06ep-16384 : inexact-ok
+= tanpi upward binary128 0x2p-16384 : 0x6.487ed5110b4611a62633145c06e4p-16384 : inexact-ok
+= tanpi downward binary64 0x8p-972 : 0x1.921fb54442d18p-968 : inexact-ok
+= tanpi tonearest binary64 0x8p-972 : 0x1.921fb54442d18p-968 : inexact-ok
+= tanpi towardzero binary64 0x8p-972 : 0x1.921fb54442d18p-968 : inexact-ok
+= tanpi upward binary64 0x8p-972 : 0x1.921fb54442d19p-968 : inexact-ok
+= tanpi downward intel96 0x8p-972 : 0x1.921fb54442d18468p-968 : inexact-ok
+= tanpi tonearest intel96 0x8p-972 : 0x1.921fb54442d1846ap-968 : inexact-ok
+= tanpi towardzero intel96 0x8p-972 : 0x1.921fb54442d18468p-968 : inexact-ok
+= tanpi upward intel96 0x8p-972 : 0x1.921fb54442d1846ap-968 : inexact-ok
+= tanpi downward m68k96 0x8p-972 : 0x1.921fb54442d18468p-968 : inexact-ok
+= tanpi tonearest m68k96 0x8p-972 : 0x1.921fb54442d1846ap-968 : inexact-ok
+= tanpi towardzero m68k96 0x8p-972 : 0x1.921fb54442d18468p-968 : inexact-ok
+= tanpi upward m68k96 0x8p-972 : 0x1.921fb54442d1846ap-968 : inexact-ok
+= tanpi downward binary128 0x8p-972 : 0x1.921fb54442d18469898cc51701b8p-968 : inexact-ok
+= tanpi tonearest binary128 0x8p-972 : 0x1.921fb54442d18469898cc51701b8p-968 : inexact-ok
+= tanpi towardzero binary128 0x8p-972 : 0x1.921fb54442d18469898cc51701b8p-968 : inexact-ok
+= tanpi upward binary128 0x8p-972 : 0x1.921fb54442d18469898cc51701b9p-968 : inexact-ok
+= tanpi downward ibm128 0x8p-972 : 0x1.921fb54442d18469898cc517018p-968 : inexact-ok
+= tanpi tonearest ibm128 0x8p-972 : 0x1.921fb54442d18469898cc517018p-968 : inexact-ok
+= tanpi towardzero ibm128 0x8p-972 : 0x1.921fb54442d18469898cc517018p-968 : inexact-ok
+= tanpi upward ibm128 0x8p-972 : 0x1.921fb54442d18469898cc51702p-968 : inexact-ok
+tanpi -min
+= tanpi downward binary32 -0x4p-128 : -0xc.90fdbp-128 : inexact-ok
+= tanpi tonearest binary32 -0x4p-128 : -0xc.90fdbp-128 : inexact-ok
+= tanpi towardzero binary32 -0x4p-128 : -0xc.90fdap-128 : inexact-ok
+= tanpi upward binary32 -0x4p-128 : -0xc.90fdap-128 : inexact-ok
+= tanpi downward binary64 -0x4p-128 : -0xc.90fdaa22168c8p-128 : inexact-ok
+= tanpi tonearest binary64 -0x4p-128 : -0xc.90fdaa22168cp-128 : inexact-ok
+= tanpi towardzero binary64 -0x4p-128 : -0xc.90fdaa22168cp-128 : inexact-ok
+= tanpi upward binary64 -0x4p-128 : -0xc.90fdaa22168cp-128 : inexact-ok
+= tanpi downward intel96 -0x4p-128 : -0xc.90fdaa22168c235p-128 : inexact-ok
+= tanpi tonearest intel96 -0x4p-128 : -0xc.90fdaa22168c235p-128 : inexact-ok
+= tanpi towardzero intel96 -0x4p-128 : -0xc.90fdaa22168c234p-128 : inexact-ok
+= tanpi upward intel96 -0x4p-128 : -0xc.90fdaa22168c234p-128 : inexact-ok
+= tanpi downward m68k96 -0x4p-128 : -0xc.90fdaa22168c235p-128 : inexact-ok
+= tanpi tonearest m68k96 -0x4p-128 : -0xc.90fdaa22168c235p-128 : inexact-ok
+= tanpi towardzero m68k96 -0x4p-128 : -0xc.90fdaa22168c234p-128 : inexact-ok
+= tanpi upward m68k96 -0x4p-128 : -0xc.90fdaa22168c234p-128 : inexact-ok
+= tanpi downward binary128 -0x4p-128 : -0xc.90fdaa22168c234c4c6628b80dc8p-128 : inexact-ok
+= tanpi tonearest binary128 -0x4p-128 : -0xc.90fdaa22168c234c4c6628b80dcp-128 : inexact-ok
+= tanpi towardzero binary128 -0x4p-128 : -0xc.90fdaa22168c234c4c6628b80dcp-128 : inexact-ok
+= tanpi upward binary128 -0x4p-128 : -0xc.90fdaa22168c234c4c6628b80dcp-128 : inexact-ok
+= tanpi downward ibm128 -0x4p-128 : -0xc.90fdaa22168c234c4c6628b81p-128 : inexact-ok
+= tanpi tonearest ibm128 -0x4p-128 : -0xc.90fdaa22168c234c4c6628b80cp-128 : inexact-ok
+= tanpi towardzero ibm128 -0x4p-128 : -0xc.90fdaa22168c234c4c6628b80cp-128 : inexact-ok
+= tanpi upward ibm128 -0x4p-128 : -0xc.90fdaa22168c234c4c6628b80cp-128 : inexact-ok
+= tanpi downward binary64 -0x4p-1024 : -0xc.90fdaa22168c8p-1024 : inexact-ok
+= tanpi tonearest binary64 -0x4p-1024 : -0xc.90fdaa22168cp-1024 : inexact-ok
+= tanpi towardzero binary64 -0x4p-1024 : -0xc.90fdaa22168cp-1024 : inexact-ok
+= tanpi upward binary64 -0x4p-1024 : -0xc.90fdaa22168cp-1024 : inexact-ok
+= tanpi downward intel96 -0x4p-1024 : -0xc.90fdaa22168c235p-1024 : inexact-ok
+= tanpi tonearest intel96 -0x4p-1024 : -0xc.90fdaa22168c235p-1024 : inexact-ok
+= tanpi towardzero intel96 -0x4p-1024 : -0xc.90fdaa22168c234p-1024 : inexact-ok
+= tanpi upward intel96 -0x4p-1024 : -0xc.90fdaa22168c234p-1024 : inexact-ok
+= tanpi downward m68k96 -0x4p-1024 : -0xc.90fdaa22168c235p-1024 : inexact-ok
+= tanpi tonearest m68k96 -0x4p-1024 : -0xc.90fdaa22168c235p-1024 : inexact-ok
+= tanpi towardzero m68k96 -0x4p-1024 : -0xc.90fdaa22168c234p-1024 : inexact-ok
+= tanpi upward m68k96 -0x4p-1024 : -0xc.90fdaa22168c234p-1024 : inexact-ok
+= tanpi downward binary128 -0x4p-1024 : -0xc.90fdaa22168c234c4c6628b80dc8p-1024 : inexact-ok
+= tanpi tonearest binary128 -0x4p-1024 : -0xc.90fdaa22168c234c4c6628b80dcp-1024 : inexact-ok
+= tanpi towardzero binary128 -0x4p-1024 : -0xc.90fdaa22168c234c4c6628b80dcp-1024 : inexact-ok
+= tanpi upward binary128 -0x4p-1024 : -0xc.90fdaa22168c234c4c6628b80dcp-1024 : inexact-ok
+= tanpi downward ibm128 -0x4p-1024 : -0xc.90fdaa22168c4p-1024 : inexact-ok underflow errno-erange-ok
+= tanpi tonearest ibm128 -0x4p-1024 : -0xc.90fdaa22168c4p-1024 : inexact-ok underflow errno-erange-ok
+= tanpi towardzero ibm128 -0x4p-1024 : -0xc.90fdaa22168cp-1024 : inexact-ok underflow errno-erange-ok
+= tanpi upward ibm128 -0x4p-1024 : -0xc.90fdaa22168cp-1024 : inexact-ok underflow errno-erange-ok
+= tanpi downward intel96 -0x4p-16384 : -0xc.90fdaa22168c235p-16384 : inexact-ok
+= tanpi tonearest intel96 -0x4p-16384 : -0xc.90fdaa22168c235p-16384 : inexact-ok
+= tanpi towardzero intel96 -0x4p-16384 : -0xc.90fdaa22168c234p-16384 : inexact-ok
+= tanpi upward intel96 -0x4p-16384 : -0xc.90fdaa22168c234p-16384 : inexact-ok
+= tanpi downward m68k96 -0x4p-16384 : -0xc.90fdaa22168c235p-16384 : inexact-ok
+= tanpi tonearest m68k96 -0x4p-16384 : -0xc.90fdaa22168c235p-16384 : inexact-ok
+= tanpi towardzero m68k96 -0x4p-16384 : -0xc.90fdaa22168c234p-16384 : inexact-ok
+= tanpi upward m68k96 -0x4p-16384 : -0xc.90fdaa22168c234p-16384 : inexact-ok
+= tanpi downward binary128 -0x4p-16384 : -0xc.90fdaa22168c234c4c6628b80dc8p-16384 : inexact-ok
+= tanpi tonearest binary128 -0x4p-16384 : -0xc.90fdaa22168c234c4c6628b80dcp-16384 : inexact-ok
+= tanpi towardzero binary128 -0x4p-16384 : -0xc.90fdaa22168c234c4c6628b80dcp-16384 : inexact-ok
+= tanpi upward binary128 -0x4p-16384 : -0xc.90fdaa22168c234c4c6628b80dcp-16384 : inexact-ok
+= tanpi downward intel96 -0x2p-16384 : -0x6.487ed5110b4611a8p-16384 : inexact-ok
+= tanpi tonearest intel96 -0x2p-16384 : -0x6.487ed5110b4611a8p-16384 : inexact-ok
+= tanpi towardzero intel96 -0x2p-16384 : -0x6.487ed5110b4611ap-16384 : inexact-ok
+= tanpi upward intel96 -0x2p-16384 : -0x6.487ed5110b4611ap-16384 : inexact-ok
+= tanpi downward m68k96 -0x2p-16384 : -0x6.487ed5110b4611a8p-16384 : inexact-ok
+= tanpi tonearest m68k96 -0x2p-16384 : -0x6.487ed5110b4611a8p-16384 : inexact-ok
+= tanpi towardzero m68k96 -0x2p-16384 : -0x6.487ed5110b4611ap-16384 : inexact-ok
+= tanpi upward m68k96 -0x2p-16384 : -0x6.487ed5110b4611ap-16384 : inexact-ok
+= tanpi downward binary128 -0x2p-16384 : -0x6.487ed5110b4611a62633145c06e4p-16384 : inexact-ok
+= tanpi tonearest binary128 -0x2p-16384 : -0x6.487ed5110b4611a62633145c06ep-16384 : inexact-ok
+= tanpi towardzero binary128 -0x2p-16384 : -0x6.487ed5110b4611a62633145c06ep-16384 : inexact-ok
+= tanpi upward binary128 -0x2p-16384 : -0x6.487ed5110b4611a62633145c06ep-16384 : inexact-ok
+= tanpi downward binary64 -0x8p-972 : -0x1.921fb54442d19p-968 : inexact-ok
+= tanpi tonearest binary64 -0x8p-972 : -0x1.921fb54442d18p-968 : inexact-ok
+= tanpi towardzero binary64 -0x8p-972 : -0x1.921fb54442d18p-968 : inexact-ok
+= tanpi upward binary64 -0x8p-972 : -0x1.921fb54442d18p-968 : inexact-ok
+= tanpi downward intel96 -0x8p-972 : -0x1.921fb54442d1846ap-968 : inexact-ok
+= tanpi tonearest intel96 -0x8p-972 : -0x1.921fb54442d1846ap-968 : inexact-ok
+= tanpi towardzero intel96 -0x8p-972 : -0x1.921fb54442d18468p-968 : inexact-ok
+= tanpi upward intel96 -0x8p-972 : -0x1.921fb54442d18468p-968 : inexact-ok
+= tanpi downward m68k96 -0x8p-972 : -0x1.921fb54442d1846ap-968 : inexact-ok
+= tanpi tonearest m68k96 -0x8p-972 : -0x1.921fb54442d1846ap-968 : inexact-ok
+= tanpi towardzero m68k96 -0x8p-972 : -0x1.921fb54442d18468p-968 : inexact-ok
+= tanpi upward m68k96 -0x8p-972 : -0x1.921fb54442d18468p-968 : inexact-ok
+= tanpi downward binary128 -0x8p-972 : -0x1.921fb54442d18469898cc51701b9p-968 : inexact-ok
+= tanpi tonearest binary128 -0x8p-972 : -0x1.921fb54442d18469898cc51701b8p-968 : inexact-ok
+= tanpi towardzero binary128 -0x8p-972 : -0x1.921fb54442d18469898cc51701b8p-968 : inexact-ok
+= tanpi upward binary128 -0x8p-972 : -0x1.921fb54442d18469898cc51701b8p-968 : inexact-ok
+= tanpi downward ibm128 -0x8p-972 : -0x1.921fb54442d18469898cc51702p-968 : inexact-ok
+= tanpi tonearest ibm128 -0x8p-972 : -0x1.921fb54442d18469898cc517018p-968 : inexact-ok
+= tanpi towardzero ibm128 -0x8p-972 : -0x1.921fb54442d18469898cc517018p-968 : inexact-ok
+= tanpi upward ibm128 -0x8p-972 : -0x1.921fb54442d18469898cc517018p-968 : inexact-ok
+tanpi min_subnorm
+= tanpi downward binary32 0x8p-152 : 0x1.8p-148 : inexact-ok underflow errno-erange-ok
+= tanpi tonearest binary32 0x8p-152 : 0x1.8p-148 : inexact-ok underflow errno-erange-ok
+= tanpi towardzero binary32 0x8p-152 : 0x1.8p-148 : inexact-ok underflow errno-erange-ok
+= tanpi upward binary32 0x8p-152 : 0x2p-148 : inexact-ok underflow errno-erange-ok
+= tanpi downward binary64 0x8p-152 : 0x1.921fb54442d18p-148 : inexact-ok
+= tanpi tonearest binary64 0x8p-152 : 0x1.921fb54442d18p-148 : inexact-ok
+= tanpi towardzero binary64 0x8p-152 : 0x1.921fb54442d18p-148 : inexact-ok
+= tanpi upward binary64 0x8p-152 : 0x1.921fb54442d19p-148 : inexact-ok
+= tanpi downward intel96 0x8p-152 : 0x1.921fb54442d18468p-148 : inexact-ok
+= tanpi tonearest intel96 0x8p-152 : 0x1.921fb54442d1846ap-148 : inexact-ok
+= tanpi towardzero intel96 0x8p-152 : 0x1.921fb54442d18468p-148 : inexact-ok
+= tanpi upward intel96 0x8p-152 : 0x1.921fb54442d1846ap-148 : inexact-ok
+= tanpi downward m68k96 0x8p-152 : 0x1.921fb54442d18468p-148 : inexact-ok
+= tanpi tonearest m68k96 0x8p-152 : 0x1.921fb54442d1846ap-148 : inexact-ok
+= tanpi towardzero m68k96 0x8p-152 : 0x1.921fb54442d18468p-148 : inexact-ok
+= tanpi upward m68k96 0x8p-152 : 0x1.921fb54442d1846ap-148 : inexact-ok
+= tanpi downward binary128 0x8p-152 : 0x1.921fb54442d18469898cc51701b8p-148 : inexact-ok
+= tanpi tonearest binary128 0x8p-152 : 0x1.921fb54442d18469898cc51701b8p-148 : inexact-ok
+= tanpi towardzero binary128 0x8p-152 : 0x1.921fb54442d18469898cc51701b8p-148 : inexact-ok
+= tanpi upward binary128 0x8p-152 : 0x1.921fb54442d18469898cc51701b9p-148 : inexact-ok
+= tanpi downward ibm128 0x8p-152 : 0x1.921fb54442d18469898cc517018p-148 : inexact-ok
+= tanpi tonearest ibm128 0x8p-152 : 0x1.921fb54442d18469898cc517018p-148 : inexact-ok
+= tanpi towardzero ibm128 0x8p-152 : 0x1.921fb54442d18469898cc517018p-148 : inexact-ok
+= tanpi upward ibm128 0x8p-152 : 0x1.921fb54442d18469898cc51702p-148 : inexact-ok
+= tanpi downward binary64 0x4p-1076 : 0xcp-1076 : inexact-ok underflow errno-erange-ok
+= tanpi tonearest binary64 0x4p-1076 : 0xcp-1076 : inexact-ok underflow errno-erange-ok
+= tanpi towardzero binary64 0x4p-1076 : 0xcp-1076 : inexact-ok underflow errno-erange-ok
+= tanpi upward binary64 0x4p-1076 : 0x1p-1072 : inexact-ok underflow errno-erange-ok
+= tanpi downward intel96 0x4p-1076 : 0xc.90fdaa22168c234p-1076 : inexact-ok
+= tanpi tonearest intel96 0x4p-1076 : 0xc.90fdaa22168c235p-1076 : inexact-ok
+= tanpi towardzero intel96 0x4p-1076 : 0xc.90fdaa22168c234p-1076 : inexact-ok
+= tanpi upward intel96 0x4p-1076 : 0xc.90fdaa22168c235p-1076 : inexact-ok
+= tanpi downward