Implement C23 rsqrt

C23 adds various <math.h> function families originally defined in TS
18661-4.  Add the rsqrt functions (1/sqrt(x)).  The test inputs are
taken from those for sqrt.

Tested for x86_64 and x86, and with build-many-glibcs.py.
This commit is contained in:
Joseph Myers 2025-03-07 19:15:26 +00:00
parent ee3b1d15da
commit 77261698b4
50 changed files with 3865 additions and 2 deletions

7
NEWS
View File

@ -9,7 +9,12 @@ Version 2.42
Major new features:
[Add new features here]
* The following ISO C23 function families (introduced in TS
18661-4:2015) are now supported in <math.h>. Each family includes
functions for float, double, long double, _FloatN and _FloatNx, and a
type-generic macro in <tgmath.h>.
- Power and absolute-value functions: rsqrt.
Deprecated and removed features, and other changes affecting compatibility:

View File

@ -790,6 +790,19 @@ If @var{x} is negative, @code{sqrt} signals a domain error.
Mathematically, it should return a complex number.
@end deftypefun
@deftypefun double rsqrt (double @var{x})
@deftypefunx float rsqrtf (float @var{x})
@deftypefunx {long double} rsqrtl (long double @var{x})
@deftypefunx _FloatN rsqrtfN (_Float@var{N} @var{x})
@deftypefunx _FloatNx rsqrtfNx (_Float@var{N}x @var{x})
@standards{TS 18661-4:2015, math.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
These functions return the reciprocal of the nonnegative square root of @var{x}.
If @var{x} is negative, @code{rsqrt} signals a domain error.
The @code{rsqrt} functions are from TS 18661-4:2015.
@end deftypefun
@cindex cube root function
@deftypefun double cbrt (double @var{x})
@deftypefunx float cbrtf (float @var{x})

View File

@ -139,6 +139,7 @@ gen-libm-calls = \
s_log2p1F \
s_nanF \
s_nextdownF \
s_rsqrtF \
s_significandF \
s_sinpiF \
s_tanpiF \
@ -682,6 +683,7 @@ libm-test-funcs-auto = \
log1p \
log2p1 \
pow \
rsqrt \
sin \
sincos \
sinh \
@ -1017,6 +1019,7 @@ tgmath3-macros = \
rint \
round \
roundeven \
rsqrt \
scalb \
scalbln \
scalbn \
@ -1462,6 +1465,7 @@ CFLAGS-s_remquo.c += -fno-builtin-remquol
CFLAGS-s_rint.c += -fno-builtin-rintl
CFLAGS-s_round.c += -fno-builtin-roundl
CFLAGS-s_roundeven.c += -fno-builtin-roundevenl
CFLAGS-s_rsqrt.c += -fno-builtin-rsqrtl
CFLAGS-w_scalb.c += -fno-builtin-scalbl
CFLAGS-w_scalbln.c += -fno-builtin-scalblnl
CFLAGS-s_scalbn.c += -fno-builtin-scalbnl
@ -1596,6 +1600,7 @@ CFLAGS-s_remquo.c += -fno-builtin-remquof32x -fno-builtin-remquof64
CFLAGS-s_rint.c += -fno-builtin-rintf32x -fno-builtin-rintf64
CFLAGS-s_round.c += -fno-builtin-roundf32x -fno-builtin-roundf64
CFLAGS-s_roundeven.c += -fno-builtin-roundevenf32x -fno-builtin-roundevenf64
CFLAGS-s_rsqrt.c += -fno-builtin-rsqrtf32x -fno-builtin-rsqrtf64
CFLAGS-w_scalbln.c += -fno-builtin-scalblnf32x -fno-builtin-scalblnf64
CFLAGS-s_scalbn.c += -fno-builtin-scalbnf32x -fno-builtin-scalbnf64
CFLAGS-s_setpayload.c += -fno-builtin-setpayloadf32x -fno-builtin-setpayloadf64
@ -1721,6 +1726,7 @@ CFLAGS-s_remquof.c += -fno-builtin-remquof32
CFLAGS-s_rintf.c += -fno-builtin-rintf32
CFLAGS-s_roundf.c += -fno-builtin-roundf32
CFLAGS-s_roundevenf.c += -fno-builtin-roundevenf32
CFLAGS-s_rsqrtf.c += -fno-builtin-rsqrtf32
CFLAGS-w_scalblnf.c += -fno-builtin-scalblnf32
CFLAGS-s_scalbnf.c += -fno-builtin-scalbnf32
CFLAGS-s_setpayloadf.c += -fno-builtin-setpayloadf32

View File

@ -671,4 +671,10 @@ libm {
sinpif64x; sinpif128;
tanpif64x; tanpif128;
}
GLIBC_2.42 {
# Functions not involving _Float64x or _Float128, for all configurations.
rsqrt; rsqrtf; rsqrtl; rsqrtf32; rsqrtf64; rsqrtf32x;
# Functions involving _Float64x or _Float128, for some configurations.
rsqrtf64x; rsqrtf128;
}
}

