Implement C23 log10p1

C23 adds various <math.h> function families originally defined in TS
18661-4.  Add the log10p1 functions (log10(1+x): like log1p, but for
base-10 logarithms).

This is directly analogous to the log2p1 implementation (except that
whereas log2p1 has a smaller underflow range than log1p, log10p1 has a
larger underflow range).  The test inputs are copied from those for
log1p and log2p1, plus a few more inputs in that wider underflow
range.

Tested for x86_64 and x86, and with build-many-glibcs.py.
This commit is contained in:
Joseph Myers 2024-06-17 13:48:13 +00:00
parent bb014f50c4
commit 55eb99e9a9
52 changed files with 3555 additions and 2 deletions

2
NEWS
View File

@ -26,7 +26,7 @@ Major new features:
functions for float, double, long double, _FloatN and _FloatNx, and a
type-generic macro in <tgmath.h>.
- Logarithmic functions: log2p1, logp1.
- Logarithmic functions: log2p1, log10p1, logp1.
* 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

View File

@ -780,6 +780,20 @@ near zero.
The @code{log2p1} functions are from TS 18661-4:2015.
@end deftypefun
@deftypefun double log10p1 (double @var{x})
@deftypefunx float log10p1f (float @var{x})
@deftypefunx {long double} log10p1l (long double @var{x})
@deftypefunx _FloatN log10p1fN (_Float@var{N} @var{x})
@deftypefunx _FloatNx log10p1fNx (_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{log10 (1 + @var{x})}}.
They are computed in a way that is accurate even if @var{x} is
near zero.
The @code{log10p1} functions are from TS 18661-4:2015.
@end deftypefun
@cindex complex exponentiation functions
@cindex complex logarithm functions

View File

@ -127,6 +127,7 @@ gen-libm-calls = \
s_fminimum_numF \
s_fminmagF \
s_iseqsigF \
s_log10p1F \
s_log2p1F \
s_nanF \
s_nextdownF \
@ -651,6 +652,7 @@ libm-test-funcs-auto = \
lgamma \
log \
log10 \
log10p1 \
log1p \
log2 \
log2p1 \
@ -962,6 +964,7 @@ tgmath3-macros = \
llround \
log \
log10 \
log10p1 \
log1p \
log2 \
log2p1 \
@ -1376,6 +1379,7 @@ CFLAGS-s_llrint.c += -fno-builtin-llrintl
CFLAGS-s_llround.c += -fno-builtin-llroundl
CFLAGS-e_log.c += -fno-builtin-logl
CFLAGS-w_log10.c += -fno-builtin-log10l
CFLAGS-s_log10p1.c += -fno-builtin-log10p1l
CFLAGS-w_log1p.c += -fno-builtin-log1pl -fno-builtin-logp1l
CFLAGS-e_log2.c += -fno-builtin-log2l
CFLAGS-s_log2p1.c += -fno-builtin-log2p1l
@ -1502,6 +1506,7 @@ CFLAGS-s_llrint.c += -fno-builtin-llrintf32x -fno-builtin-llrintf64
CFLAGS-s_llround.c += -fno-builtin-llroundf32x -fno-builtin-llroundf64
CFLAGS-e_log.c += -fno-builtin-logf32x -fno-builtin-logf64
CFLAGS-w_log10.c += -fno-builtin-log10f32x -fno-builtin-log10f64
CFLAGS-s_log10p1.c += -fno-builtin-log10p1f32x -fno-builtin-log10p1f64
CFLAGS-w_log1p.c += -fno-builtin-log1pf32x -fno-builtin-log1pf64 -fno-builtin-logp1f32x -fno-builtin-logp1f64
CFLAGS-e_log2.c += -fno-builtin-log2f32x -fno-builtin-log2f64
CFLAGS-s_log2p1.c += -fno-builtin-log2p1f32x -fno-builtin-log2p1f64
@ -1617,6 +1622,7 @@ CFLAGS-s_llrintf.c += -fno-builtin-llrintf32
CFLAGS-s_llroundf.c += -fno-builtin-llroundf32
CFLAGS-e_logf.c += -fno-builtin-logf32
CFLAGS-w_log10f.c += -fno-builtin-log10f32
CFLAGS-s_log10p1f.c += -fno-builtin-log10p1f32
CFLAGS-w_log1pf.c += -fno-builtin-log1pf32 -fno-builtin-logp1f32
CFLAGS-e_log2f.c += -fno-builtin-log2f32
CFLAGS-s_log2p1f.c += -fno-builtin-log2p1f32

