Add llogb, llogbf, llogbl.

TS 18661-1 defines llogb functions that are like ilogb except that
they return long int instead of int.  Corresponding FP_LLOGB* macros
are defined, whose values are required to have the obvious
correspondence to those of the FP_ILOGB* macros.

This patch implements these functions and macros for glibc.  llogb
uses the type-generic infrastructure, with an implementation similar
to the wrapper for ilogb but with additional conversion from FP_ILOGB*
to FP_LLOGB*; this approach avoids needing to modify or duplicate any
of the architecture-specific ilogb implementations.  Tests are also
based on those for ilogb.

Ideally the llogb functions would alias the ilogb ones when long is
32-bit, but such aliasing requires the associated header declarations
of the different-type alias to be hidden, typically by defining macros
before including the header (see e.g. how
sysdeps/ieee754/dbl-64/wordsize-64/s_llround.c defines lround to
__hidden_lround before including <math.h>).  The infrastructure for
type-generic function implementations does not support defining such
macros at present (since C code can't define a macro whose name is
determined by other macros).  So this patch leaves them as separate
functions (similar to e.g. scalbln and scalbn being separate in such a
case as well), but with the remapping of FP_ILOGB* to FP_LLOGB*
conditioned out in the case where it would be the identity map.

Tested for x86_64, x86, mips64 and powerpc.

	* math/bits/mathcalls.h [__GLIBC_USE (IEC_60559_BFP_EXT)] (llogb):
	New declaration.
	* math/tgmath.h [__GLIBC_USE (IEC_60559_BFP_EXT)] (llogb): New
	macro.
	* math/math.h [__GLIBC_USE (IEC_60559_BFP_EXT)] (__FP_LONG_MAX):
	New macro.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FP_LLOGB0): Likewise.
	[__GLIBC_USE (IEC_60559_BFP_EXT)] (FP_LLOGBNAN): Likewise.
	* math/Versions (llogb): New libm symbol at version GLIBC_2.25.
	(llogbf): Likewise.
	(llogbl): Likewise.
	* math/Makefile (gen-libm-calls): Add w_llogbF.
	(tests): Add test-fp-llogb-constants.
	* math/w_llogb_template.c: New file.  Based on
	math/w_ilogb_template.c.
	* math/libm-test.inc (llogb_test_data): New array.
	(llogb_test): New function.
	(main): Call llogb_test.
	* math/test-fp-llogb-constants.c: New file.  Based on
	math/test-fp-ilogb-constants.c.
	* math/test-tgmath-ret.c (llogb): New CHECK_RET_CONST call.
	(do_test): Call check_return_llogb.
	* math/test-tgmath.c (NCALLS): Increase to 126.
	(F(compile_test)): Call llogb.
	(F(llogb)): New function.
	* manual/math.texi (Exponents and Logarithms): Document llogb,
	llogbf, llogbl, FP_LLOGB0 and FP_LLOGBNAN.
	* manual/libm-err-tab.pl (@all_functions): Add llogb.
	* sysdeps/ieee754/ldbl-opt/nldbl-llogb.c: New file.
	* sysdeps/ieee754/ldbl-opt/w_llogbl.c: Likewise.
	* sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Add llogb.
	(CFLAGS-nldbl-llogb.c): New variable.
	* sysdeps/nacl/libm.abilist: Update.
	* sysdeps/unix/sysv/linux/aarch64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/alpha/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/arm/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/hppa/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/i386/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/microblaze/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/nios2/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sh/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist:
	Likewise.
	* sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
This commit is contained in:
Joseph Myers 2016-12-02 01:42:49 +00:00
parent 6dc0741677
commit 55a38f8236
44 changed files with 398 additions and 8 deletions

View File

