mirror of git://sourceware.org/git/glibc.git
Implement C23 rootn.
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the rootn functions, which compute the Yth root of X for integer Y (with a domain error if Y is 0, even if X is a NaN). The integer exponent has type long long int in C23; it was intmax_t in TS 18661-4, and as with other interfaces changed after their initial appearance in the TS, I don't think we need to support the original version of the interface. As with pown and compoundn, I strongly encourage searching for worst cases for ulps error for these implementations (necessarily non-exhaustively, given the size of the input space). I also expect a custom implementation for a given format could be much faster as well as more accurate, although the implementation is simpler than those for pown and compoundn. This completes adding to glibc those TS 18661-4 functions (ignoring DFP) that are included in C23. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118592 regarding the C23 mathematical functions (not just the TS 18661-4 ones) missing built-in functions in GCC, where such functions might usefully be added. Tested for x86_64 and x86, and with build-many-glibcs.py.
This commit is contained in:
parent
36189c76fb
commit
06caf53adf
3
NEWS
3
NEWS
|
|
@ -14,7 +14,8 @@ Major new features:
|
|||
functions for float, double, long double, _FloatN and _FloatNx, and a
|
||||
type-generic macro in <tgmath.h>.
|
||||
|
||||
- Power and absolute-value functions: compoundn, pown, powr, rsqrt.
|
||||
- Power and absolute-value functions: compoundn, pown, powr, rootn,
|
||||
rsqrt.
|
||||
|
||||
* On Linux, the pthread_gettid_np function has been added.
|
||||
|
||||
|
|
|
|||
|
|
@ -883,6 +883,22 @@ instead of the direct formula is wise, since the error is
|
|||
much smaller. See also the function @code{cabs} in @ref{Absolute Value}.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun double rootn (double @var{x}, long long int @var{n})
|
||||
@deftypefunx float rootnf (float @var{x}, long long int @var{n})
|
||||
@deftypefunx {long double} rootnl (long double @var{x}, long long int @var{n})
|
||||
@deftypefunx _FloatN rootnfN (_Float@var{N} @var{x}, long long int @var{n})
|
||||
@deftypefunx _FloatNx rootnfNx (_Float@var{N}x @var{x}, long long int @var{n})
|
||||
@standards{TS 18661-4:2015, math.h}
|
||||
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
|
||||
These return the @var{n}th root of @var{x}. If @var{n} is zero, or if
|
||||
@var{x} is negative and @var{n} is even, @code{rootn} signals a domain
|
||||
error.
|
||||
|
||||
The @code{rootn} functions are from TS 18661-4:2015 (which used
|
||||
@code{intmax_t} as the type of @var{n}; the type changed to
|
||||
@code{long long int} in C23).
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun double expm1 (double @var{x})
|
||||
@deftypefunx float expm1f (float @var{x})
|
||||
@deftypefunx {long double} expm1l (long double @var{x})
|
||||
|
|
|
|||
|
|
@ -142,6 +142,7 @@ gen-libm-calls = \
|
|||
s_nextdownF \
|
||||
s_pownF \
|
||||
s_powrF \
|
||||
s_rootnF \
|
||||
s_rsqrtF \
|
||||
s_significandF \
|
||||
s_sinpiF \
|
||||
|
|
@ -691,6 +692,7 @@ libm-test-funcs-auto = \
|
|||
pow \
|
||||
pown \
|
||||
powr \
|
||||
rootn \
|
||||
rsqrt \
|
||||
sin \
|
||||
sincos \
|
||||
|
|
@ -1028,6 +1030,7 @@ tgmath3-macros = \
|
|||
remainder \
|
||||
remquo \
|
||||
rint \
|
||||
rootn \
|
||||
round \
|
||||
roundeven \
|
||||
rsqrt \
|
||||
|
|
@ -1454,6 +1457,7 @@ CFLAGS-s_powr.c += -fno-builtin-powrl
|
|||
CFLAGS-w_remainder.c += -fno-builtin-remainderl -fno-builtin-dreml
|
||||
CFLAGS-s_remquo.c += -fno-builtin-remquol
|
||||
CFLAGS-s_rint.c += -fno-builtin-rintl
|
||||
CFLAGS-s_rootn.c += -fno-builtin-rootnl
|
||||
CFLAGS-s_round.c += -fno-builtin-roundl
|
||||
CFLAGS-s_roundeven.c += -fno-builtin-roundevenl
|
||||
CFLAGS-s_rsqrt.c += -fno-builtin-rsqrtl
|
||||
|
|
@ -1592,6 +1596,7 @@ CFLAGS-s_powr.c += -fno-builtin-powrf32x -fno-builtin-powrf64
|
|||
CFLAGS-w_remainder.c += -fno-builtin-remainderf32x -fno-builtin-remainderf64
|
||||
CFLAGS-s_remquo.c += -fno-builtin-remquof32x -fno-builtin-remquof64
|
||||
CFLAGS-s_rint.c += -fno-builtin-rintf32x -fno-builtin-rintf64
|
||||
CFLAGS-s_rootn.c += -fno-builtin-rootnf32x -fno-builtin-rootnf64
|
||||
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
|
||||
|
|
@ -1721,6 +1726,7 @@ CFLAGS-s_powrf.c += -fno-builtin-powrf32
|
|||
CFLAGS-w_remainderf.c += -fno-builtin-remainderf32
|
||||
CFLAGS-s_remquof.c += -fno-builtin-remquof32
|
||||
CFLAGS-s_rintf.c += -fno-builtin-rintf32
|
||||
CFLAGS-s_rootnf.c += -fno-builtin-rootnf32
|
||||
CFLAGS-s_roundf.c += -fno-builtin-roundf32
|
||||
CFLAGS-s_roundevenf.c += -fno-builtin-roundevenf32
|
||||
CFLAGS-s_rsqrtf.c += -fno-builtin-rsqrtf32
|
||||
|
|
|
|||
|
|
@ -677,11 +677,13 @@ libm {
|
|||
compoundnf32; compoundnf64; compoundnf32x;
|
||||
pown; pownf; pownl; pownf32; pownf64; pownf32x;
|
||||
powr; powrf; powrl; powrf32; powrf64; powrf32x;
|
||||
rootn; rootnf; rootnl; rootnf32; rootnf64; rootnf32x;
|
||||
rsqrt; rsqrtf; rsqrtl; rsqrtf32; rsqrtf64; rsqrtf32x;
|
||||
# Functions involving _Float64x or _Float128, for some configurations.
|
||||
compoundnf64x; compoundnf128;
|
||||
pownf64x; pownf128;
|
||||
powrf64x; powrf128;
|
||||
rootnf64x; rootnf128;
|
||||
rsqrtf64x; rsqrtf128;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9050,6 +9050,224 @@ powr 0xd.73035p-4 -0x1.47bb8p+8
|
|||
powr 0x1.059c76p+0 0x1.ff80bep+11
|
||||
powr 0x1.7ac7cp+5 23
|
||||
|
||||
rootn 0 1
|
||||
rootn 0 2
|
||||
rootn 0 3
|
||||
rootn 0 4
|
||||
rootn 0 5
|
||||
rootn 0 0x7fffffffffffffff
|
||||
rootn -0 1
|
||||
rootn -0 2
|
||||
rootn -0 3
|
||||
rootn -0 4
|
||||
rootn -0 5
|
||||
rootn -0 0x7fffffffffffffff
|
||||
|
||||
rootn min 1
|
||||
rootn min 2
|
||||
rootn min 3
|
||||
rootn min 4
|
||||
rootn min 5
|
||||
rootn min 63
|
||||
rootn min 127
|
||||
rootn min 255
|
||||
rootn min 511
|
||||
rootn min 1023
|
||||
rootn min 16383
|
||||
rootn min 0x1000001
|
||||
rootn min 0x10000000000001
|
||||
rootn min 0x7fffffffffffffff
|
||||
rootn -min 1
|
||||
rootn -min 3
|
||||
rootn -min 5
|
||||
rootn -min 63
|
||||
rootn -min 127
|
||||
rootn -min 255
|
||||
rootn -min 511
|
||||
rootn -min 1023
|
||||
rootn -min 16383
|
||||
rootn -min 0x1000001
|
||||
rootn -min 0x10000000000001
|
||||
rootn -min 0x7fffffffffffffff
|
||||
|
||||
rootn min -1
|
||||
rootn min -2
|
||||
rootn min -3
|
||||
rootn min -4
|
||||
rootn min -5
|
||||
rootn min -63
|
||||
rootn min -127
|
||||
rootn min -255
|
||||
rootn min -511
|
||||
rootn min -1023
|
||||
rootn min -16383
|
||||
rootn min -0x1000001
|
||||
rootn min -0x10000000000001
|
||||
rootn min -0x7fffffffffffffff
|
||||
rootn -min -1
|
||||
rootn -min -3
|
||||
rootn -min -5
|
||||
rootn -min -63
|
||||
rootn -min -127
|
||||
rootn -min -255
|
||||
rootn -min -511
|
||||
rootn -min -1023
|
||||
rootn -min -16383
|
||||
rootn -min -0x1000001
|
||||
rootn -min -0x10000000000001
|
||||
rootn -min -0x7fffffffffffffff
|
||||
|
||||
rootn min_subnorm 1
|
||||
rootn min_subnorm 2
|
||||
rootn min_subnorm 3
|
||||
rootn min_subnorm 4
|
||||
rootn min_subnorm 5
|
||||
rootn min_subnorm 63
|
||||
rootn min_subnorm 127
|
||||
rootn min_subnorm 255
|
||||
rootn min_subnorm 511
|
||||
rootn min_subnorm 1023
|
||||
rootn min_subnorm 16383
|
||||
rootn min_subnorm 0x1000001
|
||||
rootn min_subnorm 0x10000000000001
|
||||
rootn min_subnorm 0x7fffffffffffffff
|
||||
rootn -min_subnorm 1
|
||||
rootn -min_subnorm 3
|
||||
rootn -min_subnorm 5
|
||||
rootn -min_subnorm 63
|
||||
rootn -min_subnorm 127
|
||||
rootn -min_subnorm 255
|
||||
rootn -min_subnorm 511
|
||||
rootn -min_subnorm 1023
|
||||
rootn -min_subnorm 16383
|
||||
rootn -min_subnorm 0x1000001
|
||||
rootn -min_subnorm 0x10000000000001
|
||||
rootn -min_subnorm 0x7fffffffffffffff
|
||||
|
||||
rootn min_subnorm -1
|
||||
rootn min_subnorm -2
|
||||
rootn min_subnorm -3
|
||||
rootn min_subnorm -4
|
||||
rootn min_subnorm -5
|
||||
rootn min_subnorm -63
|
||||
rootn min_subnorm -127
|
||||
rootn min_subnorm -255
|
||||
rootn min_subnorm -511
|
||||
rootn min_subnorm -1023
|
||||
rootn min_subnorm -16383
|
||||
rootn min_subnorm -0x1000001
|
||||
rootn min_subnorm -0x10000000000001
|
||||
rootn min_subnorm -0x7fffffffffffffff
|
||||
rootn -min_subnorm -1
|
||||
rootn -min_subnorm -3
|
||||
rootn -min_subnorm -5
|
||||
rootn -min_subnorm -63
|
||||
rootn -min_subnorm -127
|
||||
rootn -min_subnorm -255
|
||||
rootn -min_subnorm -511
|
||||
rootn -min_subnorm -1023
|
||||
rootn -min_subnorm -16383
|
||||
rootn -min_subnorm -0x1000001
|
||||
rootn -min_subnorm -0x10000000000001
|
||||
rootn -min_subnorm -0x7fffffffffffffff
|
||||
|
||||
rootn max 1
|
||||
rootn max 2
|
||||
rootn max 3
|
||||
rootn max 4
|
||||
rootn max 5
|
||||
rootn max 63
|
||||
rootn max 127
|
||||
rootn max 255
|
||||
rootn max 511
|
||||
rootn max 1023
|
||||
rootn max 16383
|
||||
rootn max 0x1000001
|
||||
rootn max 0x10000000000001
|
||||
rootn max 0x7fffffffffffffff
|
||||
rootn -max 1
|
||||
rootn -max 3
|
||||
rootn -max 5
|
||||
rootn -max 63
|
||||
rootn -max 127
|
||||
rootn -max 255
|
||||
rootn -max 511
|
||||
rootn -max 1023
|
||||
rootn -max 16383
|
||||
rootn -max 0x1000001
|
||||
rootn -max 0x10000000000001
|
||||
rootn -max 0x7fffffffffffffff
|
||||
|
||||
rootn max -1
|
||||
rootn max -2
|
||||
rootn max -3
|
||||
rootn max -4
|
||||
rootn max -5
|
||||
rootn max -63
|
||||
rootn max -127
|
||||
rootn max -255
|
||||
rootn max -511
|
||||
rootn max -1023
|
||||
rootn max -16383
|
||||
rootn max -0x1000001
|
||||
rootn max -0x10000000000001
|
||||
rootn max -0x7fffffffffffffff
|
||||
rootn -max -1
|
||||
rootn -max -3
|
||||
rootn -max -5
|
||||
rootn -max -63
|
||||
rootn -max -127
|
||||
rootn -max -255
|
||||
rootn -max -511
|
||||
rootn -max -1023
|
||||
rootn -max -16383
|
||||
rootn -max -0x1000001
|
||||
rootn -max -0x10000000000001
|
||||
rootn -max -0x7fffffffffffffff
|
||||
|
||||
rootn 1 123
|
||||
rootn 1 -123
|
||||
rootn 1 1234
|
||||
rootn 1 -1234
|
||||
rootn -1 123
|
||||
rootn -1 -123
|
||||
|
||||
rootn 2 123
|
||||
rootn 2 -123
|
||||
rootn 2 1234
|
||||
rootn 2 -1234
|
||||
rootn -2 123
|
||||
rootn -2 -123
|
||||
|
||||
rootn 0x1.234p50 123
|
||||
rootn 0x1.234p50 -123
|
||||
rootn 0x1.234p50 1234
|
||||
rootn 0x1.234p50 -1234
|
||||
rootn -0x1.234p50 123
|
||||
rootn -0x1.234p50 -123
|
||||
|
||||
rootn 0x1.234p500 123
|
||||
rootn 0x1.234p500 -123
|
||||
rootn 0x1.234p500 1234
|
||||
rootn 0x1.234p500 -1234
|
||||
rootn -0x1.234p500 123
|
||||
rootn -0x1.234p500 -123
|
||||
|
||||
rootn 0x9.8765p5000 123
|
||||
rootn 0x9.8765p5000 -123
|
||||
rootn 0x9.8765p5000 1234
|
||||
rootn 0x9.8765p5000 -1234
|
||||
rootn 0x9.8765p5000 12345
|
||||
rootn 0x9.8765p5000 -12345
|
||||
rootn 0x9.8765p5000 1234567
|
||||
rootn 0x9.8765p5000 -1234567
|
||||
rootn -0x9.8765p5000 123
|
||||
rootn -0x9.8765p5000 -123
|
||||
rootn -0x9.8765p5000 12345
|
||||
rootn -0x9.8765p5000 -12345
|
||||
rootn -0x9.8765p5000 1234567
|
||||
rootn -0x9.8765p5000 -1234567
|
||||
|
||||
rsqrt 2209
|
||||
rsqrt 4
|
||||
rsqrt 2
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -195,6 +195,9 @@ __MATHCALL (pown,, (_Mdouble_ __x, long long int __y));
|
|||
/* Return X to the Y power. */
|
||||
__MATHCALL (powr,, (_Mdouble_ __x, _Mdouble_ __y));
|
||||
|
||||
/* Return the Yth root of X. */
|
||||
__MATHCALL (rootn,, (_Mdouble_ __x, long long int __y));
|
||||
|
||||
/* Return the reciprocal of the square root of X. */
|
||||
__MATHCALL (rsqrt,, (_Mdouble_ __x));
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -599,6 +599,7 @@ static test_function test_functions[] =
|
|||
FUNC_mpfr_ff_f ("pow", mpfr_pow, false),
|
||||
FUNC_mpfr_fL_f ("pown", mpfr_pow_si, false),
|
||||
FUNC_mpfr_ff_f ("powr", mpfr_powr, false),
|
||||
FUNC_mpfr_fL_f ("rootn", mpfr_rootn_si, 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),
|
||||
|
|
|
|||
|
|
@ -756,6 +756,7 @@ class Tests(object):
|
|||
self.add_tests('logp1', 'r', ['r'])
|
||||
self.add_tests('pown', 'r', ['r', 'long long int'])
|
||||
self.add_tests('powr', 'r', ['r', 'r'])
|
||||
self.add_tests('rootn', 'r', ['r', 'long long int'])
|
||||
self.add_tests('rsqrt', 'r', ['r'])
|
||||
self.add_tests('sinpi', 'r', ['r'])
|
||||
self.add_tests('tanpi', 'r', ['r'])
|
||||
|
|
|
|||
|
|
@ -0,0 +1,159 @@
|
|||
/* Test rootn.
|
||||
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_fL_f_data rootn_test_data[] =
|
||||
{
|
||||
TEST_fL_f (rootn, qnan_value, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -qnan_value, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, snan_value, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -snan_value, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, plus_infty, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, minus_infty, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, plus_zero, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, minus_zero, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, min_value, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -min_value, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, min_subnorm_value, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -min_subnorm_value, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, max_value, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -max_value, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
|
||||
TEST_fL_f (rootn, -min_subnorm_value, 2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -min_subnorm_value, 4, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -min_subnorm_value, 0x7ffffffffffffffeLL, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -min_value, 2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -min_value, 4, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -min_value, 0x7ffffffffffffffeLL, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -1.0, 2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -1.0, 4, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -1.0, 0x7ffffffffffffffeLL, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -max_value, 2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -max_value, 4, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -max_value, 0x7ffffffffffffffeLL, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, minus_infty, 2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, minus_infty, 4, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, minus_infty, 0x7ffffffffffffffeLL, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
|
||||
TEST_fL_f (rootn, -min_subnorm_value, -2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -min_subnorm_value, -4, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -min_subnorm_value, LLONG_MIN, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -min_value, -2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -min_value, -4, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -min_value, LLONG_MIN, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -1.0, -2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -1.0, -4, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -1.0, LLONG_MIN, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -max_value, -2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -max_value, -4, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, -max_value, LLONG_MIN, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, minus_infty, -2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, minus_infty, -4, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_fL_f (rootn, minus_infty, LLONG_MIN, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
|
||||
TEST_fL_f (rootn, qnan_value, 1, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, -qnan_value, 1, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, qnan_value, -1, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, -qnan_value, -1, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, qnan_value, 2, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, -qnan_value, 2, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, qnan_value, -2, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, -qnan_value, -2, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, qnan_value, 3, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, -qnan_value, 3, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, qnan_value, -3, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, -qnan_value, -3, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, qnan_value, LLONG_MAX, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, -qnan_value, LLONG_MAX, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, qnan_value, LLONG_MIN, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, -qnan_value, LLONG_MIN, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
|
||||
TEST_fL_f (rootn, snan_value, 1, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_fL_f (rootn, -snan_value, 1, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_fL_f (rootn, snan_value, -1, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_fL_f (rootn, -snan_value, -1, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_fL_f (rootn, snan_value, 2, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_fL_f (rootn, -snan_value, 2, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_fL_f (rootn, snan_value, -2, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_fL_f (rootn, -snan_value, -2, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_fL_f (rootn, snan_value, 3, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_fL_f (rootn, -snan_value, 3, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_fL_f (rootn, snan_value, -3, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_fL_f (rootn, -snan_value, -3, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_fL_f (rootn, snan_value, LLONG_MAX, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_fL_f (rootn, -snan_value, LLONG_MAX, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_fL_f (rootn, snan_value, LLONG_MIN, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_fL_f (rootn, -snan_value, LLONG_MIN, qnan_value, INVALID_EXCEPTION),
|
||||
|
||||
TEST_fL_f (rootn, plus_zero, -1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_fL_f (rootn, minus_zero, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_fL_f (rootn, plus_zero, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_fL_f (rootn, minus_zero, -2, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_fL_f (rootn, plus_zero, -3, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_fL_f (rootn, minus_zero, -3, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_fL_f (rootn, plus_zero, -4, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_fL_f (rootn, minus_zero, -4, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_fL_f (rootn, plus_zero, -5, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_fL_f (rootn, minus_zero, -5, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_fL_f (rootn, plus_zero, LLONG_MIN, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_fL_f (rootn, minus_zero, LLONG_MIN, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
|
||||
TEST_fL_f (rootn, plus_infty, 1, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, minus_infty, 1, minus_infty, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, plus_infty, 2, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, plus_infty, 3, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, minus_infty, 3, minus_infty, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, plus_infty, 4, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, plus_infty, 5, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, minus_infty, 5, minus_infty, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, plus_infty, LLONG_MAX, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, minus_infty, LLONG_MAX, minus_infty, ERRNO_UNCHANGED),
|
||||
|
||||
TEST_fL_f (rootn, plus_infty, -1, plus_zero, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, minus_infty, -1, minus_zero, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, plus_infty, -2, plus_zero, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, plus_infty, -3, plus_zero, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, minus_infty, -3, minus_zero, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, plus_infty, -4, plus_zero, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, plus_infty, -5, plus_zero, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, minus_infty, -5, minus_zero, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, plus_infty, -0x7fffffffffffffffLL, plus_zero, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, minus_infty, -0x7fffffffffffffffLL, minus_zero, ERRNO_UNCHANGED),
|
||||
TEST_fL_f (rootn, plus_infty, LLONG_MIN, plus_zero, ERRNO_UNCHANGED),
|
||||
|
||||
AUTO_TESTS_fL_f (rootn),
|
||||
};
|
||||
|
||||
static void
|
||||
rootn_test (void)
|
||||
{
|
||||
ALL_RM_TEST (rootn, 0, rootn_test_data, RUN_TEST_LOOP_fL_f, END);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (void)
|
||||
{
|
||||
rootn_test ();
|
||||
}
|
||||
|
||||
/*
|
||||
* Local Variables:
|
||||
* mode:c
|
||||
* End:
|
||||
*/
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
/* Return the Yth root of X for integer Y.
|
||||
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 <limits.h>
|
||||
#include <math.h>
|
||||
#include <math-narrow-eval.h>
|
||||
#include <math_private.h>
|
||||
|
||||
|
||||
FLOAT
|
||||
M_DECL_FUNC (__rootn) (FLOAT x, long long int y)
|
||||
{
|
||||
if (y == 0)
|
||||
{
|
||||
/* This is a domain error even if X is a NaN. */
|
||||
__set_errno (EDOM);
|
||||
return M_LIT (0.0) / M_LIT (0.0);
|
||||
}
|
||||
if (isnan (x))
|
||||
return x + x;
|
||||
if (x < 0 && (y & 1) == 0)
|
||||
{
|
||||
__set_errno (EDOM);
|
||||
return (x - x) / (x - x);
|
||||
}
|
||||
if (isinf (x))
|
||||
/* If X is negative, then Y is odd. */
|
||||
return y > 0 ? x : M_LIT (1.0) / x;
|
||||
if (x == M_LIT (0.0))
|
||||
{
|
||||
if (y > 0)
|
||||
return (y & 1) == 0 ? M_LIT (0.0) : x;
|
||||
else
|
||||
{
|
||||
__set_errno (ERANGE);
|
||||
return M_LIT (1.0) / ((y & 1) == 0 ? M_LIT (0.0) : x);
|
||||
}
|
||||
}
|
||||
if (y == 1)
|
||||
return x;
|
||||
if (y == -1)
|
||||
{
|
||||
/* Overflow is possible in this case (and underflow, though not
|
||||
underflow to zero). */
|
||||
FLOAT ret = math_narrow_eval (M_LIT (1.0) / x);
|
||||
if (isinf (ret))
|
||||
__set_errno (ERANGE);
|
||||
return ret;
|
||||
}
|
||||
/* Now X is finite and no overflow or underflow (or results even
|
||||
close to overflowing or underflowing) is possible. If X is
|
||||
negative, then Y is odd; the result should have the sign of X. */
|
||||
if (y >= 4 * M_MAX_EXP || y <= -4 * M_MAX_EXP)
|
||||
/* No extra precision is needed in computing the exponent; it is
|
||||
OK if Y cannot be exactly represented in type FLOAT. */
|
||||
return M_COPYSIGN (M_SUF (__ieee754_pow) (M_FABS (x), M_LIT (1.0) / y), x);
|
||||
/* Compute 1 / Y with extra precision. Y can be exactly represented
|
||||
in type FLOAT. */
|
||||
FLOAT qhi, qlo;
|
||||
qhi = math_narrow_eval (M_LIT (1.0) / y);
|
||||
qlo = M_SUF (fma) (-qhi, y, 1.0) / y;
|
||||
return M_COPYSIGN (M_SUF (__ieee754_pow) (M_FABS (x), qhi)
|
||||
* M_SUF (__ieee754_pow) (M_FABS (x), qlo), x);
|
||||
}
|
||||
declare_mgen_alias (__rootn, rootn);
|
||||
|
|
@ -48,7 +48,7 @@ volatile int count_cdouble;
|
|||
volatile int count_cfloat;
|
||||
volatile int count_cldouble;
|
||||
|
||||
#define NCALLS 192
|
||||
#define NCALLS 194
|
||||
#define NCALLS_INT 4
|
||||
#define NCCALLS 47
|
||||
|
||||
|
|
@ -270,6 +270,7 @@ F(compile_test) (void)
|
|||
a = pow (pow (x, a), pow (c, b));
|
||||
b = pown (pown (x, k), k);
|
||||
b = compoundn (compoundn (x, k), k);
|
||||
b = rootn (rootn (x, k), k);
|
||||
a = powr (powr (x, a), powr (c, b));
|
||||
b = sqrt (sqrt (a));
|
||||
a = rsqrt (rsqrt (b));
|
||||
|
|
@ -399,6 +400,7 @@ F(compile_test) (void)
|
|||
a = pow (y, y);
|
||||
a = pown (y, 12345);
|
||||
a = compoundn (y, 12345);
|
||||
a = rootn (y, 12345);
|
||||
a = powr (y, y);
|
||||
a = sqrt (y);
|
||||
a = rsqrt (y);
|
||||
|
|
@ -801,6 +803,14 @@ TYPE
|
|||
return x + y;
|
||||
}
|
||||
|
||||
TYPE
|
||||
(F(rootn)) (TYPE x, long long int y)
|
||||
{
|
||||
++count;
|
||||
P ();
|
||||
return x + y;
|
||||
}
|
||||
|
||||
TYPE
|
||||
(F(sqrt)) (TYPE x)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -934,6 +934,9 @@
|
|||
/* Return X to the Y power. */
|
||||
# define powr(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, powr)
|
||||
|
||||
/* Return the Yth root of X. */
|
||||
# define rootn(Val1, Val2) __TGMATH_BINARY_FIRST_REAL_ONLY (Val1, Val2, rootn)
|
||||
|
||||
/* Return 1/sqrt(X). */
|
||||
# define rsqrt(Val) __TGMATH_UNARY_REAL_ONLY (Val, rsqrt)
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@ libm {
|
|||
__compoundnieee128;
|
||||
__pownieee128;
|
||||
__powrieee128;
|
||||
__rootnieee128;
|
||||
__rsqrtieee128;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -181,6 +181,7 @@ libnldbl-calls = \
|
|||
remainder \
|
||||
remquo \
|
||||
rint \
|
||||
rootn \
|
||||
round \
|
||||
roundeven \
|
||||
rsqrt \
|
||||
|
|
@ -384,6 +385,7 @@ CFLAGS-nldbl-powr.c = -fno-builtin-powrl
|
|||
CFLAGS-nldbl-remainder.c = -fno-builtin-remainderl -fno-builtin-dreml
|
||||
CFLAGS-nldbl-remquo.c = -fno-builtin-remquol
|
||||
CFLAGS-nldbl-rint.c = -fno-builtin-rintl
|
||||
CFLAGS-nldbl-rootn.c = -fno-builtin-rootnl
|
||||
CFLAGS-nldbl-round.c = -fno-builtin-roundl
|
||||
CFLAGS-nldbl-roundeven.c = -fno-builtin-roundevenl
|
||||
CFLAGS-nldbl-rsqrt.c = -fno-builtin-rsqrtl
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
#include "nldbl-compat.h"
|
||||
|
||||
double
|
||||
attribute_hidden
|
||||
rootnl (double x, long long int y)
|
||||
{
|
||||
return rootn (x, y);
|
||||
}
|
||||
|
|
@ -1301,6 +1301,14 @@ GLIBC_2.42 powrf32x F
|
|||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrf64x F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf128 F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnf64x F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf128 F
|
||||
|
|
|
|||
|
|
@ -1158,6 +1158,14 @@ GLIBC_2.42 powrf32x F
|
|||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrf64x F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf128 F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnf64x F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf128 F
|
||||
|
|
|
|||
|
|
@ -1269,6 +1269,14 @@ GLIBC_2.42 powrf32x F
|
|||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrf64x F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf128 F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnf64x F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf128 F
|
||||
|
|
|
|||
|
|
@ -1428,6 +1428,14 @@ GLIBC_2.42 powrf32x F
|
|||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrf64x F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf128 F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnf64x F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf128 F
|
||||
|
|
|
|||
|
|
@ -847,6 +847,12 @@ GLIBC_2.42 powrf32 F
|
|||
GLIBC_2.42 powrf32x F
|
||||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf32 F
|
||||
|
|
|
|||
|
|
@ -938,6 +938,12 @@ GLIBC_2.42 powrf32 F
|
|||
GLIBC_2.42 powrf32x F
|
||||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf32 F
|
||||
|
|
|
|||
|
|
@ -938,6 +938,12 @@ GLIBC_2.42 powrf32 F
|
|||
GLIBC_2.42 powrf32x F
|
||||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf32 F
|
||||
|
|
|
|||
|
|
@ -913,6 +913,12 @@ GLIBC_2.42 powrf32 F
|
|||
GLIBC_2.42 powrf32x F
|
||||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf32 F
|
||||
|
|
|
|||
|
|
@ -938,6 +938,12 @@ GLIBC_2.42 powrf32 F
|
|||
GLIBC_2.42 powrf32x F
|
||||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf32 F
|
||||
|
|
|
|||
|
|
@ -1308,6 +1308,14 @@ GLIBC_2.42 powrf32x F
|
|||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrf64x F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf128 F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnf64x F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf128 F
|
||||
|
|
|
|||
|
|
@ -1148,6 +1148,14 @@ GLIBC_2.42 powrf32x F
|
|||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrf64x F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf128 F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnf64x F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf128 F
|
||||
|
|
|
|||
|
|
@ -938,6 +938,12 @@ GLIBC_2.42 powrf32 F
|
|||
GLIBC_2.42 powrf32x F
|
||||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf32 F
|
||||
|
|
|
|||
|
|
@ -974,6 +974,12 @@ GLIBC_2.42 powrf32 F
|
|||
GLIBC_2.42 powrf32x F
|
||||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf32 F
|
||||
|
|
|
|||
|
|
@ -938,6 +938,12 @@ GLIBC_2.42 powrf32 F
|
|||
GLIBC_2.42 powrf32x F
|
||||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf32 F
|
||||
|
|
|
|||
|
|
@ -938,6 +938,12 @@ GLIBC_2.42 powrf32 F
|
|||
GLIBC_2.42 powrf32x F
|
||||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf32 F
|
||||
|
|
|
|||
|
|
@ -938,6 +938,12 @@ GLIBC_2.42 powrf32 F
|
|||
GLIBC_2.42 powrf32x F
|
||||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf32 F
|
||||
|
|
|
|||
|
|
@ -1269,6 +1269,14 @@ GLIBC_2.42 powrf32x F
|
|||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrf64x F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf128 F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnf64x F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf128 F
|
||||
|
|
|
|||
|
|
@ -847,6 +847,12 @@ GLIBC_2.42 powrf32 F
|
|||
GLIBC_2.42 powrf32x F
|
||||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf32 F
|
||||
|
|
|
|||
|
|
@ -1085,6 +1085,12 @@ GLIBC_2.42 powrf32 F
|
|||
GLIBC_2.42 powrf32x F
|
||||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf32 F
|
||||
|
|
|
|||
|
|
@ -1084,6 +1084,12 @@ GLIBC_2.42 powrf32 F
|
|||
GLIBC_2.42 powrf32x F
|
||||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf32 F
|
||||
|
|
|
|||
|
|
@ -1078,6 +1078,12 @@ GLIBC_2.42 powrf32 F
|
|||
GLIBC_2.42 powrf32x F
|
||||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf32 F
|
||||
|
|
|
|||
|
|
@ -1432,6 +1432,7 @@ GLIBC_2.41 tanpil F
|
|||
GLIBC_2.42 __compoundnieee128 F
|
||||
GLIBC_2.42 __pownieee128 F
|
||||
GLIBC_2.42 __powrieee128 F
|
||||
GLIBC_2.42 __rootnieee128 F
|
||||
GLIBC_2.42 __rsqrtieee128 F
|
||||
GLIBC_2.42 compoundn F
|
||||
GLIBC_2.42 compoundnf F
|
||||
|
|
@ -1457,6 +1458,14 @@ GLIBC_2.42 powrf32x F
|
|||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrf64x F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf128 F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnf64x F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf128 F
|
||||
|
|
|
|||
|
|
@ -1148,6 +1148,14 @@ GLIBC_2.42 powrf32x F
|
|||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrf64x F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf128 F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnf64x F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf128 F
|
||||
|
|
|
|||
|
|
@ -1245,6 +1245,14 @@ GLIBC_2.42 powrf32x F
|
|||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrf64x F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf128 F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnf64x F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf128 F
|
||||
|
|
|
|||
|
|
@ -1372,6 +1372,14 @@ GLIBC_2.42 powrf32x F
|
|||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrf64x F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf128 F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnf64x F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf128 F
|
||||
|
|
|
|||
|
|
@ -1372,6 +1372,14 @@ GLIBC_2.42 powrf32x F
|
|||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrf64x F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf128 F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnf64x F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf128 F
|
||||
|
|
|
|||
|
|
@ -938,6 +938,12 @@ GLIBC_2.42 powrf32 F
|
|||
GLIBC_2.42 powrf32x F
|
||||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf32 F
|
||||
|
|
|
|||
|
|
@ -938,6 +938,12 @@ GLIBC_2.42 powrf32 F
|
|||
GLIBC_2.42 powrf32x F
|
||||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf32 F
|
||||
|
|
|
|||
|
|
@ -1379,6 +1379,14 @@ GLIBC_2.42 powrf32x F
|
|||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrf64x F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf128 F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnf64x F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf128 F
|
||||
|
|
|
|||
|
|
@ -1269,6 +1269,14 @@ GLIBC_2.42 powrf32x F
|
|||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrf64x F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf128 F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnf64x F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf128 F
|
||||
|
|
|
|||
|
|
@ -1302,6 +1302,14 @@ GLIBC_2.42 powrf32x F
|
|||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrf64x F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf128 F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnf64x F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf128 F
|
||||
|
|
|
|||
|
|
@ -1302,6 +1302,14 @@ GLIBC_2.42 powrf32x F
|
|||
GLIBC_2.42 powrf64 F
|
||||
GLIBC_2.42 powrf64x F
|
||||
GLIBC_2.42 powrl F
|
||||
GLIBC_2.42 rootn F
|
||||
GLIBC_2.42 rootnf F
|
||||
GLIBC_2.42 rootnf128 F
|
||||
GLIBC_2.42 rootnf32 F
|
||||
GLIBC_2.42 rootnf32x F
|
||||
GLIBC_2.42 rootnf64 F
|
||||
GLIBC_2.42 rootnf64x F
|
||||
GLIBC_2.42 rootnl F
|
||||
GLIBC_2.42 rsqrt F
|
||||
GLIBC_2.42 rsqrtf F
|
||||
GLIBC_2.42 rsqrtf128 F
|
||||
|
|
|
|||
Loading…
Reference in New Issue