View File

@ -642,9 +642,11 @@ libm {
GLIBC_2.40 {
# Functions not involving _Float64x or _Float128, for all configurations.
log2p1; log2p1f; log2p1l; log2p1f32; log2p1f64; log2p1f32x;
log10p1; log10p1f; log10p1l; log10p1f32; log10p1f64; log10p1f32x;
logp1; logp1f; logp1l; logp1f32; logp1f64; logp1f32x;
# Functions involving _Float64x or _Float128, for some configurations.
log2p1f64x; log2p1f128;
log10p1f64x; log10p1f128;
logp1f64x; logp1f128;
}
}

View File

@ -6576,6 +6576,63 @@ log10 0x9.b3727e3feb538p-4
log10 0xf.bf1b2p-4
log10 0x1.6b5f7ap+96
log10p1 0
log10p1 -0
log10p1 e-1
log10p1 -0.25
log10p1 -0.875
log10p1 0x1p-5
log10p1 0x1p-10
log10p1 0x1p-15
log10p1 0x1p-20
log10p1 0x1p-25
log10p1 0x1p-30
log10p1 0x1p-35
log10p1 0x1p-40
log10p1 0x1p-45
log10p1 0x1p-50
log10p1 0x1p-55
log10p1 0x1p-60
log10p1 0x1p-100
log10p1 0x1p-600
log10p1 0x1p-10000
log10p1 min
log10p1 min_subnorm
log10p1 -min
log10p1 -min_subnorm
log10p1 0x1p10
log10p1 0x1p20
log10p1 0x1p30
log10p1 0x1p50
log10p1 0x1p60
log10p1 0x1p100
log10p1 0x1p1000
log10p1 0x6.a0cf42befce9ed4085ef59254b48p-4
log10p1 max
log10p1 0x1p-125
log10p1 0x1p-1021
log10p1 0x1p-16381
log10p1 -0x1p-125
log10p1 -0x1p-1021
log10p1 -0x1p-16381
log10p1 0x7.2a4368p-4
log10p1 0x6.d3a118p-4
log10p1 0x5.03f228p+0
log10p1 0x7.264963888ac9p-4
log10p1 0x8.786bdp-4
log10p1 0x7.89dc17790eeb4p-4
log10p1 0x9.81ccf8887c24a7bp-4
log10p1 0xa.5028608bd65f38dp-4
log10p1 0x5.bf78873e20a2d468p-4
log10p1 0x7.aa5198p-4
log10p1 0x2.564fap+0
log10p1 0x7.fc242a2235222ef8p-4
log10p1 -0x4.f37d3c9ce0b14bdd86eb157df5d4p-4
log10p1 0x7.2eca50c4d93196362b4f37f6e8dcp-4
log10p1 -0x6.3fef3067427e43dfcde9e48f74bcp-4
log10p1 0x6.af53d00fd2845d4772260ef5adc4p-4
log1p 0
log1p -0 no-mathvec
log1p e-1

File diff suppressed because it is too large Load Diff

View File

@ -116,6 +116,9 @@ __MATHCALL_VEC (exp10,, (_Mdouble_ __x));
/* Return log2(1 + X). */
__MATHCALL (log2p1,, (_Mdouble_ __x));
/* Return log10(1 + X). */
__MATHCALL (log10p1,, (_Mdouble_ __x));
/* Return log(1 + X). */
__MATHCALL (logp1,, (_Mdouble_ __x));
#endif

View File

@ -578,6 +578,7 @@ static test_function test_functions[] =
false, CALC (mpfr_f_f1, mpfr_lgamma)),
FUNC_mpfr_f_f ("log", mpfr_log, false),
FUNC_mpfr_f_f ("log10", mpfr_log10, false),
FUNC_mpfr_f_f ("log10p1", mpfr_log10p1, 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),

View File

@ -744,6 +744,7 @@ class Tests(object):
# TS 18661-4 functions.
self.add_tests('exp10', 'r', ['r'])
self.add_tests('log2p1', 'r', ['r'])
self.add_tests('log10p1', 'r', ['r'])
self.add_tests('logp1', 'r', ['r'])
# C23 functions.
self.add_tests('fmaximum', 'r', ['r', 'r'])

View File