@ -1,3 +1,71 @@
2016-12-02 Joseph Myers <joseph@codesourcery.com>
* math/bits/mathcalls.h [__GLIBC_USE (IEC_60559_BFP_EXT)] (llogb):
New declaration.
* math/tgmath.h [__GLIBC_USE (IEC_60559_BFP_EXT)] (llogb): New
macro.
* math/math.h [__GLIBC_USE (IEC_60559_BFP_EXT)] (__FP_LONG_MAX):
New macro.
[__GLIBC_USE (IEC_60559_BFP_EXT)] (FP_LLOGB0): Likewise.
[__GLIBC_USE (IEC_60559_BFP_EXT)] (FP_LLOGBNAN): Likewise.
* math/Versions (llogb): New libm symbol at version GLIBC_2.25.
(llogbf): Likewise.
(llogbl): Likewise.
* math/Makefile (gen-libm-calls): Add w_llogbF.
(tests): Add test-fp-llogb-constants.
* math/w_llogb_template.c: New file. Based on
math/w_ilogb_template.c.
* math/libm-test.inc (llogb_test_data): New array.
(llogb_test): New function.
(main): Call llogb_test.
* math/test-fp-llogb-constants.c: New file. Based on
math/test-fp-ilogb-constants.c.
* math/test-tgmath-ret.c (llogb): New CHECK_RET_CONST call.
(do_test): Call check_return_llogb.
* math/test-tgmath.c (NCALLS): Increase to 126.
(F(compile_test)): Call llogb.
(F(llogb)): New function.
* manual/math.texi (Exponents and Logarithms): Document llogb,
llogbf, llogbl, FP_LLOGB0 and FP_LLOGBNAN.
* manual/libm-err-tab.pl (@all_functions): Add llogb.
* sysdeps/ieee754/ldbl-opt/nldbl-llogb.c: New file.
* sysdeps/ieee754/ldbl-opt/w_llogbl.c: Likewise.
* sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Add llogb.
(CFLAGS-nldbl-llogb.c): New variable.
* sysdeps/nacl/libm.abilist: Update.
* sysdeps/unix/sysv/linux/aarch64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/alpha/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist:
Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist:
Likewise.
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist:
Likewise.
* sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
2016-12-01 Joseph Myers <joseph@codesourcery.com> 2016-12-01 Joseph Myers <joseph@codesourcery.com>
* sysdeps/ieee754/ldbl-128/s_getpayloadl.c (getpayloadl): Use * sysdeps/ieee754/ldbl-128/s_getpayloadl.c (getpayloadl): Use

3
NEWS
View File

@ -53,6 +53,9 @@ Version 2.25
- Signaling NaN macros: SNANF, SNAN, SNANL. - Signaling NaN macros: SNANF, SNAN, SNANL.
- llogb functions: the llogb, llogbf and llogbl functions, and the
FP_LLOGB0 and FP_LLOGBNAN macros.
- Comparison macros: iseqsig. - Comparison macros: iseqsig.
- Classification macros: iscanonical, issubnormal, iszero. - Classification macros: iscanonical, issubnormal, iszero.

View File

@ -58,7 +58,7 @@ use vars qw (%results @all_floats %suffices @all_functions);
"creal", "csin", "csinh", "csqrt", "ctan", "ctanh", "erf", "erfc", "creal", "csin", "csinh", "csqrt", "ctan", "ctanh", "erf", "erfc",
"exp", "exp10", "exp2", "expm1", "fabs", "fdim", "floor", "fma", "exp", "exp10", "exp2", "expm1", "fabs", "fdim", "floor", "fma",
"fmax", "fmin", "fmod", "frexp", "gamma", "hypot", "fmax", "fmin", "fmod", "frexp", "gamma", "hypot",
"ilogb", "j0", "j1", "jn", "lgamma", "lrint", "ilogb", "j0", "j1", "jn", "lgamma", "llogb", "lrint",
"llrint", "log", "log10", "log1p", "log2", "logb", "lround", "llrint", "log", "log10", "log1p", "log2", "logb", "lround",
"llround", "modf", "nearbyint", "nextafter", "nextdown", "nexttoward", "llround", "modf", "nearbyint", "nextafter", "nextdown", "nexttoward",
"nextup", "pow", "remainder", "remquo", "rint", "round", "scalb", "nextup", "pow", "remainder", "remquo", "rint", "round", "scalb",

View File

