2018-12-21 01:48:04 +00:00
|
|
|
GLIBC_2.29 __acos_finite F
|
|
|
|
GLIBC_2.29 __acosf_finite F
|
|
|
|
GLIBC_2.29 __acosh_finite F
|
|
|
|
GLIBC_2.29 __acoshf_finite F
|
|
|
|
GLIBC_2.29 __asin_finite F
|
|
|
|
GLIBC_2.29 __asinf_finite F
|
|
|
|
GLIBC_2.29 __atan2_finite F
|
|
|
|
GLIBC_2.29 __atan2f_finite F
|
|
|
|
GLIBC_2.29 __atanh_finite F
|
|
|
|
GLIBC_2.29 __atanhf_finite F
|
|
|
|
GLIBC_2.29 __clog10 F
|
|
|
|
GLIBC_2.29 __clog10f F
|
|
|
|
GLIBC_2.29 __clog10l F
|
|
|
|
GLIBC_2.29 __cosh_finite F
|
|
|
|
GLIBC_2.29 __coshf_finite F
|
|
|
|
GLIBC_2.29 __exp10_finite F
|
|
|
|
GLIBC_2.29 __exp10f_finite F
|
|
|
|
GLIBC_2.29 __exp2_finite F
|
|
|
|
GLIBC_2.29 __exp2f_finite F
|
|
|
|
GLIBC_2.29 __exp_finite F
|
|
|
|
GLIBC_2.29 __expf_finite F
|
|
|
|
GLIBC_2.29 __finite F
|
|
|
|
GLIBC_2.29 __finitef F
|
|
|
|
GLIBC_2.29 __fmod_finite F
|
|
|
|
GLIBC_2.29 __fmodf_finite F
|
|
|
|
GLIBC_2.29 __fpclassify F
|
|
|
|
GLIBC_2.29 __fpclassifyf F
|
|
|
|
GLIBC_2.29 __gamma_r_finite F
|
|
|
|
GLIBC_2.29 __gammaf_r_finite F
|
|
|
|
GLIBC_2.29 __hypot_finite F
|
|
|
|
GLIBC_2.29 __hypotf_finite F
|
|
|
|
GLIBC_2.29 __iseqsig F
|
|
|
|
GLIBC_2.29 __iseqsigf F
|
|
|
|
GLIBC_2.29 __issignaling F
|
|
|
|
GLIBC_2.29 __issignalingf F
|
|
|
|
GLIBC_2.29 __j0_finite F
|
|
|
|
GLIBC_2.29 __j0f_finite F
|
|
|
|
GLIBC_2.29 __j1_finite F
|
|
|
|
GLIBC_2.29 __j1f_finite F
|
|
|
|
GLIBC_2.29 __jn_finite F
|
|
|
|
GLIBC_2.29 __jnf_finite F
|
|
|
|
GLIBC_2.29 __lgamma_r_finite F
|
|
|
|
GLIBC_2.29 __lgammaf_r_finite F
|
|
|
|
GLIBC_2.29 __log10_finite F
|
|
|
|
GLIBC_2.29 __log10f_finite F
|
|
|
|
GLIBC_2.29 __log2_finite F
|
|
|
|
GLIBC_2.29 __log2f_finite F
|
|
|
|
GLIBC_2.29 __log_finite F
|
|
|
|
GLIBC_2.29 __logf_finite F
|
|
|
|
GLIBC_2.29 __pow_finite F
|
|
|
|
GLIBC_2.29 __powf_finite F
|
|
|
|
GLIBC_2.29 __remainder_finite F
|
|
|
|
GLIBC_2.29 __remainderf_finite F
|
|
|
|
GLIBC_2.29 __scalb_finite F
|
|
|
|
GLIBC_2.29 __scalbf_finite F
|
|
|
|
GLIBC_2.29 __signbit F
|
|
|
|
GLIBC_2.29 __signbitf F
|
|
|
|
GLIBC_2.29 __signgam D 0x4
|
|
|
|
GLIBC_2.29 __sinh_finite F
|
|
|
|
GLIBC_2.29 __sinhf_finite F
|
|
|
|
GLIBC_2.29 __sqrt_finite F
|
|
|
|
GLIBC_2.29 __sqrtf_finite F
|
|
|
|
GLIBC_2.29 __y0_finite F
|
|
|
|
GLIBC_2.29 __y0f_finite F
|
|
|
|
GLIBC_2.29 __y1_finite F
|
|
|
|
GLIBC_2.29 __y1f_finite F
|
|
|
|
GLIBC_2.29 __yn_finite F
|
|
|
|
GLIBC_2.29 __ynf_finite F
|
|
|
|
GLIBC_2.29 acos F
|
|
|
|
GLIBC_2.29 acosf F
|
|
|
|
GLIBC_2.29 acosf32 F
|
|
|
|
GLIBC_2.29 acosf32x F
|
|
|
|
GLIBC_2.29 acosf64 F
|
|
|
|
GLIBC_2.29 acosh F
|
|
|
|
GLIBC_2.29 acoshf F
|
|
|
|
GLIBC_2.29 acoshf32 F
|
|
|
|
GLIBC_2.29 acoshf32x F
|
|
|
|
GLIBC_2.29 acoshf64 F
|
|
|
|
GLIBC_2.29 acoshl F
|
|
|
|
GLIBC_2.29 acosl F
|
|
|
|
GLIBC_2.29 asin F
|
|
|
|
GLIBC_2.29 asinf F
|
|
|
|
GLIBC_2.29 asinf32 F
|
|
|
|
GLIBC_2.29 asinf32x F
|
|
|
|
GLIBC_2.29 asinf64 F
|
|
|
|
GLIBC_2.29 asinh F
|
|
|
|
GLIBC_2.29 asinhf F
|
|
|
|
GLIBC_2.29 asinhf32 F
|
|
|
|
GLIBC_2.29 asinhf32x F
|
|
|
|
GLIBC_2.29 asinhf64 F
|
|
|
|
GLIBC_2.29 asinhl F
|
|
|
|
GLIBC_2.29 asinl F
|
|
|
|
GLIBC_2.29 atan F
|
|
|
|
GLIBC_2.29 atan2 F
|
|
|
|
GLIBC_2.29 atan2f F
|
|
|
|
GLIBC_2.29 atan2f32 F
|
|
|
|
GLIBC_2.29 atan2f32x F
|
|
|
|
GLIBC_2.29 atan2f64 F
|
|
|
|
GLIBC_2.29 atan2l F
|
|
|
|
GLIBC_2.29 atanf F
|
|
|
|
GLIBC_2.29 atanf32 F
|
|
|
|
GLIBC_2.29 atanf32x F
|
|
|
|
GLIBC_2.29 atanf64 F
|
|
|
|
GLIBC_2.29 atanh F
|
|
|
|
GLIBC_2.29 atanhf F
|
|
|
|
GLIBC_2.29 atanhf32 F
|
|
|
|
GLIBC_2.29 atanhf32x F
|
|
|
|
GLIBC_2.29 atanhf64 F
|
|
|
|
GLIBC_2.29 atanhl F
|
|
|
|
GLIBC_2.29 atanl F
|
|
|
|
GLIBC_2.29 cabs F
|
|
|
|
GLIBC_2.29 cabsf F
|
|
|
|
GLIBC_2.29 cabsf32 F
|
|
|
|
GLIBC_2.29 cabsf32x F
|
|
|
|
GLIBC_2.29 cabsf64 F
|
|
|
|
GLIBC_2.29 cabsl F
|
|
|
|
GLIBC_2.29 cacos F
|
|
|
|
GLIBC_2.29 cacosf F
|
|
|
|
GLIBC_2.29 cacosf32 F
|
|
|
|
GLIBC_2.29 cacosf32x F
|
|
|
|
GLIBC_2.29 cacosf64 F
|
|
|
|
GLIBC_2.29 cacosh F
|
|
|
|
GLIBC_2.29 cacoshf F
|
|
|
|
GLIBC_2.29 cacoshf32 F
|
|
|
|
GLIBC_2.29 cacoshf32x F
|
|
|
|
GLIBC_2.29 cacoshf64 F
|
|
|
|
GLIBC_2.29 cacoshl F
|
|
|
|
GLIBC_2.29 cacosl F
|
|
|
|
GLIBC_2.29 canonicalize F
|
|
|
|
GLIBC_2.29 canonicalizef F
|
|
|
|
GLIBC_2.29 canonicalizef32 F
|
|
|
|
GLIBC_2.29 canonicalizef32x F
|
|
|
|
GLIBC_2.29 canonicalizef64 F
|
|
|
|
GLIBC_2.29 canonicalizel F
|
|
|
|
GLIBC_2.29 carg F
|
|
|
|
GLIBC_2.29 cargf F
|
|
|
|
GLIBC_2.29 cargf32 F
|
|
|
|
GLIBC_2.29 cargf32x F
|
|
|
|
GLIBC_2.29 cargf64 F
|
|
|
|
GLIBC_2.29 cargl F
|
|
|
|
GLIBC_2.29 casin F
|
|
|
|
GLIBC_2.29 casinf F
|
|
|
|
GLIBC_2.29 casinf32 F
|
|
|
|
GLIBC_2.29 casinf32x F
|
|
|
|
GLIBC_2.29 casinf64 F
|
|
|
|
GLIBC_2.29 casinh F
|
|
|
|
GLIBC_2.29 casinhf F
|
|
|
|
GLIBC_2.29 casinhf32 F
|
|
|
|
GLIBC_2.29 casinhf32x F
|
|
|
|
GLIBC_2.29 casinhf64 F
|
|
|
|
GLIBC_2.29 casinhl F
|
|
|
|
GLIBC_2.29 casinl F
|
|
|
|
GLIBC_2.29 catan F
|
|
|
|
GLIBC_2.29 catanf F
|
|
|
|
GLIBC_2.29 catanf32 F
|
|
|
|
GLIBC_2.29 catanf32x F
|
|
|
|
GLIBC_2.29 catanf64 F
|
|
|
|
GLIBC_2.29 catanh F
|
|
|
|
GLIBC_2.29 catanhf F
|
|
|
|
GLIBC_2.29 catanhf32 F
|
|
|
|
GLIBC_2.29 catanhf32x F
|
|
|
|
GLIBC_2.29 catanhf64 F
|
|
|
|
GLIBC_2.29 catanhl F
|
|
|
|
GLIBC_2.29 catanl F
|
|
|
|
GLIBC_2.29 cbrt F
|
|
|
|
GLIBC_2.29 cbrtf F
|
|
|
|
GLIBC_2.29 cbrtf32 F
|
|
|
|
GLIBC_2.29 cbrtf32x F
|
|
|
|
GLIBC_2.29 cbrtf64 F
|
|
|
|
GLIBC_2.29 cbrtl F
|
|
|
|
GLIBC_2.29 ccos F
|
|
|
|
GLIBC_2.29 ccosf F
|
|
|
|
GLIBC_2.29 ccosf32 F
|
|
|
|
GLIBC_2.29 ccosf32x F
|
|
|
|
GLIBC_2.29 ccosf64 F
|
|
|
|
GLIBC_2.29 ccosh F
|
|
|
|
GLIBC_2.29 ccoshf F
|
|
|
|
GLIBC_2.29 ccoshf32 F
|
|
|
|
GLIBC_2.29 ccoshf32x F
|
|
|
|
GLIBC_2.29 ccoshf64 F
|
|
|
|
GLIBC_2.29 ccoshl F
|
|
|
|
GLIBC_2.29 ccosl F
|
|
|
|
GLIBC_2.29 ceil F
|
|
|
|
GLIBC_2.29 ceilf F
|
|
|
|
GLIBC_2.29 ceilf32 F
|
|
|
|
GLIBC_2.29 ceilf32x F
|
|
|
|
GLIBC_2.29 ceilf64 F
|
|
|
|
GLIBC_2.29 ceill F
|
|
|
|
GLIBC_2.29 cexp F
|
|
|
|
GLIBC_2.29 cexpf F
|
|
|
|
GLIBC_2.29 cexpf32 F
|
|
|
|
GLIBC_2.29 cexpf32x F
|
|
|
|
GLIBC_2.29 cexpf64 F
|
|
|
|
GLIBC_2.29 cexpl F
|
|
|
|
GLIBC_2.29 cimag F
|
|
|
|
GLIBC_2.29 cimagf F
|
|
|
|
GLIBC_2.29 cimagf32 F
|
|
|
|
GLIBC_2.29 cimagf32x F
|
|
|
|
GLIBC_2.29 cimagf64 F
|
|
|
|
GLIBC_2.29 cimagl F
|
|
|
|
GLIBC_2.29 clog F
|
|
|
|
GLIBC_2.29 clog10 F
|
|
|
|
GLIBC_2.29 clog10f F
|
|
|
|
GLIBC_2.29 clog10f32 F
|
|
|
|
GLIBC_2.29 clog10f32x F
|
|
|
|
GLIBC_2.29 clog10f64 F
|
|
|
|
GLIBC_2.29 clog10l F
|
|
|
|
GLIBC_2.29 clogf F
|
|
|
|
GLIBC_2.29 clogf32 F
|
|
|
|
GLIBC_2.29 clogf32x F
|
|
|
|
GLIBC_2.29 clogf64 F
|
|
|
|
GLIBC_2.29 clogl F
|
|
|
|
GLIBC_2.29 conj F
|
|
|
|
GLIBC_2.29 conjf F
|
|
|
|
GLIBC_2.29 conjf32 F
|
|
|
|
GLIBC_2.29 conjf32x F
|
|
|
|
GLIBC_2.29 conjf64 F
|
|
|
|
GLIBC_2.29 conjl F
|
|
|
|
GLIBC_2.29 copysign F
|
|
|
|
GLIBC_2.29 copysignf F
|
|
|
|
GLIBC_2.29 copysignf32 F
|
|
|
|
GLIBC_2.29 copysignf32x F
|
|
|
|
GLIBC_2.29 copysignf64 F
|
|
|
|
GLIBC_2.29 copysignl F
|
|
|
|
GLIBC_2.29 cos F
|
|
|
|
GLIBC_2.29 cosf F
|
|
|
|
GLIBC_2.29 cosf32 F
|
|
|
|
GLIBC_2.29 cosf32x F
|
|
|
|
GLIBC_2.29 cosf64 F
|
|
|
|
GLIBC_2.29 cosh F
|
|
|
|
GLIBC_2.29 coshf F
|
|
|
|
GLIBC_2.29 coshf32 F
|
|
|
|
GLIBC_2.29 coshf32x F
|
|
|
|
GLIBC_2.29 coshf64 F
|
|
|
|
GLIBC_2.29 coshl F
|
|
|
|
GLIBC_2.29 cosl F
|
|
|
|
GLIBC_2.29 cpow F
|
|
|
|
GLIBC_2.29 cpowf F
|
|
|
|
GLIBC_2.29 cpowf32 F
|
|
|
|
GLIBC_2.29 cpowf32x F
|
|
|
|
GLIBC_2.29 cpowf64 F
|
|
|
|
GLIBC_2.29 cpowl F
|
|
|
|
GLIBC_2.29 cproj F
|
|
|
|
GLIBC_2.29 cprojf F
|
|
|
|
GLIBC_2.29 cprojf32 F
|
|
|
|
GLIBC_2.29 cprojf32x F
|
|
|
|
GLIBC_2.29 cprojf64 F
|
|
|
|
GLIBC_2.29 cprojl F
|
|
|
|
GLIBC_2.29 creal F
|
|
|
|
GLIBC_2.29 crealf F
|
|
|
|
GLIBC_2.29 crealf32 F
|
|
|
|
GLIBC_2.29 crealf32x F
|
|
|
|
GLIBC_2.29 crealf64 F
|
|
|
|
GLIBC_2.29 creall F
|
|
|
|
GLIBC_2.29 csin F
|
|
|
|
GLIBC_2.29 csinf F
|
|
|
|
GLIBC_2.29 csinf32 F
|
|
|
|
GLIBC_2.29 csinf32x F
|
|
|
|
GLIBC_2.29 csinf64 F
|
|
|
|
GLIBC_2.29 csinh F
|
|
|
|
GLIBC_2.29 csinhf F
|
|
|
|
GLIBC_2.29 csinhf32 F
|
|
|
|
GLIBC_2.29 csinhf32x F
|
|
|
|
GLIBC_2.29 csinhf64 F
|
|
|
|
GLIBC_2.29 csinhl F
|
|
|
|
GLIBC_2.29 csinl F
|
|
|
|
GLIBC_2.29 csqrt F
|
|
|
|
GLIBC_2.29 csqrtf F
|
|
|
|
GLIBC_2.29 csqrtf32 F
|
|
|
|
GLIBC_2.29 csqrtf32x F
|
|
|
|
GLIBC_2.29 csqrtf64 F
|
|
|
|
GLIBC_2.29 csqrtl F
|
|
|
|
GLIBC_2.29 ctan F
|
|
|
|
GLIBC_2.29 ctanf F
|
|
|
|
GLIBC_2.29 ctanf32 F
|
|
|
|
GLIBC_2.29 ctanf32x F
|
|
|
|
GLIBC_2.29 ctanf64 F
|
|
|
|
GLIBC_2.29 ctanh F
|
|
|
|
GLIBC_2.29 ctanhf F
|
|
|
|
GLIBC_2.29 ctanhf32 F
|
|
|
|
GLIBC_2.29 ctanhf32x F
|
|
|
|
GLIBC_2.29 ctanhf64 F
|
|
|
|
GLIBC_2.29 ctanhl F
|
|
|
|
GLIBC_2.29 ctanl F
|
|
|
|
GLIBC_2.29 daddl F
|
|
|
|
GLIBC_2.29 ddivl F
|
|
|
|
GLIBC_2.29 dmull F
|
|
|
|
GLIBC_2.29 drem F
|
|
|
|
GLIBC_2.29 dremf F
|
|
|
|
GLIBC_2.29 dreml F
|
|
|
|
GLIBC_2.29 dsubl F
|
|
|
|
GLIBC_2.29 erf F
|
|
|
|
GLIBC_2.29 erfc F
|
|
|
|
GLIBC_2.29 erfcf F
|
|
|
|
GLIBC_2.29 erfcf32 F
|
|
|
|
GLIBC_2.29 erfcf32x F
|
|
|
|
GLIBC_2.29 erfcf64 F
|
|
|
|
GLIBC_2.29 erfcl F
|
|
|
|
GLIBC_2.29 erff F
|
|
|
|
GLIBC_2.29 erff32 F
|
|
|
|
GLIBC_2.29 erff32x F
|
|
|
|
GLIBC_2.29 erff64 F
|
|
|
|
GLIBC_2.29 erfl F
|
|
|
|
GLIBC_2.29 exp F
|
|
|
|
GLIBC_2.29 exp10 F
|
|
|
|
GLIBC_2.29 exp10f F
|
|
|
|
GLIBC_2.29 exp10f32 F
|
|
|
|
GLIBC_2.29 exp10f32x F
|
|
|
|
GLIBC_2.29 exp10f64 F
|
|
|
|
GLIBC_2.29 exp10l F
|
|
|
|
GLIBC_2.29 exp2 F
|
|
|
|
GLIBC_2.29 exp2f F
|
|
|
|
GLIBC_2.29 exp2f32 F
|
|
|
|
GLIBC_2.29 exp2f32x F
|
|
|
|
GLIBC_2.29 exp2f64 F
|
|
|
|
GLIBC_2.29 exp2l F
|
|
|
|
GLIBC_2.29 expf F
|
|
|
|
GLIBC_2.29 expf32 F
|
|
|
|
GLIBC_2.29 expf32x F
|
|
|
|
GLIBC_2.29 expf64 F
|
|
|
|
GLIBC_2.29 expl F
|
|
|
|
GLIBC_2.29 expm1 F
|
|
|
|
GLIBC_2.29 expm1f F
|
|
|
|
GLIBC_2.29 expm1f32 F
|
|
|
|
GLIBC_2.29 expm1f32x F
|
|
|
|
GLIBC_2.29 expm1f64 F
|
|
|
|
GLIBC_2.29 expm1l F
|
|
|
|
GLIBC_2.29 f32addf32x F
|
|
|
|
GLIBC_2.29 f32addf64 F
|
|
|
|
GLIBC_2.29 f32divf32x F
|
|
|
|
GLIBC_2.29 f32divf64 F
|
|
|
|
GLIBC_2.29 f32mulf32x F
|
|
|
|
GLIBC_2.29 f32mulf64 F
|
|
|
|
GLIBC_2.29 f32subf32x F
|
|
|
|
GLIBC_2.29 f32subf64 F
|
|
|
|
GLIBC_2.29 f32xaddf64 F
|
|
|
|
GLIBC_2.29 f32xdivf64 F
|
|
|
|
GLIBC_2.29 f32xmulf64 F
|
|
|
|
GLIBC_2.29 f32xsubf64 F
|
|
|
|
GLIBC_2.29 fabs F
|
|
|
|
GLIBC_2.29 fabsf F
|
|
|
|
GLIBC_2.29 fabsf32 F
|
|
|
|
GLIBC_2.29 fabsf32x F
|
|
|
|
GLIBC_2.29 fabsf64 F
|
|
|
|
GLIBC_2.29 fabsl F
|
|
|
|
GLIBC_2.29 fadd F
|
|
|
|
GLIBC_2.29 faddl F
|
|
|
|
GLIBC_2.29 fdim F
|
|
|
|
GLIBC_2.29 fdimf F
|
|
|
|
GLIBC_2.29 fdimf32 F
|
|
|
|
GLIBC_2.29 fdimf32x F
|
|
|
|
GLIBC_2.29 fdimf64 F
|
|
|
|
GLIBC_2.29 fdiml F
|
|
|
|
GLIBC_2.29 fdiv F
|
|
|
|
GLIBC_2.29 fdivl F
|
|
|
|
GLIBC_2.29 feclearexcept F
|
|
|
|
GLIBC_2.29 fedisableexcept F
|
|
|
|
GLIBC_2.29 feenableexcept F
|
|
|
|
GLIBC_2.29 fegetenv F
|
|
|
|
GLIBC_2.29 fegetexcept F
|
|
|
|
GLIBC_2.29 fegetexceptflag F
|
|
|
|
GLIBC_2.29 fegetmode F
|
|
|
|
GLIBC_2.29 fegetround F
|
|
|
|
GLIBC_2.29 feholdexcept F
|
|
|
|
GLIBC_2.29 feraiseexcept F
|
|
|
|
GLIBC_2.29 fesetenv F
|
|
|
|
GLIBC_2.29 fesetexcept F
|
|
|
|
GLIBC_2.29 fesetexceptflag F
|
|
|
|
GLIBC_2.29 fesetmode F
|
|
|
|
GLIBC_2.29 fesetround F
|
|
|
|
GLIBC_2.29 fetestexcept F
|
|
|
|
GLIBC_2.29 fetestexceptflag F
|
|
|
|
GLIBC_2.29 feupdateenv F
|
|
|
|
GLIBC_2.29 finite F
|
|
|
|
GLIBC_2.29 finitef F
|
|
|
|
GLIBC_2.29 finitel F
|
|
|
|
GLIBC_2.29 floor F
|
|
|
|
GLIBC_2.29 floorf F
|
|
|
|
GLIBC_2.29 floorf32 F
|
|
|
|
GLIBC_2.29 floorf32x F
|
|
|
|
GLIBC_2.29 floorf64 F
|
|
|
|
GLIBC_2.29 floorl F
|
|
|
|
GLIBC_2.29 fma F
|
|
|
|
GLIBC_2.29 fmaf F
|
|
|
|
GLIBC_2.29 fmaf32 F
|
|
|
|
GLIBC_2.29 fmaf32x F
|
|
|
|
GLIBC_2.29 fmaf64 F
|
|
|
|
GLIBC_2.29 fmal F
|
|
|
|
GLIBC_2.29 fmax F
|
|
|
|
GLIBC_2.29 fmaxf F
|
|
|
|
GLIBC_2.29 fmaxf32 F
|
|
|
|
GLIBC_2.29 fmaxf32x F
|
|
|
|
GLIBC_2.29 fmaxf64 F
|
|
|
|
GLIBC_2.29 fmaxl F
|
|
|
|
GLIBC_2.29 fmaxmag F
|
|
|
|
GLIBC_2.29 fmaxmagf F
|
|
|
|
GLIBC_2.29 fmaxmagf32 F
|
|
|
|
GLIBC_2.29 fmaxmagf32x F
|
|
|
|
GLIBC_2.29 fmaxmagf64 F
|
|
|
|
GLIBC_2.29 fmaxmagl F
|
|
|
|
GLIBC_2.29 fmin F
|
|
|
|
GLIBC_2.29 fminf F
|
|
|
|
GLIBC_2.29 fminf32 F
|
|
|
|
GLIBC_2.29 fminf32x F
|
|
|
|
GLIBC_2.29 fminf64 F
|
|
|
|
GLIBC_2.29 fminl F
|
|
|
|
GLIBC_2.29 fminmag F
|
|
|
|
GLIBC_2.29 fminmagf F
|
|
|
|
GLIBC_2.29 fminmagf32 F
|
|
|
|
GLIBC_2.29 fminmagf32x F
|
|
|
|
GLIBC_2.29 fminmagf64 F
|
|
|
|
GLIBC_2.29 fminmagl F
|
|
|
|
GLIBC_2.29 fmod F
|
|
|
|
GLIBC_2.29 fmodf F
|
|
|
|
GLIBC_2.29 fmodf32 F
|
|
|
|
GLIBC_2.29 fmodf32x F
|
|
|
|
GLIBC_2.29 fmodf64 F
|
|
|
|
GLIBC_2.29 fmodl F
|
|
|
|
GLIBC_2.29 fmul F
|
|
|
|
GLIBC_2.29 fmull F
|
|
|
|
GLIBC_2.29 frexp F
|
|
|
|
GLIBC_2.29 frexpf F
|
|
|
|
GLIBC_2.29 frexpf32 F
|
|
|
|
GLIBC_2.29 frexpf32x F
|
|
|
|
GLIBC_2.29 frexpf64 F
|
|
|
|
GLIBC_2.29 frexpl F
|
|
|
|
GLIBC_2.29 fromfp F
|
|
|
|
GLIBC_2.29 fromfpf F
|
|
|
|
GLIBC_2.29 fromfpf32 F
|
|
|
|
GLIBC_2.29 fromfpf32x F
|
|
|
|
GLIBC_2.29 fromfpf64 F
|
|
|
|
GLIBC_2.29 fromfpl F
|
|
|
|
GLIBC_2.29 fromfpx F
|
|
|
|
GLIBC_2.29 fromfpxf F
|
|
|
|
GLIBC_2.29 fromfpxf32 F
|
|
|
|
GLIBC_2.29 fromfpxf32x F
|
|
|
|
GLIBC_2.29 fromfpxf64 F
|
|
|
|
GLIBC_2.29 fromfpxl F
|
|
|
|
GLIBC_2.29 fsub F
|
|
|
|
GLIBC_2.29 fsubl F
|
|
|
|
GLIBC_2.29 gamma F
|
|
|
|
GLIBC_2.29 gammaf F
|
|
|
|
GLIBC_2.29 gammal F
|
|
|
|
GLIBC_2.29 getpayload F
|
|
|
|
GLIBC_2.29 getpayloadf F
|
|
|
|
GLIBC_2.29 getpayloadf32 F
|
|
|
|
GLIBC_2.29 getpayloadf32x F
|
|
|
|
GLIBC_2.29 getpayloadf64 F
|
|
|
|
GLIBC_2.29 getpayloadl F
|
|
|
|
GLIBC_2.29 hypot F
|
|
|
|
GLIBC_2.29 hypotf F
|
|
|
|
GLIBC_2.29 hypotf32 F
|
|
|
|
GLIBC_2.29 hypotf32x F
|
|
|
|
GLIBC_2.29 hypotf64 F
|
|
|
|
GLIBC_2.29 hypotl F
|
|
|
|
GLIBC_2.29 ilogb F
|
|
|
|
GLIBC_2.29 ilogbf F
|
|
|
|
GLIBC_2.29 ilogbf32 F
|
|
|
|
GLIBC_2.29 ilogbf32x F
|
|
|
|
GLIBC_2.29 ilogbf64 F
|
|
|
|
GLIBC_2.29 ilogbl F
|
|
|
|
GLIBC_2.29 j0 F
|
|
|
|
GLIBC_2.29 j0f F
|
|
|
|
GLIBC_2.29 j0f32 F
|
|
|
|
GLIBC_2.29 j0f32x F
|
|
|
|
GLIBC_2.29 j0f64 F
|
|
|
|
GLIBC_2.29 j0l F
|
|
|
|
GLIBC_2.29 j1 F
|
|
|
|
GLIBC_2.29 j1f F
|
|
|
|
GLIBC_2.29 j1f32 F
|
|
|
|
GLIBC_2.29 j1f32x F
|
|
|
|
GLIBC_2.29 j1f64 F
|
|
|
|
GLIBC_2.29 j1l F
|
|
|
|
GLIBC_2.29 jn F
|
|
|
|
GLIBC_2.29 jnf F
|
|
|
|
GLIBC_2.29 jnf32 F
|
|
|
|
GLIBC_2.29 jnf32x F
|
|
|
|
GLIBC_2.29 jnf64 F
|
|
|
|
GLIBC_2.29 jnl F
|
|
|
|
GLIBC_2.29 ldexp F
|
|
|
|
GLIBC_2.29 ldexpf F
|
|
|
|
GLIBC_2.29 ldexpf32 F
|
|
|
|
GLIBC_2.29 ldexpf32x F
|
|
|
|
GLIBC_2.29 ldexpf64 F
|
|
|
|
GLIBC_2.29 ldexpl F
|
|
|
|
GLIBC_2.29 lgamma F
|
|
|
|
GLIBC_2.29 lgamma_r F
|
|
|
|
GLIBC_2.29 lgammaf F
|
|
|
|
GLIBC_2.29 lgammaf32 F
|
|
|
|
GLIBC_2.29 lgammaf32_r F
|
|
|
|
GLIBC_2.29 lgammaf32x F
|
|
|
|
GLIBC_2.29 lgammaf32x_r F
|
|
|
|
GLIBC_2.29 lgammaf64 F
|
|
|
|
GLIBC_2.29 lgammaf64_r F
|
|
|
|
GLIBC_2.29 lgammaf_r F
|
|
|
|
GLIBC_2.29 lgammal F
|
|
|
|
GLIBC_2.29 lgammal_r F
|
|
|
|
GLIBC_2.29 llogb F
|
|
|
|
GLIBC_2.29 llogbf F
|
|
|
|
GLIBC_2.29 llogbf32 F
|
|
|
|
GLIBC_2.29 llogbf32x F
|
|
|
|
GLIBC_2.29 llogbf64 F
|
|
|
|
GLIBC_2.29 llogbl F
|
|
|
|
GLIBC_2.29 llrint F
|
|
|
|
GLIBC_2.29 llrintf F
|
|
|
|
GLIBC_2.29 llrintf32 F
|
|
|
|
GLIBC_2.29 llrintf32x F
|
|
|
|
GLIBC_2.29 llrintf64 F
|
|
|
|
GLIBC_2.29 llrintl F
|
|
|
|
GLIBC_2.29 llround F
|
|
|
|
GLIBC_2.29 llroundf F
|
|
|
|
GLIBC_2.29 llroundf32 F
|
|
|
|
GLIBC_2.29 llroundf32x F
|
|
|
|
GLIBC_2.29 llroundf64 F
|
|
|
|
GLIBC_2.29 llroundl F
|
|
|
|
GLIBC_2.29 log F
|
|
|
|
GLIBC_2.29 log10 F
|
|
|
|
GLIBC_2.29 log10f F
|
|
|
|
GLIBC_2.29 log10f32 F
|
|
|
|
GLIBC_2.29 log10f32x F
|
|
|
|
GLIBC_2.29 log10f64 F
|
|
|
|
GLIBC_2.29 log10l F
|
|
|
|
GLIBC_2.29 log1p F
|
|
|
|
GLIBC_2.29 log1pf F
|
|
|
|
GLIBC_2.29 log1pf32 F
|
|
|
|
GLIBC_2.29 log1pf32x F
|
|
|
|
GLIBC_2.29 log1pf64 F
|
|
|
|
GLIBC_2.29 log1pl F
|
|
|
|
GLIBC_2.29 log2 F
|
|
|
|
GLIBC_2.29 log2f F
|
|
|
|
GLIBC_2.29 log2f32 F
|
|
|
|
GLIBC_2.29 log2f32x F
|
|
|
|
GLIBC_2.29 log2f64 F
|
|
|
|
GLIBC_2.29 log2l F
|
|
|
|
GLIBC_2.29 logb F
|
|
|
|
GLIBC_2.29 logbf F
|
|
|
|
GLIBC_2.29 logbf32 F
|
|
|
|
GLIBC_2.29 logbf32x F
|
|
|
|
GLIBC_2.29 logbf64 F
|
|
|
|
GLIBC_2.29 logbl F
|
|
|
|
GLIBC_2.29 logf F
|
|
|
|
GLIBC_2.29 logf32 F
|
|
|
|
GLIBC_2.29 logf32x F
|
|
|
|
GLIBC_2.29 logf64 F
|
|
|
|
GLIBC_2.29 logl F
|
|
|
|
GLIBC_2.29 lrint F
|
|
|
|
GLIBC_2.29 lrintf F
|
|
|
|
GLIBC_2.29 lrintf32 F
|
|
|
|
GLIBC_2.29 lrintf32x F
|
|
|
|
GLIBC_2.29 lrintf64 F
|
|
|
|
GLIBC_2.29 lrintl F
|
|
|
|
GLIBC_2.29 lround F
|
|
|
|
GLIBC_2.29 lroundf F
|
|
|
|
GLIBC_2.29 lroundf32 F
|
|
|
|
GLIBC_2.29 lroundf32x F
|
|
|
|
GLIBC_2.29 lroundf64 F
|
|
|
|
GLIBC_2.29 lroundl F
|
|
|
|
GLIBC_2.29 modf F
|
|
|
|
GLIBC_2.29 modff F
|
|
|
|
GLIBC_2.29 modff32 F
|
|
|
|
GLIBC_2.29 modff32x F
|
|
|
|
GLIBC_2.29 modff64 F
|
|
|
|
GLIBC_2.29 modfl F
|
|
|
|
GLIBC_2.29 nan F
|
|
|
|
GLIBC_2.29 nanf F
|
|
|
|
GLIBC_2.29 nanf32 F
|
|
|
|
GLIBC_2.29 nanf32x F
|
|
|
|
GLIBC_2.29 nanf64 F
|
|
|
|
GLIBC_2.29 nanl F
|
|
|
|
GLIBC_2.29 nearbyint F
|
|
|
|
GLIBC_2.29 nearbyintf F
|
|
|
|
GLIBC_2.29 nearbyintf32 F
|
|
|
|
GLIBC_2.29 nearbyintf32x F
|
|
|
|
GLIBC_2.29 nearbyintf64 F
|
|
|
|
GLIBC_2.29 nearbyintl F
|
|
|
|
GLIBC_2.29 nextafter F
|
|
|
|
GLIBC_2.29 nextafterf F
|
|
|
|
GLIBC_2.29 nextafterf32 F
|
|
|
|
GLIBC_2.29 nextafterf32x F
|
|
|
|
GLIBC_2.29 nextafterf64 F
|
|
|
|
GLIBC_2.29 nextafterl F
|
|
|
|
GLIBC_2.29 nextdown F
|
|
|
|
GLIBC_2.29 nextdownf F
|
|
|
|
GLIBC_2.29 nextdownf32 F
|
|
|
|
GLIBC_2.29 nextdownf32x F
|
|
|
|
GLIBC_2.29 nextdownf64 F
|
|
|
|
GLIBC_2.29 nextdownl F
|
|
|
|
GLIBC_2.29 nexttoward F
|
|
|
|
GLIBC_2.29 nexttowardf F
|
|
|
|
GLIBC_2.29 nexttowardl F
|
|
|
|
GLIBC_2.29 nextup F
|
|
|
|
GLIBC_2.29 nextupf F
|
|
|
|
GLIBC_2.29 nextupf32 F
|
|
|
|
GLIBC_2.29 nextupf32x F
|
|
|
|
GLIBC_2.29 nextupf64 F
|
|
|
|
GLIBC_2.29 nextupl F
|
|
|
|
GLIBC_2.29 pow F
|
|
|
|
GLIBC_2.29 powf F
|
|
|
|
GLIBC_2.29 powf32 F
|
|
|
|
GLIBC_2.29 powf32x F
|
|
|
|
GLIBC_2.29 powf64 F
|
|
|
|
GLIBC_2.29 powl F
|
|
|
|
GLIBC_2.29 remainder F
|
|
|
|
GLIBC_2.29 remainderf F
|
|
|
|
GLIBC_2.29 remainderf32 F
|
|
|
|
GLIBC_2.29 remainderf32x F
|
|
|
|
GLIBC_2.29 remainderf64 F
|
|
|
|
GLIBC_2.29 remainderl F
|
|
|
|
GLIBC_2.29 remquo F
|
|
|
|
GLIBC_2.29 remquof F
|
|
|
|
GLIBC_2.29 remquof32 F
|
|
|
|
GLIBC_2.29 remquof32x F
|
|
|
|
GLIBC_2.29 remquof64 F
|
|
|
|
GLIBC_2.29 remquol F
|
|
|
|
GLIBC_2.29 rint F
|
|
|
|
GLIBC_2.29 rintf F
|
|
|
|
GLIBC_2.29 rintf32 F
|
|
|
|
GLIBC_2.29 rintf32x F
|
|
|
|
GLIBC_2.29 rintf64 F
|
|
|
|
GLIBC_2.29 rintl F
|
|
|
|
GLIBC_2.29 round F
|
|
|
|
GLIBC_2.29 roundeven F
|
|
|
|
GLIBC_2.29 roundevenf F
|
|
|
|
GLIBC_2.29 roundevenf32 F
|
|
|
|
GLIBC_2.29 roundevenf32x F
|
|
|
|
GLIBC_2.29 roundevenf64 F
|
|
|
|
GLIBC_2.29 roundevenl F
|
|
|
|
GLIBC_2.29 roundf F
|
|
|
|
GLIBC_2.29 roundf32 F
|
|
|
|
GLIBC_2.29 roundf32x F
|
|
|
|
GLIBC_2.29 roundf64 F
|
|
|
|
GLIBC_2.29 roundl F
|
|
|
|
GLIBC_2.29 scalb F
|
|
|
|
GLIBC_2.29 scalbf F
|
|
|
|
GLIBC_2.29 scalbl F
|
|
|
|
GLIBC_2.29 scalbln F
|
|
|
|
GLIBC_2.29 scalblnf F
|
|
|
|
GLIBC_2.29 scalblnf32 F
|
|
|
|
GLIBC_2.29 scalblnf32x F
|
|
|
|
GLIBC_2.29 scalblnf64 F
|
|
|
|
GLIBC_2.29 scalblnl F
|
|
|
|
GLIBC_2.29 scalbn F
|
|
|
|
GLIBC_2.29 scalbnf F
|
|
|
|
GLIBC_2.29 scalbnf32 F
|
|
|
|
GLIBC_2.29 scalbnf32x F
|
|
|
|
GLIBC_2.29 scalbnf64 F
|
|
|
|
GLIBC_2.29 scalbnl F
|
|
|
|
GLIBC_2.29 setpayload F
|
|
|
|
GLIBC_2.29 setpayloadf F
|
|
|
|
GLIBC_2.29 setpayloadf32 F
|
|
|
|
GLIBC_2.29 setpayloadf32x F
|
|
|
|
GLIBC_2.29 setpayloadf64 F
|
|
|
|
GLIBC_2.29 setpayloadl F
|
|
|
|
GLIBC_2.29 setpayloadsig F
|
|
|
|
GLIBC_2.29 setpayloadsigf F
|
|
|
|
GLIBC_2.29 setpayloadsigf32 F
|
|
|
|
GLIBC_2.29 setpayloadsigf32x F
|
|
|
|
GLIBC_2.29 setpayloadsigf64 F
|
|
|
|
GLIBC_2.29 setpayloadsigl F
|
|
|
|
GLIBC_2.29 signgam D 0x4
|
|
|
|
GLIBC_2.29 significand F
|
|
|
|
GLIBC_2.29 significandf F
|
|
|
|
GLIBC_2.29 significandl F
|
|
|
|
GLIBC_2.29 sin F
|
|
|
|
GLIBC_2.29 sincos F
|
|
|
|
GLIBC_2.29 sincosf F
|
|
|
|
GLIBC_2.29 sincosf32 F
|
|
|
|
GLIBC_2.29 sincosf32x F
|
|
|
|
GLIBC_2.29 sincosf64 F
|
|
|
|
GLIBC_2.29 sincosl F
|
|
|
|
GLIBC_2.29 sinf F
|
|
|
|
GLIBC_2.29 sinf32 F
|
|
|
|
GLIBC_2.29 sinf32x F
|
|
|
|
GLIBC_2.29 sinf64 F
|
|
|
|
GLIBC_2.29 sinh F
|
|
|
|
GLIBC_2.29 sinhf F
|
|
|
|
GLIBC_2.29 sinhf32 F
|
|
|
|
GLIBC_2.29 sinhf32x F
|
|
|
|
GLIBC_2.29 sinhf64 F
|
|
|
|
GLIBC_2.29 sinhl F
|
|
|
|
GLIBC_2.29 sinl F
|
|
|
|
GLIBC_2.29 sqrt F
|
|
|
|
GLIBC_2.29 sqrtf F
|
|
|
|
GLIBC_2.29 sqrtf32 F
|
|
|
|
GLIBC_2.29 sqrtf32x F
|
|
|
|
GLIBC_2.29 sqrtf64 F
|
|
|
|
GLIBC_2.29 sqrtl F
|
|
|
|
GLIBC_2.29 tan F
|
|
|
|
GLIBC_2.29 tanf F
|
|
|
|
GLIBC_2.29 tanf32 F
|
|
|
|
GLIBC_2.29 tanf32x F
|
|
|
|
GLIBC_2.29 tanf64 F
|
|
|
|
GLIBC_2.29 tanh F
|
|
|
|
GLIBC_2.29 tanhf F
|
|
|
|
GLIBC_2.29 tanhf32 F
|
|
|
|
GLIBC_2.29 tanhf32x F
|
|
|
|
GLIBC_2.29 tanhf64 F
|
|
|
|
GLIBC_2.29 tanhl F
|
|
|
|
GLIBC_2.29 tanl F
|
|
|
|
GLIBC_2.29 tgamma F
|
|
|
|
GLIBC_2.29 tgammaf F
|
|
|
|
GLIBC_2.29 tgammaf32 F
|
|
|
|
GLIBC_2.29 tgammaf32x F
|
|
|
|
GLIBC_2.29 tgammaf64 F
|
|
|
|
GLIBC_2.29 tgammal F
|
|
|
|
GLIBC_2.29 totalorder F
|
|
|
|
GLIBC_2.29 totalorderf F
|
|
|
|
GLIBC_2.29 totalorderf32 F
|
|
|
|
GLIBC_2.29 totalorderf32x F
|
|
|
|
GLIBC_2.29 totalorderf64 F
|
|
|
|
GLIBC_2.29 totalorderl F
|
|
|
|
GLIBC_2.29 totalordermag F
|
|
|
|
GLIBC_2.29 totalordermagf F
|
|
|
|
GLIBC_2.29 totalordermagf32 F
|
|
|
|
GLIBC_2.29 totalordermagf32x F
|
|
|
|
GLIBC_2.29 totalordermagf64 F
|
|
|
|
GLIBC_2.29 totalordermagl F
|
|
|
|
GLIBC_2.29 trunc F
|
|
|
|
GLIBC_2.29 truncf F
|
|
|
|
GLIBC_2.29 truncf32 F
|
|
|
|
GLIBC_2.29 truncf32x F
|
|
|
|
GLIBC_2.29 truncf64 F
|
|
|
|
GLIBC_2.29 truncl F
|
|
|
|
GLIBC_2.29 ufromfp F
|
|
|
|
GLIBC_2.29 ufromfpf F
|
|
|
|
GLIBC_2.29 ufromfpf32 F
|
|
|
|
GLIBC_2.29 ufromfpf32x F
|
|
|
|
GLIBC_2.29 ufromfpf64 F
|
|
|
|
GLIBC_2.29 ufromfpl F
|
|
|
|
GLIBC_2.29 ufromfpx F
|
|
|
|
GLIBC_2.29 ufromfpxf F
|
|
|
|
GLIBC_2.29 ufromfpxf32 F
|
|
|
|
GLIBC_2.29 ufromfpxf32x F
|
|
|
|
GLIBC_2.29 ufromfpxf64 F
|
|
|
|
GLIBC_2.29 ufromfpxl F
|
|
|
|
GLIBC_2.29 y0 F
|
|
|
|
GLIBC_2.29 y0f F
|
|
|
|
GLIBC_2.29 y0f32 F
|
|
|
|
GLIBC_2.29 y0f32x F
|
|
|
|
GLIBC_2.29 y0f64 F
|
|
|
|
GLIBC_2.29 y0l F
|
|
|
|
GLIBC_2.29 y1 F
|
|
|
|
GLIBC_2.29 y1f F
|
|
|
|
GLIBC_2.29 y1f32 F
|
|
|
|
GLIBC_2.29 y1f32x F
|
|
|
|
GLIBC_2.29 y1f64 F
|
|
|
|
GLIBC_2.29 y1l F
|
|
|
|
GLIBC_2.29 yn F
|
|
|
|
GLIBC_2.29 ynf F
|
|
|
|
GLIBC_2.29 ynf32 F
|
|
|
|
GLIBC_2.29 ynf32x F
|
|
|
|
GLIBC_2.29 ynf64 F
|
|
|
|
GLIBC_2.29 ynl F
|
Make totalorder and totalordermag functions take pointer arguments.
The resolution of C floating-point Clarification Request 25
<http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2397.htm#dr_25> is
that the totalorder and totalordermag functions should take pointer
arguments, and this has been adopted in C2X (with const added; note
that the integration of this change into C2X is present in the C
standard git repository but postdates the most recent public PDF
draft).
This patch updates glibc accordingly. As a defect resolution, the API
is changed unconditionally rather than supporting any sort of TS
18661-1 mode for compilation with the old version of the API. There
are compat symbols for existing binaries that pass floating-point
arguments directly. As a consequence of changing to pointer
arguments, there are no longer type-generic macros in tgmath.h for
these functions.
Because of the fairly complicated logic for creating libm function
aliases and determining the set of aliases to create in a given glibc
configuration, rather than duplicating all that in individual source
files to create the versioned and compat symbols, the source files for
the various versions of totalorder functions are set up to redefine
weak_alias before using libm_alias_* macros to create the symbols
required. In turn, this requires creating a separate alias for each
symbol version pointing to the same implementation (see binutils bug
<https://sourceware.org/bugzilla/show_bug.cgi?id=23840>), which is
done automatically using __COUNTER__. (As I noted in
<https://sourceware.org/ml/libc-alpha/2018-10/msg00631.html>, it might
well make sense for glibc's symbol versioning macros to do that alias
creation with __COUNTER__ themselves, which would somewhat simplify
the logic in the totalorder source files.)
It is of course desirable to test the compat symbols. I did this with
the generic libm-test machinery, but didn't wish to duplicate the
actual tables of test inputs and outputs, and thought it risky to
attempt to have a single object file refer to both default and compat
versions of the same function in order to test them together. Thus, I
created libm-test-compat_totalorder.inc and
libm-test-compat_totalordermag.inc which include the generated .c
files (with the processed version of those tables of inputs) from the
non-compat tests, and added appropriate dependencies. I think this
provides sufficient test coverage for the compat symbols without also
needing to make the special ldbl-96 and ldbl-128ibm tests (of
peculiarities relating to the representations of those formats that
can't be covered in the generic tests) run for the compat symbols.
Tests of compat symbols need to be internal tests, meaning _ISOMAC is
not defined. Making some libm-test tests into internal tests showed
up two other issues. GCC diagnoses duplicate macro definitions of
__STDC_* macros, including __STDC_WANT_IEC_60559_TYPES_EXT__; I added
an appropriate conditional and filed
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91451> for this issue.
On ia64, include/setjmp.h ends up getting included indirectly from
libm-symbols.h, resulting in conflicting definitions of the STR macro
(also defined in libm-test-driver.c); I renamed the macros in
include/setjmp.h. (It's arguable that we should have common internal
headers used everywhere for stringizing and concatenation macros.)
Tested for x86_64 and x86, and with build-many-glibcs.py.
* math/bits/mathcalls.h
[__GLIBC_USE (IEC_60559_BFP_EXT) || __MATH_DECLARING_FLOATN]
(totalorder): Take pointer arguments.
[__GLIBC_USE (IEC_60559_BFP_EXT) || __MATH_DECLARING_FLOATN]
(totalordermag): Likewise.
* manual/arith.texi (totalorder): Likewise.
(totalorderf): Likewise.
(totalorderl): Likewise.
(totalorderfN): Likewise.
(totalorderfNx): Likewise.
(totalordermag): Likewise.
(totalordermagf): Likewise.
(totalordermagl): Likewise.
(totalordermagfN): Likewise.
(totalordermagfNx): Likewise.
* math/tgmath.h (__TGMATH_BINARY_REAL_RET_ONLY): Remove macro.
[__GLIBC_USE (IEC_60559_BFP_EXT)] (totalorder): Likewise.
[__GLIBC_USE (IEC_60559_BFP_EXT)] (totalordermag): Likewise.
* math/Versions (GLIBC_2.31): Add totalorder, totalorderf,
totalorderl, totalordermag, totalordermagf, totalordermagl,
totalorderf32, totalorderf64, totalorderf32x, totalordermagf32,
totalordermagf64, totalordermagf32x, totalorderf64x,
totalordermagf64x, totalorderf128 and totalordermagf128.
* math/Makefile (libm-test-funcs-noauto): Add compat_totalorder
and compat_totalordermag.
(libm-test-funcs-compat): New variable.
(libm-tests-compat): Likewise.
(tests): Do not include compat tests.
(tests-internal): Add compat tests.
($(foreach t,$(libm-tests-base),
$(objpfx)$(t)-compat_totalorder.o)): Depend
on $(objpfx)libm-test-totalorder.c.
($(foreach t,$(libm-tests-base),
$(objpfx)$(t)-compat_totalordermag.o): Depend on
$(objpfx)libm-test-totalordermag.c.
(tgmath3-macros): Remove totalorder and totalordermag.
* math/libm-test-compat_totalorder.inc: New file.
* math/libm-test-compat_totalordermag.inc: Likewise.
* math/libm-test-driver.c (struct test_ff_i_data): Update comment.
(RUN_TEST_fpfp_b): New macro.
(RUN_TEST_LOOP_fpfp_b): Likewise.
* math/libm-test-totalorder.inc (totalorder_test_data): Use
TEST_fpfp_b.
(totalorder_test): Condition on [!COMPAT_TEST].
(do_test): Likewise.
* math/libm-test-totalordermag.inc (totalordermag_test_data): Use
TEST_fpfp_b.
(totalordermag_test): Condition on [!COMPAT_TEST].
(do_test): Likewise.
* math/gen-tgmath-tests.py (Tests.add_all_tests): Remove
totalorder and totalordermag.
* math/test-tgmath.c (NCALLS): Change to 132.
(F(compile_test)): Do not call totalorder or totalordermag.
(F(totalorder)): Remove.
(F(totalordermag)): Likewise.
* include/float.h (__STDC_WANT_IEC_60559_TYPES_EXT__): Do not
define if [__STDC_WANT_IEC_60559_TYPES_EXT__].
* include/setjmp.h [!_ISOMAC] (STR_HELPER): Rename to
SJSTR_HELPER.
[!_ISOMAC] (STR): Rename to SJSTR. Update call to STR_HELPER.
[!_ISOMAC] (TEST_SIZE): Update call to STR.
[!_ISOMAC] (TEST_ALIGN): Likewise.
[!_ISOMAC] (TEST_OFFSET): Likewise.
* sysdeps/ieee754/dbl-64/s_totalorder.c: Include <shlib-compat.h>
and <first-versions.h>.
(__totalorder): Take pointer arguments. Add symbol versions and
compat symbols.
* sysdeps/ieee754/dbl-64/s_totalordermag.c: Include
<shlib-compat.h> and <first-versions.h>.
(__totalordermag): Take pointer arguments. Add symbol versions
and compat symbols.
* sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c: Include
<shlib-compat.h> and <first-versions.h>.
(__totalorder): Take pointer arguments. Add symbol versions and
compat symbols.
* sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c: Include
<shlib-compat.h> and <first-versions.h>.
(__totalordermag): Take pointer arguments. Add symbol versions
and compat symbols.
* sysdeps/ieee754/float128/float128_private.h
(__totalorder_compatl): New macro.
(__totalordermag_compatl): Likewise.
* sysdeps/ieee754/flt-32/s_totalorderf.c: Include <shlib-compat.h>
and <first-versions.h>.
(__totalorderf): Take pointer arguments. Add symbol versions and
compat symbols.
* sysdeps/ieee754/flt-32/s_totalordermagf.c: Include
<shlib-compat.h> and <first-versions.h>.
(__totalordermagf): Take pointer arguments. Add symbol versions
and compat symbols.
* sysdeps/ieee754/ldbl-128/s_totalorderl.c: Include
<shlib-compat.h> and <first-versions.h>.
(__totalorderl): Take pointer arguments. Add symbol versions and
compat symbols.
* sysdeps/ieee754/ldbl-128/s_totalordermagl.c: Include
<shlib-compat.h> and <first-versions.h>.
(__totalordermagl): Take pointer arguments. Add symbol versions
and compat symbols.
* sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c: Include
<shlib-compat.h>.
(__totalorderl): Take pointer arguments. Add symbol versions and
compat symbols.
* sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c: Include
<shlib-compat.h>.
(__totalordermagl): Take pointer arguments. Add symbol versions
and compat symbols.
* sysdeps/ieee754/ldbl-96/s_totalorderl.c: Include
<shlib-compat.h> and <first-versions.h>.
(__totalorderl): Take pointer arguments. Add symbol versions and
compat symbols.
* sysdeps/ieee754/ldbl-96/s_totalordermagl.c: Include
<shlib-compat.h> and <first-versions.h>.
(__totalordermagl): Take pointer arguments. Add symbol versions
and compat symbols.
* sysdeps/ieee754/ldbl-opt/nldbl-totalorder.c (totalorderl): Take
pointer arguments.
* sysdeps/ieee754/ldbl-opt/nldbl-totalordermag.c (totalordermagl):
Likewise.
* sysdeps/ieee754/ldbl-128ibm/test-totalorderl-ldbl-128ibm.c
(do_test): Update calls to totalorderl and totalordermagl.
* sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c (do_test):
Update calls to totalorderl and totalordermagl.
* sysdeps/mach/hurd/i386/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/csky/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/be/libm.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist:
Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/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/x86_64/64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
2019-08-15 15:18:34 +00:00
|
|
|
GLIBC_2.31 totalorder F
|
|
|
|
GLIBC_2.31 totalorderf F
|
|
|
|
GLIBC_2.31 totalorderf32 F
|
|
|
|
GLIBC_2.31 totalorderf32x F
|
|
|
|
GLIBC_2.31 totalorderf64 F
|
|
|
|
GLIBC_2.31 totalorderl F
|
|
|
|
GLIBC_2.31 totalordermag F
|
|
|
|
GLIBC_2.31 totalordermagf F
|
|
|
|
GLIBC_2.31 totalordermagf32 F
|
|
|
|
GLIBC_2.31 totalordermagf32x F
|
|
|
|
GLIBC_2.31 totalordermagf64 F
|
|
|
|
GLIBC_2.31 totalordermagl F
|
Add narrowing fma functions
This patch adds the narrowing fused multiply-add functions from TS
18661-1 / TS 18661-3 / C2X to glibc's libm: ffma, ffmal, dfmal,
f32fmaf64, f32fmaf32x, f32xfmaf64 for all configurations; f32fmaf64x,
f32fmaf128, f64fmaf64x, f64fmaf128, f32xfmaf64x, f32xfmaf128,
f64xfmaf128 for configurations with _Float64x and _Float128;
__f32fmaieee128 and __f64fmaieee128 aliases in the powerpc64le case
(for calls to ffmal and dfmal when long double is IEEE binary128).
Corresponding tgmath.h macro support is also added.
The changes are mostly similar to those for the other narrowing
functions previously added, especially that for sqrt, so the
description of those generally applies to this patch as well. As with
sqrt, I reused the same test inputs in auto-libm-test-in as for
non-narrowing fma rather than adding extra or separate inputs for
narrowing fma. The tests in libm-test-narrow-fma.inc also follow
those for non-narrowing fma.
The non-narrowing fma has a known bug (bug 6801) that it does not set
errno on errors (overflow, underflow, Inf * 0, Inf - Inf). Rather
than fixing this or having narrowing fma check for errors when
non-narrowing does not (complicating the cases when narrowing fma can
otherwise be an alias for a non-narrowing function), this patch does
not attempt to check for errors from narrowing fma and set errno; the
CHECK_NARROW_FMA macro is still present, but as a placeholder that
does nothing, and this missing errno setting is considered to be
covered by the existing bug rather than needing a separate open bug.
missing-errno annotations are duly added to many of the
auto-libm-test-in test inputs for fma.
This completes adding all the new functions from TS 18661-1 to glibc,
so will be followed by corresponding stdc-predef.h changes to define
__STDC_IEC_60559_BFP__ and __STDC_IEC_60559_COMPLEX__, as the support
for TS 18661-1 will be at a similar level to that for C standard
floating-point facilities up to C11 (pragmas not implemented, but
library functions done). (There are still further changes to be done
to implement changes to the types of fromfp functions from N2548.)
Tested as followed: natively with the full glibc testsuite for x86_64
(GCC 11, 7, 6) and x86 (GCC 11); with build-many-glibcs.py with GCC
11, 7 and 6; cross testing of math/ tests for powerpc64le, powerpc32
hard float, mips64 (all three ABIs, both hard and soft float). The
different GCC versions are to cover the different cases in tgmath.h
and tgmath.h tests properly (GCC 6 has _Float* only as typedefs in
glibc headers, GCC 7 has proper _Float* support, GCC 8 adds
__builtin_tgmath).
2021-09-22 21:25:31 +00:00
|
|
|
GLIBC_2.35 dfmal F
|
Add narrowing square root functions
This patch adds the narrowing square root functions from TS 18661-1 /
TS 18661-3 / C2X to glibc's libm: fsqrt, fsqrtl, dsqrtl, f32sqrtf64,
f32sqrtf32x, f32xsqrtf64 for all configurations; f32sqrtf64x,
f32sqrtf128, f64sqrtf64x, f64sqrtf128, f32xsqrtf64x, f32xsqrtf128,
f64xsqrtf128 for configurations with _Float64x and _Float128;
__f32sqrtieee128 and __f64sqrtieee128 aliases in the powerpc64le case
(for calls to fsqrtl and dsqrtl when long double is IEEE binary128).
Corresponding tgmath.h macro support is also added.
The changes are mostly similar to those for the other narrowing
functions previously added, so the description of those generally
applies to this patch as well. However, the not-actually-narrowing
cases (where the two types involved in the function have the same
floating-point format) are aliased to sqrt, sqrtl or sqrtf128 rather
than needing a separately built not-actually-narrowing function such
as was needed for add / sub / mul / div. Thus, there is no
__nldbl_dsqrtl name for ldbl-opt because no such name was needed
(whereas the other functions needed such a name since the only other
name for that entry point was e.g. f32xaddf64, not reserved by TS
18661-1); the headers are made to arrange for sqrt to be called in
that case instead.
The DIAG_* calls in sysdeps/ieee754/soft-fp/s_dsqrtl.c are because
they were observed to be needed in GCC 7 testing of
riscv32-linux-gnu-rv32imac-ilp32. The other sysdeps/ieee754/soft-fp/
files added didn't need such DIAG_* in any configuration I tested with
build-many-glibcs.py, but if they do turn out to be needed in more
files with some other configuration / GCC version, they can always be
added there.
I reused the same test inputs in auto-libm-test-in as for
non-narrowing sqrt rather than adding extra or separate inputs for
narrowing sqrt. The tests in libm-test-narrow-sqrt.inc also follow
those for non-narrowing sqrt.
Tested as followed: natively with the full glibc testsuite for x86_64
(GCC 11, 7, 6) and x86 (GCC 11); with build-many-glibcs.py with GCC
11, 7 and 6; cross testing of math/ tests for powerpc64le, powerpc32
hard float, mips64 (all three ABIs, both hard and soft float). The
different GCC versions are to cover the different cases in tgmath.h
and tgmath.h tests properly (GCC 6 has _Float* only as typedefs in
glibc headers, GCC 7 has proper _Float* support, GCC 8 adds
__builtin_tgmath).
2021-09-10 20:56:22 +00:00
|
|
|
GLIBC_2.35 dsqrtl F
|
Add narrowing fma functions
This patch adds the narrowing fused multiply-add functions from TS
18661-1 / TS 18661-3 / C2X to glibc's libm: ffma, ffmal, dfmal,
f32fmaf64, f32fmaf32x, f32xfmaf64 for all configurations; f32fmaf64x,
f32fmaf128, f64fmaf64x, f64fmaf128, f32xfmaf64x, f32xfmaf128,
f64xfmaf128 for configurations with _Float64x and _Float128;
__f32fmaieee128 and __f64fmaieee128 aliases in the powerpc64le case
(for calls to ffmal and dfmal when long double is IEEE binary128).
Corresponding tgmath.h macro support is also added.
The changes are mostly similar to those for the other narrowing
functions previously added, especially that for sqrt, so the
description of those generally applies to this patch as well. As with
sqrt, I reused the same test inputs in auto-libm-test-in as for
non-narrowing fma rather than adding extra or separate inputs for
narrowing fma. The tests in libm-test-narrow-fma.inc also follow
those for non-narrowing fma.
The non-narrowing fma has a known bug (bug 6801) that it does not set
errno on errors (overflow, underflow, Inf * 0, Inf - Inf). Rather
than fixing this or having narrowing fma check for errors when
non-narrowing does not (complicating the cases when narrowing fma can
otherwise be an alias for a non-narrowing function), this patch does
not attempt to check for errors from narrowing fma and set errno; the
CHECK_NARROW_FMA macro is still present, but as a placeholder that
does nothing, and this missing errno setting is considered to be
covered by the existing bug rather than needing a separate open bug.
missing-errno annotations are duly added to many of the
auto-libm-test-in test inputs for fma.
This completes adding all the new functions from TS 18661-1 to glibc,
so will be followed by corresponding stdc-predef.h changes to define
__STDC_IEC_60559_BFP__ and __STDC_IEC_60559_COMPLEX__, as the support
for TS 18661-1 will be at a similar level to that for C standard
floating-point facilities up to C11 (pragmas not implemented, but
library functions done). (There are still further changes to be done
to implement changes to the types of fromfp functions from N2548.)
Tested as followed: natively with the full glibc testsuite for x86_64
(GCC 11, 7, 6) and x86 (GCC 11); with build-many-glibcs.py with GCC
11, 7 and 6; cross testing of math/ tests for powerpc64le, powerpc32
hard float, mips64 (all three ABIs, both hard and soft float). The
different GCC versions are to cover the different cases in tgmath.h
and tgmath.h tests properly (GCC 6 has _Float* only as typedefs in
glibc headers, GCC 7 has proper _Float* support, GCC 8 adds
__builtin_tgmath).
2021-09-22 21:25:31 +00:00
|
|
|
GLIBC_2.35 f32fmaf32x F
|
|
|
|
GLIBC_2.35 f32fmaf64 F
|
Add narrowing square root functions
This patch adds the narrowing square root functions from TS 18661-1 /
TS 18661-3 / C2X to glibc's libm: fsqrt, fsqrtl, dsqrtl, f32sqrtf64,
f32sqrtf32x, f32xsqrtf64 for all configurations; f32sqrtf64x,
f32sqrtf128, f64sqrtf64x, f64sqrtf128, f32xsqrtf64x, f32xsqrtf128,
f64xsqrtf128 for configurations with _Float64x and _Float128;
__f32sqrtieee128 and __f64sqrtieee128 aliases in the powerpc64le case
(for calls to fsqrtl and dsqrtl when long double is IEEE binary128).
Corresponding tgmath.h macro support is also added.
The changes are mostly similar to those for the other narrowing
functions previously added, so the description of those generally
applies to this patch as well. However, the not-actually-narrowing
cases (where the two types involved in the function have the same
floating-point format) are aliased to sqrt, sqrtl or sqrtf128 rather
than needing a separately built not-actually-narrowing function such
as was needed for add / sub / mul / div. Thus, there is no
__nldbl_dsqrtl name for ldbl-opt because no such name was needed
(whereas the other functions needed such a name since the only other
name for that entry point was e.g. f32xaddf64, not reserved by TS
18661-1); the headers are made to arrange for sqrt to be called in
that case instead.
The DIAG_* calls in sysdeps/ieee754/soft-fp/s_dsqrtl.c are because
they were observed to be needed in GCC 7 testing of
riscv32-linux-gnu-rv32imac-ilp32. The other sysdeps/ieee754/soft-fp/
files added didn't need such DIAG_* in any configuration I tested with
build-many-glibcs.py, but if they do turn out to be needed in more
files with some other configuration / GCC version, they can always be
added there.
I reused the same test inputs in auto-libm-test-in as for
non-narrowing sqrt rather than adding extra or separate inputs for
narrowing sqrt. The tests in libm-test-narrow-sqrt.inc also follow
those for non-narrowing sqrt.
Tested as followed: natively with the full glibc testsuite for x86_64
(GCC 11, 7, 6) and x86 (GCC 11); with build-many-glibcs.py with GCC
11, 7 and 6; cross testing of math/ tests for powerpc64le, powerpc32
hard float, mips64 (all three ABIs, both hard and soft float). The
different GCC versions are to cover the different cases in tgmath.h
and tgmath.h tests properly (GCC 6 has _Float* only as typedefs in
glibc headers, GCC 7 has proper _Float* support, GCC 8 adds
__builtin_tgmath).
2021-09-10 20:56:22 +00:00
|
|
|
GLIBC_2.35 f32sqrtf32x F
|
|
|
|
GLIBC_2.35 f32sqrtf64 F
|
Add narrowing fma functions
This patch adds the narrowing fused multiply-add functions from TS
18661-1 / TS 18661-3 / C2X to glibc's libm: ffma, ffmal, dfmal,
f32fmaf64, f32fmaf32x, f32xfmaf64 for all configurations; f32fmaf64x,
f32fmaf128, f64fmaf64x, f64fmaf128, f32xfmaf64x, f32xfmaf128,
f64xfmaf128 for configurations with _Float64x and _Float128;
__f32fmaieee128 and __f64fmaieee128 aliases in the powerpc64le case
(for calls to ffmal and dfmal when long double is IEEE binary128).
Corresponding tgmath.h macro support is also added.
The changes are mostly similar to those for the other narrowing
functions previously added, especially that for sqrt, so the
description of those generally applies to this patch as well. As with
sqrt, I reused the same test inputs in auto-libm-test-in as for
non-narrowing fma rather than adding extra or separate inputs for
narrowing fma. The tests in libm-test-narrow-fma.inc also follow
those for non-narrowing fma.
The non-narrowing fma has a known bug (bug 6801) that it does not set
errno on errors (overflow, underflow, Inf * 0, Inf - Inf). Rather
than fixing this or having narrowing fma check for errors when
non-narrowing does not (complicating the cases when narrowing fma can
otherwise be an alias for a non-narrowing function), this patch does
not attempt to check for errors from narrowing fma and set errno; the
CHECK_NARROW_FMA macro is still present, but as a placeholder that
does nothing, and this missing errno setting is considered to be
covered by the existing bug rather than needing a separate open bug.
missing-errno annotations are duly added to many of the
auto-libm-test-in test inputs for fma.
This completes adding all the new functions from TS 18661-1 to glibc,
so will be followed by corresponding stdc-predef.h changes to define
__STDC_IEC_60559_BFP__ and __STDC_IEC_60559_COMPLEX__, as the support
for TS 18661-1 will be at a similar level to that for C standard
floating-point facilities up to C11 (pragmas not implemented, but
library functions done). (There are still further changes to be done
to implement changes to the types of fromfp functions from N2548.)
Tested as followed: natively with the full glibc testsuite for x86_64
(GCC 11, 7, 6) and x86 (GCC 11); with build-many-glibcs.py with GCC
11, 7 and 6; cross testing of math/ tests for powerpc64le, powerpc32
hard float, mips64 (all three ABIs, both hard and soft float). The
different GCC versions are to cover the different cases in tgmath.h
and tgmath.h tests properly (GCC 6 has _Float* only as typedefs in
glibc headers, GCC 7 has proper _Float* support, GCC 8 adds
__builtin_tgmath).
2021-09-22 21:25:31 +00:00
|
|
|
GLIBC_2.35 f32xfmaf64 F
|
Add narrowing square root functions
This patch adds the narrowing square root functions from TS 18661-1 /
TS 18661-3 / C2X to glibc's libm: fsqrt, fsqrtl, dsqrtl, f32sqrtf64,
f32sqrtf32x, f32xsqrtf64 for all configurations; f32sqrtf64x,
f32sqrtf128, f64sqrtf64x, f64sqrtf128, f32xsqrtf64x, f32xsqrtf128,
f64xsqrtf128 for configurations with _Float64x and _Float128;
__f32sqrtieee128 and __f64sqrtieee128 aliases in the powerpc64le case
(for calls to fsqrtl and dsqrtl when long double is IEEE binary128).
Corresponding tgmath.h macro support is also added.
The changes are mostly similar to those for the other narrowing
functions previously added, so the description of those generally
applies to this patch as well. However, the not-actually-narrowing
cases (where the two types involved in the function have the same
floating-point format) are aliased to sqrt, sqrtl or sqrtf128 rather
than needing a separately built not-actually-narrowing function such
as was needed for add / sub / mul / div. Thus, there is no
__nldbl_dsqrtl name for ldbl-opt because no such name was needed
(whereas the other functions needed such a name since the only other
name for that entry point was e.g. f32xaddf64, not reserved by TS
18661-1); the headers are made to arrange for sqrt to be called in
that case instead.
The DIAG_* calls in sysdeps/ieee754/soft-fp/s_dsqrtl.c are because
they were observed to be needed in GCC 7 testing of
riscv32-linux-gnu-rv32imac-ilp32. The other sysdeps/ieee754/soft-fp/
files added didn't need such DIAG_* in any configuration I tested with
build-many-glibcs.py, but if they do turn out to be needed in more
files with some other configuration / GCC version, they can always be
added there.
I reused the same test inputs in auto-libm-test-in as for
non-narrowing sqrt rather than adding extra or separate inputs for
narrowing sqrt. The tests in libm-test-narrow-sqrt.inc also follow
those for non-narrowing sqrt.
Tested as followed: natively with the full glibc testsuite for x86_64
(GCC 11, 7, 6) and x86 (GCC 11); with build-many-glibcs.py with GCC
11, 7 and 6; cross testing of math/ tests for powerpc64le, powerpc32
hard float, mips64 (all three ABIs, both hard and soft float). The
different GCC versions are to cover the different cases in tgmath.h
and tgmath.h tests properly (GCC 6 has _Float* only as typedefs in
glibc headers, GCC 7 has proper _Float* support, GCC 8 adds
__builtin_tgmath).
2021-09-10 20:56:22 +00:00
|
|
|
GLIBC_2.35 f32xsqrtf64 F
|
Add narrowing fma functions
This patch adds the narrowing fused multiply-add functions from TS
18661-1 / TS 18661-3 / C2X to glibc's libm: ffma, ffmal, dfmal,
f32fmaf64, f32fmaf32x, f32xfmaf64 for all configurations; f32fmaf64x,
f32fmaf128, f64fmaf64x, f64fmaf128, f32xfmaf64x, f32xfmaf128,
f64xfmaf128 for configurations with _Float64x and _Float128;
__f32fmaieee128 and __f64fmaieee128 aliases in the powerpc64le case
(for calls to ffmal and dfmal when long double is IEEE binary128).
Corresponding tgmath.h macro support is also added.
The changes are mostly similar to those for the other narrowing
functions previously added, especially that for sqrt, so the
description of those generally applies to this patch as well. As with
sqrt, I reused the same test inputs in auto-libm-test-in as for
non-narrowing fma rather than adding extra or separate inputs for
narrowing fma. The tests in libm-test-narrow-fma.inc also follow
those for non-narrowing fma.
The non-narrowing fma has a known bug (bug 6801) that it does not set
errno on errors (overflow, underflow, Inf * 0, Inf - Inf). Rather
than fixing this or having narrowing fma check for errors when
non-narrowing does not (complicating the cases when narrowing fma can
otherwise be an alias for a non-narrowing function), this patch does
not attempt to check for errors from narrowing fma and set errno; the
CHECK_NARROW_FMA macro is still present, but as a placeholder that
does nothing, and this missing errno setting is considered to be
covered by the existing bug rather than needing a separate open bug.
missing-errno annotations are duly added to many of the
auto-libm-test-in test inputs for fma.
This completes adding all the new functions from TS 18661-1 to glibc,
so will be followed by corresponding stdc-predef.h changes to define
__STDC_IEC_60559_BFP__ and __STDC_IEC_60559_COMPLEX__, as the support
for TS 18661-1 will be at a similar level to that for C standard
floating-point facilities up to C11 (pragmas not implemented, but
library functions done). (There are still further changes to be done
to implement changes to the types of fromfp functions from N2548.)
Tested as followed: natively with the full glibc testsuite for x86_64
(GCC 11, 7, 6) and x86 (GCC 11); with build-many-glibcs.py with GCC
11, 7 and 6; cross testing of math/ tests for powerpc64le, powerpc32
hard float, mips64 (all three ABIs, both hard and soft float). The
different GCC versions are to cover the different cases in tgmath.h
and tgmath.h tests properly (GCC 6 has _Float* only as typedefs in
glibc headers, GCC 7 has proper _Float* support, GCC 8 adds
__builtin_tgmath).
2021-09-22 21:25:31 +00:00
|
|
|
GLIBC_2.35 ffma F
|
|
|
|
GLIBC_2.35 ffmal F
|
Add fmaximum, fminimum functions
C2X adds new <math.h> functions for floating-point maximum and
minimum, corresponding to the new operations that were added in IEEE
754-2019 because of concerns about the old operations not being
associative in the presence of signaling NaNs. fmaximum and fminimum
handle NaNs like most <math.h> functions (any NaN argument means the
result is a quiet NaN). fmaximum_num and fminimum_num handle both
quiet and signaling NaNs the way fmax and fmin handle quiet NaNs (if
one argument is a number and the other is a NaN, return the number),
but still raise "invalid" for a signaling NaN argument, making them
exceptions to the normal rule that a function with a floating-point
result raising "invalid" also returns a quiet NaN. fmaximum_mag,
fminimum_mag, fmaximum_mag_num and fminimum_mag_num are corresponding
functions returning the argument with greatest or least absolute
value. All these functions also treat +0 as greater than -0. There
are also corresponding <tgmath.h> type-generic macros.
Add these functions to glibc. The implementations use type-generic
templates based on those for fmax, fmin, fmaxmag and fminmag, and test
inputs are based on those for those functions with appropriate
adjustments to the expected results. The RISC-V maintainers might
wish to add optimized versions of fmaximum_num and fminimum_num (for
float and double), since RISC-V (F extension version 2.2 and later)
provides instructions corresponding to those functions - though it
might be at least as useful to add architecture-independent built-in
functions to GCC and teach the RISC-V back end to expand those
functions inline, which is what you generally want for functions that
can be implemented with a single instruction.
Tested for x86_64 and x86, and with build-many-glibcs.py.
2021-09-28 23:31:35 +00:00
|
|
|
GLIBC_2.35 fmaximum F
|
|
|
|
GLIBC_2.35 fmaximum_mag F
|
|
|
|
GLIBC_2.35 fmaximum_mag_num F
|
|
|
|
GLIBC_2.35 fmaximum_mag_numf F
|
|
|
|
GLIBC_2.35 fmaximum_mag_numf32 F
|
|
|
|
GLIBC_2.35 fmaximum_mag_numf32x F
|
|
|
|
GLIBC_2.35 fmaximum_mag_numf64 F
|
|
|
|
GLIBC_2.35 fmaximum_mag_numl F
|
|
|
|
GLIBC_2.35 fmaximum_magf F
|
|
|
|
GLIBC_2.35 fmaximum_magf32 F
|
|
|
|
GLIBC_2.35 fmaximum_magf32x F
|
|
|
|
GLIBC_2.35 fmaximum_magf64 F
|
|
|
|
GLIBC_2.35 fmaximum_magl F
|
|
|
|
GLIBC_2.35 fmaximum_num F
|
|
|
|
GLIBC_2.35 fmaximum_numf F
|
|
|
|
GLIBC_2.35 fmaximum_numf32 F
|
|
|
|
GLIBC_2.35 fmaximum_numf32x F
|
|
|
|
GLIBC_2.35 fmaximum_numf64 F
|
|
|
|
GLIBC_2.35 fmaximum_numl F
|
|
|
|
GLIBC_2.35 fmaximumf F
|
|
|
|
GLIBC_2.35 fmaximumf32 F
|
|
|
|
GLIBC_2.35 fmaximumf32x F
|
|
|
|
GLIBC_2.35 fmaximumf64 F
|
|
|
|
GLIBC_2.35 fmaximuml F
|
|
|
|
GLIBC_2.35 fminimum F
|
|
|
|
GLIBC_2.35 fminimum_mag F
|
|
|
|
GLIBC_2.35 fminimum_mag_num F
|
|
|
|
GLIBC_2.35 fminimum_mag_numf F
|
|
|
|
GLIBC_2.35 fminimum_mag_numf32 F
|
|
|
|
GLIBC_2.35 fminimum_mag_numf32x F
|
|
|
|
GLIBC_2.35 fminimum_mag_numf64 F
|
|
|
|
GLIBC_2.35 fminimum_mag_numl F
|
|
|
|
GLIBC_2.35 fminimum_magf F
|
|
|
|
GLIBC_2.35 fminimum_magf32 F
|
|
|
|
GLIBC_2.35 fminimum_magf32x F
|
|
|
|
GLIBC_2.35 fminimum_magf64 F
|
|
|
|
GLIBC_2.35 fminimum_magl F
|
|
|
|
GLIBC_2.35 fminimum_num F
|
|
|
|
GLIBC_2.35 fminimum_numf F
|
|
|
|
GLIBC_2.35 fminimum_numf32 F
|
|
|
|
GLIBC_2.35 fminimum_numf32x F
|
|
|
|
GLIBC_2.35 fminimum_numf64 F
|
|
|
|
GLIBC_2.35 fminimum_numl F
|
|
|
|
GLIBC_2.35 fminimumf F
|
|
|
|
GLIBC_2.35 fminimumf32 F
|
|
|
|
GLIBC_2.35 fminimumf32x F
|
|
|
|
GLIBC_2.35 fminimumf64 F
|
|
|
|
GLIBC_2.35 fminimuml F
|
Add narrowing square root functions
This patch adds the narrowing square root functions from TS 18661-1 /
TS 18661-3 / C2X to glibc's libm: fsqrt, fsqrtl, dsqrtl, f32sqrtf64,
f32sqrtf32x, f32xsqrtf64 for all configurations; f32sqrtf64x,
f32sqrtf128, f64sqrtf64x, f64sqrtf128, f32xsqrtf64x, f32xsqrtf128,
f64xsqrtf128 for configurations with _Float64x and _Float128;
__f32sqrtieee128 and __f64sqrtieee128 aliases in the powerpc64le case
(for calls to fsqrtl and dsqrtl when long double is IEEE binary128).
Corresponding tgmath.h macro support is also added.
The changes are mostly similar to those for the other narrowing
functions previously added, so the description of those generally
applies to this patch as well. However, the not-actually-narrowing
cases (where the two types involved in the function have the same
floating-point format) are aliased to sqrt, sqrtl or sqrtf128 rather
than needing a separately built not-actually-narrowing function such
as was needed for add / sub / mul / div. Thus, there is no
__nldbl_dsqrtl name for ldbl-opt because no such name was needed
(whereas the other functions needed such a name since the only other
name for that entry point was e.g. f32xaddf64, not reserved by TS
18661-1); the headers are made to arrange for sqrt to be called in
that case instead.
The DIAG_* calls in sysdeps/ieee754/soft-fp/s_dsqrtl.c are because
they were observed to be needed in GCC 7 testing of
riscv32-linux-gnu-rv32imac-ilp32. The other sysdeps/ieee754/soft-fp/
files added didn't need such DIAG_* in any configuration I tested with
build-many-glibcs.py, but if they do turn out to be needed in more
files with some other configuration / GCC version, they can always be
added there.
I reused the same test inputs in auto-libm-test-in as for
non-narrowing sqrt rather than adding extra or separate inputs for
narrowing sqrt. The tests in libm-test-narrow-sqrt.inc also follow
those for non-narrowing sqrt.
Tested as followed: natively with the full glibc testsuite for x86_64
(GCC 11, 7, 6) and x86 (GCC 11); with build-many-glibcs.py with GCC
11, 7 and 6; cross testing of math/ tests for powerpc64le, powerpc32
hard float, mips64 (all three ABIs, both hard and soft float). The
different GCC versions are to cover the different cases in tgmath.h
and tgmath.h tests properly (GCC 6 has _Float* only as typedefs in
glibc headers, GCC 7 has proper _Float* support, GCC 8 adds
__builtin_tgmath).
2021-09-10 20:56:22 +00:00
|
|
|
GLIBC_2.35 fsqrt F
|
|
|
|
GLIBC_2.35 fsqrtl F
|
Implement C23 exp2m1, exp10m1
C23 adds various <math.h> function families originally defined in TS
18661-4. Add the exp2m1 and exp10m1 functions (exp2(x)-1 and
exp10(x)-1, like expm1).
As with other such functions, these use type-generic templates that
could be replaced with faster and more accurate type-specific
implementations in future. Test inputs are copied from those for
expm1, plus some additions close to the overflow threshold (copied
from exp2 and exp10) and also some near the underflow threshold.
exp2m1 has the unusual property of having an input (M_MAX_EXP) where
whether the function overflows (under IEEE semantics) depends on the
rounding mode. Although these could reasonably be XFAILed in the
testsuite (as we do in some cases for arguments very close to a
function's overflow threshold when an error of a few ulps in the
implementation can result in the implementation not agreeing with an
ideal one on whether overflow takes place - the testsuite isn't smart
enough to handle this automatically), since these functions aren't
required to be correctly rounding, I made the implementation check for
and handle this case specially.
The Makefile ordering expected by lint-makefiles for the new functions
is a bit peculiar, but I implemented it in this patch so that the test
passes; I don't know why log2 also needed moving in one Makefile
variable setting when it didn't in my previous patches, but the
failure showed a different place was expected for that function as
well.
The powerpc64le IFUNC setup seems not to be as self-contained as one
might hope; it shouldn't be necessary to add IFUNCs for new functions
such as these simply to get them building, but without setting up
IFUNCs for the new functions, there were undefined references to
__GI___expm1f128 (that IFUNC machinery results in no such function
being defined, but doesn't stop include/math.h from doing the
redirection resulting in the exp2m1f128 and exp10m1f128
implementations expecting to call it).
Tested for x86_64 and x86, and with build-many-glibcs.py.
2024-06-17 16:31:49 +00:00
|
|
|
GLIBC_2.40 exp10m1 F
|
|
|
|
GLIBC_2.40 exp10m1f F
|
|
|
|
GLIBC_2.40 exp10m1f32 F
|
|
|
|
GLIBC_2.40 exp10m1f32x F
|
|
|
|
GLIBC_2.40 exp10m1f64 F
|
|
|
|
GLIBC_2.40 exp10m1l F
|
|
|
|
GLIBC_2.40 exp2m1 F
|
|
|
|
GLIBC_2.40 exp2m1f F
|
|
|
|
GLIBC_2.40 exp2m1f32 F
|
|
|
|
GLIBC_2.40 exp2m1f32x F
|
|
|
|
GLIBC_2.40 exp2m1f64 F
|
|
|
|
GLIBC_2.40 exp2m1l F
|
2024-06-17 13:48:13 +00:00
|
|
|
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
|
2024-05-20 13:41:39 +00:00
|
|
|
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
|
Implement C23 logp1
C23 adds various <math.h> function families originally defined in TS
18661-4. Add the logp1 functions (aliases for log1p functions - the
name is intended to be more consistent with the new log2p1 and
log10p1, where clearly it would have been very confusing to name those
functions log21p and log101p). As aliases rather than new functions,
the content of this patch is somewhat different from those actually
adding new functions.
Tests are shared with log1p, so this patch *does* mechanically update
all affected libm-test-ulps files to expect the same errors for both
functions.
The vector versions of log1p on aarch64 and x86_64 are *not* updated
to have logp1 aliases (and thus there are no corresponding header,
tests, abilist or ulps changes for vector functions either). It would
be reasonable for such vector aliases and corresponding changes to
other files to be made separately. For now, the log1p tests instead
avoid testing logp1 in the vector case (a Makefile change is needed to
avoid problems with grep, used in generating the .c files for vector
function tests, matching more than one ALL_RM_TEST line in a file
testing multiple functions with the same inputs, when it assumes that
the .inc file only has a single such line).
Tested for x86_64 and x86, and with build-many-glibcs.py.
2024-06-17 13:47:09 +00:00
|
|
|
GLIBC_2.40 logp1 F
|
|
|
|
GLIBC_2.40 logp1f F
|
|
|
|
GLIBC_2.40 logp1f32 F
|
|
|
|
GLIBC_2.40 logp1f32x F
|
|
|
|
GLIBC_2.40 logp1f64 F
|
|
|
|
GLIBC_2.40 logp1l F
|
2024-12-09 23:01:29 +00:00
|
|
|
GLIBC_2.41 acospi F
|
|
|
|
GLIBC_2.41 acospif F
|
|
|
|
GLIBC_2.41 acospif32 F
|
|
|
|
GLIBC_2.41 acospif32x F
|
|
|
|
GLIBC_2.41 acospif64 F
|
|
|
|
GLIBC_2.41 acospil F
|
2024-12-10 20:42:20 +00:00
|
|
|
GLIBC_2.41 asinpi F
|
|
|
|
GLIBC_2.41 asinpif F
|
|
|
|
GLIBC_2.41 asinpif32 F
|
|
|
|
GLIBC_2.41 asinpif32x F
|
|
|
|
GLIBC_2.41 asinpif64 F
|
|
|
|
GLIBC_2.41 asinpil F
|
2024-12-12 20:57:44 +00:00
|
|
|
GLIBC_2.41 atan2pi F
|
|
|
|
GLIBC_2.41 atan2pif F
|
|
|
|
GLIBC_2.41 atan2pif32 F
|
|
|
|
GLIBC_2.41 atan2pif32x F
|
|
|
|
GLIBC_2.41 atan2pif64 F
|
|
|
|
GLIBC_2.41 atan2pil F
|
2024-12-11 21:51:49 +00:00
|
|
|
GLIBC_2.41 atanpi F
|
|
|
|
GLIBC_2.41 atanpif F
|
|
|
|
GLIBC_2.41 atanpif32 F
|
|
|
|
GLIBC_2.41 atanpif32x F
|
|
|
|
GLIBC_2.41 atanpif64 F
|
|
|
|
GLIBC_2.41 atanpil F
|
2024-12-04 10:20:44 +00:00
|
|
|
GLIBC_2.41 cospi F
|
|
|
|
GLIBC_2.41 cospif F
|
|
|
|
GLIBC_2.41 cospif32 F
|
|
|
|
GLIBC_2.41 cospif32x F
|
|
|
|
GLIBC_2.41 cospif64 F
|
|
|
|
GLIBC_2.41 cospil F
|
2024-12-04 20:04:04 +00:00
|
|
|
GLIBC_2.41 sinpi F
|
|
|
|
GLIBC_2.41 sinpif F
|
|
|
|
GLIBC_2.41 sinpif32 F
|
|
|
|
GLIBC_2.41 sinpif32x F
|
|
|
|
GLIBC_2.41 sinpif64 F
|
|
|
|
GLIBC_2.41 sinpil F
|
2024-12-05 21:42:10 +00:00
|
|
|
GLIBC_2.41 tanpi F
|
|
|
|
GLIBC_2.41 tanpif F
|
|
|
|
GLIBC_2.41 tanpif32 F
|
|
|
|
GLIBC_2.41 tanpif32x F
|
|
|
|
GLIBC_2.41 tanpif64 F
|
|
|
|
GLIBC_2.41 tanpil F
|
Implement C23 pown
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.
2025-03-27 10:44:44 +00:00
|
|
|
GLIBC_2.42 pown F
|
|
|
|
GLIBC_2.42 pownf F
|
|
|
|
GLIBC_2.42 pownf32 F
|
|
|
|
GLIBC_2.42 pownf32x F
|
|
|
|
GLIBC_2.42 pownf64 F
|
|
|
|
GLIBC_2.42 pownl F
|
Implement C23 powr
C23 adds various <math.h> function families originally defined in TS
18661-4. Add the powr functions, which are like pow, but with simpler
handling of special cases (based on exp(y*log(x)), so negative x and
0^0 are domain errors, powers of -0 are always +0 or +Inf never -0 or
-Inf, and 1^+-Inf and Inf^0 are also domain errors, while NaN^0 and
1^NaN are NaN). The test inputs are taken from those for pow, with
appropriate adjustments (including removing all tests that would be
domain errors from those in auto-libm-test-in and adding some more
such tests in libm-test-powr.inc).
The underlying implementation uses __ieee754_pow functions after
dealing with all special cases that need to be handled differently.
It might be a little faster (avoiding a wrapper and redundant checks
for special cases) to have an underlying implementation built
separately for both pow and powr with compile-time conditionals for
special-case handling, but I expect the benefit of that would be
limited given that both functions will end up needing to use the same
logic for computing pow outside of special cases.
My understanding is that powr(negative, qNaN) should raise "invalid":
that the rule on "invalid" for an argument outside the domain of the
function takes precedence over a quiet NaN argument producing a quiet
NaN result with no exceptions raised (for rootn it's explicit that the
0th root of qNaN raises "invalid"). I've raised this on the WG14
reflector to confirm the intent.
Tested for x86_64 and x86, and with build-many-glibcs.py.
2025-03-14 15:58:11 +00:00
|
|
|
GLIBC_2.42 powr F
|
|
|
|
GLIBC_2.42 powrf F
|
|
|
|
GLIBC_2.42 powrf32 F
|
|
|
|
GLIBC_2.42 powrf32x F
|
|
|
|
GLIBC_2.42 powrf64 F
|
|
|
|
GLIBC_2.42 powrl F
|
2025-03-07 19:15:26 +00:00
|
|
|
GLIBC_2.42 rsqrt F
|
|
|
|
GLIBC_2.42 rsqrtf F
|
|
|
|
GLIBC_2.42 rsqrtf32 F
|
|
|
|
GLIBC_2.42 rsqrtf32x F
|
|
|
|
GLIBC_2.42 rsqrtf64 F
|
|
|
|
GLIBC_2.42 rsqrtl F
|