@ -0,0 +1,53 @@
/* Test log10p1.
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 log10p1_test_data[] =
{
TEST_f_f (log10p1, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
TEST_f_f (log10p1, -2, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (log10p1, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM|XFAIL_ROUNDING_IBM128_LIBGCC),
TEST_f_f (log10p1, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_f (log10p1, plus_infty, plus_infty, ERRNO_UNCHANGED),
TEST_f_f (log10p1, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_f_f (log10p1, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_f_f (log10p1, snan_value, qnan_value, INVALID_EXCEPTION),
TEST_f_f (log10p1, -snan_value, qnan_value, INVALID_EXCEPTION),
AUTO_TESTS_f_f (log10p1),
};
static void
log10p1_test (void)
{
ALL_RM_TEST (log10p1, 0, log10p1_test_data, RUN_TEST_LOOP_f_f, END);
}
static void
do_test (void)
{
log10p1_test ();
}
/*
* Local Variables:
* mode:c
* End:
*/

49
math/s_log10p1_template.c Normal file
View File

@ -0,0 +1,49 @@
/* Return base-10 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-narrow-eval.h>
#include <math-underflow.h>
FLOAT
M_DECL_FUNC (__log10p1) (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))
{
/* Ensure appropriate underflows (a wider range than for log1p,
with potential for zero results from nonzero arguments, in
which case errno should be set based on the result with any
excess range and precision removed) even if the result of
multiplying by M_MLIT (M_LOG10E) is exact. */
FLOAT ret = math_narrow_eval (M_MLIT (M_LOG10E) * x);
math_check_force_underflow (ret);
if (x != 0 && ret == 0)
__set_errno (ERANGE);
return ret;
}
return M_MLIT (M_LOG10E) * M_SUF (__log1p) (x);
}
declare_mgen_alias (__log10p1, log10p1);

View File

@ -48,7 +48,7 @@ volatile int count_cdouble;
volatile int count_cfloat;
volatile int count_cldouble;
#define NCALLS 162
#define NCALLS 164
#define NCALLS_INT 4
#define NCCALLS 47
@ -256,6 +256,7 @@ F(compile_test) (void)
a = exp10 (exp10 (x));
b = log2 (log2 (a));
a = log2p1 (log2p1 (x));
a = log10p1 (log10p1 (x));
a = logp1 (logp1 (x));
a = pow (pow (x, a), pow (c, b));
b = sqrt (sqrt (a));
@ -371,6 +372,7 @@ F(compile_test) (void)
a = exp10 (y);
a = log2 (y);
a = log2p1 (y);
a = log10p1 (y);
a = logp1 (y);
a = pow (y, y);
a = sqrt (y);
@ -653,6 +655,14 @@ TYPE
return x;
}
TYPE
(F(log10p1)) (TYPE x)
{
++count;
P ();
return x;
}
TYPE
(F(logp1)) (TYPE x)
{

View File

@ -878,6 +878,9 @@
/* Return log2(1 + X). */
#define log2p1(Val) __TGMATH_UNARY_REAL_ONLY (Val, log2p1)
/* Return log10(1 + X). */
#define log10p1(Val) __TGMATH_UNARY_REAL_ONLY (Val, log10p1)
/* Return log(1 + X). */
#define logp1(Val) __TGMATH_UNARY_REAL_ONLY (Val, logp1)
#endif

View File

@ -1378,6 +1378,30 @@ float: 1
float128: 1
ldouble: 1
Function: "log10p1":
double: 1
float: 1
float128: 3
ldouble: 2
Function: "log10p1_downward":
double: 1
float: 1
float128: 2
ldouble: 4
Function: "log10p1_towardzero":
double: 1
float: 1
float128: 2
ldouble: 4
Function: "log10p1_upward":
double: 1
float: 1
float128: 3
ldouble: 3
Function: "log1p":
double: 1
float128: 3

View File

@ -139,6 +139,7 @@ libm {
}
GLIBC_2.40 {
__log2p1ieee128;
__log10p1ieee128;
__logp1ieee128;
}
}

View File

@ -140,6 +140,7 @@ libnldbl-calls = \
log \
log2 \
log10 \
log10p1 \
log1p \
log2p1 \
logb \
@ -341,6 +342,7 @@ CFLAGS-nldbl-llrint.c = -fno-builtin-llrintl
CFLAGS-nldbl-llround.c = -fno-builtin-llroundl
CFLAGS-nldbl-log.c = -fno-builtin-logl
CFLAGS-nldbl-log10.c = -fno-builtin-log10l
CFLAGS-nldbl-log10p1.c = -fno-builtin-log10p1l
CFLAGS-nldbl-log1p.c = -fno-builtin-log1pl -fno-builtin-logp1l
CFLAGS-nldbl-log2.c = -fno-builtin-log2l
CFLAGS-nldbl-log2p1.c = -fno-builtin-log2p1l