@ -584,9 +584,20 @@ negative), @code{logb} returns @math{@infinity{}}. If @var{x} is zero,
@comment math.h @comment math.h
@comment ISO @comment ISO
@deftypefunx int ilogbl (long double @var{x}) @deftypefunx int ilogbl (long double @var{x})
@comment math.h
@comment ISO
@deftypefunx {long int} llogb (double @var{x})
@comment math.h
@comment ISO
@deftypefunx {long int} llogbf (float @var{x})
@comment math.h
@comment ISO
@deftypefunx {long int} llogbl (long double @var{x})
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
These functions are equivalent to the corresponding @code{logb} These functions are equivalent to the corresponding @code{logb}
functions except that they return signed integer values. functions except that they return signed integer values. The
@code{ilogb} functions are from ISO C99; the @code{llogb} functions
are from TS 18661-1:2014.
@end deftypefun @end deftypefun
@noindent @noindent
@ -603,6 +614,15 @@ numeric value is either @code{INT_MIN} or @code{-INT_MAX}.
This macro is defined in @w{ISO C99}. This macro is defined in @w{ISO C99}.
@end deftypevr @end deftypevr
@comment math.h
@comment ISO
@deftypevr Macro {long int} FP_LLOGB0
@code{llogb} returns this value if its argument is @code{0}. The
numeric value is either @code{LONG_MIN} or @code{-LONG_MAX}.
This macro is defined in TS 18661-1:2014.
@end deftypevr
@comment math.h @comment math.h
@comment ISO @comment ISO
@deftypevr Macro int FP_ILOGBNAN @deftypevr Macro int FP_ILOGBNAN
@ -612,6 +632,15 @@ numeric value is either @code{INT_MIN} or @code{INT_MAX}.
This macro is defined in @w{ISO C99}. This macro is defined in @w{ISO C99}.
@end deftypevr @end deftypevr
@comment math.h
@comment ISO
@deftypevr Macro {long int} FP_LLOGBNAN
@code{llogb} returns this value if its argument is @code{NaN}. The
numeric value is either @code{LONG_MIN} or @code{LONG_MAX}.
This macro is defined in TS 18661-1:2014.
@end deftypevr
These values are system specific. They might even be the same. The These values are system specific. They might even be the same. The
proper way to test the result of @code{ilogb} is as follows: proper way to test the result of @code{ilogb} is as follows:

View File

@ -52,7 +52,7 @@ gen-libm-calls = cargF conjF cimagF crealF cabsF s_cacosF \
k_casinhF s_csinhF k_casinhF s_csinhF s_catanhF s_catanF \ k_casinhF s_csinhF k_casinhF s_csinhF s_catanhF s_catanF \
s_ctanF s_ctanhF s_cexpF s_clogF s_cprojF s_csqrtF \ s_ctanF s_ctanhF s_cexpF s_clogF s_cprojF s_csqrtF \
s_cpowF s_clog10F s_fdimF s_nextdownF s_fmaxF s_fminF \ s_cpowF s_clog10F s_fdimF s_nextdownF s_fmaxF s_fminF \
s_nanF s_iseqsigF s_canonicalizeF w_ilogbF s_nanF s_iseqsigF s_canonicalizeF w_ilogbF w_llogbF
libm-calls = \ libm-calls = \
e_acosF e_acoshF e_asinF e_atan2F e_atanhF e_coshF e_expF e_fmodF \ e_acosF e_acoshF e_asinF e_atan2F e_atanhF e_coshF e_expF e_fmodF \
@ -159,7 +159,7 @@ tests = test-matherr test-fenv atest-exp atest-sincos atest-exp2 basic-test \
test-fesetexcept-traps test-fetestexceptflag test-femode \ test-fesetexcept-traps test-fetestexceptflag test-femode \
test-femode-traps test-iszero-excess-precision \ test-femode-traps test-iszero-excess-precision \
test-iseqsig-excess-precision test-flt-eval-method \ test-iseqsig-excess-precision test-flt-eval-method \
test-fp-ilogb-constants $(tests-static) test-fp-ilogb-constants test-fp-llogb-constants $(tests-static)
tests-static = test-fpucw-static test-fpucw-ieee-static \ tests-static = test-fpucw-static test-fpucw-ieee-static \
test-signgam-uchar-static test-signgam-uchar-init-static \ test-signgam-uchar-static test-signgam-uchar-init-static \
test-signgam-uint-static test-signgam-uint-init-static \ test-signgam-uint-static test-signgam-uint-init-static \