View File

@ -8151,6 +8151,74 @@ pow 0x1.059c76p+0 0x1.ff80bep+11
pow 0x1.7ac7cp+5 23
pow -0x1.7ac7cp+5 23
rsqrt 2209
rsqrt 4
rsqrt 2
rsqrt 0.25
rsqrt 6642.25
rsqrt 15190.5625
rsqrt 0.75
rsqrt 0x1.fffffffffffffp+1023
rsqrt 0x1.ffffffffffffbp+1023
rsqrt 0x1.ffffffffffff7p+1023
rsqrt 0x1.ffffffffffff3p+1023
rsqrt 0x1.fffffffffffefp+1023
rsqrt 0x1.fffffffffffebp+1023
rsqrt 0x1.fffffffffffe7p+1023
rsqrt 0x1.fffffffffffe3p+1023
rsqrt 0x1.fffffffffffdfp+1023
rsqrt 0x1.fffffffffffdbp+1023
rsqrt 0x1.fffffffffffd7p+1023
rsqrt 0x1.0000000000003p-1022
rsqrt 0x1.0000000000007p-1022
rsqrt 0x1.000000000000bp-1022
rsqrt 0x1.000000000000fp-1022
rsqrt 0x1.0000000000013p-1022
rsqrt 0x1.0000000000017p-1022
rsqrt 0x1.000000000001bp-1022
rsqrt 0x1.000000000001fp-1022
rsqrt 0x1.0000000000023p-1022
rsqrt 0x1.0000000000027p-1022
rsqrt 0x1.000000000002bp-1022
rsqrt 0x1.000000000002fp-1022
rsqrt 0x1.0000000000033p-1022
rsqrt 0x1.0000000000037p-1022
rsqrt 0x1.7167bc36eaa3bp+6
rsqrt 0x1.7570994273ad7p+6
rsqrt 0x1.7dae969442fe6p+6
rsqrt 0x1.7f8444fcf67e5p+6
rsqrt 0x1.8364650e63a54p+6
rsqrt 0x1.85bedd274edd8p+6
rsqrt 0x1.8609cf496ab77p+6
rsqrt 0x1.873849c70a375p+6
rsqrt 0x1.8919c962cbaaep+6
rsqrt 0x1.8de4493e22dc6p+6
rsqrt 0x1.924829a17a288p+6
rsqrt 0x1.92702cd992f12p+6
rsqrt 0x1.92b763a8311fdp+6
rsqrt 0x1.947da013c7293p+6
rsqrt 0x1.9536091c494d2p+6
rsqrt 0x1.61b04c6p-1019
rsqrt 0x1.93789f1p-1018
rsqrt 0x1.a1989b4p-1018
rsqrt 0x1.f93bc9p-1018
rsqrt 0x1.2f675e3p-1017
rsqrt 0x1.a158508p-1017
rsqrt 0x1.cd31f078p-1017
rsqrt 0x1.33b43b08p-1016
rsqrt 0x1.6e66a858p-1016
rsqrt 0x1.8661cbf8p-1016
rsqrt 0x1.bbb221b4p-1016
rsqrt 0x1.c4942f3cp-1016
rsqrt 0x1.dbb258c8p-1016
rsqrt 0x1.57103ea4p-1015
rsqrt 0x1.9b294f88p-1015
rsqrt 0x1.0000000000001p+0
rsqrt 0x1.fffffffffffffp-1
rsqrt max
rsqrt min
rsqrt min_subnorm
sin 0
sin -0
sin pi/6

File diff suppressed because it is too large Load Diff

View File

@ -185,6 +185,11 @@ __MATHCALL_VEC (hypot,, (_Mdouble_ __x, _Mdouble_ __y));
__MATHCALL_VEC (cbrt,, (_Mdouble_ __x));
#endif
#if __GLIBC_USE (IEC_60559_FUNCS_EXT_C23)
/* Return the reciprocal of the square root of X. */
__MATHCALL (rsqrt,, (_Mdouble_ __x));
#endif
/* Nearest integer, absolute value, and remainder functions. */