View File

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

View File

@ -1181,6 +1181,14 @@ GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1f64x F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F

View File

@ -1038,6 +1038,14 @@ GLIBC_2.38 ynf32x F
GLIBC_2.38 ynf64 F
GLIBC_2.38 ynf64x F
GLIBC_2.38 ynl F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1f64x F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F

View File

@ -54,5 +54,6 @@ 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_log10p1l.c += -fno-builtin-fabsl
CFLAGS-s_log2p1l.c += -fno-builtin-fabsl
endif

View File

@ -1149,6 +1149,14 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1f64x F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F

View File

@ -1308,6 +1308,14 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1f64x F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F

View File

@ -757,6 +757,12 @@ GLIBC_2.35 fminimumf64 F
GLIBC_2.35 fminimuml F
GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F

View File

@ -848,6 +848,12 @@ GLIBC_2.4 y1l F
GLIBC_2.4 yn F
GLIBC_2.4 ynf F
GLIBC_2.4 ynl F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F

View File

@ -848,6 +848,12 @@ GLIBC_2.4 y1l F
GLIBC_2.4 yn F
GLIBC_2.4 ynf F
GLIBC_2.4 ynl F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F

View File

@ -823,6 +823,12 @@ GLIBC_2.35 fminimumf64 F
GLIBC_2.35 fminimuml F
GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F

View File

@ -848,6 +848,12 @@ GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 exp2l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F

View File

@ -1188,6 +1188,14 @@ GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1f64x F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F

View File

@ -1028,6 +1028,14 @@ GLIBC_2.36 ynf32x F
GLIBC_2.36 ynf64 F
GLIBC_2.36 ynf64x F
GLIBC_2.36 ynl F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1f64x F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F

View File

@ -848,6 +848,12 @@ GLIBC_2.4 y1l F
GLIBC_2.4 yn F
GLIBC_2.4 ynf F
GLIBC_2.4 ynl F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F

View File

@ -884,6 +884,12 @@ GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F

View File

@ -848,6 +848,12 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F

View File

@ -848,6 +848,12 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F

View File

@ -848,6 +848,12 @@ GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 exp2l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F

View File

@ -1149,6 +1149,14 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1f64x F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F

View File

@ -848,6 +848,12 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F

View File

@ -757,6 +757,12 @@ GLIBC_2.35 ynf32 F
GLIBC_2.35 ynf32x F
GLIBC_2.35 ynf64 F
GLIBC_2.35 ynl F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F

View File

@ -995,6 +995,12 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F

View File

@ -994,6 +994,12 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F

View File

@ -988,6 +988,12 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F

View File

@ -1321,8 +1321,17 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.40 __log10p1ieee128 F
GLIBC_2.40 __log2p1ieee128 F
GLIBC_2.40 __logp1ieee128 F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1f64x F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F

View File

@ -1028,6 +1028,14 @@ GLIBC_2.35 fminimumf64x F
GLIBC_2.35 fminimuml F
GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1f64x F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F

View File

@ -1125,6 +1125,14 @@ GLIBC_2.35 fminimumf64x F
GLIBC_2.35 fminimuml F
GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1f64x F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F

View File

@ -1252,6 +1252,14 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1f64x F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F

View File

@ -1252,6 +1252,14 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1f64x F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F

View File

@ -848,6 +848,12 @@ GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 exp2l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F

View File

@ -848,6 +848,12 @@ GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 exp2l F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F

View File

@ -1259,6 +1259,14 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1f64x F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F

View File

@ -1149,6 +1149,14 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1f64x F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F

View File

@ -1182,6 +1182,14 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1f64x F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F

View File

@ -1182,6 +1182,14 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.40 log10p1 F
GLIBC_2.40 log10p1f F
GLIBC_2.40 log10p1f128 F
GLIBC_2.40 log10p1f32 F
GLIBC_2.40 log10p1f32x F
GLIBC_2.40 log10p1f64 F
GLIBC_2.40 log10p1f64x F
GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F

View File

@ -1759,6 +1759,30 @@ float: 1
Function: "log10_vlen8_avx2":
float: 1
Function: "log10p1":
double: 1
float: 1
float128: 3
ldouble: 2
Function: "log10p1_downward":
double: 2
float: 1
float128: 2
ldouble: 4
Function: "log10p1_towardzero":
double: 2
float: 2
float128: 2
ldouble: 4
Function: "log10p1_upward":
double: 2
float: 1
float128: 3
ldouble: 3
Function: "log1p":
double: 1
float: 1