aboutsummaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
authorJoseph Myers <josmyers@redhat.com>2024-12-11 21:51:49 +0000
committerJoseph Myers <josmyers@redhat.com>2024-12-11 21:51:49 +0000
commitffe79c446ced76d7c1a77804ff2cc32eccbc7c7e (patch)
treefa436fea1f0eebeb843ae0c16df84f120f859eb3 /math
parentaec85b2557cdb2cc1fc726a50c33848826f00f4d (diff)
downloadglibc-ffe79c446ced76d7c1a77804ff2cc32eccbc7c7e.tar.xz
glibc-ffe79c446ced76d7c1a77804ff2cc32eccbc7c7e.zip
Implement C23 atanpi
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the atanpi functions (atan(x)/pi). 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-in40
-rw-r--r--math/auto-libm-test-out-atanpi1379
-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-atanpi.inc49
-rw-r--r--math/s_atanpi_template.c39
-rw-r--r--math/test-tgmath.c12
-rw-r--r--math/tgmath.h2
11 files changed, 1532 insertions, 1 deletions
diff --git a/math/Makefile b/math/Makefile
index 87ff79b269..6f0d2108b2 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -95,6 +95,7 @@ gen-libm-calls = \
k_casinhF \
s_acospiF \
s_asinpiF \
+ s_atanpiF \
s_cacosF \
s_cacoshF \
s_canonicalizeF \
@@ -626,6 +627,7 @@ libm-test-funcs-auto = \
atan \
atan2 \
atanh \
+ atanpi \
cabs \
cacos \
cacosh \
@@ -936,6 +938,7 @@ tgmath3-macros = \
atan \
atan2 \
atanh \
+ atanpi \
carg \
cbrt \
ceil \
@@ -1320,6 +1323,7 @@ CFLAGS-s_asinpi.c += -fno-builtin-asinpil
CFLAGS-s_atan.c += -fno-builtin-atanl
CFLAGS-w_atan2.c += -fno-builtin-atan2l
CFLAGS-w_atanh.c += -fno-builtin-atanhl
+CFLAGS-s_atanpi.c += -fno-builtin-atanpil
CFLAGS-s_cabs.c += -fno-builtin-cabsl
CFLAGS-s_cacos.c += -fno-builtin-cacosl
CFLAGS-s_cacosh.c += -fno-builtin-cacoshl
@@ -1463,6 +1467,7 @@ CFLAGS-s_asinpi.c += -fno-builtin-asinpif32x -fno-builtin-asinpif64
CFLAGS-s_atan.c += -fno-builtin-atanf32x -fno-builtin-atanf64
CFLAGS-w_atan2.c += -fno-builtin-atan2f32x -fno-builtin-atan2f64
CFLAGS-w_atanh.c += -fno-builtin-atanhf32x -fno-builtin-atanhf64
+CFLAGS-s_atanpi.c += -fno-builtin-atanpif32x -fno-builtin-atanpif64
CFLAGS-s_cabs.c += -fno-builtin-cabsf32x -fno-builtin-cabsf64
CFLAGS-s_cacos.c += -fno-builtin-cacosf32x -fno-builtin-cacosf64
CFLAGS-s_cacosh.c += -fno-builtin-cacoshf32x -fno-builtin-cacoshf64
@@ -1592,6 +1597,7 @@ CFLAGS-s_asinpif.c += -fno-builtin-asinpif32
CFLAGS-s_atanf.c += -fno-builtin-atanf32
CFLAGS-w_atan2f.c += -fno-builtin-atan2f32
CFLAGS-w_atanhf.c += -fno-builtin-atanhf32
+CFLAGS-s_atanpif.c += -fno-builtin-atanpif32
CFLAGS-s_cabsf.c += -fno-builtin-cabsf32
CFLAGS-s_cacosf.c += -fno-builtin-cacosf32
CFLAGS-s_cacoshf.c += -fno-builtin-cacoshf32
diff --git a/math/Versions b/math/Versions
index a7b79b0d6c..3abf90da82 100644
--- a/math/Versions
+++ b/math/Versions
@@ -657,12 +657,14 @@ libm {
# Functions not involving _Float64x or _Float128, for all configurations.
acospi; acospif; acospil; acospif32; acospif64; acospif32x;
asinpi; asinpif; asinpil; asinpif32; asinpif64; asinpif32x;
+ atanpi; atanpif; atanpil; atanpif32; atanpif64; atanpif32x;
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.
acospif64x; acospif128;
asinpif64x; asinpif128;
+ atanpif64x; atanpif128;
cospif64x; cospif128;
sinpif64x; sinpif128;
tanpif64x; tanpif128;
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 809df5ce09..ebea756d50 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -748,6 +748,46 @@ atanh -min
atanh min_subnorm
atanh -min_subnorm
+atanpi 0
+atanpi -0
+atanpi max
+atanpi -max
+atanpi 1
+atanpi -1
+atanpi 0.75
+atanpi 0x1p-5
+atanpi 0x1p-10
+atanpi 0x1p-15
+atanpi 0x1p-20
+atanpi 0x1p-25
+atanpi 0x1p-30
+atanpi 0x1p-35
+atanpi 0x1p-40
+atanpi 0x1p-45
+atanpi 0x1p-50
+atanpi 0x1p-55
+atanpi 0x1p-60
+atanpi 2.5
+atanpi 10
+atanpi 1e6
+atanpi 0x1p31
+atanpi 0x1p-100
+atanpi 0x1p-600
+atanpi 0x1p-10000
+atanpi -0x3.b02d84p-4
+atanpi -0x3.3fb708p-4
+atanpi -0x2.3249ap+0
+atanpi -0x1.363f46p+0
+atanpi -0x1.ad4c0ap+0
+atanpi -0x3.eb8e18p+0
+atanpi 0x3.53c188p+0
+atanpi -0x1.58c83p+0
+atanpi 0x1.626772p-1
+atanpi min
+atanpi -min
+atanpi min_subnorm
+atanpi -min_subnorm
+
# cabs (x,y) == cabs (y,x).
cabs 0.75 12.390625
# cabs (x,y) == cabs (-x,y).
diff --git a/math/auto-libm-test-out-atanpi b/math/auto-libm-test-out-atanpi
new file mode 100644
index 0000000000..b6e8abdd09
--- /dev/null
+++ b/math/auto-libm-test-out-atanpi
@@ -0,0 +1,1379 @@
+atanpi 0
+= atanpi downward binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi tonearest binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi towardzero binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi upward binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi downward binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi tonearest binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi towardzero binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi upward binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi downward intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi tonearest intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi towardzero intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi upward intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi downward m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi tonearest m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi towardzero m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi upward m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi downward binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi tonearest binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi towardzero binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi upward binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi downward ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi tonearest ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi towardzero ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= atanpi upward ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+atanpi -0
+= atanpi downward binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi tonearest binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi towardzero binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi upward binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi downward binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi tonearest binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi towardzero binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi upward binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi downward intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi tonearest intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi towardzero intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi upward intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi downward m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi tonearest m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi towardzero m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi upward m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi downward binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi tonearest binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi towardzero binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi upward binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi downward ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi tonearest ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi towardzero ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= atanpi upward ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+atanpi max
+= atanpi downward binary32 0xf.fffffp+124 : 0x7.fffff8p-4 : inexact-ok
+= atanpi tonearest binary32 0xf.fffffp+124 : 0x8p-4 : inexact-ok
+= atanpi towardzero binary32 0xf.fffffp+124 : 0x7.fffff8p-4 : inexact-ok
+= atanpi upward binary32 0xf.fffffp+124 : 0x8p-4 : inexact-ok
+= atanpi downward binary64 0xf.fffffp+124 : 0x7.ffffffffffffcp-4 : inexact-ok
+= atanpi tonearest binary64 0xf.fffffp+124 : 0x8p-4 : inexact-ok
+= atanpi towardzero binary64 0xf.fffffp+124 : 0x7.ffffffffffffcp-4 : inexact-ok
+= atanpi upward binary64 0xf.fffffp+124 : 0x8p-4 : inexact-ok
+= atanpi downward intel96 0xf.fffffp+124 : 0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi tonearest intel96 0xf.fffffp+124 : 0x8p-4 : inexact-ok
+= atanpi towardzero intel96 0xf.fffffp+124 : 0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi upward intel96 0xf.fffffp+124 : 0x8p-4 : inexact-ok
+= atanpi downward m68k96 0xf.fffffp+124 : 0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi tonearest m68k96 0xf.fffffp+124 : 0x8p-4 : inexact-ok
+= atanpi towardzero m68k96 0xf.fffffp+124 : 0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi upward m68k96 0xf.fffffp+124 : 0x8p-4 : inexact-ok
+= atanpi downward binary128 0xf.fffffp+124 : 0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi tonearest binary128 0xf.fffffp+124 : 0x8p-4 : inexact-ok
+= atanpi towardzero binary128 0xf.fffffp+124 : 0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi upward binary128 0xf.fffffp+124 : 0x8p-4 : inexact-ok
+= atanpi downward ibm128 0xf.fffffp+124 : 0x7.fffffffffffffffffffffffffep-4 : inexact-ok
+= atanpi tonearest ibm128 0xf.fffffp+124 : 0x8p-4 : inexact-ok
+= atanpi towardzero ibm128 0xf.fffffp+124 : 0x7.fffffffffffffffffffffffffep-4 : inexact-ok
+= atanpi upward ibm128 0xf.fffffp+124 : 0x8p-4 : inexact-ok
+= atanpi downward binary64 0xf.ffffffffffff8p+1020 : 0x7.ffffffffffffcp-4 : inexact-ok
+= atanpi tonearest binary64 0xf.ffffffffffff8p+1020 : 0x8p-4 : inexact-ok
+= atanpi towardzero binary64 0xf.ffffffffffff8p+1020 : 0x7.ffffffffffffcp-4 : inexact-ok
+= atanpi upward binary64 0xf.ffffffffffff8p+1020 : 0x8p-4 : inexact-ok
+= atanpi downward intel96 0xf.ffffffffffff8p+1020 : 0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi tonearest intel96 0xf.ffffffffffff8p+1020 : 0x8p-4 : inexact-ok
+= atanpi towardzero intel96 0xf.ffffffffffff8p+1020 : 0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi upward intel96 0xf.ffffffffffff8p+1020 : 0x8p-4 : inexact-ok
+= atanpi downward m68k96 0xf.ffffffffffff8p+1020 : 0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi tonearest m68k96 0xf.ffffffffffff8p+1020 : 0x8p-4 : inexact-ok
+= atanpi towardzero m68k96 0xf.ffffffffffff8p+1020 : 0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi upward m68k96 0xf.ffffffffffff8p+1020 : 0x8p-4 : inexact-ok
+= atanpi downward binary128 0xf.ffffffffffff8p+1020 : 0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi tonearest binary128 0xf.ffffffffffff8p+1020 : 0x8p-4 : inexact-ok
+= atanpi towardzero binary128 0xf.ffffffffffff8p+1020 : 0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi upward binary128 0xf.ffffffffffff8p+1020 : 0x8p-4 : inexact-ok
+= atanpi downward ibm128 0xf.ffffffffffff8p+1020 : 0x7.fffffffffffffffffffffffffep-4 : inexact-ok
+= atanpi tonearest ibm128 0xf.ffffffffffff8p+1020 : 0x8p-4 : inexact-ok
+= atanpi towardzero ibm128 0xf.ffffffffffff8p+1020 : 0x7.fffffffffffffffffffffffffep-4 : inexact-ok
+= atanpi upward ibm128 0xf.ffffffffffff8p+1020 : 0x8p-4 : inexact-ok
+= atanpi downward intel96 0xf.fffffffffffffffp+16380 : 0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi tonearest intel96 0xf.fffffffffffffffp+16380 : 0x8p-4 : inexact-ok
+= atanpi towardzero intel96 0xf.fffffffffffffffp+16380 : 0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi upward intel96 0xf.fffffffffffffffp+16380 : 0x8p-4 : inexact-ok
+= atanpi downward m68k96 0xf.fffffffffffffffp+16380 : 0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi tonearest m68k96 0xf.fffffffffffffffp+16380 : 0x8p-4 : inexact-ok
+= atanpi towardzero m68k96 0xf.fffffffffffffffp+16380 : 0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi upward m68k96 0xf.fffffffffffffffp+16380 : 0x8p-4 : inexact-ok
+= atanpi downward binary128 0xf.fffffffffffffffp+16380 : 0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi tonearest binary128 0xf.fffffffffffffffp+16380 : 0x8p-4 : inexact-ok
+= atanpi towardzero binary128 0xf.fffffffffffffffp+16380 : 0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi upward binary128 0xf.fffffffffffffffp+16380 : 0x8p-4 : inexact-ok
+= atanpi downward binary128 0xf.fffffffffffffffffffffffffff8p+16380 : 0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi tonearest binary128 0xf.fffffffffffffffffffffffffff8p+16380 : 0x8p-4 : inexact-ok
+= atanpi towardzero binary128 0xf.fffffffffffffffffffffffffff8p+16380 : 0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi upward binary128 0xf.fffffffffffffffffffffffffff8p+16380 : 0x8p-4 : inexact-ok
+= atanpi downward binary128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi tonearest binary128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x8p-4 : inexact-ok
+= atanpi towardzero binary128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi upward binary128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x8p-4 : inexact-ok
+= atanpi downward ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x7.fffffffffffffffffffffffffep-4 : inexact-ok
+= atanpi tonearest ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x8p-4 : inexact-ok
+= atanpi towardzero ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x7.fffffffffffffffffffffffffep-4 : inexact-ok
+= atanpi upward ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x8p-4 : inexact-ok
+atanpi -max
+= atanpi downward binary32 -0xf.fffffp+124 : -0x8p-4 : inexact-ok
+= atanpi tonearest binary32 -0xf.fffffp+124 : -0x8p-4 : inexact-ok
+= atanpi towardzero binary32 -0xf.fffffp+124 : -0x7.fffff8p-4 : inexact-ok
+= atanpi upward binary32 -0xf.fffffp+124 : -0x7.fffff8p-4 : inexact-ok
+= atanpi downward binary64 -0xf.fffffp+124 : -0x8p-4 : inexact-ok
+= atanpi tonearest binary64 -0xf.fffffp+124 : -0x8p-4 : inexact-ok
+= atanpi towardzero binary64 -0xf.fffffp+124 : -0x7.ffffffffffffcp-4 : inexact-ok
+= atanpi upward binary64 -0xf.fffffp+124 : -0x7.ffffffffffffcp-4 : inexact-ok
+= atanpi downward intel96 -0xf.fffffp+124 : -0x8p-4 : inexact-ok
+= atanpi tonearest intel96 -0xf.fffffp+124 : -0x8p-4 : inexact-ok
+= atanpi towardzero intel96 -0xf.fffffp+124 : -0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi upward intel96 -0xf.fffffp+124 : -0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi downward m68k96 -0xf.fffffp+124 : -0x8p-4 : inexact-ok
+= atanpi tonearest m68k96 -0xf.fffffp+124 : -0x8p-4 : inexact-ok
+= atanpi towardzero m68k96 -0xf.fffffp+124 : -0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi upward m68k96 -0xf.fffffp+124 : -0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi downward binary128 -0xf.fffffp+124 : -0x8p-4 : inexact-ok
+= atanpi tonearest binary128 -0xf.fffffp+124 : -0x8p-4 : inexact-ok
+= atanpi towardzero binary128 -0xf.fffffp+124 : -0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi upward binary128 -0xf.fffffp+124 : -0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi downward ibm128 -0xf.fffffp+124 : -0x8p-4 : inexact-ok
+= atanpi tonearest ibm128 -0xf.fffffp+124 : -0x8p-4 : inexact-ok
+= atanpi towardzero ibm128 -0xf.fffffp+124 : -0x7.fffffffffffffffffffffffffep-4 : inexact-ok
+= atanpi upward ibm128 -0xf.fffffp+124 : -0x7.fffffffffffffffffffffffffep-4 : inexact-ok
+= atanpi downward binary64 -0xf.ffffffffffff8p+1020 : -0x8p-4 : inexact-ok
+= atanpi tonearest binary64 -0xf.ffffffffffff8p+1020 : -0x8p-4 : inexact-ok
+= atanpi towardzero binary64 -0xf.ffffffffffff8p+1020 : -0x7.ffffffffffffcp-4 : inexact-ok
+= atanpi upward binary64 -0xf.ffffffffffff8p+1020 : -0x7.ffffffffffffcp-4 : inexact-ok
+= atanpi downward intel96 -0xf.ffffffffffff8p+1020 : -0x8p-4 : inexact-ok
+= atanpi tonearest intel96 -0xf.ffffffffffff8p+1020 : -0x8p-4 : inexact-ok
+= atanpi towardzero intel96 -0xf.ffffffffffff8p+1020 : -0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi upward intel96 -0xf.ffffffffffff8p+1020 : -0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi downward m68k96 -0xf.ffffffffffff8p+1020 : -0x8p-4 : inexact-ok
+= atanpi tonearest m68k96 -0xf.ffffffffffff8p+1020 : -0x8p-4 : inexact-ok
+= atanpi towardzero m68k96 -0xf.ffffffffffff8p+1020 : -0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi upward m68k96 -0xf.ffffffffffff8p+1020 : -0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi downward binary128 -0xf.ffffffffffff8p+1020 : -0x8p-4 : inexact-ok
+= atanpi tonearest binary128 -0xf.ffffffffffff8p+1020 : -0x8p-4 : inexact-ok
+= atanpi towardzero binary128 -0xf.ffffffffffff8p+1020 : -0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi upward binary128 -0xf.ffffffffffff8p+1020 : -0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi downward ibm128 -0xf.ffffffffffff8p+1020 : -0x8p-4 : inexact-ok
+= atanpi tonearest ibm128 -0xf.ffffffffffff8p+1020 : -0x8p-4 : inexact-ok
+= atanpi towardzero ibm128 -0xf.ffffffffffff8p+1020 : -0x7.fffffffffffffffffffffffffep-4 : inexact-ok
+= atanpi upward ibm128 -0xf.ffffffffffff8p+1020 : -0x7.fffffffffffffffffffffffffep-4 : inexact-ok
+= atanpi downward intel96 -0xf.fffffffffffffffp+16380 : -0x8p-4 : inexact-ok
+= atanpi tonearest intel96 -0xf.fffffffffffffffp+16380 : -0x8p-4 : inexact-ok
+= atanpi towardzero intel96 -0xf.fffffffffffffffp+16380 : -0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi upward intel96 -0xf.fffffffffffffffp+16380 : -0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi downward m68k96 -0xf.fffffffffffffffp+16380 : -0x8p-4 : inexact-ok
+= atanpi tonearest m68k96 -0xf.fffffffffffffffp+16380 : -0x8p-4 : inexact-ok
+= atanpi towardzero m68k96 -0xf.fffffffffffffffp+16380 : -0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi upward m68k96 -0xf.fffffffffffffffp+16380 : -0x7.fffffffffffffff8p-4 : inexact-ok
+= atanpi downward binary128 -0xf.fffffffffffffffp+16380 : -0x8p-4 : inexact-ok
+= atanpi tonearest binary128 -0xf.fffffffffffffffp+16380 : -0x8p-4 : inexact-ok
+= atanpi towardzero binary128 -0xf.fffffffffffffffp+16380 : -0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi upward binary128 -0xf.fffffffffffffffp+16380 : -0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi downward binary128 -0xf.fffffffffffffffffffffffffff8p+16380 : -0x8p-4 : inexact-ok
+= atanpi tonearest binary128 -0xf.fffffffffffffffffffffffffff8p+16380 : -0x8p-4 : inexact-ok
+= atanpi towardzero binary128 -0xf.fffffffffffffffffffffffffff8p+16380 : -0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi upward binary128 -0xf.fffffffffffffffffffffffffff8p+16380 : -0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi downward binary128 -0xf.ffffffffffffbffffffffffffcp+1020 : -0x8p-4 : inexact-ok
+= atanpi tonearest binary128 -0xf.ffffffffffffbffffffffffffcp+1020 : -0x8p-4 : inexact-ok
+= atanpi towardzero binary128 -0xf.ffffffffffffbffffffffffffcp+1020 : -0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi upward binary128 -0xf.ffffffffffffbffffffffffffcp+1020 : -0x7.fffffffffffffffffffffffffffcp-4 : inexact-ok
+= atanpi downward ibm128 -0xf.ffffffffffffbffffffffffffcp+1020 : -0x8p-4 : inexact-ok
+= atanpi tonearest ibm128 -0xf.ffffffffffffbffffffffffffcp+1020 : -0x8p-4 : inexact-ok
+= atanpi towardzero ibm128 -0xf.ffffffffffffbffffffffffffcp+1020 : -0x7.fffffffffffffffffffffffffep-4 : inexact-ok
+= atanpi upward ibm128 -0xf.ffffffffffffbffffffffffffcp+1020 : -0x7.fffffffffffffffffffffffffep-4 : inexact-ok
+atanpi 1
+= atanpi downward binary32 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi tonearest binary32 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi towardzero binary32 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi upward binary32 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi downward binary64 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi tonearest binary64 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi towardzero binary64 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi upward binary64 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi downward intel96 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi tonearest intel96 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi towardzero intel96 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi upward intel96 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi downward m68k96 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi tonearest m68k96 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi towardzero m68k96 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi upward m68k96 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi downward binary128 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi tonearest binary128 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi towardzero binary128 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi upward binary128 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi downward ibm128 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi tonearest ibm128 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi towardzero ibm128 0x1p+0 : 0x4p-4 : inexact-ok
+= atanpi upward ibm128 0x1p+0 : 0x4p-4 : inexact-ok
+atanpi -1
+= atanpi downward binary32 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi tonearest binary32 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi towardzero binary32 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi upward binary32 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi downward binary64 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi tonearest binary64 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi towardzero binary64 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi upward binary64 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi downward intel96 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi tonearest intel96 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi towardzero intel96 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi upward intel96 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi downward m68k96 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi tonearest m68k96 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi towardzero m68k96 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi upward m68k96 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi downward binary128 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi tonearest binary128 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi towardzero binary128 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi upward binary128 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi downward ibm128 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi tonearest ibm128 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi towardzero ibm128 -0x1p+0 : -0x4p-4 : inexact-ok
+= atanpi upward ibm128 -0x1p+0 : -0x4p-4 : inexact-ok
+atanpi 0.75
+= atanpi downward binary32 0xcp-4 : 0x3.46feb8p-4 : inexact-ok
+= atanpi tonearest binary32 0xcp-4 : 0x3.46feb8p-4 : inexact-ok
+= atanpi towardzero binary32 0xcp-4 : 0x3.46feb8p-4 : inexact-ok
+= atanpi upward binary32 0xcp-4 : 0x3.46febcp-4 : inexact-ok
+= atanpi downward binary64 0xcp-4 : 0x3.46feb898833dep-4 : inexact-ok
+= atanpi tonearest binary64 0xcp-4 : 0x3.46feb898833dep-4 : inexact-ok
+= atanpi towardzero binary64 0xcp-4 : 0x3.46feb898833dep-4 : inexact-ok
+= atanpi upward binary64 0xcp-4 : 0x3.46feb898833ep-4 : inexact-ok
+= atanpi downward intel96 0xcp-4 : 0x3.46feb898833de668p-4 : inexact-ok
+= atanpi tonearest intel96 0xcp-4 : 0x3.46feb898833de66cp-4 : inexact-ok
+= atanpi towardzero intel96 0xcp-4 : 0x3.46feb898833de668p-4 : inexact-ok
+= atanpi upward intel96 0xcp-4 : 0x3.46feb898833de66cp-4 : inexact-ok
+= atanpi downward m68k96 0xcp-4 : 0x3.46feb898833de668p-4 : inexact-ok
+= atanpi tonearest m68k96 0xcp-4 : 0x3.46feb898833de66cp-4 : inexact-ok
+= atanpi towardzero m68k96 0xcp-4 : 0x3.46feb898833de668p-4 : inexact-ok
+= atanpi upward m68k96 0xcp-4 : 0x3.46feb898833de66cp-4 : inexact-ok
+= atanpi downward binary128 0xcp-4 : 0x3.46feb898833de66a5dc249472b9ap-4 : inexact-ok
+= atanpi tonearest binary128 0xcp-4 : 0x3.46feb898833de66a5dc249472b9ap-4 : inexact-ok
+= atanpi towardzero binary128 0xcp-4 : 0x3.46feb898833de66a5dc249472b9ap-4 : inexact-ok
+= atanpi upward binary128 0xcp-4 : 0x3.46feb898833de66a5dc249472b9cp-4 : inexact-ok
+= atanpi downward ibm128 0xcp-4 : 0x3.46feb898833de66a5dc249472bp-4 : inexact-ok
+= atanpi tonearest ibm128 0xcp-4 : 0x3.46feb898833de66a5dc249472cp-4 : inexact-ok
+= atanpi towardzero ibm128 0xcp-4 : 0x3.46feb898833de66a5dc249472bp-4 : inexact-ok
+= atanpi upward ibm128 0xcp-4 : 0x3.46feb898833de66a5dc249472cp-4 : inexact-ok
+atanpi 0x1p-5
+= atanpi downward binary32 0x8p-8 : 0x2.8bafcp-8 : inexact-ok
+= atanpi tonearest binary32 0x8p-8 : 0x2.8bafc4p-8 : inexact-ok
+= atanpi towardzero binary32 0x8p-8 : 0x2.8bafcp-8 : inexact-ok
+= atanpi upward binary32 0x8p-8 : 0x2.8bafc4p-8 : inexact-ok
+= atanpi downward binary64 0x8p-8 : 0x2.8bafc2b208c4ep-8 : inexact-ok
+= atanpi tonearest binary64 0x8p-8 : 0x2.8bafc2b208c5p-8 : inexact-ok
+= atanpi towardzero binary64 0x8p-8 : 0x2.8bafc2b208c4ep-8 : inexact-ok
+= atanpi upward binary64 0x8p-8 : 0x2.8bafc2b208c5p-8 : inexact-ok
+= atanpi downward intel96 0x8p-8 : 0x2.8bafc2b208c4f0acp-8 : inexact-ok
+= atanpi tonearest intel96 0x8p-8 : 0x2.8bafc2b208c4f0acp-8 : inexact-ok
+= atanpi towardzero intel96 0x8p-8 : 0x2.8bafc2b208c4f0acp-8 : inexact-ok
+= atanpi upward intel96 0x8p-8 : 0x2.8bafc2b208c4f0bp-8 : inexact-ok
+= atanpi downward m68k96 0x8p-8 : 0x2.8bafc2b208c4f0acp-8 : inexact-ok
+= atanpi tonearest m68k96 0x8p-8 : 0x2.8bafc2b208c4f0acp-8 : inexact-ok
+= atanpi towardzero m68k96 0x8p-8 : 0x2.8bafc2b208c4f0acp-8 : inexact-ok
+= atanpi upward m68k96 0x8p-8 : 0x2.8bafc2b208c4f0bp-8 : inexact-ok
+= atanpi downward binary128 0x8p-8 : 0x2.8bafc2b208c4f0ad3929bd05b5eep-8 : inexact-ok
+= atanpi tonearest binary128 0x8p-8 : 0x2.8bafc2b208c4f0ad3929bd05b5eep-8 : inexact-ok
+= atanpi towardzero binary128 0x8p-8 : 0x2.8bafc2b208c4f0ad3929bd05b5eep-8 : inexact-ok
+= atanpi upward binary128 0x8p-8 : 0x2.8bafc2b208c4f0ad3929bd05b5fp-8 : inexact-ok
+= atanpi downward ibm128 0x8p-8 : 0x2.8bafc2b208c4f0ad3929bd05b5p-8 : inexact-ok
+= atanpi tonearest ibm128 0x8p-8 : 0x2.8bafc2b208c4f0ad3929bd05b6p-8 : inexact-ok
+= atanpi towardzero ibm128 0x8p-8 : 0x2.8bafc2b208c4f0ad3929bd05b5p-8 : inexact-ok
+= atanpi upward ibm128 0x8p-8 : 0x2.8bafc2b208c4f0ad3929bd05b6p-8 : inexact-ok
+atanpi 0x1p-10
+= atanpi downward binary32 0x4p-12 : 0x1.45f3p-12 : inexact-ok
+= atanpi tonearest binary32 0x4p-12 : 0x1.45f3p-12 : inexact-ok
+= atanpi towardzero binary32 0x4p-12 : 0x1.45f3p-12 : inexact-ok
+= atanpi upward binary32 0x4p-12 : 0x1.45f302p-12 : inexact-ok
+= atanpi downward binary64 0x4p-12 : 0x1.45f30012374f6p-12 : inexact-ok
+= atanpi tonearest binary64 0x4p-12 : 0x1.45f30012374f7p-12 : inexact-ok
+= atanpi towardzero binary64 0x4p-12 : 0x1.45f30012374f6p-12 : inexact-ok
+= atanpi upward binary64 0x4p-12 : 0x1.45f30012374f7p-12 : inexact-ok
+= atanpi downward intel96 0x4p-12 : 0x1.45f30012374f6cfep-12 : inexact-ok
+= atanpi tone