View File

@ -223,5 +223,6 @@ libm {
canonicalize; canonicalizef; canonicalizel; canonicalize; canonicalizef; canonicalizel;
setpayload; setpayloadf; setpayloadl; setpayload; setpayloadf; setpayloadl;
setpayloadsig; setpayloadsigf; setpayloadsigl; setpayloadsig; setpayloadsigf; setpayloadsigl;
llogb; llogbf; llogbl;
} }
} }

View File

@ -315,6 +315,11 @@ __MATHCALL (scalbn,, (_Mdouble_ __x, int __n));
__MATHDECL (int,ilogb,, (_Mdouble_ __x)); __MATHDECL (int,ilogb,, (_Mdouble_ __x));
#endif #endif
#if __GLIBC_USE (IEC_60559_BFP_EXT)
/* Like ilogb, but returning long int. */
__MATHDECL (long int, llogb,, (_Mdouble_ __x));
#endif
#ifdef __USE_ISOC99 #ifdef __USE_ISOC99
/* Return X times (2 to the Nth power). */ /* Return X times (2 to the Nth power). */
__MATHCALL (scalbln,, (_Mdouble_ __x, long int __n)); __MATHCALL (scalbln,, (_Mdouble_ __x, long int __n));

View File

@ -50,7 +50,7 @@
ilogb, iscanonical, isfinite, isinf, isnan, isnormal, issignaling, ilogb, iscanonical, isfinite, isinf, isnan, isnormal, issignaling,
issubnormal, iszero, iseqsig, isless, islessequal, isgreater, issubnormal, iszero, iseqsig, isless, islessequal, isgreater,
isgreaterequal, islessgreater, isunordered, j0, j1, jn, isgreaterequal, islessgreater, isunordered, j0, j1, jn,
ldexp, lgamma, log, log10, log1p, log2, logb, ldexp, lgamma, llogb, log, log10, log1p, log2, logb,
modf, nearbyint, nextafter, nexttoward, modf, nearbyint, nextafter, nexttoward,
pow, pow10, remainder, remquo, rint, lrint, llrint, pow, pow10, remainder, remquo, rint, lrint, llrint,
round, lround, llround, round, lround, llround,
@ -9171,6 +9171,48 @@ gamma_test (void)
} }
static const struct test_f_l_data llogb_test_data[] =
{
TEST_f_l (llogb, 1, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_f_l (llogb, lit_e, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_f_l (llogb, 1024, 10, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_f_l (llogb, -2000, 10, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_f_l (llogb, 0.5, -1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED);
TEST_f_l (llogb, -0.5, -1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED);
#if MANT_DIG >= 57
TEST_f_l (llogb, 0x1.ffffffffffffffp1L, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_f_l (llogb, -0x1.ffffffffffffffp1L, 1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
#endif
TEST_f_l (llogb, min_subnorm_value, MIN_EXP-MANT_DIG, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED);
TEST_f_l (llogb, -min_subnorm_value, MIN_EXP-MANT_DIG, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED);
TEST_f_l (llogb, min_value, MIN_EXP-1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED);
TEST_f_l (llogb, -min_value, MIN_EXP-1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED);
TEST_f_l (llogb, max_value, MAX_EXP-1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED);
TEST_f_l (llogb, -max_value, MAX_EXP-1, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED);
/* llogb (0.0) == FP_LLOGB0 plus invalid exception */
TEST_f_l (llogb, 0.0, FP_LLOGB0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_l (llogb, -0.0, FP_LLOGB0, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
/* llogb (qNaN) == FP_LLOGBNAN plus invalid exception */
TEST_f_l (llogb, qnan_value, FP_LLOGBNAN, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_l (llogb, -qnan_value, FP_LLOGBNAN, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_l (llogb, snan_value, FP_LLOGBNAN, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
TEST_f_l (llogb, -snan_value, FP_LLOGBNAN, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
/* llogb (inf) == LONG_MAX plus invalid exception */
TEST_f_l (llogb, plus_infty, LONG_MAX, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
/* llogb (-inf) == LONG_MAX plus invalid exception */
TEST_f_l (llogb, minus_infty, LONG_MAX, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
};
static void
llogb_test (void)
{
ALL_RM_TEST (llogb, 1, llogb_test_data, RUN_TEST_LOOP_f_l, END);
}
static const struct test_f_l_data lrint_test_data[] = static const struct test_f_l_data lrint_test_data[] =
{ {
/* Bug 6798: errno setting may be missing. */ /* Bug 6798: errno setting may be missing. */
@ -13775,6 +13817,7 @@ main (int argc, char **argv)
modf_test (); modf_test ();
pow10_test (); pow10_test ();
ilogb_test (); ilogb_test ();
llogb_test ();
scalb_test (); scalb_test ();
scalbn_test (); scalbn_test ();
scalbln_test (); scalbln_test ();

View File

@ -97,11 +97,13 @@ typedef _Float128x double_t;
# endif # endif
#endif #endif
/* Define macros for the return value of ilogb, based on /* Define macros for the return values of ilogb and llogb, based on
__FP_LOGB0_IS_MIN and __FP_LOGBNAN_IS_MIN. __FP_LOGB0_IS_MIN and __FP_LOGBNAN_IS_MIN.
FP_ILOGB0 Expands to a value returned by `ilogb (0.0)'. FP_ILOGB0 Expands to a value returned by `ilogb (0.0)'.
FP_ILOGBNAN Expands to a value returned by `ilogb (NAN)'. FP_ILOGBNAN Expands to a value returned by `ilogb (NAN)'.
FP_LLOGB0 Expands to a value returned by `llogb (0.0)'.
FP_LLOGBNAN Expands to a value returned by `llogb (NAN)'.
*/ */
@ -118,6 +120,23 @@ typedef _Float128x double_t;
# define FP_ILOGBNAN 2147483647 # define FP_ILOGBNAN 2147483647
# endif # endif
#endif #endif
#if __GLIBC_USE (IEC_60559_BFP_EXT)
# if __WORDSIZE == 32
# define __FP_LONG_MAX 0x7fffffffL
# else
# define __FP_LONG_MAX 0x7fffffffffffffffL
# endif
# if __FP_LOGB0_IS_MIN
# define FP_LLOGB0 (-__FP_LONG_MAX - 1)
# else
# define FP_LLOGB0 (-__FP_LONG_MAX)
# endif
# if __FP_LOGBNAN_IS_MIN
# define FP_LLOGBNAN (-__FP_LONG_MAX - 1)
# else
# define FP_LLOGBNAN __FP_LONG_MAX
# endif
#endif
/* Get information about long double. */ /* Get information about long double. */

View File

@ -0,0 +1,48 @@
/* Test requirements on FP_LLOGB* constants.
Copyright (C) 2016 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
<http://www.gnu.org/licenses/>. */
#include <limits.h>
#include <math.h>
#if FP_LLOGB0 >= 0
# error "FP_LLOGB0 is positive"
#endif
#if FP_LLOGB0 != LONG_MIN && FP_LLOGB0 != -LONG_MAX
# error "FP_LLOGB0 must be LONG_MIN or -LONG_MAX"
#endif
#if FP_LLOGBNAN >= 0 && FP_LLOGBNAN != LONG_MAX
# error "FP_LLOGBNAN must be LONG_MIN or LONG_MAX"
#endif
#if FP_LLOGBNAN < 0 && FP_LLOGBNAN != LONG_MIN
# error "FP_LLOGBNAN must be LONG_MIN or LONG_MAX"
#endif
#if (FP_ILOGB0 == INT_MIN) != (FP_LLOGB0 == LONG_MIN)
# error "FP_ILOGB0 and FP_LLOGB0 inconsistent"
#endif
#if (FP_ILOGBNAN == INT_MIN) != (FP_LLOGBNAN == LONG_MIN)
# error "FP_ILOGBNAN and FP_LLOGBNAN inconsistent"
#endif
/* This is a compilation test. */
#define TEST_FUNCTION 0
#include "../test-skeleton.c"

View File

@ -61,6 +61,7 @@ check_return_ ##func (void) \
} }
CHECK_RET_CONST(ilogb, int) CHECK_RET_CONST(ilogb, int)
CHECK_RET_CONST(llogb, long)
CHECK_RET_CONST(lrint, long) CHECK_RET_CONST(lrint, long)
CHECK_RET_CONST(lround, long) CHECK_RET_CONST(lround, long)
CHECK_RET_CONST(llrint, long long) CHECK_RET_CONST(llrint, long long)
@ -70,6 +71,7 @@ static int
do_test (void) do_test (void)
{ {
check_return_ilogb (); check_return_ilogb ();
check_return_llogb ();
check_return_lrint (); check_return_lrint ();
check_return_lround (); check_return_lround ();
check_return_llrint (); check_return_llrint ();

View File

@ -50,7 +50,7 @@ int count_cdouble;
int count_cfloat; int count_cfloat;
int count_cldouble; int count_cldouble;
#define NCALLS 125 #define NCALLS 126
#define NCALLS_INT 4 #define NCALLS_INT 4
#define NCCALLS 47 #define NCCALLS 47
@ -281,6 +281,7 @@ F(compile_test) (void)
a = scalb (scalb (x, a), (TYPE) (6)); a = scalb (scalb (x, a), (TYPE) (6));
k = scalbn (a, 7) + scalbln (c, 10l); k = scalbn (a, 7) + scalbln (c, 10l);
i = ilogb (x); i = ilogb (x);
j = llogb (x);
a = fdim (fdim (x, a), fdim (c, b)); a = fdim (fdim (x, a), fdim (c, b));
b = fmax (fmax (a, x), fmax (c, b)); b = fmax (fmax (a, x), fmax (c, b));
a = fmin (fmin (x, a), fmin (c, b)); a = fmin (fmin (x, a), fmin (c, b));
@ -379,6 +380,7 @@ F(compile_test) (void)
a = scalb (y, (const TYPE) (6)); a = scalb (y, (const TYPE) (6));
k = scalbn (y, 7) + scalbln (y, 10l); k = scalbn (y, 7) + scalbln (y, 10l);
i = ilogb (y); i = ilogb (y);
j = llogb (y);
a = fdim (y, y); a = fdim (y, y);
a = fmax (y, y); a = fmax (y, y);
a = fmin (y, y); a = fmin (y, y);
@ -846,6 +848,14 @@ int
return x; return x;
} }
long int
(F(llogb)) (TYPE x)
{
++count;
P ();
return x;
}
TYPE TYPE
(F(fdim)) (TYPE x, TYPE y) (F(fdim)) (TYPE x, TYPE y)
{ {

View File

@ -438,6 +438,9 @@
__TGMATH_TERNARY_REAL_ONLY (Val1, Val2, Val3, fma) __TGMATH_TERNARY_REAL_ONLY (Val1, Val2, Val3, fma)
#if __GLIBC_USE (IEC_60559_BFP_EXT) #if __GLIBC_USE (IEC_60559_BFP_EXT)
/* Like ilogb, but returning long int. */
#define llogb(Val) __TGMATH_UNARY_REAL_RET_ONLY (Val, long int, llogb)
/* Total order operation. */ /* Total order operation. */
# define totalorder(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, \ # define totalorder(Val1, Val2) __TGMATH_BINARY_REAL_ONLY (Val1, Val2, \
totalorder) totalorder)

46
math/w_llogb_template.c Normal file
View File

@ -0,0 +1,46 @@
/* Wrapper to implement llogb in terms of ilogb.
Copyright (C) 2012-2016 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
<http://www.gnu.org/licenses/>. */
#include <math.h>
#include <errno.h>
#include <limits.h>
#include <math_private.h>
long int
M_DECL_FUNC (__llogb) (FLOAT x)
{
int r = M_SUF (__ieee754_ilogb) (x);
long int lr = r;
if (__glibc_unlikely (r == FP_ILOGB0)
|| __glibc_unlikely (r == FP_ILOGBNAN)
|| __glibc_unlikely (r == INT_MAX))
{
#if LONG_MAX != INT_MAX
if (r == FP_ILOGB0)
lr = FP_LLOGB0;
else if (r == FP_ILOGBNAN)
lr = FP_LLOGBNAN;
else
lr = LONG_MAX;
#endif
__set_errno (EDOM);
__feraiseexcept (FE_INVALID);
}
return lr;
}
declare_mgen_alias (__llogb, llogb)

View File

@ -43,7 +43,7 @@ libnldbl-calls = asprintf dprintf fprintf fscanf fwprintf fwscanf iovfscanf \
isoc99_wscanf isoc99_fwscanf isoc99_swscanf \ isoc99_wscanf isoc99_fwscanf isoc99_swscanf \
isoc99_vwscanf isoc99_vfwscanf isoc99_vswscanf \ isoc99_vwscanf isoc99_vfwscanf isoc99_vswscanf \
nextup nextdown totalorder totalordermag getpayload \ nextup nextdown totalorder totalordermag getpayload \
canonicalize setpayload setpayloadsig canonicalize setpayload setpayloadsig llogb
libnldbl-routines = $(libnldbl-calls:%=nldbl-%) libnldbl-routines = $(libnldbl-calls:%=nldbl-%)
libnldbl-inhibit-o = $(object-suffixes) libnldbl-inhibit-o = $(object-suffixes)
libnldbl-static-only-routines = $(libnldbl-routines) libnldbl-static-only-routines = $(libnldbl-routines)
@ -112,6 +112,7 @@ CFLAGS-nldbl-jn.c = -fno-builtin-jnl
CFLAGS-nldbl-ldexp.c = -fno-builtin-ldexpl CFLAGS-nldbl-ldexp.c = -fno-builtin-ldexpl
CFLAGS-nldbl-lgamma.c = -fno-builtin-lgammal CFLAGS-nldbl-lgamma.c = -fno-builtin-lgammal
CFLAGS-nldbl-lgamma_r.c = -fno-builtin-lgammal_r CFLAGS-nldbl-lgamma_r.c = -fno-builtin-lgammal_r
CFLAGS-nldbl-llogb.c = -fno-builtin-llogbl
CFLAGS-nldbl-llrint.c = -fno-builtin-llrintl CFLAGS-nldbl-llrint.c = -fno-builtin-llrintl
CFLAGS-nldbl-llround.c = -fno-builtin-llroundl CFLAGS-nldbl-llround.c = -fno-builtin-llroundl
CFLAGS-nldbl-log.c = -fno-builtin-logl CFLAGS-nldbl-log.c = -fno-builtin-logl

View File

@ -0,0 +1,26 @@
/* Compatibility routine for IEEE double as long double for llogb.
Copyright (C) 2016 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
<http://www.gnu.org/licenses/>. */
#include "nldbl-compat.h"
long int
attribute_hidden
llogbl (double x)
{
return llogb (x);
}

View File

@ -0,0 +1,5 @@
/* llogbl is not subject to complex aliasing rules. It was added in
glibc 2.25. */
#define declare_mgen_alias(from, to) weak_alias (M_SUF (from), M_SUF (to))
#include <math-type-macros-ldouble.h>
#include <w_llogb_template.c>

View File

@ -392,6 +392,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -424,6 +424,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -434,6 +434,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -81,6 +81,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -393,6 +393,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -437,6 +437,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -366,6 +366,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -81,6 +81,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -435,6 +435,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -392,6 +392,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -394,6 +394,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -426,6 +426,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -392,6 +392,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -437,6 +437,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -436,6 +436,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -431,6 +431,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -112,6 +112,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -424,6 +424,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -422,6 +422,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -393,6 +393,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -427,6 +427,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -425,6 +425,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -393,6 +393,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -393,6 +393,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -393,6 +393,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -426,6 +426,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F

View File

@ -425,6 +425,9 @@ GLIBC_2.25 fetestexceptflag F
GLIBC_2.25 getpayload F GLIBC_2.25 getpayload F
GLIBC_2.25 getpayloadf F GLIBC_2.25 getpayloadf F
GLIBC_2.25 getpayloadl F GLIBC_2.25 getpayloadl F
GLIBC_2.25 llogb F
GLIBC_2.25 llogbf F
GLIBC_2.25 llogbl F
GLIBC_2.25 setpayload F GLIBC_2.25 setpayload F
GLIBC_2.25 setpayloadf F GLIBC_2.25 setpayloadf F
GLIBC_2.25 setpayloadl F GLIBC_2.25 setpayloadl F