diff options
| author | Joseph Myers <josmyers@redhat.com> | 2024-12-12 20:57:44 +0000 |
|---|---|---|
| committer | Joseph Myers <josmyers@redhat.com> | 2024-12-12 20:57:44 +0000 |
| commit | 3374de90386f1814cec58567248d43a4632b16f0 (patch) | |
| tree | 5217374d884b2809abf39ef8270cf7e7057c7fa5 /math | |
| parent | 3ac826b0200e6972de81fe0469c1f8868c0e52ce (diff) | |
| download | glibc-3374de90386f1814cec58567248d43a4632b16f0.tar.xz glibc-3374de90386f1814cec58567248d43a4632b16f0.zip | |
Implement C23 atan2pi
C23 adds various <math.h> function families originally defined in TS
18661-4. Add the atan2pi functions (atan2(y,x)/pi).
Tested for x86_64 and x86, and with build-many-glibcs.py.
Diffstat (limited to 'math')
| -rw-r--r-- | math/Makefile | 6 | ||||
| -rw-r--r-- | math/Versions | 2 | ||||
| -rw-r--r-- | math/auto-libm-test-in | 86 | ||||
| -rw-r--r-- | math/auto-libm-test-out-atan2pi | 14205 | ||||
| -rw-r--r-- | math/bits/mathcalls.h | 2 | ||||
| -rw-r--r-- | math/gen-auto-libm-tests.c | 1 | ||||
| -rwxr-xr-x | math/gen-tgmath-tests.py | 1 | ||||
| -rw-r--r-- | math/libm-test-atan2pi.inc | 211 | ||||
| -rw-r--r-- | math/s_atan2pi_template.c | 41 | ||||
| -rw-r--r-- | math/test-tgmath.c | 12 | ||||
| -rw-r--r-- | math/tgmath.h | 2 |
11 files changed, 14568 insertions, 1 deletions
diff --git a/math/Makefile b/math/Makefile index 56cb5d1eed..36fe5c2bd4 100644 --- a/math/Makefile +++ b/math/Makefile @@ -96,6 +96,7 @@ gen-libm-calls = \ k_casinhF \ s_acospiF \ s_asinpiF \ + s_atan2piF \ s_atanpiF \ s_cacosF \ s_cacoshF \ @@ -627,6 +628,7 @@ libm-test-funcs-auto = \ asinpi \ atan \ atan2 \ + atan2pi \ atanh \ atanpi \ cabs \ @@ -938,6 +940,7 @@ tgmath3-macros = \ asinpi \ atan \ atan2 \ + atan2pi \ atanh \ atanpi \ carg \ @@ -1323,6 +1326,7 @@ CFLAGS-s_asinh.c += -fno-builtin-asinhl CFLAGS-s_asinpi.c += -fno-builtin-asinpil CFLAGS-s_atan.c += -fno-builtin-atanl CFLAGS-w_atan2.c += -fno-builtin-atan2l +CFLAGS-s_atan2pi.c += -fno-builtin-atan2pil CFLAGS-w_atanh.c += -fno-builtin-atanhl CFLAGS-s_atanpi.c += -fno-builtin-atanpil CFLAGS-s_cabs.c += -fno-builtin-cabsl @@ -1467,6 +1471,7 @@ CFLAGS-s_asinh.c += -fno-builtin-asinhf32x -fno-builtin-asinhf64 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-s_atan2pi.c += -fno-builtin-atan2pif32x -fno-builtin-atan2pif64 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 @@ -1597,6 +1602,7 @@ CFLAGS-s_asinhf.c += -fno-builtin-asinhf32 CFLAGS-s_asinpif.c += -fno-builtin-asinpif32 CFLAGS-s_atanf.c += -fno-builtin-atanf32 CFLAGS-w_atan2f.c += -fno-builtin-atan2f32 +CFLAGS-s_atan2pif.c += -fno-builtin-atan2pif32 CFLAGS-w_atanhf.c += -fno-builtin-atanhf32 CFLAGS-s_atanpif.c += -fno-builtin-atanpif32 CFLAGS-s_cabsf.c += -fno-builtin-cabsf32 diff --git a/math/Versions b/math/Versions index 3abf90da82..e4fbef3f6d 100644 --- a/math/Versions +++ b/math/Versions @@ -657,6 +657,7 @@ libm { # Functions not involving _Float64x or _Float128, for all configurations. acospi; acospif; acospil; acospif32; acospif64; acospif32x; asinpi; asinpif; asinpil; asinpif32; asinpif64; asinpif32x; + atan2pi; atan2pif; atan2pil; atan2pif32; atan2pif64; atan2pif32x; atanpi; atanpif; atanpil; atanpif32; atanpif64; atanpif32x; cospi; cospif; cospil; cospif32; cospif64; cospif32x; sinpi; sinpif; sinpil; sinpif32; sinpif64; sinpif32x; @@ -664,6 +665,7 @@ libm { # Functions involving _Float64x or _Float128, for some configurations. acospif64x; acospif128; asinpif64x; asinpif128; + atan2pif64x; atan2pif128; atanpif64x; atanpif128; cospif64x; cospif128; sinpif64x; sinpif128; diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in index ebea756d50..0b7f0d3251 100644 --- a/math/auto-libm-test-in +++ b/math/auto-libm-test-in @@ -656,6 +656,92 @@ atan2 -min -1 atan2 min_subnorm -1 atan2 -min_subnorm -1 +atan2pi 0 1 +atan2pi -0 1 +atan2pi 0 0 +atan2pi -0 0 +atan2pi 0 -1 +atan2pi -0 -1 +atan2pi 0 -0 +atan2pi -0 -0 +atan2pi 1 0 +atan2pi 1 -0 +atan2pi -1 0 +atan2pi -1 -0 +atan2pi max max +atan2pi max -max +atan2pi -max max +atan2pi -max -max +atan2pi max min +atan2pi -max -min +atan2pi -max min +atan2pi max -min +atan2pi max min_subnorm +atan2pi -max -min_subnorm +atan2pi -max min_subnorm +atan2pi max -min_subnorm +atan2pi 0.75 1 +atan2pi -0.75 1.0 +atan2pi 0.75 -1.0 +atan2pi -0.75 -1.0 +atan2pi 0.390625 .00029 +atan2pi 1.390625 0.9296875 +atan2pi -0.00756827042671106339 -.001792735857538728036 +atan2pi 0x1.00000000000001p0 0x1.00000000000001p0 +atan2pi 0x4.c3841p-4 0x2.f2f308p+0 +atan2pi -0xe.cf143p-40 0xd.3de7ap-36 +atan2pi 0x5.576cf8p-4 0x2.21e65p+0 +atan2pi -0x4.29411p-4 0x1.f4755cp+0 +atan2pi -0xa.b4101p+20 -0xf.9c4c8p-4 +atan2pi 0x4.251bb8p-4 0x7.40ac68p+0 +atan2pi 0x1.47239ep+68 0xa.3ac3cp+68 +atan2pi -0x6.b0794p-4 0x3.8ff10cp+0 +atan2pi -0x7.15e7af0a1780cp-724 0xf.fffffp+124 +atan2pi 0x3.f16f1p+0 -0x1.546056p+0 +atan2pi -0x1.9e657cp-24 0x7.40bb4p-52 +atan2pi -0x1.f9cf48p+49 0x1.f60598p+51 +atan2pi 0x1.bcab29da0e947p-54 0x1.bc41f4d2294b8p-54 +atan2pi 0x1.a11891ec004d4p-348 0x1.814830510be26p-348 +atan2pi 0x1.b836ed678be29p-588 0x1.b7be6f5a03a8cp-588 +atan2pi 0x1.a83f842ef3f73p-633 0x1.a799d8a6677ep-633 +atan2pi 0x1.41df5aa214612c7e019fa6ade88p-13316 0x5.e53b26a270a29eb9f77ef8ef7af8p-13316 +atan2pi min min +atan2pi min -min +atan2pi -min min +atan2pi -min -min +atan2pi min_subnorm min_subnorm +atan2pi min_subnorm -min_subnorm +atan2pi -min_subnorm min_subnorm +atan2pi -min_subnorm -min_subnorm +atan2pi min min_subnorm +atan2pi min -min_subnorm +atan2pi -min min_subnorm +atan2pi -min -min_subnorm +atan2pi min_subnorm min +atan2pi min_subnorm -min +atan2pi -min_subnorm min +atan2pi -min_subnorm -min +atan2pi 1 -max +atan2pi -1 -max +atan2pi min -max +atan2pi -min -max +atan2pi min_subnorm -max +atan2pi -min_subnorm -max +atan2pi 1 max +atan2pi -1 max +atan2pi min max +atan2pi -min max +atan2pi min_subnorm max +atan2pi -min_subnorm max +atan2pi min 1 +atan2pi -min 1 +atan2pi min_subnorm 1 +atan2pi -min_subnorm 1 +atan2pi min -1 +atan2pi -min -1 +atan2pi min_subnorm -1 +atan2pi -min_subnorm -1 + atanh 0 atanh -0 atanh 0.75 diff --git a/math/auto-libm-test-out-atan2pi b/math/auto-libm-test-out-atan2pi new file mode 100644 index 0000000000..b5c743d07a --- /dev/null +++ b/math/auto-libm-test-out-atan2pi @@ -0,0 +1,14205 @@ +atan2pi 0 1 += atan2pi downward binary32 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi tonearest binary32 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi towardzero binary32 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi upward binary32 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi downward binary64 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi tonearest binary64 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi towardzero binary64 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi upward binary64 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi downward intel96 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi tonearest intel96 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi towardzero intel96 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi upward intel96 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi downward m68k96 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi tonearest m68k96 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi towardzero m68k96 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi upward m68k96 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi downward binary128 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi tonearest binary128 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi towardzero binary128 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi upward binary128 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi downward ibm128 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi tonearest ibm128 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi towardzero ibm128 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok += atan2pi upward ibm128 0x0p+0 0x1p+0 : 0x0p+0 : inexact-ok +atan2pi -0 1 += atan2pi downward binary32 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi tonearest binary32 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi towardzero binary32 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi upward binary32 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi downward binary64 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi tonearest binary64 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi towardzero binary64 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi upward binary64 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi downward intel96 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi tonearest intel96 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi towardzero intel96 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi upward intel96 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi downward m68k96 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi tonearest m68k96 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi towardzero m68k96 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi upward m68k96 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi downward binary128 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi tonearest binary128 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi towardzero binary128 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi upward binary128 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi downward ibm128 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi tonearest ibm128 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi towardzero ibm128 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok += atan2pi upward ibm128 -0x0p+0 0x1p+0 : -0x0p+0 : inexact-ok +atan2pi 0 0 += atan2pi downward binary32 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi tonearest binary32 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi towardzero binary32 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi upward binary32 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi downward binary64 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi tonearest binary64 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi towardzero binary64 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi upward binary64 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi downward intel96 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi tonearest intel96 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi towardzero intel96 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi upward intel96 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi downward m68k96 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi tonearest m68k96 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi towardzero m68k96 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi upward m68k96 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi downward binary128 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi tonearest binary128 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi towardzero binary128 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi upward binary128 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi downward ibm128 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi tonearest ibm128 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi towardzero ibm128 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok += atan2pi upward ibm128 0x0p+0 0x0p+0 : 0x0p+0 : inexact-ok +atan2pi -0 0 += atan2pi downward binary32 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi tonearest binary32 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi towardzero binary32 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi upward binary32 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi downward binary64 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi tonearest binary64 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi towardzero binary64 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi upward binary64 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi downward intel96 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi tonearest intel96 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi towardzero intel96 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi upward intel96 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi downward m68k96 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi tonearest m68k96 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi towardzero m68k96 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi upward m68k96 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi downward binary128 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi tonearest binary128 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi towardzero binary128 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi upward binary128 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi downward ibm128 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi tonearest ibm128 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi towardzero ibm128 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok += atan2pi upward ibm128 -0x0p+0 0x0p+0 : -0x0p+0 : inexact-ok +atan2pi 0 -1 += atan2pi downward binary32 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi tonearest binary32 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi towardzero binary32 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi upward binary32 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi downward binary64 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi tonearest binary64 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi towardzero binary64 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi upward binary64 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi downward intel96 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi tonearest intel96 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi towardzero intel96 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi upward intel96 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi downward m68k96 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi tonearest m68k96 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi towardzero m68k96 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi upward m68k96 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi downward binary128 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi tonearest binary128 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi towardzero binary128 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi upward binary128 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi downward ibm128 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi tonearest ibm128 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi towardzero ibm128 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok += atan2pi upward ibm128 0x0p+0 -0x1p+0 : 0x1p+0 : inexact-ok +atan2pi -0 -1 += atan2pi downward binary32 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi tonearest binary32 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi towardzero binary32 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi upward binary32 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi downward binary64 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi tonearest binary64 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi towardzero binary64 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi upward binary64 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi downward intel96 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi tonearest intel96 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi towardzero intel96 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi upward intel96 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi downward m68k96 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi tonearest m68k96 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi towardzero m68k96 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi upward m68k96 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi downward binary128 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi tonearest binary128 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi towardzero binary128 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi upward binary128 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi downward ibm128 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi tonearest ibm128 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi towardzero ibm128 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok += atan2pi upward ibm128 -0x0p+0 -0x1p+0 : -0x1p+0 : inexact-ok +atan2pi 0 -0 += atan2pi downward binary32 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi tonearest binary32 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi towardzero binary32 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi upward binary32 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi downward binary64 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi tonearest binary64 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi towardzero binary64 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi upward binary64 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi downward intel96 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi tonearest intel96 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi towardzero intel96 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi upward intel96 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi downward m68k96 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi tonearest m68k96 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi towardzero m68k96 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi upward m68k96 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi downward binary128 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi tonearest binary128 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi towardzero binary128 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi upward binary128 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi downward ibm128 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi tonearest ibm128 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi towardzero ibm128 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok += atan2pi upward ibm128 0x0p+0 -0x0p+0 : 0x1p+0 : inexact-ok +atan2pi -0 -0 += atan2pi downward binary32 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi tonearest binary32 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi towardzero binary32 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi upward binary32 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi downward binary64 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi tonearest binary64 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi towardzero binary64 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi upward binary64 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi downward intel96 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi tonearest intel96 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi towardzero intel96 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi upward intel96 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi downward m68k96 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi tonearest m68k96 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi towardzero m68k96 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi upward m68k96 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi downward binary128 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi tonearest binary128 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi towardzero binary128 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi upward binary128 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi downward ibm128 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi tonearest ibm128 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi towardzero ibm128 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok += atan2pi upward ibm128 -0x0p+0 -0x0p+0 : -0x1p+0 : inexact-ok +atan2pi 1 0 += atan2pi downward binary32 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi tonearest binary32 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi towardzero binary32 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi upward binary32 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi downward binary64 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi tonearest binary64 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi towardzero binary64 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi upward binary64 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi downward intel96 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi tonearest intel96 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi towardzero intel96 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi upward intel96 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi downward m68k96 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi tonearest m68k96 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi towardzero m68k96 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi upward m68k96 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi downward binary128 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi tonearest binary128 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi towardzero binary128 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi upward binary128 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi downward ibm128 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi tonearest ibm128 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi towardzero ibm128 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok += atan2pi upward ibm128 0x1p+0 0x0p+0 : 0x8p-4 : inexact-ok +atan2pi 1 -0 += atan2pi downward binary32 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi tonearest binary32 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi towardzero binary32 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi upward binary32 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi downward binary64 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi tonearest binary64 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi towardzero binary64 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi upward binary64 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi downward intel96 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi tonearest intel96 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi towardzero intel96 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi upward intel96 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi downward m68k96 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi tonearest m68k96 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi towardzero m68k96 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi upward m68k96 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi downward binary128 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi tonearest binary128 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi towardzero binary128 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi upward binary128 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi downward ibm128 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi tonearest ibm128 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi towardzero ibm128 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok += atan2pi upward ibm128 0x1p+0 -0x0p+0 : 0x8p-4 : inexact-ok +atan2pi -1 0 += atan2pi downward binary32 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi tonearest binary32 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi towardzero binary32 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi upward binary32 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi downward binary64 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi tonearest binary64 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi towardzero binary64 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi upward binary64 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi downward intel96 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi tonearest intel96 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi towardzero intel96 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi upward intel96 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi downward m68k96 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi tonearest m68k96 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi towardzero m68k96 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi upward m68k96 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi downward binary128 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi tonearest binary128 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi towardzero binary128 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi upward binary128 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi downward ibm128 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi tonearest ibm128 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi towardzero ibm128 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok += atan2pi upward ibm128 -0x1p+0 0x0p+0 : -0x8p-4 : inexact-ok +atan2pi -1 -0 += atan2pi downward binary32 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi tonearest binary32 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi towardzero binary32 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi upward binary32 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi downward binary64 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi tonearest binary64 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi towardzero binary64 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi upward binary64 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi downward intel96 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi tonearest intel96 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi towardzero intel96 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi upward intel96 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi downward m68k96 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi tonearest m68k96 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi towardzero m68k96 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi upward m68k96 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi downward binary128 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi tonearest binary128 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok += atan2pi towardzero binary128 -0x1p+0 -0x0p+0 : -0x8p-4 : inexact-ok |
