mirror of
git://sourceware.org/git/glibc.git
synced 2025-04-18 14:30:43 +08:00
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the pown functions, which are like pow but with an integer exponent. That 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. The test inputs are based on the subset of test inputs for pow that use integer exponents that fit in long long. As the first such template implementation that saves and restores the rounding mode internally (to avoid possible issues with directed rounding and intermediate overflows or underflows in the wrong rounding mode), support also needed to be added for using SET_RESTORE_ROUND* in such template function implementations. This required math-type-macros-float128.h to include <fenv_private.h>, so it can tell whether SET_RESTORE_ROUNDF128 is defined. In turn, the include order with <fenv_private.h> included before <math_private.h> broke loongarch builds, showing up that sysdeps/loongarch/math_private.h is really a fenv_private.h file (maybe implemented internally before the consistent split of those headers in 2018?) and needed to be renamed to fenv_private.h to avoid errors with duplicate macro definitions if <math_private.h> is included after <fenv_private.h>. The underlying implementation uses __ieee754_pow functions (called more than once in some cases, where the exponent does not fit in the floating type). I expect a custom implementation for a given format, that only handles integer exponents but handles larger exponents directly, could be faster and more accurate in some cases. I encourage searching for worst cases for ulps error for these implementations (necessarily non-exhaustively, given the size of the input space). Tested for x86_64 and x86, and with build-many-glibcs.py.
685 lines
19 KiB
Plaintext
685 lines
19 KiB
Plaintext
%include <float128-abi.h>
|
|
libc {
|
|
GLIBC_2.0 {
|
|
# functions used in inline functions or macros
|
|
__isnan; __isnanf; __isnanl; __finite; __finitef; __finitel;
|
|
__isinf; __isinff; __isinfl;
|
|
|
|
# global variables
|
|
__fpu_control;
|
|
|
|
# c*
|
|
copysign; copysignf; copysignl;
|
|
|
|
# f*
|
|
finite; finitef; finitel; frexp; frexpf; frexpl;
|
|
|
|
# i*
|
|
isinf; isinff; isinfl; isnan; isnanf; isnanl; ldexp; ldexpf; ldexpl;
|
|
|
|
# m*
|
|
modf; modff; modfl;
|
|
|
|
# s*
|
|
scalbn; scalbnf; scalbnl;
|
|
}
|
|
GLIBC_2.1 {
|
|
# functions used in inline functions or macros
|
|
__signbit; __signbitf; __signbitl;
|
|
|
|
# s*
|
|
scalbln; scalblnf; scalblnl;
|
|
}
|
|
GLIBC_2.20 {
|
|
}
|
|
}
|
|
|
|
libm {
|
|
GLIBC_2.0 {
|
|
# mathematical functions
|
|
acos; acosf; acosl;
|
|
acosh; acoshf; acoshl;
|
|
asin; asinf; asinl;
|
|
asinh; asinhf; asinhl;
|
|
atan2; atan2f; atan2l;
|
|
atan; atanf; atanl;
|
|
atanh; atanhf; atanhl;
|
|
cbrt; cbrtf; cbrtl;
|
|
ceil; ceilf; ceill;
|
|
copysign; copysignf; copysignl;
|
|
cos; cosf; cosl;
|
|
coshf; cosh; coshl;
|
|
drem; dremf; dreml;
|
|
erf; erff; erfl;
|
|
erfc; erfcf; erfcl;
|
|
exp; expf; expl;
|
|
expm1; expm1f; expm1l;
|
|
fabs; fabsf; fabsl;
|
|
finite; finitef; finitel;
|
|
floor; floorf; floorl;
|
|
fmod; fmodf; fmodl;
|
|
frexp; frexpf; frexpl;
|
|
gamma; gammaf; gammal;
|
|
gamma_r; gammaf_r; gammal_r;
|
|
hypot; hypotf; hypotl;
|
|
ilogb; ilogbf; ilogbl;
|
|
j0; j0f; j0l;
|
|
j1; j1f; j1l;
|
|
jn; jnf; jnl;
|
|
ldexp; ldexpf; ldexpl;
|
|
lgamma; lgammaf; lgammal;
|
|
lgamma_r; lgammaf_r; lgammal_r;
|
|
log10; log10f; log10l;
|
|
log1p; log1pf; log1pl;
|
|
log; logf; logl;
|
|
logb; logbf; logbl;
|
|
matherr;
|
|
modf; modff; modfl;
|
|
nextafter; nextafterf; nextafterl;
|
|
pow; powf; powl;
|
|
remainder; remainderf; remainderl;
|
|
rint; rintf; rintl;
|
|
scalb; scalbf; scalbl;
|
|
scalbn; scalbnf; scalbnl;
|
|
significand; significandf; significandl;
|
|
sin; sinf; sinl;
|
|
sinh; sinhf; sinhl;
|
|
sqrt; sqrtf; sqrtl;
|
|
tan; tanf; tanl;
|
|
tanh; tanhf; tanhl;
|
|
y0; y0f; y0l;
|
|
y1; y1f; y1l;
|
|
yn; ynf; ynl;
|
|
|
|
|
|
# global variables
|
|
_LIB_VERSION; signgam;
|
|
}
|
|
GLIBC_2.1 {
|
|
# mathematical functions
|
|
exp2; exp2f; # exp2l; -- bug omitted this until GLIBC_2.4 (below)
|
|
exp10; exp10f; exp10l;
|
|
fdim; fdimf; fdiml;
|
|
fma; fmaf; fmal;
|
|
fmax; fmaxf; fmaxl;
|
|
fmin; fminf; fminl;
|
|
log2; log2f; log2l;
|
|
nan; nanf; nanl;
|
|
nearbyint; nearbyintf; nearbyintl;
|
|
nexttoward; nexttowardf; nexttowardl;
|
|
pow10; pow10f; pow10l;
|
|
remquo; remquof; remquol;
|
|
lrint; lrintf; lrintl;
|
|
llrint; llrintf; llrintl;
|
|
round; roundf; roundl;
|
|
lround; lroundf; lroundl;
|
|
llround; llroundf; llroundl;
|
|
scalbln; scalblnf; scalblnl;
|
|
sincos; sincosf; sincosl;
|
|
trunc; truncf; truncl;
|
|
tgamma; tgammaf; tgammal;
|
|
|
|
# complex functions
|
|
cabs; cabsf; cabsl;
|
|
cacos; cacosf; cacosl;
|
|
cacosh; cacoshf; cacoshl;
|
|
carg; cargf; cargl;
|
|
casin; casinf; casinl;
|
|
casinh; casinhf; casinhl;
|
|
catan; catanf; catanl;
|
|
catanh; catanhf; catanhl;
|
|
ccos; ccosf; ccosl;
|
|
ccosh; ccoshf; ccoshl;
|
|
cexp; cexpf; cexpl;
|
|
cimag; cimagf; cimagl;
|
|
clog; clogf; clogl;
|
|
clog10; clog10f; clog10l;
|
|
__clog10; __clog10f; __clog10l;
|
|
conj; conjf; conjl;
|
|
cpow; cpowf; cpowl;
|
|
cproj; cprojf; cprojl;
|
|
creal; crealf; creall;
|
|
csin; csinf; csinl;
|
|
csinh; csinhf; csinhl;
|
|
csqrt; csqrtf; csqrtl;
|
|
ctan; ctanf; ctanl;
|
|
ctanh; ctanhf; ctanhl;
|
|
|
|
# fp environment functions
|
|
feclearexcept; fegetenv; fegetexceptflag;
|
|
fegetround; feholdexcept; feraiseexcept;
|
|
fesetenv; fesetexceptflag; fesetround;
|
|
fetestexcept; feupdateenv;
|
|
|
|
# functions used in inline functions or macros
|
|
__finite; __finitef; __finitel;
|
|
__fpclassify; __fpclassifyf; __fpclassifyl;
|
|
__signbit; __signbitf; __signbitl;
|
|
}
|
|
GLIBC_2.2 {
|
|
# fp environment functions changes from ISO C99 TR1
|
|
feclearexcept; fegetenv; fegetexceptflag; feraiseexcept;
|
|
fesetenv; fesetexceptflag; feupdateenv;
|
|
|
|
# fp environment function
|
|
feenableexcept; fedisableexcept; fegetexcept;
|
|
}
|
|
GLIBC_2.4 {
|
|
# A bug in sysdeps/generic/w_exp2.c kept this from appearing
|
|
# in GLIBC_2.1 as it should have on platforms using that
|
|
# implementation file. On others, sysdeps/CPU/Versions now
|
|
# puts exp2l in GLIBC_2.1, which will override this entry.
|
|
exp2l;
|
|
}
|
|
GLIBC_2.15 {
|
|
# Optimized -ffinite-math-only entry points
|
|
__acos_finite; __acosf_finite; __acosl_finite;
|
|
__acosh_finite; __acoshf_finite; __acoshl_finite;
|
|
__asin_finite; __asinf_finite; __asinl_finite;
|
|
__atan2_finite; __atan2f_finite; __atan2l_finite;
|
|
__atanh_finite; __atanhf_finite; __atanhl_finite;
|
|
__cosh_finite; __coshf_finite; __coshl_finite;
|
|
__exp10_finite; __exp10f_finite; __exp10l_finite;
|
|
__exp2_finite; __exp2f_finite; __exp2l_finite;
|
|
__fmod_finite; __fmodf_finite; __fmodl_finite;
|
|
__hypot_finite; __hypotf_finite; __hypotl_finite;
|
|
__j0_finite; __j0f_finite; __j0l_finite;
|
|
__y0_finite; __y0f_finite; __y0l_finite;
|
|
__j1_finite; __j1f_finite; __j1l_finite;
|
|
__y1_finite; __y1f_finite; __y1l_finite;
|
|
__jn_finite; __jnf_finite; __jnl_finite;
|
|
__yn_finite; __ynf_finite; __ynl_finite;
|
|
__lgamma_r_finite; __lgammaf_r_finite; __lgammal_r_finite;
|
|
__log_finite; __logf_finite; __logl_finite;
|
|
__log10_finite; __log10f_finite; __log10l_finite;
|
|
__log2_finite; __log2f_finite; __log2l_finite;
|
|
__pow_finite; __powf_finite; __powl_finite;
|
|
__remainder_finite; __remainderf_finite; __remainderl_finite;
|
|
__scalb_finite; __scalbf_finite; __scalbl_finite;
|
|
__sinh_finite; __sinhf_finite; __sinhl_finite;
|
|
__sqrt_finite; __sqrtf_finite; __sqrtl_finite;
|
|
__gamma_r_finite; __gammaf_r_finite; __gammal_r_finite;
|
|
__exp_finite; __expf_finite; __expl_finite;
|
|
}
|
|
GLIBC_2.18 {
|
|
__issignaling; __issignalingf; __issignalingl;
|
|
}
|
|
GLIBC_2.23 {
|
|
# The __signgam name must be exported for the signgam weak alias
|
|
# to work. New symbol versions of lgamma* that set __signgam are
|
|
# needed to preserve compatibility with old binaries that have a
|
|
# dynamic symbol for signgam but not __signgam.
|
|
lgamma; lgammaf; lgammal; __signgam;
|
|
}
|
|
GLIBC_2.24 {
|
|
nextup; nextupf; nextupl;
|
|
nextdown; nextdownf; nextdownl;
|
|
}
|
|
GLIBC_2.25 {
|
|
fesetexcept; fetestexceptflag; fegetmode; fesetmode;
|
|
__iscanonicall; __iseqsigf; __iseqsig; __iseqsigl;
|
|
totalorder; totalorderf; totalorderl;
|
|
totalordermag; totalordermagf; totalordermagl;
|
|
getpayload; getpayloadf; getpayloadl;
|
|
canonicalize; canonicalizef; canonicalizel;
|
|
setpayload; setpayloadf; setpayloadl;
|
|
setpayloadsig; setpayloadsigf; setpayloadsigl;
|
|
llogb; llogbf; llogbl;
|
|
fmaxmag; fmaxmagf; fmaxmagl; fminmag; fminmagf; fminmagl;
|
|
roundeven; roundevenf; roundevenl;
|
|
fromfp; fromfpf; fromfpl; ufromfp; ufromfpf; ufromfpl;
|
|
fromfpx; fromfpxf; fromfpxl; ufromfpx; ufromfpxf; ufromfpxl;
|
|
}
|
|
%ifdef FLOAT128_VERSION
|
|
FLOAT128_VERSION {
|
|
acosf128;
|
|
acoshf128;
|
|
asinf128;
|
|
asinhf128;
|
|
atan2f128;
|
|
atanf128;
|
|
atanhf128;
|
|
cabsf128;
|
|
cacosf128;
|
|
cacoshf128;
|
|
canonicalizef128;
|
|
cargf128;
|
|
casinf128;
|
|
casinhf128;
|
|
catanf128;
|
|
catanhf128;
|
|
cbrtf128;
|
|
ccosf128;
|
|
ccoshf128;
|
|
ceilf128;
|
|
cexpf128;
|
|
cimagf128;
|
|
clog10f128;
|
|
clogf128;
|
|
conjf128;
|
|
copysignf128;
|
|
cosf128;
|
|
coshf128;
|
|
cpowf128;
|
|
cprojf128;
|
|
crealf128;
|
|
csinf128;
|
|
csinhf128;
|
|
csqrtf128;
|
|
ctanf128;
|
|
ctanhf128;
|
|
erfcf128;
|
|
erff128;
|
|
exp10f128;
|
|
exp2f128;
|
|
expf128;
|
|
expm1f128;
|
|
fabsf128;
|
|
fdimf128;
|
|
floorf128;
|
|
fmaf128;
|
|
fmaxf128;
|
|
fmaxmagf128;
|
|
fminf128;
|
|
fminmagf128;
|
|
fmodf128;
|
|
frexpf128;
|
|
fromfpf128;
|
|
fromfpxf128;
|
|
getpayloadf128;
|
|
hypotf128;
|
|
ilogbf128;
|
|
j0f128;
|
|
j1f128;
|
|
jnf128;
|
|
ldexpf128;
|
|
lgammaf128;
|
|
lgammaf128_r;
|
|
llogbf128;
|
|
llrintf128;
|
|
llroundf128;
|
|
log10f128;
|
|
log1pf128;
|
|
log2f128;
|
|
logbf128;
|
|
logf128;
|
|
lrintf128;
|
|
lroundf128;
|
|
modff128;
|
|
nanf128;
|
|
nearbyintf128;
|
|
nextafterf128;
|
|
nextdownf128;
|
|
nextupf128;
|
|
powf128;
|
|
remainderf128;
|
|
remquof128;
|
|
rintf128;
|
|
roundevenf128;
|
|
roundf128;
|
|
scalblnf128;
|
|
scalbnf128;
|
|
setpayloadf128;
|
|
setpayloadsigf128;
|
|
sincosf128;
|
|
sinf128;
|
|
sinhf128;
|
|
sqrtf128;
|
|
tanf128;
|
|
tanhf128;
|
|
tgammaf128;
|
|
totalorderf128;
|
|
totalordermagf128;
|
|
truncf128;
|
|
ufromfpf128;
|
|
ufromfpxf128;
|
|
y0f128;
|
|
y1f128;
|
|
ynf128;
|
|
}
|
|
%endif
|
|
GLIBC_2.27 {
|
|
expf; exp2f; logf; log2f; powf;
|
|
# _Float64x functions, only present for some configurations.
|
|
acosf64x;
|
|
acoshf64x;
|
|
asinf64x;
|
|
asinhf64x;
|
|
atan2f64x;
|
|
atanf64x;
|
|
atanhf64x;
|
|
cabsf64x;
|
|
cacosf64x;
|
|
cacoshf64x;
|
|
canonicalizef64x;
|
|
cargf64x;
|
|
casinf64x;
|
|
casinhf64x;
|
|
catanf64x;
|
|
catanhf64x;
|
|
cbrtf64x;
|
|
ccosf64x;
|
|
ccoshf64x;
|
|
ceilf64x;
|
|
cexpf64x;
|
|
cimagf64x;
|
|
clog10f64x;
|
|
clogf64x;
|
|
conjf64x;
|
|
copysignf64x;
|
|
cosf64x;
|
|
coshf64x;
|
|
cpowf64x;
|
|
cprojf64x;
|
|
crealf64x;
|
|
csinf64x;
|
|
csinhf64x;
|
|
csqrtf64x;
|
|
ctanf64x;
|
|
ctanhf64x;
|
|
erfcf64x;
|
|
erff64x;
|
|
exp10f64x;
|
|
exp2f64x;
|
|
expf64x;
|
|
expm1f64x;
|
|
fabsf64x;
|
|
fdimf64x;
|
|
floorf64x;
|
|
fmaf64x;
|
|
fmaxf64x;
|
|
fmaxmagf64x;
|
|
fminf64x;
|
|
fminmagf64x;
|
|
fmodf64x;
|
|
frexpf64x;
|
|
fromfpf64x;
|
|
fromfpxf64x;
|
|
getpayloadf64x;
|
|
hypotf64x;
|
|
ilogbf64x;
|
|
j0f64x;
|
|
j1f64x;
|
|
jnf64x;
|
|
ldexpf64x;
|
|
lgammaf64x;
|
|
lgammaf64x_r;
|
|
llogbf64x;
|
|
llrintf64x;
|
|
llroundf64x;
|
|
log10f64x;
|
|
log1pf64x;
|
|
log2f64x;
|
|
logbf64x;
|
|
logf64x;
|
|
lrintf64x;
|
|
lroundf64x;
|
|
modff64x;
|
|
nanf64x;
|
|
nearbyintf64x;
|
|
nextafterf64x;
|
|
nextdownf64x;
|
|
nextupf64x;
|
|
powf64x;
|
|
remainderf64x;
|
|
remquof64x;
|
|
rintf64x;
|
|
roundevenf64x;
|
|
roundf64x;
|
|
scalblnf64x;
|
|
scalbnf64x;
|
|
setpayloadf64x;
|
|
setpayloadsigf64x;
|
|
sincosf64x;
|
|
sinf64x;
|
|
sinhf64x;
|
|
sqrtf64x;
|
|
tanf64x;
|
|
tanhf64x;
|
|
tgammaf64x;
|
|
totalorderf64x;
|
|
totalordermagf64x;
|
|
truncf64x;
|
|
ufromfpf64x;
|
|
ufromfpxf64x;
|
|
y0f64x;
|
|
y1f64x;
|
|
ynf64x;
|
|
# _Float32, _Float64 and _Float32x functions, for all configurations.
|
|
acosf32; acosf64; acosf32x;
|
|
acoshf32; acoshf64; acoshf32x;
|
|
asinf32; asinf64; asinf32x;
|
|
asinhf32; asinhf64; asinhf32x;
|
|
atan2f32; atan2f64; atan2f32x;
|
|
atanf32; atanf64; atanf32x;
|
|
atanhf32; atanhf64; atanhf32x;
|
|
cabsf32; cabsf64; cabsf32x;
|
|
cacosf32; cacosf64; cacosf32x;
|
|
cacoshf32; cacoshf64; cacoshf32x;
|
|
canonicalizef32; canonicalizef64; canonicalizef32x;
|
|
cargf32; cargf64; cargf32x;
|
|
casinf32; casinf64; casinf32x;
|
|
casinhf32; casinhf64; casinhf32x;
|
|
catanf32; catanf64; catanf32x;
|
|
catanhf32; catanhf64; catanhf32x;
|
|
cbrtf32; cbrtf64; cbrtf32x;
|
|
ccosf32; ccosf64; ccosf32x;
|
|
ccoshf32; ccoshf64; ccoshf32x;
|
|
ceilf32; ceilf64; ceilf32x;
|
|
cexpf32; cexpf64; cexpf32x;
|
|
cimagf32; cimagf64; cimagf32x;
|
|
clog10f32; clog10f64; clog10f32x;
|
|
clogf32; clogf64; clogf32x;
|
|
conjf32; conjf64; conjf32x;
|
|
copysignf32; copysignf64; copysignf32x;
|
|
cosf32; cosf64; cosf32x;
|
|
coshf32; coshf64; coshf32x;
|
|
cpowf32; cpowf64; cpowf32x;
|
|
cprojf32; cprojf64; cprojf32x;
|
|
crealf32; crealf64; crealf32x;
|
|
csinf32; csinf64; csinf32x;
|
|
csinhf32; csinhf64; csinhf32x;
|
|
csqrtf32; csqrtf64; csqrtf32x;
|
|
ctanf32; ctanf64; ctanf32x;
|
|
ctanhf32; ctanhf64; ctanhf32x;
|
|
erfcf32; erfcf64; erfcf32x;
|
|
erff32; erff64; erff32x;
|
|
exp10f32; exp10f64; exp10f32x;
|
|
exp2f32; exp2f64; exp2f32x;
|
|
expf32; expf64; expf32x;
|
|
expm1f32; expm1f64; expm1f32x;
|
|
fabsf32; fabsf64; fabsf32x;
|
|
fdimf32; fdimf64; fdimf32x;
|
|
floorf32; floorf64; floorf32x;
|
|
fmaf32; fmaf64; fmaf32x;
|
|
fmaxf32; fmaxf64; fmaxf32x;
|
|
fmaxmagf32; fmaxmagf64; fmaxmagf32x;
|
|
fminf32; fminf64; fminf32x;
|
|
fminmagf32; fminmagf64; fminmagf32x;
|
|
fmodf32; fmodf64; fmodf32x;
|
|
frexpf32; frexpf64; frexpf32x;
|
|
fromfpf32; fromfpf64; fromfpf32x;
|
|
fromfpxf32; fromfpxf64; fromfpxf32x;
|
|
getpayloadf32; getpayloadf64; getpayloadf32x;
|
|
hypotf32; hypotf64; hypotf32x;
|
|
ilogbf32; ilogbf64; ilogbf32x;
|
|
j0f32; j0f64; j0f32x;
|
|
j1f32; j1f64; j1f32x;
|
|
jnf32; jnf64; jnf32x;
|
|
ldexpf32; ldexpf64; ldexpf32x;
|
|
lgammaf32; lgammaf64; lgammaf32x;
|
|
lgammaf32_r; lgammaf64_r; lgammaf32x_r;
|
|
llogbf32; llogbf64; llogbf32x;
|
|
llrintf32; llrintf64; llrintf32x;
|
|
llroundf32; llroundf64; llroundf32x;
|
|
log10f32; log10f64; log10f32x;
|
|
log1pf32; log1pf64; log1pf32x;
|
|
log2f32; log2f64; log2f32x;
|
|
logbf32; logbf64; logbf32x;
|
|
logf32; logf64; logf32x;
|
|
lrintf32; lrintf64; lrintf32x;
|
|
lroundf32; lroundf64; lroundf32x;
|
|
modff32; modff64; modff32x;
|
|
nanf32; nanf64; nanf32x;
|
|
nearbyintf32; nearbyintf64; nearbyintf32x;
|
|
nextafterf32; nextafterf64; nextafterf32x;
|
|
nextdownf32; nextdownf64; nextdownf32x;
|
|
nextupf32; nextupf64; nextupf32x;
|
|
powf32; powf64; powf32x;
|
|
remainderf32; remainderf64; remainderf32x;
|
|
remquof32; remquof64; remquof32x;
|
|
rintf32; rintf64; rintf32x;
|
|
roundevenf32; roundevenf64; roundevenf32x;
|
|
roundf32; roundf64; roundf32x;
|
|
scalblnf32; scalblnf64; scalblnf32x;
|
|
scalbnf32; scalbnf64; scalbnf32x;
|
|
setpayloadf32; setpayloadf64; setpayloadf32x;
|
|
setpayloadsigf32; setpayloadsigf64; setpayloadsigf32x;
|
|
sincosf32; sincosf64; sincosf32x;
|
|
sinf32; sinf64; sinf32x;
|
|
sinhf32; sinhf64; sinhf32x;
|
|
sqrtf32; sqrtf64; sqrtf32x;
|
|
tanf32; tanf64; tanf32x;
|
|
tanhf32; tanhf64; tanhf32x;
|
|
tgammaf32; tgammaf64; tgammaf32x;
|
|
totalorderf32; totalorderf64; totalorderf32x;
|
|
totalordermagf32; totalordermagf64; totalordermagf32x;
|
|
truncf32; truncf64; truncf32x;
|
|
ufromfpf32; ufromfpf64; ufromfpf32x;
|
|
ufromfpxf32; ufromfpxf64; ufromfpxf32x;
|
|
y0f32; y0f64; y0f32x;
|
|
y1f32; y1f64; y1f32x;
|
|
ynf32; ynf64; ynf32x;
|
|
}
|
|
GLIBC_2.28 {
|
|
# Functions not involving _Float64x or _Float128, for all configurations.
|
|
fadd; faddl; daddl;
|
|
f32addf32x; f32addf64; f32xaddf64;
|
|
fdiv; fdivl; ddivl;
|
|
f32divf32x; f32divf64; f32xdivf64;
|
|
fmul; fmull; dmull;
|
|
f32mulf32x; f32mulf64; f32xmulf64;
|
|
fsub; fsubl; dsubl;
|
|
f32subf32x; f32subf64; f32xsubf64;
|
|
# Functions involving _Float64x or _Float128, for some configurations.
|
|
f32addf64x; f32addf128;
|
|
f32xaddf64x; f32xaddf128; f64addf64x; f64addf128;
|
|
f64xaddf128;
|
|
f32divf64x; f32divf128;
|
|
f32xdivf64x; f32xdivf128; f64divf64x; f64divf128;
|
|
f64xdivf128;
|
|
f32mulf64x; f32mulf128;
|
|
f32xmulf64x; f32xmulf128; f64mulf64x; f64mulf128;
|
|
f64xmulf128;
|
|
f32subf64x; f32subf128;
|
|
f32xsubf64x; f32xsubf128; f64subf64x; f64subf128;
|
|
f64xsubf128;
|
|
}
|
|
GLIBC_2.29 {
|
|
# No SVID compatible error handling.
|
|
exp; exp2; log; log2; pow;
|
|
}
|
|
GLIBC_2.31 {
|
|
# totalorder changed to take pointer arguments.
|
|
totalorder; totalorderf; totalorderl;
|
|
totalordermag; totalordermagf; totalordermagl;
|
|
totalorderf32; totalorderf64; totalorderf32x;
|
|
totalordermagf32; totalordermagf64; totalordermagf32x;
|
|
totalorderf64x;
|
|
totalordermagf64x;
|
|
totalorderf128;
|
|
totalordermagf128;
|
|
}
|
|
GLIBC_2.32 {
|
|
exp10f;
|
|
}
|
|
GLIBC_2.35 {
|
|
# Functions not involving _Float64x or _Float128, for all configurations.
|
|
ffma; ffmal; dfmal;
|
|
f32fmaf32x; f32fmaf64; f32xfmaf64;
|
|
fsqrt; fsqrtl; dsqrtl;
|
|
f32sqrtf32x; f32sqrtf64; f32xsqrtf64;
|
|
fmaximum; fmaximumf; fmaximuml; fmaximumf32; fmaximumf64; fmaximumf32x;
|
|
fmaximum_num; fmaximum_numf; fmaximum_numl;
|
|
fmaximum_numf32; fmaximum_numf64; fmaximum_numf32x;
|
|
fmaximum_mag; fmaximum_magf; fmaximum_magl;
|
|
fmaximum_magf32; fmaximum_magf64; fmaximum_magf32x;
|
|
fmaximum_mag_num; fmaximum_mag_numf; fmaximum_mag_numl;
|
|
fmaximum_mag_numf32; fmaximum_mag_numf64; fmaximum_mag_numf32x;
|
|
fminimum; fminimumf; fminimuml; fminimumf32; fminimumf64; fminimumf32x;
|
|
fminimum_num; fminimum_numf; fminimum_numl;
|
|
fminimum_numf32; fminimum_numf64; fminimum_numf32x;
|
|
fminimum_mag; fminimum_magf; fminimum_magl;
|
|
fminimum_magf32; fminimum_magf64; fminimum_magf32x;
|
|
fminimum_mag_num; fminimum_mag_numf; fminimum_mag_numl;
|
|
fminimum_mag_numf32; fminimum_mag_numf64; fminimum_mag_numf32x;
|
|
# Functions involving _Float64x or _Float128, for some configurations.
|
|
f32fmaf64x; f32fmaf128;
|
|
f32xfmaf64x; f32xfmaf128; f64fmaf64x; f64fmaf128;
|
|
f64xfmaf128;
|
|
f32sqrtf64x; f32sqrtf128;
|
|
f32xsqrtf64x; f32xsqrtf128; f64sqrtf64x; f64sqrtf128;
|
|
f64xsqrtf128;
|
|
fmaximumf64x; fmaximumf128;
|
|
fmaximum_numf64x; fmaximum_numf128;
|
|
fmaximum_magf64x; fmaximum_magf128;
|
|
fmaximum_mag_numf64x; fmaximum_mag_numf128;
|
|
fminimumf64x; fminimumf128;
|
|
fminimum_numf64x; fminimum_numf128;
|
|
fminimum_magf64x; fminimum_magf128;
|
|
fminimum_mag_numf64x; fminimum_mag_numf128;
|
|
# No SVID compatible error handling.
|
|
hypotf; hypot;
|
|
}
|
|
GLIBC_2.38 {
|
|
# No SVID compatible error handling.
|
|
fmod; fmodf;
|
|
}
|
|
GLIBC_2.39 {
|
|
# No SVID compatible error handling.
|
|
exp10;
|
|
}
|
|
GLIBC_2.40 {
|
|
# Functions not involving _Float64x or _Float128, for all configurations.
|
|
exp2m1; exp2m1f; exp2m1l; exp2m1f32; exp2m1f64; exp2m1f32x;
|
|
exp10m1; exp10m1f; exp10m1l; exp10m1f32; exp10m1f64; exp10m1f32x;
|
|
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.
|
|
exp2m1f64x; exp2m1f128;
|
|
exp10m1f64x; exp10m1f128;
|
|
log2p1f64x; log2p1f128;
|
|
log10p1f64x; log10p1f128;
|
|
logp1f64x; logp1f128;
|
|
}
|
|
GLIBC_2.41 {
|
|
# Functions not involving _Float64x or _Float128, for all configurations.
|
|
acospi; acospif; acospil; acospif32; acospif64; acospif32x;
|
|
asinpi; asinpif; asinpil; asinpif32; asinpif64; asinpif32x;
|
|
atan2pi; atan2pif; atan2pil; atan2pif32; atan2pif64; atan2pif32x;
|
|
atanpi; atanpif; atanpil; atanpif32; atanpif64; atanpif32x;
|
|
cospi; cospif; cospil; cospif32; cospif64; cospif32x;
|
|
sinpi; sinpif; sinpil; sinpif32; sinpif64; sinpif32x;
|
|
tanpi; tanpif; tanpil; tanpif32; tanpif64; tanpif32x;
|
|
# Functions involving _Float64x or _Float128, for some configurations.
|
|
acospif64x; acospif128;
|
|
asinpif64x; asinpif128;
|
|
atan2pif64x; atan2pif128;
|
|
atanpif64x; atanpif128;
|
|
cospif64x; cospif128;
|
|
sinpif64x; sinpif128;
|
|
tanpif64x; tanpif128;
|
|
}
|
|
GLIBC_2.42 {
|
|
# Functions not involving _Float64x or _Float128, for all configurations.
|
|
pown; pownf; pownl; pownf32; pownf64; pownf32x;
|
|
powr; powrf; powrl; powrf32; powrf64; powrf32x;
|
|
rsqrt; rsqrtf; rsqrtl; rsqrtf32; rsqrtf64; rsqrtf32x;
|
|
# Functions involving _Float64x or _Float128, for some configurations.
|
|
pownf64x; pownf128;
|
|
powrf64x; powrf128;
|
|
rsqrtf64x; rsqrtf128;
|
|
}
|
|
}
|