View File

@ -589,6 +589,9 @@ static test_function test_functions[] =
FUNC_mpfr_f_f ("log2p1", mpfr_log2p1, false),
FUNC_mpfr_ff_f ("mul", mpfr_mul, true),
FUNC_mpfr_ff_f ("pow", mpfr_pow, false),
/* mpfr_rec_sqrt differs from rsqrt on -0, but gen-auto-libm-tests
does not handle results that are exact infinities anyway. */
FUNC_mpfr_f_f ("rsqrt", mpfr_rec_sqrt, true),
FUNC_mpfr_f_f ("sin", mpfr_sin, false),
FUNC ("sincos", ARGS1 (type_fp), RET2 (type_fp, type_fp), false, false,
false, CALC (mpfr_f_11, mpfr_sin_cos)),

View File

@ -753,6 +753,7 @@ class Tests(object):
self.add_tests('log2p1', 'r', ['r'])
self.add_tests('log10p1', 'r', ['r'])
self.add_tests('logp1', 'r', ['r'])
self.add_tests('rsqrt', 'r', ['r'])
self.add_tests('sinpi', 'r', ['r'])
self.add_tests('tanpi', 'r', ['r'])
# C23 functions.

58
math/libm-test-rsqrt.inc Normal file
View File

@ -0,0 +1,58 @@
/* Test rsqrt.
Copyright (C) 2025 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_f_f_data rsqrt_test_data[] =
{
TEST_f_f (rsqrt, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_f_f (rsqrt, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_f_f (rsqrt, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_f_f (rsqrt, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
TEST_f_f (rsqrt, plus_infty, plus_zero, ERRNO_UNCHANGED),
TEST_f_f (rsqrt, plus_zero, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
TEST_f_f (rsqrt, minus_zero, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
/* rsqrt (x) == qNaN plus invalid exception for x < 0. */
TEST_f_f (rsqrt, -1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (rsqrt, -1.1L, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (rsqrt, -min_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (rsqrt, -min_subnorm_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (rsqrt, -max_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (rsqrt, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
AUTO_TESTS_f_f (rsqrt),
};
static void
rsqrt_test (void)
{
ALL_RM_TEST (rsqrt, 0, rsqrt_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
rsqrt_test ();
}
/*
* Local Variables:
* mode:c
* End:
*/

29
math/s_rsqrt_template.c Normal file
View File

@ -0,0 +1,29 @@
/* Return the reciprocal of the square root of X.
Copyright (C) 2025 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>
FLOAT
M_DECL_FUNC (__rsqrt) (FLOAT x)
{
if (islessequal (x, M_LIT (0.0)))
__set_errno (x < 0 ? EDOM : ERANGE);
return M_LIT (1.0) / M_SQRT (x);
}
declare_mgen_alias (__rsqrt, rsqrt);

View File

@ -48,7 +48,7 @@ volatile int count_cdouble;
volatile int count_cfloat;
volatile int count_cldouble;
#define NCALLS 183
#define NCALLS 185
#define NCALLS_INT 4
#define NCCALLS 47
@ -269,6 +269,7 @@ F(compile_test) (void)
a = logp1 (logp1 (x));
a = pow (pow (x, a), pow (c, b));
b = sqrt (sqrt (a));
a = rsqrt (rsqrt (b));
a = hypot (hypot (x, b), hypot (c, a));
b = cbrt (cbrt (a));
a = ceil (ceil (x));
@ -394,6 +395,7 @@ F(compile_test) (void)
a = logp1 (y);
a = pow (y, y);
a = sqrt (y);
a = rsqrt (y);
a = hypot (y, y);
a = cbrt (y);
a = ceil (y);
@ -777,6 +779,14 @@ TYPE
return x;
}
TYPE
(F(rsqrt)) (TYPE x)
{
++count;
P ();
return x;
}
TYPE
(F(hypot)) (TYPE x, TYPE y)
{

View File

@ -923,6 +923,10 @@
/* Return the cube root of X. */
#define cbrt(Val) __TGMATH_UNARY_REAL_ONLY (Val, cbrt)
#if __GLIBC_USE (IEC_60559_FUNCS_EXT_C23)
# define rsqrt(Val) __TGMATH_UNARY_REAL_ONLY (Val, rsqrt)
#endif
/* Nearest integer, absolute value, and remainder functions. */

View File

@ -1627,6 +1627,24 @@ float: 1
float128: 2
ldouble: 4
Function: "rsqrt":
float128: 1
ldouble: 1
Function: "rsqrt_downward":
double: 1
float128: 2
ldouble: 2
Function: "rsqrt_towardzero":
double: 1
float128: 2
ldouble: 2
Function: "rsqrt_upward":
float128: 2
ldouble: 2
Function: "sin":
double: 1
float: 1

View File

@ -153,6 +153,9 @@ libm {
__sinpiieee128;
__tanpiieee128;
}
GLIBC_2.42 {
__rsqrtieee128;
}
}
libc {
LDBL_IBM128_VERSION {

View File

@ -180,6 +180,7 @@ libnldbl-calls = \
rint \
round \
roundeven \
rsqrt \
scalb \
scalbln \
scalbn \
@ -379,6 +380,7 @@ CFLAGS-nldbl-remquo.c = -fno-builtin-remquol
CFLAGS-nldbl-rint.c = -fno-builtin-rintl
CFLAGS-nldbl-round.c = -fno-builtin-roundl
CFLAGS-nldbl-roundeven.c = -fno-builtin-roundevenl
CFLAGS-nldbl-rsqrt.c = -fno-builtin-rsqrtl
CFLAGS-nldbl-scalb.c = -fno-builtin-scalbl
CFLAGS-nldbl-scalbln.c = -fno-builtin-scalblnl
CFLAGS-nldbl-scalbn.c = -fno-builtin-scalbnl

View File

@ -0,0 +1,8 @@
#include "nldbl-compat.h"
double
attribute_hidden
rsqrtl (double x)
{
return rsqrt (x);
}

View File

@ -1277,3 +1277,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf128 F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F

View File

@ -1134,3 +1134,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf128 F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F

View File

@ -1245,3 +1245,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf128 F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F

View File

@ -1404,3 +1404,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf128 F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F

View File

@ -829,3 +829,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F

View File

@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F

View File

@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F

View File

@ -895,3 +895,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F

View File

@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F

View File

@ -1284,3 +1284,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf128 F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F

View File

@ -1124,3 +1124,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf128 F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F

View File

@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F

View File

@ -956,3 +956,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F

View File

@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F

View File

@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F

View File

@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F

View File

@ -1245,3 +1245,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf128 F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F

View File

@ -829,3 +829,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F

View File

@ -1067,3 +1067,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F

View File

@ -1066,3 +1066,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F

View File

@ -1060,3 +1060,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F

View File

@ -1429,3 +1429,12 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
GLIBC_2.42 __rsqrtieee128 F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf128 F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F

View File

@ -1124,3 +1124,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf128 F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F

View File

@ -1221,3 +1221,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf128 F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F

View File

@ -1348,3 +1348,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf128 F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F

View File

@ -1348,3 +1348,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf128 F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F

View File

@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F

View File

@ -920,3 +920,9 @@ GLIBC_2.41 tanpif32 F
GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtl F

View File

@ -1355,3 +1355,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf128 F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F

View File

@ -1245,3 +1245,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf128 F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F

View File

@ -1278,3 +1278,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf128 F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F

View File

@ -1278,3 +1278,11 @@ GLIBC_2.41 tanpif32x F
GLIBC_2.41 tanpif64 F
GLIBC_2.41 tanpif64x F
GLIBC_2.41 tanpil F
GLIBC_2.42 rsqrt F
GLIBC_2.42 rsqrtf F
GLIBC_2.42 rsqrtf128 F
GLIBC_2.42 rsqrtf32 F
GLIBC_2.42 rsqrtf32x F
GLIBC_2.42 rsqrtf64 F
GLIBC_2.42 rsqrtf64x F
GLIBC_2.42 rsqrtl F

View File

@ -2068,6 +2068,30 @@ float: 3
Function: "pow_vlen8_avx2":
float: 3
Function: "rsqrt":
double: 1
float: 1
float128: 1
ldouble: 1
Function: "rsqrt_downward":
double: 2
float: 2
float128: 2
ldouble: 2
Function: "rsqrt_towardzero":
double: 2
float: 2
float128: 2
ldouble: 2
Function: "rsqrt_upward":
double: 2
float: 2
float128: 2
ldouble: 2
Function: "sin":
double: 1
float: 1