mirror of
git://sourceware.org/git/glibc.git
synced 2025-03-06 20:58:33 +01:00
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.
This commit is contained in:
parent
3ac826b020
commit
3374de9038
51 changed files with 14869 additions and 2 deletions
3
NEWS
3
NEWS
|
@ -36,7 +36,8 @@ Major new features:
|
|||
functions for float, double, long double, _FloatN and _FloatNx, and a
|
||||
type-generic macro in <tgmath.h>.
|
||||
|
||||
- Trigonometric functions: acospi, asinpi, atanpi, cospi, sinpi, tanpi.
|
||||
- Trigonometric functions: acospi, asinpi, atan2pi, atanpi, cospi,
|
||||
sinpi, tanpi.
|
||||
|
||||
* The GNU C Library now supports a feature test macro _ISOC2Y_SOURCE to
|
||||
enable features from the draft ISO C2Y standard. Only some features from
|
||||
|
|
|
@ -490,6 +490,20 @@ result is in the interval between @code{-0.5} and @code{0.5}
|
|||
The @code{atanpi} functions are from TS 18661-4:2015.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun double atan2pi (double @var{y}, double @var{x})
|
||||
@deftypefunx float atan2pif (float @var{y}, float @var{x})
|
||||
@deftypefunx {long double} atan2pil (long double @var{y}, long double @var{x})
|
||||
@deftypefunx _FloatN atan2pifN (_Float@var{N} @var{y}, _Float@var{N} @var{x})
|
||||
@deftypefunx _FloatNx atan2pifNx (_Float@var{N}x @var{y}, _Float@var{N}x @var{x})
|
||||
@standards{TS 18661-4:2015, math.h}
|
||||
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
|
||||
These function computes the arctangent of @var{y}/@var{x}, divided by
|
||||
pi, with the signs of both arguments used to determine the quadrant of
|
||||
the result, as for @code{atan2}.
|
||||
|
||||
The @code{atan2pi} functions are from TS 18661-4:2015.
|
||||
@end deftypefun
|
||||
|
||||
@cindex inverse complex trigonometric functions
|
||||
@w{ISO C99} defines complex versions of the inverse trig functions.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
14205
math/auto-libm-test-out-atan2pi
Normal file
14205
math/auto-libm-test-out-atan2pi
Normal file
File diff suppressed because it is too large
Load diff
|
@ -72,6 +72,8 @@ __MATHCALL (acospi,, (_Mdouble_ __x));
|
|||
__MATHCALL (asinpi,, (_Mdouble_ __x));
|
||||
/* Arc tangent of X, divided by pi. */
|
||||
__MATHCALL (atanpi,, (_Mdouble_ __x));
|
||||
/* Arc tangent of Y/X, divided by pi. */
|
||||
__MATHCALL (atan2pi,, (_Mdouble_ __y, _Mdouble_ __x));
|
||||
|
||||
/* Cosine of pi * X. */
|
||||
__MATHCALL (cospi,, (_Mdouble_ __x));
|
||||
|
|
|
@ -538,6 +538,7 @@ static test_function test_functions[] =
|
|||
FUNC_mpfr_f_f ("asinpi", mpfr_asinpi, false),
|
||||
FUNC_mpfr_f_f ("atan", mpfr_atan, false),
|
||||
FUNC_mpfr_ff_f ("atan2", mpfr_atan2, false),
|
||||
FUNC_mpfr_ff_f ("atan2pi", mpfr_atan2pi, false),
|
||||
FUNC_mpfr_f_f ("atanh", mpfr_atanh, false),
|
||||
FUNC_mpfr_f_f ("atanpi", mpfr_atanpi, false),
|
||||
FUNC_mpc_c_f ("cabs", mpc_abs, false),
|
||||
|
|
|
@ -744,6 +744,7 @@ class Tests(object):
|
|||
# TS 18661-4 functions.
|
||||
self.add_tests('acospi', 'r', ['r'])
|
||||
self.add_tests('asinpi', 'r', ['r'])
|
||||
self.add_tests('atan2pi', 'r', ['r', 'r'])
|
||||
self.add_tests('atanpi', 'r', ['r'])
|
||||
self.add_tests('cospi', 'r', ['r'])
|
||||
self.add_tests('exp10', 'r', ['r'])
|
||||
|
|
211
math/libm-test-atan2pi.inc
Normal file
211
math/libm-test-atan2pi.inc
Normal file
|
@ -0,0 +1,211 @@
|
|||
/* Test atan2pi.
|
||||
Copyright (C) 2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include "libm-test-driver.c"
|
||||
|
||||
static const struct test_ff_f_data atan2pi_test_data[] =
|
||||
{
|
||||
/* atan2pi (y,inf) == +0 for finite y > 0 or +0. */
|
||||
TEST_ff_f (atan2pi, 1, plus_infty, 0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, plus_zero, plus_infty, 0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, min_value, plus_infty, 0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, min_subnorm_value, plus_infty, 0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, max_value, plus_infty, 0, ERRNO_UNCHANGED),
|
||||
|
||||
/* atan2pi (y,inf) == -0 for finite y < 0 or -0. */
|
||||
TEST_ff_f (atan2pi, -1, plus_infty, minus_zero, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, minus_zero, plus_infty, minus_zero, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -min_value, plus_infty, minus_zero, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -min_subnorm_value, plus_infty, minus_zero, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -max_value, plus_infty, minus_zero, ERRNO_UNCHANGED),
|
||||
|
||||
/* atan2pi(+inf, x) == 1/2 for finite x. */
|
||||
TEST_ff_f (atan2pi, plus_infty, 1, 0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, plus_infty, plus_zero, 0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, plus_infty, min_value, 0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, plus_infty, min_subnorm_value, 0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, plus_infty, max_value, 0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, plus_infty, -1, 0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, plus_infty, minus_zero, 0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, plus_infty, -min_value, 0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, plus_infty, -min_subnorm_value, 0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, plus_infty, -max_value, 0.5, ERRNO_UNCHANGED),
|
||||
|
||||
/* atan2pi(-inf, x) == -1/2 for finite x. */
|
||||
TEST_ff_f (atan2pi, minus_infty, 1, -0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, minus_infty, plus_zero, -0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, minus_infty, min_value, -0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, minus_infty, min_subnorm_value, -0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, minus_infty, max_value, -0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, minus_infty, -1, -0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, minus_infty, minus_zero, -0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, minus_infty, -min_value, -0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, minus_infty, -min_subnorm_value, -0.5, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, minus_infty, -max_value, -0.5, ERRNO_UNCHANGED),
|
||||
|
||||
/* atan2pi (y,-inf) == 1 for finite y > 0 or +0. */
|
||||
TEST_ff_f (atan2pi, 1, minus_infty, 1.0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, plus_zero, minus_infty, 1.0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, min_value, minus_infty, 1.0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, min_subnorm_value, minus_infty, 1.0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, max_value, minus_infty, 1.0, ERRNO_UNCHANGED),
|
||||
|
||||
/* atan2pi (y,-inf) == -1 for finite y < 0 or -0. */
|
||||
TEST_ff_f (atan2pi, -1, minus_infty, -1.0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, minus_zero, minus_infty, -1.0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -min_value, minus_infty, -1.0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -min_subnorm_value, minus_infty, -1.0, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -max_value, minus_infty, -1.0, ERRNO_UNCHANGED),
|
||||
|
||||
TEST_ff_f (atan2pi, plus_infty, plus_infty, 0.25, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, minus_infty, plus_infty, -0.25, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, plus_infty, minus_infty, 0.75, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, minus_infty, minus_infty, -0.75, ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, snan_value, qnan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, snan_value, -qnan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -snan_value, qnan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -snan_value, -qnan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, qnan_value, snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, qnan_value, -snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -qnan_value, snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -qnan_value, -snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, snan_value, snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, snan_value, -snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -snan_value, snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -snan_value, -snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, qnan_value, plus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, qnan_value, 1, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, qnan_value, -1, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, qnan_value, min_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, qnan_value, -min_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, qnan_value, min_subnorm_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, qnan_value, -min_subnorm_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, qnan_value, max_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, qnan_value, -max_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -qnan_value, plus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -qnan_value, 1, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -qnan_value, -1, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -qnan_value, min_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -qnan_value, -min_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -qnan_value, min_subnorm_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -qnan_value, -min_subnorm_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -qnan_value, max_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -qnan_value, -max_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, snan_value, plus_infty, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, snan_value, minus_infty, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, snan_value, plus_zero, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, snan_value, minus_zero, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, snan_value, 1, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, snan_value, -1, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, snan_value, min_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, snan_value, -min_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, snan_value, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, snan_value, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, snan_value, max_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, snan_value, -max_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -snan_value, plus_infty, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -snan_value, minus_infty, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -snan_value, plus_zero, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -snan_value, minus_zero, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -snan_value, 1, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -snan_value, -1, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -snan_value, min_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -snan_value, -min_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -snan_value, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -snan_value, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -snan_value, max_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -snan_value, -max_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, plus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, minus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, plus_zero, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, minus_zero, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, 1, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -1, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, min_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -min_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, min_subnorm_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -min_subnorm_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, max_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -max_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, plus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, minus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, plus_zero, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, minus_zero, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, 1, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -1, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, min_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -min_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, min_subnorm_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -min_subnorm_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, max_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, -max_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_ff_f (atan2pi, plus_infty, snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, minus_infty, snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, plus_zero, snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, minus_zero, snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, 1, snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -1, snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, min_value, snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -min_value, snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, min_subnorm_value, snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -min_subnorm_value, snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, max_value, snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -max_value, snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, plus_infty, -snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, minus_infty, -snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, plus_zero, -snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, minus_zero, -snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, 1, -snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -1, -snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, min_value, -snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -min_value, -snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, min_subnorm_value, -snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -min_subnorm_value, -snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, max_value, -snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_ff_f (atan2pi, -max_value, -snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
|
||||
AUTO_TESTS_ff_f (atan2pi),
|
||||
};
|
||||
|
||||
static void
|
||||
atan2pi_test (void)
|
||||
{
|
||||
ALL_RM_TEST (atan2pi, 0, atan2pi_test_data, RUN_TEST_LOOP_ff_f, END);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (void)
|
||||
{
|
||||
atan2pi_test ();
|
||||
}
|
||||
|
||||
/*
|
||||
* Local Variables:
|
||||
* mode:c
|
||||
* End:
|
||||
*/
|
41
math/s_atan2pi_template.c
Normal file
41
math/s_atan2pi_template.c
Normal file
|
@ -0,0 +1,41 @@
|
|||
/* Return arc tangent of Y/X, divided by pi.
|
||||
Copyright (C) 2024 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with the GNU C Library; if not, see
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <math.h>
|
||||
#include <math-narrow-eval.h>
|
||||
#include <math_private.h>
|
||||
#include <math-underflow.h>
|
||||
|
||||
FLOAT
|
||||
M_DECL_FUNC (__atan2pi) (FLOAT y, FLOAT x)
|
||||
{
|
||||
FLOAT ret = math_narrow_eval (M_SUF (__ieee754_atan2) (y, x)
|
||||
/ M_MLIT (M_PI));
|
||||
if (__glibc_likely (!isnan (ret)))
|
||||
math_check_force_underflow (ret);
|
||||
if (ret == 0 && y != 0 && isfinite (x))
|
||||
__set_errno (ERANGE);
|
||||
/* Ensure that rounding away from zero for both atan2 and the
|
||||
division cannot yield a return value from atan2pi with absolute
|
||||
value greater than 1. */
|
||||
return (isgreater (M_FABS (ret), M_LIT (1.0))
|
||||
? M_COPYSIGN (M_LIT (1.0), ret)
|
||||
: ret);
|
||||
}
|
||||
declare_mgen_alias (__atan2pi, atan2pi);
|
|
@ -48,7 +48,7 @@ volatile int count_cdouble;
|
|||
volatile int count_cfloat;
|
||||
volatile int count_cldouble;
|
||||
|
||||
#define NCALLS 180
|
||||
#define NCALLS 183
|
||||
#define NCALLS_INT 4
|
||||
#define NCCALLS 47
|
||||
|
||||
|
@ -244,6 +244,7 @@ F(compile_test) (void)
|
|||
b = atanpi (atanpi (a));
|
||||
b = atan (atan (a));
|
||||
c = atan2 (atan2 (a, c), atan2 (b, x));
|
||||
b = atan2pi (atan2pi (a, c), atan2pi (b, x));
|
||||
a = cosh (cosh (x));
|
||||
b = acosh (acosh (a));
|
||||
a = sinh (sinh (x));
|
||||
|
@ -368,6 +369,7 @@ F(compile_test) (void)
|
|||
a = atan (y);
|
||||
a = atanpi (y);
|
||||
a = atan2 (y, y);
|
||||
a = atan2pi (y, y);
|
||||
a = cosh (y);
|
||||
a = acosh (y);
|
||||
a = sinh (y);
|
||||
|
@ -575,6 +577,14 @@ TYPE
|
|||
return x;
|
||||
}
|
||||
|
||||
TYPE
|
||||
(F(atan2pi)) (TYPE x, TYPE y)
|
||||
{
|
||||
++count;
|
||||
P ();
|
||||
return x + y;
|
||||
}
|
||||
|
||||
TYPE
|
||||
(F(cosh)) (TYPE x)
|
||||
{
|
||||
|
|
|
@ -824,6 +824,8 @@
|
|||
# define asinpi(Val) __TGMATH_UNARY_REAL_ONLY (Val, asinpi)
|
||||
/* Arc tangent of X, divided by pi. */
|
||||
# define atanpi(Val) __TGMATH_UNARY_REAL_ONLY (Val, atanpi)
|
||||
/* Arc tangent of Y/X, divided by pi. */
|
||||
#define atan2pi(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, atan2pi)
|
||||
|
||||
/* Cosine of pi * X. */
|
||||
# define cospi(Val) __TGMATH_UNARY_REAL_ONLY (Val, cospi)
|
||||
|
|
|
@ -159,6 +159,30 @@ float: 1
|
|||
float128: 2
|
||||
ldouble: 1
|
||||
|
||||
Function: "atan2pi":
|
||||
double: 1
|
||||
float: 1
|
||||
float128: 2
|
||||
ldouble: 1
|
||||
|
||||
Function: "atan2pi_downward":
|
||||
double: 1
|
||||
float: 1
|
||||
float128: 2
|
||||
ldouble: 2
|
||||
|
||||
Function: "atan2pi_towardzero":
|
||||
double: 1
|
||||
float: 1
|
||||
float128: 2
|
||||
ldouble: 2
|
||||
|
||||
Function: "atan2pi_upward":
|
||||
double: 1
|
||||
float: 1
|
||||
float128: 2
|
||||
ldouble: 2
|
||||
|
||||
Function: "atan_downward":
|
||||
double: 1
|
||||
float: 1
|
||||
|
|
|
@ -147,6 +147,7 @@ libm {
|
|||
GLIBC_2.41 {
|
||||
__acospiieee128;
|
||||
__asinpiieee128;
|
||||
__atan2piieee128;
|
||||
__atanpiieee128;
|
||||
__cospiieee128;
|
||||
__sinpiieee128;
|
||||
|
|
|
@ -22,6 +22,7 @@ libnldbl-calls = \
|
|||
asprintf_chk \
|
||||
atan \
|
||||
atan2 \
|
||||
atan2pi \
|
||||
atanh \
|
||||
atanpi \
|
||||
cabs \
|
||||
|
@ -266,6 +267,7 @@ CFLAGS-nldbl-asinh.c = -fno-builtin-asinhl
|
|||
CFLAGS-nldbl-asinpi.c = -fno-builtin-asinpil
|
||||
CFLAGS-nldbl-atan.c = -fno-builtin-atanl
|
||||
CFLAGS-nldbl-atan2.c = -fno-builtin-atan2l
|
||||
CFLAGS-nldbl-atan2pi.c = -fno-builtin-atan2pil
|
||||
CFLAGS-nldbl-atanh.c = -fno-builtin-atanhl
|
||||
CFLAGS-nldbl-atanpi.c = -fno-builtin-atanpil
|
||||
CFLAGS-nldbl-cabs.c = -fno-builtin-cabsl
|
||||
|
|
8
sysdeps/ieee754/ldbl-opt/nldbl-atan2pi.c
Normal file
8
sysdeps/ieee754/ldbl-opt/nldbl-atan2pi.c
Normal file
|
@ -0,0 +1,8 @@
|
|||
#include "nldbl-compat.h"
|
||||
|
||||
double
|
||||
attribute_hidden
|
||||
atan2pil (double x, double y)
|
||||
{
|
||||
return atan2pi (x, y);
|
||||
}
|
|
@ -1237,6 +1237,14 @@ GLIBC_2.41 asinpif32x F
|
|||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpif64x F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif128 F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pif64x F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif128 F
|
||||
|
|
|
@ -1094,6 +1094,14 @@ GLIBC_2.41 asinpif32x F
|
|||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpif64x F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif128 F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pif64x F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif128 F
|
||||
|
|
|
@ -44,6 +44,7 @@ CFLAGS-w_acosl_compat.c += -fno-builtin-fabsl
|
|||
CFLAGS-s_acospil.c += -fno-builtin-fabsl
|
||||
CFLAGS-w_asinl_compat.c += -fno-builtin-fabsl
|
||||
CFLAGS-s_asinpil.c += -fno-builtin-fabsl
|
||||
CFLAGS-s_atan2pil.c += -fno-builtin-fabsl
|
||||
CFLAGS-w_atanhl_compat.c += -fno-builtin-fabsl
|
||||
CFLAGS-s_atanpil.c += -fno-builtin-fabsl
|
||||
CFLAGS-w_j0l_compat.c += -fno-builtin-fabsl
|
||||
|
|
|
@ -1205,6 +1205,14 @@ GLIBC_2.41 asinpif32x F
|
|||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpif64x F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif128 F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pif64x F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif128 F
|
||||
|
|
|
@ -1364,6 +1364,14 @@ GLIBC_2.41 asinpif32x F
|
|||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpif64x F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif128 F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pif64x F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif128 F
|
||||
|
|
|
@ -799,6 +799,12 @@ GLIBC_2.41 asinpif32 F
|
|||
GLIBC_2.41 asinpif32x F
|
||||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif32 F
|
||||
|
|
|
@ -890,6 +890,12 @@ GLIBC_2.41 asinpif32 F
|
|||
GLIBC_2.41 asinpif32x F
|
||||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif32 F
|
||||
|
|
|
@ -890,6 +890,12 @@ GLIBC_2.41 asinpif32 F
|
|||
GLIBC_2.41 asinpif32x F
|
||||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif32 F
|
||||
|
|
|
@ -865,6 +865,12 @@ GLIBC_2.41 asinpif32 F
|
|||
GLIBC_2.41 asinpif32x F
|
||||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif32 F
|
||||
|
|
|
@ -890,6 +890,12 @@ GLIBC_2.41 asinpif32 F
|
|||
GLIBC_2.41 asinpif32x F
|
||||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif32 F
|
||||
|
|
|
@ -1244,6 +1244,14 @@ GLIBC_2.41 asinpif32x F
|
|||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpif64x F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif128 F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pif64x F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif128 F
|
||||
|
|
|
@ -1084,6 +1084,14 @@ GLIBC_2.41 asinpif32x F
|
|||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpif64x F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif128 F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pif64x F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif128 F
|
||||
|
|
|
@ -890,6 +890,12 @@ GLIBC_2.41 asinpif32 F
|
|||
GLIBC_2.41 asinpif32x F
|
||||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif32 F
|
||||
|
|
|
@ -926,6 +926,12 @@ GLIBC_2.41 asinpif32 F
|
|||
GLIBC_2.41 asinpif32x F
|
||||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif32 F
|
||||
|
|
|
@ -890,6 +890,12 @@ GLIBC_2.41 asinpif32 F
|
|||
GLIBC_2.41 asinpif32x F
|
||||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif32 F
|
||||
|
|
|
@ -890,6 +890,12 @@ GLIBC_2.41 asinpif32 F
|
|||
GLIBC_2.41 asinpif32x F
|
||||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif32 F
|
||||
|
|
|
@ -890,6 +890,12 @@ GLIBC_2.41 asinpif32 F
|
|||
GLIBC_2.41 asinpif32x F
|
||||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif32 F
|
||||
|
|
|
@ -1205,6 +1205,14 @@ GLIBC_2.41 asinpif32x F
|
|||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpif64x F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif128 F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pif64x F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif128 F
|
||||
|
|
|
@ -799,6 +799,12 @@ GLIBC_2.41 asinpif32 F
|
|||
GLIBC_2.41 asinpif32x F
|
||||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif32 F
|
||||
|
|
|
@ -1037,6 +1037,12 @@ GLIBC_2.41 asinpif32 F
|
|||
GLIBC_2.41 asinpif32x F
|
||||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif32 F
|
||||
|
|
|
@ -1036,6 +1036,12 @@ GLIBC_2.41 asinpif32 F
|
|||
GLIBC_2.41 asinpif32x F
|
||||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif32 F
|
||||
|
|
|
@ -1030,6 +1030,12 @@ GLIBC_2.41 asinpif32 F
|
|||
GLIBC_2.41 asinpif32x F
|
||||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif32 F
|
||||
|
|
|
@ -1368,6 +1368,7 @@ GLIBC_2.40 logp1f64x F
|
|||
GLIBC_2.40 logp1l F
|
||||
GLIBC_2.41 __acospiieee128 F
|
||||
GLIBC_2.41 __asinpiieee128 F
|
||||
GLIBC_2.41 __atan2piieee128 F
|
||||
GLIBC_2.41 __atanpiieee128 F
|
||||
GLIBC_2.41 __cospiieee128 F
|
||||
GLIBC_2.41 __sinpiieee128 F
|
||||
|
@ -1388,6 +1389,14 @@ GLIBC_2.41 asinpif32x F
|
|||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpif64x F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif128 F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pif64x F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif128 F
|
||||
|
|
|
@ -1084,6 +1084,14 @@ GLIBC_2.41 asinpif32x F
|
|||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpif64x F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif128 F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pif64x F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif128 F
|
||||
|
|
|
@ -1181,6 +1181,14 @@ GLIBC_2.41 asinpif32x F
|
|||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpif64x F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif128 F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pif64x F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif128 F
|
||||
|
|
|
@ -1308,6 +1308,14 @@ GLIBC_2.41 asinpif32x F
|
|||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpif64x F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif128 F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pif64x F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif128 F
|
||||
|
|
|
@ -1308,6 +1308,14 @@ GLIBC_2.41 asinpif32x F
|
|||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpif64x F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif128 F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pif64x F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif128 F
|
||||
|
|
|
@ -890,6 +890,12 @@ GLIBC_2.41 asinpif32 F
|
|||
GLIBC_2.41 asinpif32x F
|
||||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif32 F
|
||||
|
|
|
@ -890,6 +890,12 @@ GLIBC_2.41 asinpif32 F
|
|||
GLIBC_2.41 asinpif32x F
|
||||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif32 F
|
||||
|
|
|
@ -1315,6 +1315,14 @@ GLIBC_2.41 asinpif32x F
|
|||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpif64x F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif128 F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pif64x F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif128 F
|
||||
|
|
|
@ -1205,6 +1205,14 @@ GLIBC_2.41 asinpif32x F
|
|||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpif64x F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif128 F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pif64x F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif128 F
|
||||
|
|
|
@ -1238,6 +1238,14 @@ GLIBC_2.41 asinpif32x F
|
|||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpif64x F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif128 F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pif64x F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif128 F
|
||||
|
|
|
@ -1238,6 +1238,14 @@ GLIBC_2.41 asinpif32x F
|
|||
GLIBC_2.41 asinpif64 F
|
||||
GLIBC_2.41 asinpif64x F
|
||||
GLIBC_2.41 asinpil F
|
||||
GLIBC_2.41 atan2pi F
|
||||
GLIBC_2.41 atan2pif F
|
||||
GLIBC_2.41 atan2pif128 F
|
||||
GLIBC_2.41 atan2pif32 F
|
||||
GLIBC_2.41 atan2pif32x F
|
||||
GLIBC_2.41 atan2pif64 F
|
||||
GLIBC_2.41 atan2pif64x F
|
||||
GLIBC_2.41 atan2pil F
|
||||
GLIBC_2.41 atanpi F
|
||||
GLIBC_2.41 atanpif F
|
||||
GLIBC_2.41 atanpif128 F
|
||||
|
|
|
@ -271,6 +271,30 @@ float: 2
|
|||
Function: "atan2_vlen8_avx2":
|
||||
float: 2
|
||||
|
||||
Function: "atan2pi":
|
||||
double: 1
|
||||
float: 1
|
||||
float128: 2
|
||||
ldouble: 1
|
||||
|
||||
Function: "atan2pi_downward":
|
||||
double: 1
|
||||
float: 3
|
||||
float128: 2
|
||||
ldouble: 2
|
||||
|
||||
Function: "atan2pi_towardzero":
|
||||
double: 1
|
||||
float: 2
|
||||
float128: 2
|
||||
ldouble: 2
|
||||
|
||||
Function: "atan2pi_upward":
|
||||
double: 1
|
||||
float: 3
|
||||
float128: 2
|
||||
ldouble: 2
|
||||
|
||||
Function: "atan_downward":
|
||||
double: 1
|
||||
float: 2
|
||||
|
|
Loading…
Add table
Reference in a new issue