mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-08 06:10:06 +00:00
Implement C23 log2p1
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the log2p1 functions (log2(1+x): like log1p, but for base-2 logarithms). This illustrates the intended structure of implementations of all these function families: define them initially with a type-generic template implementation. If someone wishes to add type-specific implementations, it is likely such implementations can be both faster and more accurate than the type-generic one and can then override it for types for which they are implemented (adding benchmarks would be desirable in such cases to demonstrate that a new implementation is indeed faster). The test inputs are copied from those for log1p. Note that these changes make gen-auto-libm-tests depend on MPFR 4.2 (or later). The bulk of the changes are fairly generic for any such new function. (sysdeps/powerpc/nofpu/Makefile only needs changing for those type-generic templates that use fabs.) Tested for x86_64 and x86, and with build-many-glibcs.py.
This commit is contained in:
parent
cf0ca8d52e
commit
79c52daf47
7
NEWS
7
NEWS
@ -21,6 +21,13 @@ Major new features:
|
||||
by _GNU_SOURCE, or by compiling with the GCC options -std=c23,
|
||||
-std=gnu23, -std=c2x or -std=gnu2x.
|
||||
|
||||
* 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>.
|
||||
|
||||
- Logarithmic functions: log2p1.
|
||||
|
||||
* A new tunable, glibc.rtld.enable_secure, used to run a program
|
||||
as if it were a setuid process. This is currently a testing tool to allow
|
||||
more extensive verification tests for AT_SECURE programs and not meant to
|
||||
|
@ -754,6 +754,20 @@ They are computed in a way that is accurate even if @var{x} is
|
||||
near zero.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun double log2p1 (double @var{x})
|
||||
@deftypefunx float log2p1f (float @var{x})
|
||||
@deftypefunx {long double} log2p1l (long double @var{x})
|
||||
@deftypefunx _FloatN log2p1fN (_Float@var{N} @var{x})
|
||||
@deftypefunx _FloatNx log2p1fNx (_Float@var{N}x @var{x})
|
||||
@standards{TS 18661-4:2015, math.h}
|
||||
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
|
||||
These functions return a value equivalent to @w{@code{log2 (1 + @var{x})}}.
|
||||
They are computed in a way that is accurate even if @var{x} is
|
||||
near zero.
|
||||
|
||||
The @code{log2p1} functions are from TS 18661-4:2015.
|
||||
@end deftypefun
|
||||
|
||||
@cindex complex exponentiation functions
|
||||
@cindex complex logarithm functions
|
||||
|
||||
|
@ -127,6 +127,7 @@ gen-libm-calls = \
|
||||
s_fminimum_numF \
|
||||
s_fminmagF \
|
||||
s_iseqsigF \
|
||||
s_log2p1F \
|
||||
s_nanF \
|
||||
s_nextdownF \
|
||||
s_significandF \
|
||||
@ -650,6 +651,7 @@ libm-test-funcs-auto = \
|
||||
log10 \
|
||||
log1p \
|
||||
log2 \
|
||||
log2p1 \
|
||||
pow \
|
||||
sin \
|
||||
sincos \
|
||||
@ -892,6 +894,7 @@ tgmath3-macros = \
|
||||
log10 \
|
||||
log1p \
|
||||
log2 \
|
||||
log2p1 \
|
||||
logb \
|
||||
lrint \
|
||||
lround \
|
||||
@ -1264,6 +1267,7 @@ CFLAGS-e_log.c += -fno-builtin-logl
|
||||
CFLAGS-w_log10.c += -fno-builtin-log10l
|
||||
CFLAGS-w_log1p.c += -fno-builtin-log1pl
|
||||
CFLAGS-e_log2.c += -fno-builtin-log2l
|
||||
CFLAGS-s_log2p1.c += -fno-builtin-log2p1l
|
||||
CFLAGS-s_logb.c += -fno-builtin-logbl
|
||||
CFLAGS-s_lrint.c += -fno-builtin-lrintl
|
||||
CFLAGS-s_lround.c += -fno-builtin-lroundl
|
||||
@ -1389,6 +1393,7 @@ CFLAGS-e_log.c += -fno-builtin-logf32x -fno-builtin-logf64
|
||||
CFLAGS-w_log10.c += -fno-builtin-log10f32x -fno-builtin-log10f64
|
||||
CFLAGS-w_log1p.c += -fno-builtin-log1pf32x -fno-builtin-log1pf64
|
||||
CFLAGS-e_log2.c += -fno-builtin-log2f32x -fno-builtin-log2f64
|
||||
CFLAGS-s_log2p1.c += -fno-builtin-log2p1f32x -fno-builtin-log2p1f64
|
||||
CFLAGS-s_logb.c += -fno-builtin-logbf32x -fno-builtin-logbf64
|
||||
CFLAGS-s_lrint.c += -fno-builtin-lrintf32x -fno-builtin-lrintf64
|
||||
CFLAGS-s_lround.c += -fno-builtin-lroundf32x -fno-builtin-lroundf64
|
||||
@ -1503,6 +1508,7 @@ CFLAGS-e_logf.c += -fno-builtin-logf32
|
||||
CFLAGS-w_log10f.c += -fno-builtin-log10f32
|
||||
CFLAGS-w_log1pf.c += -fno-builtin-log1pf32
|
||||
CFLAGS-e_log2f.c += -fno-builtin-log2f32
|
||||
CFLAGS-s_log2p1f.c += -fno-builtin-log2p1f32
|
||||
CFLAGS-s_logbf.c += -fno-builtin-logbf32
|
||||
CFLAGS-s_lrintf.c += -fno-builtin-lrintf32
|
||||
CFLAGS-s_lroundf.c += -fno-builtin-lroundf32
|
||||
|
@ -639,4 +639,10 @@ libm {
|
||||
# No SVID compatible error handling.
|
||||
exp10;
|
||||
}
|
||||
GLIBC_2.40 {
|
||||
# Functions not involving _Float64x or _Float128, for all configurations.
|
||||
log2p1; log2p1f; log2p1l; log2p1f32; log2p1f64; log2p1f32x;
|
||||
# Functions involving _Float64x or _Float128, for some configurations.
|
||||
log2p1f64x; log2p1f128;
|
||||
}
|
||||
}
|
||||
|
@ -6664,6 +6664,57 @@ log2 min
|
||||
log2 min_subnorm
|
||||
log2 max
|
||||
|
||||
log2p1 0
|
||||
log2p1 -0
|
||||
log2p1 e-1
|
||||
log2p1 -0.25
|
||||
log2p1 -0.875
|
||||
log2p1 0x1p-5
|
||||
log2p1 0x1p-10
|
||||
log2p1 0x1p-15
|
||||
log2p1 0x1p-20
|
||||
log2p1 0x1p-25
|
||||
log2p1 0x1p-30
|
||||
log2p1 0x1p-35
|
||||
log2p1 0x1p-40
|
||||
log2p1 0x1p-45
|
||||
log2p1 0x1p-50
|
||||
log2p1 0x1p-55
|
||||
log2p1 0x1p-60
|
||||
log2p1 0x1p-100
|
||||
log2p1 0x1p-600
|
||||
log2p1 0x1p-10000
|
||||
log2p1 min
|
||||
log2p1 min_subnorm
|
||||
log2p1 -min
|
||||
log2p1 -min_subnorm
|
||||
log2p1 0x1p10
|
||||
log2p1 0x1p20
|
||||
log2p1 0x1p30
|
||||
log2p1 0x1p50
|
||||
log2p1 0x1p60
|
||||
log2p1 0x1p100
|
||||
log2p1 0x1p1000
|
||||
log2p1 0x6.a0cf42befce9ed4085ef59254b48p-4
|
||||
log2p1 max
|
||||
|
||||
log2p1 0x7.2a4368p-4
|
||||
log2p1 0x6.d3a118p-4
|
||||
log2p1 0x5.03f228p+0
|
||||
log2p1 0x7.264963888ac9p-4
|
||||
log2p1 0x8.786bdp-4
|
||||
log2p1 0x7.89dc17790eeb4p-4
|
||||
log2p1 0x9.81ccf8887c24a7bp-4
|
||||
log2p1 0xa.5028608bd65f38dp-4
|
||||
log2p1 0x5.bf78873e20a2d468p-4
|
||||
log2p1 0x7.aa5198p-4
|
||||
log2p1 0x2.564fap+0
|
||||
log2p1 0x7.fc242a2235222ef8p-4
|
||||
log2p1 -0x4.f37d3c9ce0b14bdd86eb157df5d4p-4
|
||||
log2p1 0x7.2eca50c4d93196362b4f37f6e8dcp-4
|
||||
log2p1 -0x6.3fef3067427e43dfcde9e48f74bcp-4
|
||||
log2p1 0x6.af53d00fd2845d4772260ef5adc4p-4
|
||||
|
||||
mul 0 0
|
||||
mul 0 -0
|
||||
mul -0 0
|
||||
|
2713
math/auto-libm-test-out-log2p1
Normal file
2713
math/auto-libm-test-out-log2p1
Normal file
File diff suppressed because it is too large
Load Diff
@ -112,6 +112,9 @@ __MATHCALL (modf,, (_Mdouble_ __x, _Mdouble_ *__iptr)) __nonnull ((2));
|
||||
#if __GLIBC_USE (IEC_60559_FUNCS_EXT_C23)
|
||||
/* Compute exponent to base ten. */
|
||||
__MATHCALL_VEC (exp10,, (_Mdouble_ __x));
|
||||
|
||||
/* Return log2(1 + X). */
|
||||
__MATHCALL (log2p1,, (_Mdouble_ __x));
|
||||
#endif
|
||||
|
||||
#if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
|
||||
|
@ -580,6 +580,7 @@ static test_function test_functions[] =
|
||||
FUNC_mpfr_f_f ("log10", mpfr_log10, false),
|
||||
FUNC_mpfr_f_f ("log1p", mpfr_log1p, false),
|
||||
FUNC_mpfr_f_f ("log2", mpfr_log2, false),
|
||||
FUNC_mpfr_f_f ("log2p1", mpfr_log2p1, false),
|
||||
FUNC_mpfr_ff_f ("mul", mpfr_mul, true),
|
||||
FUNC_mpfr_ff_f ("pow", mpfr_pow, false),
|
||||
FUNC_mpfr_f_f ("sin", mpfr_sin, false),
|
||||
|
@ -743,6 +743,7 @@ class Tests(object):
|
||||
self.add_tests(prefix + fn, ret, ['r'] * args)
|
||||
# TS 18661-4 functions.
|
||||
self.add_tests('exp10', 'r', ['r'])
|
||||
self.add_tests('log2p1', 'r', ['r'])
|
||||
# C23 functions.
|
||||
self.add_tests('fmaximum', 'r', ['r', 'r'])
|
||||
self.add_tests('fmaximum_mag', 'r', ['r', 'r'])
|
||||
|
53
math/libm-test-log2p1.inc
Normal file
53
math/libm-test-log2p1.inc
Normal file
@ -0,0 +1,53 @@
|
||||
/* Test log2p1.
|
||||
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_f_f_data log2p1_test_data[] =
|
||||
{
|
||||
TEST_f_f (log2p1, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
|
||||
TEST_f_f (log2p1, -2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
TEST_f_f (log2p1, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM|XFAIL_ROUNDING_IBM128_LIBGCC),
|
||||
TEST_f_f (log2p1, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
|
||||
|
||||
TEST_f_f (log2p1, plus_infty, plus_infty, ERRNO_UNCHANGED),
|
||||
TEST_f_f (log2p1, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_f_f (log2p1, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
|
||||
TEST_f_f (log2p1, snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
TEST_f_f (log2p1, -snan_value, qnan_value, INVALID_EXCEPTION),
|
||||
|
||||
AUTO_TESTS_f_f (log2p1),
|
||||
};
|
||||
|
||||
static void
|
||||
log2p1_test (void)
|
||||
{
|
||||
ALL_RM_TEST (log2p1, 0, log2p1_test_data, RUN_TEST_LOOP_f_f, END);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (void)
|
||||
{
|
||||
log2p1_test ();
|
||||
}
|
||||
|
||||
/*
|
||||
* Local Variables:
|
||||
* mode:c
|
||||
* End:
|
||||
*/
|
43
math/s_log2p1_template.c
Normal file
43
math/s_log2p1_template.c
Normal file
@ -0,0 +1,43 @@
|
||||
/* Return base-2 logarithm of 1 + X.
|
||||
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-underflow.h>
|
||||
|
||||
FLOAT
|
||||
M_DECL_FUNC (__log2p1) (FLOAT x)
|
||||
{
|
||||
if (__glibc_unlikely (islessequal (x, M_LIT (-1.0))))
|
||||
{
|
||||
if (x == -1)
|
||||
__set_errno (ERANGE);
|
||||
else
|
||||
__set_errno (EDOM);
|
||||
}
|
||||
if (isless (M_FABS (x), M_EPSILON / 4))
|
||||
{
|
||||
/* Avoid spurious underflows when log1p underflows but log2p1
|
||||
should not. */
|
||||
FLOAT ret = M_MLIT (M_LOG2E) * x;
|
||||
math_check_force_underflow (ret);
|
||||
return ret;
|
||||
}
|
||||
return M_MLIT (M_LOG2E) * M_SUF (__log1p) (x);
|
||||
}
|
||||
declare_mgen_alias (__log2p1, log2p1);
|
@ -48,7 +48,7 @@ volatile int count_cdouble;
|
||||
volatile int count_cfloat;
|
||||
volatile int count_cldouble;
|
||||
|
||||
#define NCALLS 158
|
||||
#define NCALLS 160
|
||||
#define NCALLS_INT 4
|
||||
#define NCCALLS 47
|
||||
|
||||
@ -255,6 +255,7 @@ F(compile_test) (void)
|
||||
a = exp2 (exp2 (x));
|
||||
a = exp10 (exp10 (x));
|
||||
b = log2 (log2 (a));
|
||||
a = log2p1 (log2p1 (x));
|
||||
a = pow (pow (x, a), pow (c, b));
|
||||
b = sqrt (sqrt (a));
|
||||
a = hypot (hypot (x, b), hypot (c, a));
|
||||
@ -368,6 +369,7 @@ F(compile_test) (void)
|
||||
a = exp2 (y);
|
||||
a = exp10 (y);
|
||||
a = log2 (y);
|
||||
a = log2p1 (y);
|
||||
a = pow (y, y);
|
||||
a = sqrt (y);
|
||||
a = hypot (y, y);
|
||||
@ -641,6 +643,14 @@ TYPE
|
||||
return x;
|
||||
}
|
||||
|
||||
TYPE
|
||||
(F(log2p1)) (TYPE x)
|
||||
{
|
||||
++count;
|
||||
P ();
|
||||
return x;
|
||||
}
|
||||
|
||||
TYPE
|
||||
(F(pow)) (TYPE x, TYPE y)
|
||||
{
|
||||
|
@ -874,6 +874,9 @@
|
||||
#if __GLIBC_USE (IEC_60559_FUNCS_EXT_C23)
|
||||
/* Compute exponent to base ten. */
|
||||
#define exp10(Val) __TGMATH_UNARY_REAL_ONLY (Val, exp10)
|
||||
|
||||
/* Return log2(1 + X). */
|
||||
#define log2p1(Val) __TGMATH_UNARY_REAL_ONLY (Val, log2p1)
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -1424,6 +1424,30 @@ float: 1
|
||||
float128: 1
|
||||
ldouble: 1
|
||||
|
||||
Function: "log2p1":
|
||||
double: 1
|
||||
float: 1
|
||||
float128: 3
|
||||
ldouble: 2
|
||||
|
||||
Function: "log2p1_downward":
|
||||
double: 1
|
||||
float: 1
|
||||
float128: 3
|
||||
ldouble: 4
|
||||
|
||||
Function: "log2p1_towardzero":
|
||||
double: 1
|
||||
float: 1
|
||||
float128: 2
|
||||
ldouble: 4
|
||||
|
||||
Function: "log2p1_upward":
|
||||
double: 1
|
||||
float: 1
|
||||
float128: 2
|
||||
ldouble: 5
|
||||
|
||||
Function: "log_downward":
|
||||
double: 1
|
||||
float128: 1
|
||||
|
@ -137,6 +137,9 @@ libm {
|
||||
__fminimum_magieee128;
|
||||
__fminimum_mag_numieee128;
|
||||
}
|
||||
GLIBC_2.40 {
|
||||
__log2p1ieee128;
|
||||
}
|
||||
}
|
||||
libc {
|
||||
LDBL_IBM128_VERSION {
|
||||
|
@ -51,7 +51,8 @@ libnldbl-calls = asprintf dprintf fprintf fscanf fwprintf fwscanf iovfscanf \
|
||||
roundeven fromfp ufromfp fromfpx ufromfpx fadd dadd \
|
||||
fdiv ddiv ffma dfma fmul dmul fsqrt dsqrt fsub dsub \
|
||||
fmaximum fmaximum_mag fmaximum_num fmaximum_mag_num \
|
||||
fminimum fminimum_mag fminimum_num fminimum_mag_num
|
||||
fminimum fminimum_mag fminimum_num fminimum_mag_num \
|
||||
log2p1
|
||||
libnldbl-routines = $(libnldbl-calls:%=nldbl-%)
|
||||
libnldbl-inhibit-o = $(object-suffixes)
|
||||
libnldbl-static-only-routines = $(libnldbl-routines)
|
||||
@ -151,6 +152,7 @@ CFLAGS-nldbl-log.c = -fno-builtin-logl
|
||||
CFLAGS-nldbl-log10.c = -fno-builtin-log10l
|
||||
CFLAGS-nldbl-log1p.c = -fno-builtin-log1pl
|
||||
CFLAGS-nldbl-log2.c = -fno-builtin-log2l
|
||||
CFLAGS-nldbl-log2p1.c = -fno-builtin-log2p1l
|
||||
CFLAGS-nldbl-logb.c = -fno-builtin-logbl
|
||||
CFLAGS-nldbl-lrint.c = -fno-builtin-lrintl
|
||||
CFLAGS-nldbl-lround.c = -fno-builtin-lroundl
|
||||
|
8
sysdeps/ieee754/ldbl-opt/nldbl-log2p1.c
Normal file
8
sysdeps/ieee754/ldbl-opt/nldbl-log2p1.c
Normal file
@ -0,0 +1,8 @@
|
||||
#include "nldbl-compat.h"
|
||||
|
||||
double
|
||||
attribute_hidden
|
||||
log2p1l (double x)
|
||||
{
|
||||
return log2p1 (x);
|
||||
}
|
@ -1181,3 +1181,11 @@ GLIBC_2.35 fsqrt F
|
||||
GLIBC_2.35 fsqrtl F
|
||||
GLIBC_2.35 hypot F
|
||||
GLIBC_2.35 hypotf F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f128 F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1f64x F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -1038,3 +1038,11 @@ GLIBC_2.38 ynf32x F
|
||||
GLIBC_2.38 ynf64 F
|
||||
GLIBC_2.38 ynf64x F
|
||||
GLIBC_2.38 ynl F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f128 F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1f64x F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -54,4 +54,5 @@ CFLAGS-s_fmaximum_magl.c += -fno-builtin-fabsl
|
||||
CFLAGS-s_fmaximum_mag_numl.c += -fno-builtin-fabsl
|
||||
CFLAGS-s_fminimum_magl.c += -fno-builtin-fabsl
|
||||
CFLAGS-s_fminimum_mag_numl.c += -fno-builtin-fabsl
|
||||
CFLAGS-s_log2p1l.c += -fno-builtin-fabsl
|
||||
endif
|
||||
|
@ -1149,3 +1149,11 @@ GLIBC_2.35 hypotf F
|
||||
GLIBC_2.38 fmod F
|
||||
GLIBC_2.38 fmodf F
|
||||
GLIBC_2.39 exp10 F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f128 F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1f64x F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -1308,3 +1308,11 @@ GLIBC_2.4 truncl F
|
||||
GLIBC_2.4 y0l F
|
||||
GLIBC_2.4 y1l F
|
||||
GLIBC_2.4 ynl F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f128 F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1f64x F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -757,3 +757,9 @@ GLIBC_2.35 fminimumf64 F
|
||||
GLIBC_2.35 fminimuml F
|
||||
GLIBC_2.35 fsqrt F
|
||||
GLIBC_2.35 fsqrtl F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -848,3 +848,9 @@ GLIBC_2.4 y1l F
|
||||
GLIBC_2.4 yn F
|
||||
GLIBC_2.4 ynf F
|
||||
GLIBC_2.4 ynl F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -848,3 +848,9 @@ GLIBC_2.4 y1l F
|
||||
GLIBC_2.4 yn F
|
||||
GLIBC_2.4 ynf F
|
||||
GLIBC_2.4 ynl F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -823,3 +823,9 @@ GLIBC_2.35 fminimumf64 F
|
||||
GLIBC_2.35 fminimuml F
|
||||
GLIBC_2.35 fsqrt F
|
||||
GLIBC_2.35 fsqrtl F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -848,3 +848,9 @@ GLIBC_2.38 fmod F
|
||||
GLIBC_2.38 fmodf F
|
||||
GLIBC_2.39 exp10 F
|
||||
GLIBC_2.4 exp2l F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -1188,3 +1188,11 @@ GLIBC_2.35 fsqrt F
|
||||
GLIBC_2.35 fsqrtl F
|
||||
GLIBC_2.35 hypot F
|
||||
GLIBC_2.35 hypotf F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f128 F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1f64x F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -1028,3 +1028,11 @@ GLIBC_2.36 ynf32x F
|
||||
GLIBC_2.36 ynf64 F
|
||||
GLIBC_2.36 ynf64x F
|
||||
GLIBC_2.36 ynl F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f128 F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1f64x F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -848,3 +848,9 @@ GLIBC_2.4 y1l F
|
||||
GLIBC_2.4 yn F
|
||||
GLIBC_2.4 ynf F
|
||||
GLIBC_2.4 ynl F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -884,3 +884,9 @@ GLIBC_2.35 fsqrt F
|
||||
GLIBC_2.35 fsqrtl F
|
||||
GLIBC_2.35 hypot F
|
||||
GLIBC_2.35 hypotf F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -848,3 +848,9 @@ GLIBC_2.35 hypotf F
|
||||
GLIBC_2.38 fmod F
|
||||
GLIBC_2.38 fmodf F
|
||||
GLIBC_2.39 exp10 F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -848,3 +848,9 @@ GLIBC_2.35 hypotf F
|
||||
GLIBC_2.38 fmod F
|
||||
GLIBC_2.38 fmodf F
|
||||
GLIBC_2.39 exp10 F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -848,3 +848,9 @@ GLIBC_2.38 fmod F
|
||||
GLIBC_2.38 fmodf F
|
||||
GLIBC_2.39 exp10 F
|
||||
GLIBC_2.4 exp2l F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -1149,3 +1149,11 @@ GLIBC_2.35 hypotf F
|
||||
GLIBC_2.38 fmod F
|
||||
GLIBC_2.38 fmodf F
|
||||
GLIBC_2.39 exp10 F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f128 F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1f64x F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -848,3 +848,9 @@ GLIBC_2.35 hypotf F
|
||||
GLIBC_2.38 fmod F
|
||||
GLIBC_2.38 fmodf F
|
||||
GLIBC_2.39 exp10 F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -757,3 +757,9 @@ GLIBC_2.35 ynf32 F
|
||||
GLIBC_2.35 ynf32x F
|
||||
GLIBC_2.35 ynf64 F
|
||||
GLIBC_2.35 ynl F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -995,3 +995,9 @@ GLIBC_2.4 truncl F
|
||||
GLIBC_2.4 y0l F
|
||||
GLIBC_2.4 y1l F
|
||||
GLIBC_2.4 ynl F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -994,3 +994,9 @@ GLIBC_2.4 truncl F
|
||||
GLIBC_2.4 y0l F
|
||||
GLIBC_2.4 y1l F
|
||||
GLIBC_2.4 ynl F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -988,3 +988,9 @@ GLIBC_2.4 truncl F
|
||||
GLIBC_2.4 y0l F
|
||||
GLIBC_2.4 y1l F
|
||||
GLIBC_2.4 ynl F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -1321,3 +1321,12 @@ GLIBC_2.35 hypotf F
|
||||
GLIBC_2.38 fmod F
|
||||
GLIBC_2.38 fmodf F
|
||||
GLIBC_2.39 exp10 F
|
||||
GLIBC_2.40 __log2p1ieee128 F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f128 F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1f64x F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -1028,3 +1028,11 @@ GLIBC_2.35 fminimumf64x F
|
||||
GLIBC_2.35 fminimuml F
|
||||
GLIBC_2.35 fsqrt F
|
||||
GLIBC_2.35 fsqrtl F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f128 F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1f64x F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -1125,3 +1125,11 @@ GLIBC_2.35 fminimumf64x F
|
||||
GLIBC_2.35 fminimuml F
|
||||
GLIBC_2.35 fsqrt F
|
||||
GLIBC_2.35 fsqrtl F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f128 F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1f64x F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -1252,3 +1252,11 @@ GLIBC_2.4 truncl F
|
||||
GLIBC_2.4 y0l F
|
||||
GLIBC_2.4 y1l F
|
||||
GLIBC_2.4 ynl F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f128 F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1f64x F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -1252,3 +1252,11 @@ GLIBC_2.4 truncl F
|
||||
GLIBC_2.4 y0l F
|
||||
GLIBC_2.4 y1l F
|
||||
GLIBC_2.4 ynl F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f128 F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1f64x F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -848,3 +848,9 @@ GLIBC_2.38 fmod F
|
||||
GLIBC_2.38 fmodf F
|
||||
GLIBC_2.39 exp10 F
|
||||
GLIBC_2.4 exp2l F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -848,3 +848,9 @@ GLIBC_2.38 fmod F
|
||||
GLIBC_2.38 fmodf F
|
||||
GLIBC_2.39 exp10 F
|
||||
GLIBC_2.4 exp2l F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -1259,3 +1259,11 @@ GLIBC_2.4 truncl F
|
||||
GLIBC_2.4 y0l F
|
||||
GLIBC_2.4 y1l F
|
||||
GLIBC_2.4 ynl F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f128 F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1f64x F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -1149,3 +1149,11 @@ GLIBC_2.35 hypotf F
|
||||
GLIBC_2.38 fmod F
|
||||
GLIBC_2.38 fmodf F
|
||||
GLIBC_2.39 exp10 F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f128 F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1f64x F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -1182,3 +1182,11 @@ GLIBC_2.35 hypotf F
|
||||
GLIBC_2.38 fmod F
|
||||
GLIBC_2.38 fmodf F
|
||||
GLIBC_2.39 exp10 F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f128 F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1f64x F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -1182,3 +1182,11 @@ GLIBC_2.35 hypotf F
|
||||
GLIBC_2.38 fmod F
|
||||
GLIBC_2.38 fmodf F
|
||||
GLIBC_2.39 exp10 F
|
||||
GLIBC_2.40 log2p1 F
|
||||
GLIBC_2.40 log2p1f F
|
||||
GLIBC_2.40 log2p1f128 F
|
||||
GLIBC_2.40 log2p1f32 F
|
||||
GLIBC_2.40 log2p1f32x F
|
||||
GLIBC_2.40 log2p1f64 F
|
||||
GLIBC_2.40 log2p1f64x F
|
||||
GLIBC_2.40 log2p1l F
|
||||
|
@ -1847,6 +1847,30 @@ float: 1
|
||||
Function: "log2_vlen8_avx2":
|
||||
float: 1
|
||||
|
||||
Function: "log2p1":
|
||||
double: 1
|
||||
float: 1
|
||||
float128: 3
|
||||
ldouble: 2
|
||||
|
||||
Function: "log2p1_downward":
|
||||
double: 2
|
||||
float: 2
|
||||
float128: 3
|
||||
ldouble: 4
|
||||
|
||||
Function: "log2p1_towardzero":
|
||||
double: 2
|
||||
float: 2
|
||||
float128: 2
|
||||
ldouble: 4
|
||||
|
||||
Function: "log2p1_upward":
|
||||
double: 1
|
||||
float: 2
|
||||
float128: 2
|
||||
ldouble: 5
|
||||
|
||||
Function: "log_downward":
|
||||
float: 2
|
||||
float128: 1
|
||||
|
Loading…
Reference in New Issue
Block a user