19.7 Known Maximum Errors in Math Functions
This section lists the known errors of the functions in the math
library. Errors are measured in “units of the last place”. This is a
measure for the relative error. For a number z with the
representation d.d…d·2^e (we assume IEEE
floating-point numbers with base 2) the ULP is represented by
|d.d...d - (z / 2^e)| / 2^(p - 1)
where p is the number of bits in the mantissa of the
floating-point number representation. Ideally the error for all
functions is always less than 0.5ulps in round-to-nearest mode. Using
rounding bits this is also
possible and normally implemented for the basic operations. Except
for certain functions such as sqrt
, fma
and rint
whose results are fully specified by reference to corresponding IEEE
754 floating-point operations, and conversions between strings and
floating point, the GNU C Library does not aim for correctly rounded results
for functions in the math library, and does not aim for correctness in
whether “inexact” exceptions are raised. Instead, the goals for
accuracy of functions without fully specified results are as follows;
some functions have bugs meaning they do not meet these goals in all
cases. In the future, the GNU C Library may provide some other correctly
rounding functions under the names such as crsin
proposed for
an extension to ISO C.
- Each function with a floating-point result behaves as if it computes
an infinite-precision result that is within a few ulp (in both real
and complex parts, for functions with complex results) of the
mathematically correct value of the function (interpreted together
with ISO C or POSIX semantics for the function in question) at the
exact value passed as the input. Exceptions are raised appropriately
for this value and in accordance with IEEE 754 / ISO C / POSIX
semantics, and it is then rounded according to the current rounding
direction to the result that is returned to the user.
errno
may also be set (see Error Reporting by Mathematical Functions). (The “inexact”
exception may be raised, or not raised, even if this is inconsistent
with the infinite-precision value.)
- For the IBM
long double
format, as used on PowerPC GNU/Linux,
the accuracy goal is weaker for input values not exactly representable
in 106 bits of precision; it is as if the input value is some value
within 0.5ulp of the value actually passed, where “ulp” is
interpreted in terms of a fixed-precision 106-bit mantissa, but not
necessarily the exact value actually passed with discontiguous
mantissa bits.
- For the IBM
long double
format, functions whose results are
fully specified by reference to corresponding IEEE 754 floating-point
operations have the same accuracy goals as other functions, but with
the error bound being the same as that for division (3ulp).
Furthermore, “inexact” and “underflow” exceptions may be raised
for all functions for any inputs, even where such exceptions are
inconsistent with the returned value, since the underlying
floating-point arithmetic has that property.
- Functions behave as if the infinite-precision result computed is zero,
infinity or NaN if and only if that is the mathematically correct
infinite-precision result. They behave as if the infinite-precision
result computed always has the same sign as the mathematically correct
result.
- If the mathematical result is more than a few ulp above the overflow
threshold for the current rounding direction, the value returned is
the appropriate overflow value for the current rounding direction,
with the overflow exception raised.
- If the mathematical result has magnitude well below half the least
subnormal magnitude, the returned value is either zero or the least
subnormal (in each case, with the correct sign), according to the
current rounding direction and with the underflow exception raised.
- Where the mathematical result underflows (before rounding) and is not
exactly representable as a floating-point value, the function does not
behave as if the computed infinite-precision result is an exact value
in the subnormal range. This means that the underflow exception is
raised other than possibly for cases where the mathematical result is
very close to the underflow threshold and the function behaves as if
it computes an infinite-precision result that does not underflow. (So
there may be spurious underflow exceptions in cases where the
underflowing result is exact, but not missing underflow exceptions in
cases where it is inexact.)
- The GNU C Library does not aim for functions to satisfy other properties of
the underlying mathematical function, such as monotonicity, where not
implied by the above goals.
- All the above applies to both real and complex parts, for complex
functions.
Therefore many of the functions in the math library have errors. The
table lists the maximum error for each function which is exposed by one
of the existing tests in the test suite. The table tries to cover as much
as possible and list the actual maximum error (or at least a ballpark
figure) but this is often not achieved due to the large search space.
The table lists the ULP values for different architectures. Different
architectures have different results since their hardware support for
floating-point operations varies and also the existing hardware support
is different. Only the round-to-nearest rounding mode is covered by
this table. Functions not listed do not have known errors. Vector
versions of functions in the x86_64 libmvec library have a maximum error
of 4 ulps.
Function AArch64 ARC ARC soft-float ARM Alpha
acosf 1 1 1 1 1
acos 1 1 1 1 1
acosl 1 - - - 1
acosf128 - - - - -
acoshf 2 2 2 2 2
acosh 2 3 2 2 2
acoshl 4 - - - 4
acoshf128 - - - - -
add_ldoublef - - - - -
add_ldouble - - - - -
add_ldoublel - - - - -
add_ldoublef128 - - - - -
asinf 1 1 1 1 1
asin 1 1 1 1 1
asinl 1 - - - 1
asinf128 - - - - -
asinhf 2 2 2 2 2
asinh 2 3 2 2 2
asinhl 4 - - - 4
asinhf128 - - - - -
atanf 1 1 1 1 1
atan 1 1 1 1 1
atanl 1 - - - 1
atanf128 - - - - -
atan2f 1 2 2 2 2
atan2 - 7 - - -
atan2l 2 - - - 2
atan2f128 - - - - -
atanhf 2 2 2 2 2
atanh 2 2 2 2 2
atanhl 4 - - - 4
atanhf128 - - - - -
cabsf - 1 - - -
cabs 1 1 1 1 1
cabsl 1 - - - 1
cabsf128 - - - - -
cacosf 2 + i 2 2 + i 3 2 + i 2 2 + i 2 2 + i 2
cacos 1 + i 2 2 + i 5 1 + i 2 1 + i 2 1 + i 2
cacosl 2 + i 2 - - - 2 + i 2
cacosf128 - - - - -
cacoshf 2 + i 2 4 + i 2 2 + i 2 2 + i 2 2 + i 2
cacosh 2 + i 1 5 + i 2 2 + i 1 2 + i 1 2 + i 1
cacoshl 2 + i 2 - - - 2 + i 2
cacoshf128 - - - - -
cargf 1 2 1 1 1
carg 1 7 - - -
cargl 2 - - - 2
cargf128 - - - - -
casinf 1 + i 2 1 + i 4 1 + i 2 1 + i 2 1 + i 2
casin 1 + i 2 3 + i 5 1 + i 2 1 + i 2 1 + i 2
casinl 2 + i 2 - - - 2 + i 2
casinf128 - - - - -
casinhf 2 + i 1 4 + i 2 2 + i 1 2 + i 1 2 + i 1
casinh 2 + i 1 5 + i 3 2 + i 1 2 + i 1 2 + i 1
casinhl 2 + i 2 - - - 2 + i 2
casinhf128 - - - - -
catanf 1 + i 1 1 + i 3 1 + i 1 1 + i 1 1 + i 1
catan 1 + i 1 1 + i 3 1 + i 1 1 + i 1 1 + i 1
catanl 1 + i 1 - - - 1 + i 1
catanf128 - - - - -
catanhf 1 + i 1 4 + i 2 1 + i 1 1 + i 1 1 + i 1
catanh 1 + i 1 4 + i 1 1 + i 1 1 + i 1 1 + i 1
catanhl 1 + i 1 - - - 1 + i 1
catanhf128 - - - - -
cbrtf 1 1 1 1 1
cbrt 4 4 4 4 4
cbrtl 1 - - - 1
cbrtf128 - - - - -
ccosf 1 + i 1 3 + i 3 1 + i 1 1 + i 1 1 + i 1
ccos 1 + i 1 3 + i 3 1 + i 1 1 + i 1 1 + i 1
ccosl 1 + i 1 - - - 1 + i 1
ccosf128 - - - - -
ccoshf 1 + i 1 3 + i 3 1 + i 1 1 + i 1 1 + i 1
ccosh 1 + i 1 3 + i 3 1 + i 1 1 + i 1 1 + i 1
ccoshl 1 + i 1 - - - 1 + i 1
ccoshf128 - - - - -
cexpf 1 + i 2 3 + i 3 1 + i 2 1 + i 2 1 + i 2
cexp 2 + i 1 4 + i 4 2 + i 1 2 + i 1 2 + i 1
cexpl 1 + i 1 - - - 1 + i 1
cexpf128 - - - - -
clogf 3 + i 1 4 + i 2 3 + i 1 3 + i 1 3 + i 1
clog 3 + i 1 5 + i 7 3 + i 1 3 + i 1 3 + i 1
clogl 2 + i 1 - - - 2 + i 1
clogf128 - - - - -
clog10f 4 + i 2 5 + i 4 4 + i 2 4 + i 2 4 + i 2
clog10 3 + i 2 6 + i 8 3 + i 2 3 + i 2 3 + i 2
clog10l 2 + i 2 - - - 2 + i 2
clog10f128 - - - - -
cosf 1 1 1 1 1
cos 1 4 1 1 1
cosl 2 - - - 2
cosf128 - - - - -
cos_advsimdf 1 - - - -
cos_advsimd 2 - - - -
cos_advsimdl - - - - -
cos_advsimdf128 - - - - -
cos_svef 1 - - - -
cos_sve 1 - - - -
cos_svel - - - - -
cos_svef128 - - - - -
coshf 2 3 2 2 2
cosh 2 3 2 2 2
coshl 2 - - - 2
coshf128 - - - - -
cpowf 5 + i 2 8 + i 6 5 + i 2 5 + i 2 5 + i 2
cpow 2 + i 0 9 + i 8 2 + i 0 2 + i 0 2 + i 0
cpowl 4 + i 1 - - - 4 + i 1
cpowf128 - - - - -
csinf 1 + i 0 3 + i 3 1 + i 0 1 + i 0 1 + i 0
csin 1 + i 0 3 + i 3 1 + i 0 1 + i 0 1 + i 0
csinl 1 + i 1 - - - 1 + i 1
csinf128 - - - - -
csinhf 1 + i 1 3 + i 3 1 + i 1 1 + i 1 1 + i 1
csinh 0 + i 1 3 + i 3 0 + i 1 0 + i 1 0 + i 1
csinhl 1 + i 1 - - - 1 + i 1
csinhf128 - - - - -
csqrtf 2 + i 2 3 + i 3 2 + i 2 2 + i 2 2 + i 2
csqrt 2 + i 2 4 + i 4 2 + i 2 2 + i 2 2 + i 2
csqrtl 2 + i 2 - - - 2 + i 2
csqrtf128 - - - - -
ctanf 1 + i 2 6 + i 2 1 + i 2 1 + i 2 1 + i 2
ctan 1 + i 2 4 + i 3 1 + i 2 1 + i 2 1 + i 2
ctanl 3 + i 3 - - - 3 + i 3
ctanf128 - - - - -
ctanhf 2 + i 1 2 + i 6 2 + i 2 2 + i 2 2 + i 2
ctanh 2 + i 2 3 + i 4 2 + i 2 2 + i 2 2 + i 2
ctanhl 3 + i 3 - - - 3 + i 3
ctanhf128 - - - - -
div_ldoublef - - - - -
div_ldouble - - - - -
div_ldoublel - - - - -
div_ldoublef128 - - - - -
erff 1 1 1 1 1
erf 1 1 1 1 1
erfl 1 - - - 1
erff128 - - - - -
erfcf 2 5 3 3 3
erfc 2 5 5 5 5
erfcl 4 - - - 4
erfcf128 - - - - -
expf 1 1 1 1 1
exp 1 1 1 1 1
expl 1 - - - 1
expf128 - - - - -
exp10f 1 1 1 1 1
exp10 2 4 2 2 2
exp10l 2 - - - 2
exp10f128 - - - - -
exp2f 1 1 - 1 1
exp2 1 1 1 1 1
exp2l 1 - - - 1
exp2f128 - - - - -
exp_advsimdf 1 - - - -
exp_advsimd 1 - - - -
exp_advsimdl - - - - -
exp_advsimdf128 - - - - -
exp_svef 1 - - - -
exp_sve 1 - - - -
exp_svel - - - - -
exp_svef128 - - - - -
expm1f 1 2 1 1 1
expm1 1 2 1 1 1
expm1l 2 - - - 2
expm1f128 - - - - -
fmaf - - - - -
fma - - - - -
fmal - - - - -
fmaf128 - - - - -
fma_ldoublef - - - - -
fma_ldouble - - - - -
fma_ldoublel - - - - -
fma_ldoublef128 - - - - -
fmodf - - - - -
fmod - - - - -
fmodl - - - - -
fmodf128 - - - - -
gammaf 4 6 7 7 7
gamma 3 7 4 4 4
gammal 5 - - - 5
gammaf128 - - - - -
hypotf 1 1 - 1 -
hypot 1 2 1 1 1
hypotl 1 - - - 1
hypotf128 - - - - -
j0f 9 9 9 9 9
j0 3 4 2 2 2
j0l 2 - - - 2
j0f128 - - - - -
j1f 9 9 9 9 9
j1 4 5 4 4 4
j1l 4 - - - 4
j1f128 - - - - -
jnf 4 8 4 4 4
jn 4 9 4 4 4
jnl 7 - - - 7
jnf128 - - - - -
lgammaf 4 6 7 7 7
lgamma 3 7 4 4 4
lgammal 5 - - - 5
lgammaf128 - - - - -
logf 1 1 - 1 1
log 1 1 - - -
logl 1 - - - 1
logf128 - - - - -
log10f 2 3 2 2 2
log10 2 2 2 2 2
log10l 2 - - - 2
log10f128 - - - - -
log1pf 1 1 1 1 1
log1p 1 1 1 1 1
log1pl 3 - - - 3
log1pf128 - - - - -
log2f 1 1 1 1 1
log2 1 2 2 2 2
log2l 3 - - - 3
log2f128 - - - - -
log_advsimdf 3 - - - -
log_advsimd 1 - - - -
log_advsimdl - - - - -
log_advsimdf128 - - - - -
log_svef 3 - - - -
log_sve 1 - - - -
log_svel - - - - -
log_svef128 - - - - -
mul_ldoublef - - - - -
mul_ldouble - - - - -
mul_ldoublel - - - - -
mul_ldoublef128 - - - - -
powf 1 1 - 1 1
pow 1 1 1 1 1
powl 2 - - - 2
powf128 - - - - -
pow10f - - - - -
pow10 - - - - -
pow10l - - - - -
pow10f128 - - - - -
sinf 1 1 1 1 1
sin 1 7 1 1 1
sinl 2 - - - 2
sinf128 - - - - -
sin_advsimdf 1 - - - -
sin_advsimd 2 - - - -
sin_advsimdl - - - - -
sin_advsimdf128 - - - - -
sin_svef 1 - - - -
sin_sve 2 - - - -
sin_svel - - - - -
sin_svef128 - - - - -
sincosf 1 1 1 1 1
sincos 1 1 1 1 1
sincosl 1 - - - 1
sincosf128 - - - - -
sinhf 2 3 2 2 2
sinh 2 3 2 2 2
sinhl 2 - - - 2
sinhf128 - - - - -
sqrtf - - - - -
sqrt - - - - -
sqrtl - - - - -
sqrtf128 - - - - -
sqrt_ldoublef - - - - -
sqrt_ldouble - - - - -
sqrt_ldoublel - - - - -
sqrt_ldoublef128 - - - - -
sub_ldoublef - - - - -
sub_ldouble - - - - -
sub_ldoublel - - - - -
sub_ldoublef128 - - - - -
tanf 1 1 1 1 1
tan - 1 - - -
tanl 1 - - - 1
tanf128 - - - - -
tanhf 2 2 2 2 2
tanh 2 3 2 2 2
tanhl 2 - - - 2
tanhf128 - - - - -
tgammaf 8 9 8 8 8
tgamma 9 9 9 9 9
tgammal 4 - - - 4
tgammaf128 - - - - -
y0f 8 8 9 9 9
y0 2 3 3 3 3
y0l 3 - - - 3
y0f128 - - - - -
y1f 9 9 9 9 9
y1 3 7 3 3 3
y1l 5 - - - 5
y1f128 - - - - -
ynf 3 9 3 3 3
yn 3 9 3 3 3
ynl 5 - - - 5
ynf128 - - - - -
Function CSKY CSKY soft-float ColdFire Generic HPPA
acosf 1 1 - - 1
acos - - - - 1
acosl - - - - -
acosf128 - - - - -
acoshf 2 2 - - 2
acosh 2 2 - - 2
acoshl - - - - -
acoshf128 - - - - -
add_ldoublef - - - - -
add_ldouble - - - - -
add_ldoublel - - - - -
add_ldoublef128 - - - - -
asinf 1 1 - - 1
asin - - - - 1
asinl - - - - -
asinf128 - - - - -
asinhf 2 2 - - 2
asinh 2 2 - - 2
asinhl - - - - -
asinhf128 - - - - -
atanf 1 1 - - 1
atan - - - - 1
atanl - - - - -
atanf128 - - - - -
atan2f 1 1 1 - 2
atan2 - - - - -
atan2l - - - - -
atan2f128 - - - - -
atanhf 2 2 1 - 2
atanh 2 2 - - 2
atanhl - - - - -
atanhf128 - - - - -
cabsf - - - - -
cabs 1 1 - - 1
cabsl - - - - -
cabsf128 - - - - -
cacosf 2 + i 2 2 + i 2 - - 2 + i 2
cacos 1 + i 2 1 + i 2 - - 1 + i 2
cacosl - - - - -
cacosf128 - - - - -
cacoshf 2 + i 2 2 + i 2 0 + i 1 - 2 + i 2
cacosh 2 + i 1 2 + i 1 - - 2 + i 1
cacoshl - - - - -
cacoshf128 - - - - -
cargf 1 1 - - 1
carg - - - - -
cargl - - - - -
cargf128 - - - - -
casinf 1 + i 2 1 + i 2 1 + i 0 - 1 + i 2
casin 1 + i 2 1 + i 2 1 + i 0 - 1 + i 2
casinl - - - - 1 + i 0
casinf128 - - - - -
casinhf 2 + i 1 2 + i 1 1 + i 6 - 2 + i 1
casinh 2 + i 1 2 + i 1 5 + i 3 - 5 + i 3
casinhl - - - - 5 + i 3
casinhf128 - - - - -
catanf 1 + i 1 1 + i 1 0 + i 1 - 1 + i 1
catan 1 + i 1 1 + i 1 0 + i 1 - 1 + i 1
catanl - - - - 0 + i 1
catanf128 - - - - -
catanhf 1 + i 1 1 + i 1 - - 1 + i 1
catanh 1 + i 1 1 + i 1 4 + i 0 - 4 + i 1
catanhl - - - - 4 + i 0
catanhf128 - - - - -
cbrtf 1 1 - - 1
cbrt 4 4 1 - 4
cbrtl - - - - 1
cbrtf128 - - - - -
ccosf 1 + i 1 1 + i 1 1 + i 1 - 1 + i 1
ccos 1 + i 1 1 + i 1 1 + i 0 - 1 + i 1
ccosl - - - - 1 + i 0
ccosf128 - - - - -
ccoshf 1 + i 1 1 + i 1 1 + i 1 - 1 + i 1
ccosh 1 + i 1 1 + i 1 1 + i 0 - 1 + i 1
ccoshl - - - - 1 + i 0
ccoshf128 - - - - -
cexpf 1 + i 2 1 + i 2 1 + i 1 - 1 + i 2
cexp 2 + i 1 2 + i 1 - - 2 + i 1
cexpl - - - - -
cexpf128 - - - - -
clogf 3 + i 1 3 + i 1 1 + i 0 - 3 + i 1
clog 3 + i 0 3 + i 0 - - 3 + i 1
clogl - - - - -
clogf128 - - - - -
clog10f 4 + i 2 4 + i 2 1 + i 1 - 4 + i 2
clog10 3 + i 2 3 + i 2 0 + i 1 - 3 + i 2
clog10l - - - - 0 + i 1
clog10f128 - - - - -
cosf 1 1 1 - 1
cos 1 1 2 - 2
cosl - - - - 2
cosf128 - - - - -
cos_advsimdf - - - - -
cos_advsimd - - - - -
cos_advsimdl - - - - -
cos_advsimdf128 - - - - -
cos_svef - - - - -
cos_sve - - - - -
cos_svel - - - - -
cos_svef128 - - - - -
coshf 2 2 - - 2
cosh 2 2 - - 2
coshl - - - - -
coshf128 - - - - -
cpowf 5 + i 2 5 + i 2 4 + i 2 - 5 + i 2
cpow 2 + i 0 2 + i 0 2 + i 2 - 2 + i 2
cpowl - - - - 2 + i 2
cpowf128 - - - - -
csinf 1 + i 0 1 + i 0 - - 1 + i 0
csin 1 + i 0 1 + i 0 - - 1 + i 0
csinl - - - - -
csinf128 - - - - -
csinhf 1 + i 1 1 + i 1 1 + i 1 - 1 + i 1
csinh 0 + i 1 0 + i 1 0 + i 1 - 0 + i 1
csinhl - - - - 0 + i 1
csinhf128 - - - - -
csqrtf 2 + i 2 2 + i 2 1 + i 0 - 2 + i 2
csqrt 2 + i 2 2 + i 2 - - 2 + i 2
csqrtl - - - - -
csqrtf128 - - - - -
ctanf 1 + i 2 1 + i 2 - - 1 + i 2
ctan 1 + i 2 1 + i 2 0 + i 1 - 1 + i 2
ctanl - - - - 0 + i 1
ctanf128 - - - - -
ctanhf 2 + i 2 2 + i 2 2 + i 1 - 2 + i 2
ctanh 2 + i 2 2 + i 2 1 + i 0 - 2 + i 2
ctanhl - - - - 1 + i 0
ctanhf128 - - - - -
div_ldoublef - - - - -
div_ldouble - - - - -
div_ldoublel - - - - -
div_ldoublef128 - - - - -
erff 1 1 - - 1
erf 1 1 1 - 1
erfl - - - - 1
erff128 - - - - -
erfcf 3 3 - - 3
erfc 5 5 1 - 5
erfcl - - - - 1
erfcf128 - - - - -
expf 1 1 - - 1
exp 1 1 - - 1
expl - - - - -
expf128 - - - - -
exp10f - - 2 - 2
exp10 2 2 6 - 6
exp10l - - - - 6
exp10f128 - - - - -
exp2f - 1 - - 1
exp2 1 1 - - 1
exp2l - - - - -
exp2f128 - - - - -
exp_advsimdf - - - - -
exp_advsimd - - - - -
exp_advsimdl - - - - -
exp_advsimdf128 - - - - -
exp_svef - - - - -
exp_sve - - - - -
exp_svel - - - - -
exp_svef128 - - - - -
expm1f 1 1 1 - 1
expm1 1 1 1 - 1
expm1l - - - - 1
expm1f128 - - - - -
fmaf - - - - -
fma - - - - -
fmal - - - - -
fmaf128 - - - - -
fma_ldoublef - - - - -
fma_ldouble - - - - -
fma_ldoublel - - - - -
fma_ldoublef128 - - - - -
fmodf - - - - -
fmod - - - - -
fmodl - - - - -
fmodf128 - - - - -
gammaf 7 7 - - 7
gamma 4 4 - - 4
gammal - - - - -
gammaf128 - - - - -
hypotf - - 1 - 1
hypot 1 1 - - 1
hypotl - - - - -
hypotf128 - - - - -
j0f 8 8 2 - 9
j0 2 2 2 - 2
j0l - - - - 2
j0f128 - - - - -
j1f 9 9 2 - 9
j1 2 2 1 - 4
j1l - - - - 1
j1f128 - - - - -
jnf 4 4 4 - 5
jn 4 4 4 - 4
jnl - - - - 4
jnf128 - - - - -
lgammaf 7 7 2 - 7
lgamma 4 4 1 - 4
lgammal - - - - 1
lgammaf128 - - - - -
logf - 1 - - 1
log - - - - -
logl - - - - -
logf128 - - - - -
log10f 2 2 2 - 2
log10 2 2 1 - 2
log10l - - - - 1
log10f128 - - - - -
log1pf 1 1 1 - 1
log1p 1 1 - - 1
log1pl - - - - -
log1pf128 - - - - -
log2f 1 1 - - 1
log2 2 2 - - 2
log2l - - - - -
log2f128 - - - - -
log_advsimdf - - - - -
log_advsimd - - - - -
log_advsimdl - - - - -
log_advsimdf128 - - - - -
log_svef - - - - -
log_sve - - - - -
log_svel - - - - -
log_svef128 - - - - -
mul_ldoublef - - - - -
mul_ldouble - - - - -
mul_ldoublel - - - - -
mul_ldoublef128 - - - - -
powf - 1 - - 1
pow 1 1 - - 1
powl - - - - -
powf128 - - - - -
pow10f - - - - -
pow10 - 2 - - -
pow10l - - - - -
pow10f128 - - - - -
sinf 1 1 - - 1
sin 1 1 - - 1
sinl - - - - -
sinf128 - - - - -
sin_advsimdf - - - - -
sin_advsimd - - - - -
sin_advsimdl - - - - -
sin_advsimdf128 - - - - -
sin_svef - - - - -
sin_sve - - - - -
sin_svel - - - - -
sin_svef128 - - - - -
sincosf - 1 1 - 1
sincos 1 1 1 - 1
sincosl - - - - 1
sincosf128 - - - - -
sinhf 2 2 - - 2
sinh 2 2 - - 2
sinhl - - - - -
sinhf128 - - - - -
sqrtf - - - - -
sqrt - - - - -
sqrtl - - - - -
sqrtf128 - - - - -
sqrt_ldoublef - - - - -
sqrt_ldouble - - - - -
sqrt_ldoublel - - - - -
sqrt_ldoublef128 - - - - -
sub_ldoublef - - - - -
sub_ldouble - - - - -
sub_ldoublel - - - - -
sub_ldoublef128 - - - - -
tanf 1 1 - - 1
tan - - 1 - 1
tanl - - - - 1
tanf128 - - - - -
tanhf 2 2 - - 2
tanh 2 2 - - 2
tanhl - - - - -
tanhf128 - - - - -
tgammaf 8 8 1 - 8
tgamma 9 9 1 - 9
tgammal - - - - 1
tgammaf128 - - - - -
y0f 8 8 1 - 9
y0 3 3 2 - 3
y0l - - - - 2
y0f128 - - - - -
y1f 2 2 2 - 9
y1 3 3 3 - 3
y1l - - - - 3
y1f128 - - - - -
ynf 3 3 2 - 3
yn 3 3 3 - 3
ynl - - - - 3
ynf128 - - - - -
Function IA64 LoongArch 64-bit M68k MIPS 32-bit MIPS 64-bit
acosf - 1 - 1 1
acos 1 1 - 1 1
acosl - 1 - - 1
acosf128 1 - - - -
acoshf - 2 1 2 2
acosh 1 2 1 2 2
acoshl 1 4 1 - 4
acoshf128 4 - - - -
add_ldoublef - - - - -
add_ldouble - - - - -
add_ldoublel - - - - -
add_ldoublef128 - - - - -
asinf - 1 - 1 1
asin - 1 - 1 1
asinl - 1 - - 1
asinf128 1 - - - -
asinhf - 2 1 2 2
asinh 1 2 1 2 2
asinhl - 4 1 - 4
asinhf128 4 - - - -
atanf - 1 - 1 1
atan - 1 - 1 1
atanl - 1 - - 1
atanf128 1 - - - -
atan2f - 2 1 2 2
atan2 - - - - -
atan2l - 2 1 - 2
atan2f128 2 - - - -
atanhf - 2 - 2 2
atanh - 2 - 2 2
atanhl - 4 - - 4
atanhf128 4 - - - -
cabsf - - - - -
cabs - 1 1 1 1
cabsl - 1 1 - 1
cabsf128 1 - - - -
cacosf 2 + i 2 2 + i 2 2 + i 1 2 + i 2 2 + i 2
cacos 1 + i 2 1 + i 2 1 + i 1 1 + i 2 1 + i 2
cacosl 1 + i 2 2 + i 2 1 + i 2 - 2 + i 2
cacosf128 2 + i 2 - - - -
cacoshf 2 + i 2 2 + i 2 1 + i 2 2 + i 2 2 + i 2
cacosh 2 + i 1 2 + i 1 1 + i 1 2 + i 1 2 + i 1
cacoshl 2 + i 1 2 + i 2 2 + i 1 - 2 + i 2
cacoshf128 2 + i 2 - - - -
cargf - 1 1 1 1
carg - - - - -
cargl - 2 1 - 2
cargf128 2 - - - -
casinf 1 + i 2 1 + i 2 1 + i 1 1 + i 2 1 + i 2
casin 1 + i 2 1 + i 2 1 + i 1 1 + i 2 1 + i 2
casinl 1 + i 2 2 + i 2 1 + i 2 - 2 + i 2
casinf128 2 + i 2 - - - -
casinhf 2 + i 1 2 + i 1 1 + i 1 2 + i 1 2 + i 1
casinh 2 + i 1 2 + i 1 1 + i 1 2 + i 1 2 + i 1
casinhl 2 + i 1 2 + i 2 2 + i 1 - 2 + i 2
casinhf128 2 + i 2 - - - -
catanf 0 + i 1 1 + i 1 0 + i 1 1 + i 1 1 + i 1
catan 1 + i 1 1 + i 1 0 + i 1 1 + i 1 1 + i 1
catanl 0 + i 1 1 + i 1 1 + i 1 - 1 + i 1
catanf128 1 + i 1 - - - -
catanhf 1 + i 0 1 + i 1 1 + i 0 1 + i 1 1 + i 1
catanh 1 + i 1 1 + i 1 1 + i 0 1 + i 1 1 + i 1
catanhl 1 + i 0 1 + i 1 1 + i 1 - 1 + i 1
catanhf128 1 + i 1 - - - -
cbrtf - 1 1 1 1
cbrt - 4 1 4 4
cbrtl - 1 1 - 1
cbrtf128 1 - - - -
ccosf 0 + i 1 1 + i 1 - 1 + i 1 1 + i 1
ccos 1 + i 1 1 + i 1 - 1 + i 1 1 + i 1
ccosl 1 + i 1 1 + i 1 1 + i 1 - 1 + i 1
ccosf128 1 + i 1 - - - -
ccoshf 1 + i 1 1 + i 1 - 1 + i 1 1 + i 1
ccosh 1 + i 1 1 + i 1 - 1 + i 1 1 + i 1
ccoshl 0 + i 1 1 + i 1 0 + i 1 - 1 + i 1
ccoshf128 1 + i 1 - - - -
cexpf 1 + i 2 1 + i 2 - 1 + i 2 1 + i 2
cexp 2 + i 1 2 + i 1 - 2 + i 1 2 + i 1
cexpl 1 + i 1 1 + i 1 1 + i 1 - 1 + i 1
cexpf128 1 + i 1 - - - -
clogf 3 + i 0 3 + i 1 2 + i 1 3 + i 1 3 + i 1
clog 2 + i 1 3 + i 1 3 + i 1 3 + i 1 3 + i 1
clogl 2 + i 1 2 + i 1 3 + i 1 - 2 + i 1
clogf128 2 + i 1 - - - -
clog10f 4 + i 2 4 + i 2 2 + i 1 4 + i 2 4 + i 2
clog10 3 + i 2 3 + i 2 2 + i 1 3 + i 2 3 + i 2
clog10l 2 + i 1 2 + i 2 3 + i 2 - 2 + i 2
clog10f128 2 + i 2 - - - -
cosf 1 1 - 1 1
cos 1 1 1 1 1
cosl - 2 - - 2
cosf128 2 - - - -
cos_advsimdf - - - - -
cos_advsimd - - - - -
cos_advsimdl - - - - -
cos_advsimdf128 - - - - -
cos_svef - - - - -
cos_sve - - - - -
cos_svel - - - - -
cos_svef128 - - - - -
coshf - 2 - 2 2
cosh - 2 - 2 2
coshl - 2 - - 2
coshf128 2 - - - -
cpowf 5 + i 2 5 + i 2 3 + i 5 5 + i 2 5 + i 2
cpow 2 + i 0 2 + i 0 1 + i 0 2 + i 0 2 + i 0
cpowl 3 + i 4 4 + i 1 3 + i 1 - 4 + i 1
cpowf128 4 + i 1 - - - -
csinf 1 + i 1 1 + i 0 - 1 + i 0 1 + i 0
csin 1 + i 0 1 + i 0 - 1 + i 0 1 + i 0
csinl 1 + i 0 1 + i 1 1 + i 0 - 1 + i 1
csinf128 1 + i 1 - - - -
csinhf 1 + i 1 1 + i 1 - 1 + i 1 1 + i 1
csinh 1 + i 1 0 + i 1 - 0 + i 1 0 + i 1
csinhl 1 + i 1 1 + i 1 1 + i 0 - 1 + i 1
csinhf128 1 + i 1 - - - -
csqrtf 2 + i 2 2 + i 2 1 + i 1 2 + i 2 2 + i 2
csqrt 2 + i 2 2 + i 2 1 + i 1 2 + i 2 2 + i 2
csqrtl 2 + i 2 2 + i 2 2 + i 2 - 2 + i 2
csqrtf128 2 + i 2 - - - -
ctanf 1 + i 1 1 + i 2 1 + i 1 1 + i 2 1 + i 2
ctan 1 + i 2 2 + i 2 1 + i 1 1 + i 2 1 + i 2
ctanl 2 + i 2 3 + i 3 2 + i 2 - 3 + i 3
ctanf128 3 + i 3 - - - -
ctanhf 1 + i 1 2 + i 2 1 + i 2 2 + i 2 2 + i 2
ctanh 2 + i 2 2 + i 2 1 + i 1 2 + i 2 2 + i 2
ctanhl 1 + i 2 3 + i 3 2 + i 2 - 3 + i 3
ctanhf128 3 + i 3 - - - -
div_ldoublef - - - - -
div_ldouble - - - - -
div_ldoublel - - - - -
div_ldoublef128 - - - - -
erff - 1 1 1 1
erf - 1 - 1 1
erfl - 1 1 - 1
erff128 1 - - - -
erfcf - 3 1 3 3
erfc - 5 - 5 5
erfcl - 4 2 - 4
erfcf128 4 - - - -
expf 1 1 - 1 1
exp - 1 - 1 1
expl - 1 - - 1
expf128 1 - - - -
exp10f 1 - - 1 1
exp10 - 2 - 2 2
exp10l - 2 - - 2
exp10f128 2 - - - -
exp2f - - - 1 1
exp2 1 1 1 1 1
exp2l 1 1 - - 1
exp2f128 1 - - - -
exp_advsimdf - - - - -
exp_advsimd - - - - -
exp_advsimdl - - - - -
exp_advsimdf128 - - - - -
exp_svef - - - - -
exp_sve - - - - -
exp_svel - - - - -
exp_svef128 - - - - -
expm1f - 1 - 1 1
expm1 1 1 - 1 1
expm1l 1 2 - - 2
expm1f128 2 - - - -
fmaf - - - - -
fma - - - - -
fmal - - - - -
fmaf128 - - - - -
fma_ldoublef - - - - -
fma_ldouble - - - - -
fma_ldoublel - - - - -
fma_ldoublef128 - - - - -
fmodf - - - - -
fmod - - - - -
fmodl - - - - -
fmodf128 - - - - -
gammaf 1 7 1 7 7
gamma - 4 - 4 4
gammal - 5 2 - 5
gammaf128 - - - - -
hypotf - 1 - 1 1
hypot - 1 1 1 1
hypotl - 1 1 - 1
hypotf128 1 - - - -
j0f 9 9 2 9 9
j0 3 3 1 2 2
j0l 8 2 2 - 2
j0f128 2 - - - -
j1f 9 9 2 9 9
j1 4 4 - 4 4
j1l 6 4 1 - 4
j1f128 4 - - - -
jnf 4 4 2 4 4
jn 4 4 2 4 4
jnl 4 7 4 - 7
jnf128 7 - - - -
lgammaf 1 7 1 7 7
lgamma - 4 - 4 4
lgammal - 5 2 - 5
lgammaf128 5 - - - -
logf - - - 1 1
log - 1 - - -
logl - 1 - - 1
logf128 1 - - - -
log10f - 2 - 2 2
log10 - 2 - 2 2
log10l - 2 - - 2
log10f128 2 - - - -
log1pf - 1 - 1 1
log1p - 1 - 1 1
log1pl - 3 - - 3
log1pf128 3 - - - -
log2f - 1 - 1 1
log2 - 1 - 2 2
log2l - 3 - - 3
log2f128 3 - - - -
log_advsimdf - - - - -
log_advsimd - - - - -
log_advsimdl - - - - -
log_advsimdf128 - - - - -
log_svef - - - - -
log_sve - - - - -
log_svel - - - - -
log_svef128 - - - - -
mul_ldoublef - - - - -
mul_ldouble - - - - -
mul_ldoublel - - - - -
mul_ldoublef128 - - - - -
powf - - 7 1 1
pow - 1 1 1 1
powl - 2 9 - 2
powf128 2 - - - -
pow10f - - - - -
pow10 - - - - -
pow10l - - - - -
pow10f128 - - - - -
sinf - 1 - 1 1
sin 1 1 1 1 1
sinl - 2 - - 2
sinf128 2 - - - -
sin_advsimdf - - - - -
sin_advsimd - - - - -
sin_advsimdl - - - - -
sin_advsimdf128 - - - - -
sin_svef - - - - -
sin_sve - - - - -
sin_svel - - - - -
sin_svef128 - - - - -
sincosf - - - 1 1
sincos 1 1 - 1 1
sincosl - 1 - - 1
sincosf128 1 - - - -
sinhf - 2 - 2 2
sinh - 2 - 2 2
sinhl - 2 - - 2
sinhf128 2 - - - -
sqrtf - - - - -
sqrt - - - - -
sqrtl - - - - -
sqrtf128 - - - - -
sqrt_ldoublef - - - - -
sqrt_ldouble - - - - -
sqrt_ldoublel - - - - -
sqrt_ldoublef128 - - - - -
sub_ldoublef - - - - -
sub_ldouble - - - - -
sub_ldoublel - - - - -
sub_ldoublef128 - - - - -
tanf - 1 - 1 1
tan - 1 - - -
tanl 1 1 - - 1
tanf128 1 - - - -
tanhf - 2 - 2 2
tanh - 2 - 2 2
tanhl - 2 - - 2
tanhf128 2 - - - -
tgammaf - 8 4 8 8
tgamma - 9 1 9 9
tgammal 1 4 9 - 4
tgammaf128 4 - - - -
y0f 8 9 1 9 9
y0 2 3 1 3 3
y0l 1 3 1 - 3
y0f128 3 - - - -
y1f 9 9 3 9 9
y1 3 3 1 3 3
y1l 5 5 2 - 5
y1f128 5 - - - -
ynf 3 3 3 3 3
yn 3 3 2 3 3
ynl 3 5 4 - 5
ynf128 5 - - - -
Function MicroBlaze Nios II OpenRISC PowerPC PowerPC soft-float
acosf 1 1 1 1 1
acos - 1 1 1 1
acosl - - - 1 1
acosf128 - - - 1 -
acoshf 2 2 2 2 2
acosh 2 2 2 2 2
acoshl - - - 2 1
acoshf128 - - - 4 -
add_ldoublef - - - 1 1
add_ldouble - - - 1 1
add_ldoublel - - - - -
add_ldoublef128 - - - - -
asinf 1 1 1 1 1
asin - 1 1 1 1
asinl - - - 2 2
asinf128 - - - 1 -
asinhf 1 2 2 2 2
asinh 1 2 2 2 2
asinhl - - - 2 2
asinhf128 - - - 4 -
atanf 1 1 1 1 1
atan - 1 1 1 1
atanl - - - 1 1
atanf128 - - - 1 -
atan2f 1 2 2 1 2
atan2 - - - - -
atan2l - - - 2 2
atan2f128 - - - 2 -
atanhf 2 2 2 2 2
atanh 2 2 2 2 2
atanhl - - - 2 2
atanhf128 - - - 4 -
cabsf - - - - -
cabs 1 1 1 1 1
cabsl - - - 1 1
cabsf128 - - - 1 -
cacosf 2 + i 2 2 + i 2 2 + i 2 2 + i 2 2 + i 2
cacos 1 + i 2 1 + i 2 1 + i 2 1 + i 2 1 + i 2
cacosl - - - 1 + i 2 2 + i 1
cacosf128 - - - 2 + i 2 -
cacoshf 2 + i 2 2 + i 2 2 + i 2 2 + i 2 2 + i 2
cacosh 2 + i 1 2 + i 1 2 + i 1 2 + i 1 2 + i 1
cacoshl - - - 2 + i 1 1 + i 2
cacoshf128 - - - 2 + i 2 -
cargf 1 1 1 1 1
carg - - - 1 -
cargl - - - 2 2
cargf128 - - - 2 -
casinf 1 + i 2 1 + i 2 1 + i 2 1 + i 2 1 + i 2
casin 1 + i 2 1 + i 2 1 + i 2 1 + i 2 1 + i 2
casinl - - - 1 + i 2 2 + i 1
casinf128 - - - 2 + i 2 -
casinhf 2 + i 1 2 + i 1 2 + i 1 2 + i 1 2 + i 1
casinh 2 + i 1 2 + i 1 2 + i 1 2 + i 1 2 + i 1
casinhl - - - 2 + i 1 1 + i 2
casinhf128 - - - 2 + i 2 -
catanf 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
catan 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
catanl - - - 3 + i 2 3 + i 2
catanf128 - - - 1 + i 1 -
catanhf 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
catanh 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
catanhl - - - 2 + i 3 2 + i 3
catanhf128 - - - 1 + i 1 -
cbrtf 1 1 1 1 1
cbrt 3 4 4 4 4
cbrtl - - - 1 1
cbrtf128 - - - 1 -
ccosf 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
ccos 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
ccosl - - - 1 + i 2 1 + i 2
ccosf128 - - - 1 + i 1 -
ccoshf 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
ccosh 1 + i 1 1 + i 1 2 + i 1 1 + i 1 1 + i 1
ccoshl - - - 1 + i 2 1 + i 2
ccoshf128 - - - 1 + i 1 -
cexpf 1 + i 2 1 + i 2 1 + i 2 1 + i 2 1 + i 2
cexp 2 + i 1 2 + i 1 2 + i 1 2 + i 1 2 + i 1
cexpl - - - 2 + i 2 1 + i 1
cexpf128 - - - 1 + i 1 -
clogf 3 + i 1 3 + i 1 3 + i 1 3 + i 1 3 + i 1
clog 3 + i 0 3 + i 1 3 + i 1 3 + i 1 3 + i 1
clogl - - - 5 + i 2 2 + i 2
clogf128 - - - 2 + i 1 -
clog10f 4 + i 2 4 + i 2 4 + i 2 4 + i 2 4 + i 2
clog10 3 + i 2 3 + i 2 3 + i 2 3 + i 2 3 + i 2
clog10l - - - 3 + i 2 3 + i 2
clog10f128 - - - 2 + i 2 -
cosf 1 1 1 3 1
cos - 1 1 1 1
cosl - - - 4 4
cosf128 - - - 2 -
cos_advsimdf - - - - -
cos_advsimd - - - - -
cos_advsimdl - - - - -
cos_advsimdf128 - - - - -
cos_svef - - - - -
cos_sve - - - - -
cos_svel - - - - -
cos_svef128 - - - - -
coshf 1 2 2 2 2
cosh 1 2 2 2 2
coshl - - - 3 3
coshf128 - - - 2 -
cpowf 4 + i 2 5 + i 2 5 + i 2 5 + i 2 5 + i 2
cpow 2 + i 0 2 + i 0 2 + i 0 2 + i 0 2 + i 0
cpowl - - - 4 + i 2 4 + i 1
cpowf128 - - - 4 + i 1 -
csinf 1 + i 0 1 + i 0 1 + i 0 1 + i 0 1 + i 0
csin 1 + i 0 1 + i 0 1 + i 0 1 + i 0 1 + i 0
csinl - - - 2 + i 1 2 + i 1
csinf128 - - - 1 + i 1 -
csinhf 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
csinh 0 + i 1 0 + i 1 0 + i 1 0 + i 1 0 + i 1
csinhl - - - 1 + i 2 1 + i 2
csinhf128 - - - 1 + i 1 -
csqrtf 2 + i 2 2 + i 2 2 + i 2 2 + i 2 2 + i 2
csqrt 2 + i 2 2 + i 2 2 + i 2 2 + i 2 2 + i 2
csqrtl - - - 1 + i 1 1 + i 1
csqrtf128 - - - 2 + i 2 -
ctanf 1 + i 1 1 + i 2 1 + i 2 1 + i 2 1 + i 2
ctan 1 + i 2 1 + i 2 1 + i 2 1 + i 2 1 + i 2
ctanl - - - 3 + i 2 3 + i 2
ctanf128 - - - 3 + i 3 -
ctanhf 1 + i 2 2 + i 2 2 + i 2 2 + i 1 2 + i 2
ctanh 2 + i 2 2 + i 2 2 + i 2 2 + i 2 2 + i 2
ctanhl - - - 3 + i 3 2 + i 3
ctanhf128 - - - 3 + i 3 -
div_ldoublef - - - 1 1
div_ldouble - - - - -
div_ldoublel - - - - -
div_ldoublef128 - - - - -
erff 1 1 1 1 1
erf 1 1 1 1 1
erfl - - - 1 1
erff128 - - - 1 -
erfcf 2 3 3 2 3
erfc 3 5 5 2 5
erfcl - - - 3 3
erfcf128 - - - 4 -
expf 1 1 1 1 1
exp - 1 1 1 1
expl - - - 1 1
expf128 - - - 1 -
exp10f - - 1 1 -
exp10 2 2 2 2 2
exp10l - - - 1 1
exp10f128 - - - 2 -
exp2f 1 1 - - 1
exp2 1 1 1 1 1
exp2l - - - 2 1
exp2f128 - - - 1 -
exp_advsimdf - - - - -
exp_advsimd - - - - -
exp_advsimdl - - - - -
exp_advsimdf128 - - - - -
exp_svef - - - - -
exp_sve - - - - -
exp_svel - - - - -
exp_svef128 - - - - -
expm1f 1 1 1 1 1
expm1 1 1 1 1 1
expm1l - - - 1 1
expm1f128 - - - 2 -
fmaf - - - - -
fma - - - - -
fmal - - - 1 1
fmaf128 - - - - -
fma_ldoublef - - - 1 -
fma_ldouble - - - 1 -
fma_ldoublel - - - - -
fma_ldoublef128 - - - - -
fmodf - - - - -
fmod - - - - -
fmodl - - - 1 1
fmodf128 - - - - -
gammaf 4 7 7 4 7
gamma 4 4 4 3 4
gammal - - - 3 3
gammaf128 - - - 5 -
hypotf - - - 1 -
hypot 1 1 1 1 1
hypotl - - - 1 1
hypotf128 - - - 1 -
j0f 2 8 9 9 9
j0 2 2 2 3 2
j0l - - - 5 4
j0f128 - - - 7 -
j1f 2 9 9 9 9
j1 1 2 4 4 4
j1l - - - 6 10
j1f128 - - - 4 -
jnf 4 4 4 4 4
jn 4 4 4 4 4
jnl - - - 4 4
jnf128 - - - 7 -
lgammaf 4 7 7 4 7
lgamma 4 4 4 3 4
lgammal - - - 3 3
lgammaf128 - - - 5 -
logf 1 1 - 1 1
log - - - 1 -
logl - - - 1 1
logf128 - - - 1 -
log10f 2 2 2 2 2
log10 2 2 2 2 2
log10l - - - 1 1
log10f128 - - - 2 -
log1pf 1 1 1 1 1
log1p 1 1 1 1 1
log1pl - - - 2 2
log1pf128 - - - 3 -
log2f 1 1 1 1 1
log2 2 2 - 1 2
log2l - - - 1 1
log2f128 - - - 3 -
log_advsimdf - - - - -
log_advsimd - - - - -
log_advsimdl - - - - -
log_advsimdf128 - - - - -
log_svef - - - - -
log_sve - - - - -
log_svel - - - - -
log_svef128 - - - - -
mul_ldoublef - - - 1 1
mul_ldouble - - - 1 1
mul_ldoublel - - - - -
mul_ldoublef128 - - - - -
powf 1 3 - 1 1
pow - 1 1 1 1
powl - - - 1 1
powf128 - - - 2 -
pow10f - - - - -
pow10 - - - - -
pow10l - - - - -
pow10f128 - - - - -
sinf 1 1 1 1 1
sin - 1 1 1 1
sinl - - - 1 1
sinf128 - - - 2 -
sin_advsimdf - - - - -
sin_advsimd - - - - -
sin_advsimdl - - - - -
sin_advsimdf128 - - - - -
sin_svef - - - - -
sin_sve - - - - -
sin_svel - - - - -
sin_svef128 - - - - -
sincosf 1 1 - 1 1
sincos - 1 1 1 1
sincosl - - - 1 1
sincosf128 - - - 1 -
sinhf 2 2 2 2 2
sinh 2 2 2 2 2
sinhl - - - 3 3
sinhf128 - - - 2 -
sqrtf - - - - -
sqrt - - - - -
sqrtl - - - 1 1
sqrtf128 - - - - -
sqrt_ldoublef - - - - -
sqrt_ldouble - - - 1 -
sqrt_ldoublel - - - - -
sqrt_ldoublef128 - - - - -
sub_ldoublef - - - 1 1
sub_ldouble - - - 1 1
sub_ldoublel - - - - -
sub_ldoublef128 - - - - -
tanf 1 1 1 3 1
tan - - - - -
tanl - - - 2 2
tanf128 - - - 1 -
tanhf 2 2 2 2 2
tanh 2 2 2 2 2
tanhl - - - 1 1
tanhf128 - - - 2 -
tgammaf 4 8 8 8 8
tgamma 5 9 9 9 9
tgammal - - - 5 5
tgammaf128 - - - 4 -
y0f 1 8 9 8 9
y0 2 3 3 2 3
y0l - - - 10 10
y0f128 - - - 3 -
y1f 2 2 9 9 9
y1 3 3 3 3 3
y1l - - - 2 2
y1f128 - - - 5 -
ynf 2 3 3 3 3
yn 3 3 3 3 3
ynl - - - 2 2
ynf128 - - - 5 -
Function RISC-V 64-bit RISC-V soft-float S/390 SH Sparc
acosf 1 1 1 1 1
acos 1 1 1 - 1
acosl 1 1 1 - 1
acosf128 - - - - -
acoshf 2 2 2 2 2
acosh 2 2 2 2 2
acoshl 4 4 4 - 4
acoshf128 - - - - -
add_ldoublef - - - - -
add_ldouble - - - - -
add_ldoublel - - - - -
add_ldoublef128 - - - - -
asinf 1 1 1 1 1
asin 1 1 1 - 1
asinl 1 1 1 - 1
asinf128 - - - - -
asinhf 2 2 2 2 2
asinh 2 2 2 2 2
asinhl 4 4 4 - 4
asinhf128 - - - - -
atanf 1 1 1 1 1
atan 1 1 1 - 1
atanl 1 1 1 - 1
atanf128 - - - - -
atan2f 1 2 1 1 2
atan2 - - - - -
atan2l 2 2 2 - 2
atan2f128 - - - - -
atanhf 2 2 2 2 2
atanh 2 2 2 2 2
atanhl 4 4 4 - 4
atanhf128 - - - - -
cabsf - - - - -
cabs 1 1 1 1 1
cabsl 1 1 1 - 1
cabsf128 - - - - -
cacosf 2 + i 2 2 + i 2 2 + i 2 2 + i 2 2 + i 2
cacos 1 + i 2 1 + i 2 1 + i 2 1 + i 2 1 + i 2
cacosl 2 + i 2 2 + i 2 2 + i 2 - 2 + i 2
cacosf128 - - - - -
cacoshf 2 + i 2 2 + i 2 2 + i 2 2 + i 2 2 + i 2
cacosh 2 + i 1 2 + i 1 2 + i 1 2 + i 1 2 + i 1
cacoshl 2 + i 2 2 + i 2 2 + i 2 - 2 + i 2
cacoshf128 - - - - -
cargf 1 1 1 1 1
carg - - - - -
cargl 2 2 2 - 2
cargf128 - - - - -
casinf 1 + i 2 1 + i 2 1 + i 2 1 + i 2 1 + i 2
casin 1 + i 2 1 + i 2 1 + i 2 1 + i 2 1 + i 2
casinl 2 + i 2 2 + i 2 2 + i 2 - 2 + i 2
casinf128 - - - - -
casinhf 2 + i 1 2 + i 1 2 + i 1 2 + i 1 2 + i 1
casinh 2 + i 1 2 + i 1 2 + i 1 2 + i 1 2 + i 1
casinhl 2 + i 2 2 + i 2 2 + i 2 - 2 + i 2
casinhf128 - - - - -
catanf 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
catan 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
catanl 1 + i 1 1 + i 1 1 + i 1 - 1 + i 1
catanf128 - - - - -
catanhf 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
catanh 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
catanhl 1 + i 1 1 + i 1 1 + i 1 - 1 + i 1
catanhf128 - - - - -
cbrtf 1 1 1 1 1
cbrt 4 4 4 4 4
cbrtl 1 1 1 - 1
cbrtf128 - - - - -
ccosf 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
ccos 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
ccosl 1 + i 1 1 + i 1 1 + i 1 - 1 + i 1
ccosf128 - - - - -
ccoshf 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
ccosh 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
ccoshl 1 + i 1 1 + i 1 1 + i 1 - 1 + i 1
ccoshf128 - - - - -
cexpf 1 + i 2 1 + i 2 1 + i 2 1 + i 2 1 + i 2
cexp 2 + i 1 2 + i 1 2 + i 1 2 + i 1 2 + i 1
cexpl 1 + i 1 1 + i 1 1 + i 1 - 1 + i 1
cexpf128 - - - - -
clogf 3 + i 1 3 + i 1 3 + i 1 3 + i 1 3 + i 1
clog 3 + i 1 3 + i 1 3 + i 1 3 + i 0 3 + i 1
clogl 2 + i 1 2 + i 1 2 + i 1 - 4 + i 1
clogf128 - - - - -
clog10f 4 + i 2 4 + i 2 4 + i 2 4 + i 2 4 + i 2
clog10 3 + i 2 3 + i 2 3 + i 2 3 + i 2 3 + i 2
clog10l 2 + i 2 2 + i 2 2 + i 2 - 4 + i 2
clog10f128 - - - - -
cosf 1 1 1 1 1
cos 1 1 1 1 1
cosl 2 2 2 - 2
cosf128 - - - - -
cos_advsimdf - - - - -
cos_advsimd - - - - -
cos_advsimdl - - - - -
cos_advsimdf128 - - - - -
cos_svef - - - - -
cos_sve - - - - -
cos_svel - - - - -
cos_svef128 - - - - -
coshf 2 2 2 2 2
cosh 2 2 2 2 2
coshl 2 2 2 - 2
coshf128 - - - - -
cpowf 5 + i 2 5 + i 2 5 + i 2 5 + i 2 5 + i 2
cpow 2 + i 0 2 + i 0 2 + i 0 2 + i 0 2 + i 0
cpowl 4 + i 1 4 + i 1 4 + i 1 - 4 + i 1
cpowf128 - - - - -
csinf 1 + i 0 1 + i 0 1 + i 0 1 + i 0 1 + i 0
csin 1 + i 0 1 + i 0 1 + i 0 1 + i 0 1 + i 0
csinl 1 + i 1 1 + i 1 1 + i 1 - 1 + i 1
csinf128 - - - - -
csinhf 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
csinh 0 + i 1 0 + i 1 0 + i 1 0 + i 1 0 + i 1
csinhl 1 + i 1 1 + i 1 1 + i 1 - 1 + i 1
csinhf128 - - - - -
csqrtf 2 + i 2 2 + i 2 2 + i 2 2 + i 2 2 + i 2
csqrt 2 + i 2 2 + i 2 2 + i 2 2 + i 2 2 + i 2
csqrtl 2 + i 2 2 + i 2 2 + i 2 - 2 + i 2
csqrtf128 - - - - -
ctanf 1 + i 2 1 + i 2 1 + i 2 1 + i 2 1 + i 2
ctan 1 + i 2 1 + i 2 1 + i 2 1 + i 2 1 + i 2
ctanl 3 + i 3 3 + i 3 3 + i 3 - 3 + i 3
ctanf128 - - - - -
ctanhf 2 + i 1 2 + i 2 2 + i 1 2 + i 2 2 + i 2
ctanh 2 + i 2 2 + i 2 2 + i 2 2 + i 2 2 + i 2
ctanhl 3 + i 3 3 + i 3 3 + i 3 - 3 + i 3
ctanhf128 - - - - -
div_ldoublef - - - - -
div_ldouble - - - - -
div_ldoublel - - - - -
div_ldoublef128 - - - - -
erff 1 1 1 1 1
erf 1 1 1 1 1
erfl 1 1 1 - 1
erff128 - - - - -
erfcf 2 3 2 2 3
erfc 2 5 2 5 5
erfcl 4 4 4 - 4
erfcf128 - - - - -
expf 1 1 1 1 1
exp 1 1 1 1 1
expl 1 1 1 - 1
expf128 - - - - -
exp10f - - 1 - 1
exp10 2 2 2 2 2
exp10l 2 2 2 - 2
exp10f128 - - - - -
exp2f - - - - 1
exp2 1 1 1 1 1
exp2l 1 1 1 - 1
exp2f128 - - - - -
exp_advsimdf - - - - -
exp_advsimd - - - - -
exp_advsimdl - - - - -
exp_advsimdf128 - - - - -
exp_svef - - - - -
exp_sve - - - - -
exp_svel - - - - -
exp_svef128 - - - - -
expm1f 1 1 1 1 1
expm1 1 1 1 1 1
expm1l 2 2 2 - 2
expm1f128 - - - - -
fmaf - - - - -
fma - - - - -
fmal - - - - -
fmaf128 - - - - -
fma_ldoublef - - - - -
fma_ldouble - - - - -
fma_ldoublel - - - - -
fma_ldoublef128 - - - - -
fmodf - - - - -
fmod - - - - -
fmodl - - - - -
fmodf128 - - - - -
gammaf 3 7 3 3 7
gamma 3 4 3 4 4
gammal 5 5 5 - 5
gammaf128 - - - - -
hypotf 1 - 1 - 1
hypot 1 1 1 1 1
hypotl 1 1 1 - 1
hypotf128 - - - - -
j0f 9 9 9 8 9
j0 3 2 4 2 3
j0l 2 2 2 - 2
j0f128 - - - - -
j1f 9 9 9 8 9
j1 4 4 4 2 4
j1l 4 4 4 - 4
j1f128 - - - - -
jnf 4 4 4 4 4
jn 4 4 4 4 4
jnl 7 7 7 - 7
jnf128 - - - - -
lgammaf 3 7 3 3 7
lgamma 3 4 3 4 4
lgammal 5 5 5 - 5
lgammaf128 - - - - -
logf - - - 1 1
log 1 - 1 - 1
logl 1 1 1 - 1
logf128 - - - - -
log10f 2 2 2 2 2
log10 2 2 2 2 2
log10l 2 2 2 - 2
log10f128 - - - - -
log1pf 1 1 1 1 1
log1p 1 1 1 1 1
log1pl 3 3 3 - 3
log1pf128 - - - - -
log2f 1 1 1 1 1
log2 1 2 - 2 2
log2l 3 3 3 - 3
log2f128 - - - - -
log_advsimdf - - - - -
log_advsimd - - - - -
log_advsimdl - - - - -
log_advsimdf128 - - - - -
log_svef - - - - -
log_sve - - - - -
log_svel - - - - -
log_svef128 - - - - -
mul_ldoublef - - - - -
mul_ldouble - - - - -
mul_ldoublel - - - - -
mul_ldoublef128 - - - - -
powf - - - 1 3
pow 1 1 1 1 1
powl 2 2 2 - 2
powf128 - - - - -
pow10f - - - - -
pow10 - - - - -
pow10l - - - - -
pow10f128 - - - - -
sinf 1 1 1 1 1
sin 1 1 1 1 1
sinl 2 2 2 - 2
sinf128 - - - - -
sin_advsimdf - - - - -
sin_advsimd - - - - -
sin_advsimdl - - - - -
sin_advsimdf128 - - - - -
sin_svef - - - - -
sin_sve - - - - -
sin_svel - - - - -
sin_svef128 - - - - -
sincosf - - - 1 1
sincos 1 1 1 1 1
sincosl 1 1 1 - 1
sincosf128 - - - - -
sinhf 2 2 2 2 2
sinh 2 2 2 2 2
sinhl 2 2 2 - 2
sinhf128 - - - - -
sqrtf - - - - -
sqrt - - - - -
sqrtl - - - - -
sqrtf128 - - - - -
sqrt_ldoublef - - - - -
sqrt_ldouble - - - - -
sqrt_ldoublel - - - - -
sqrt_ldoublef128 - - - - -
sub_ldoublef - - - - -
sub_ldouble - - - - -
sub_ldoublel - - - - -
sub_ldoublef128 - - - - -
tanf 1 1 1 1 1
tan - - - - -
tanl 1 1 1 - 1
tanf128 - - - - -
tanhf 2 2 2 2 2
tanh 2 2 2 2 2
tanhl 2 2 2 - 2
tanhf128 - - - - -
tgammaf 8 8 8 8 8
tgamma 9 9 9 9 9
tgammal 4 4 4 - 4
tgammaf128 - - - - -
y0f 8 9 8 6 9
y0 2 3 2 3 3
y0l 3 3 3 - 3
y0f128 - - - - -
y1f 9 9 9 2 9
y1 3 3 3 3 3
y1l 5 5 5 - 5
y1f128 - - - - -
ynf 3 3 3 3 3
yn 3 3 3 3 3
ynl 5 5 5 - 5
ynf128 - - - - -
Function i686 ix86 x86_64
acosf - - 1
acos 1 1 1
acosl 2 2 2
acosf128 1 1 1
acoshf - - 2
acosh 1 1 2
acoshl 3 3 3
acoshf128 4 4 4
add_ldoublef - - -
add_ldouble - - -
add_ldoublel - - -
add_ldoublef128 - - -
asinf - - 1
asin 1 1 1
asinl 1 1 1
asinf128 1 1 1
asinhf - - 2
asinh 1 1 2
asinhl 3 3 3
asinhf128 4 4 4
atanf - - 1
atan 1 1 1
atanl 1 1 1
atanf128 1 1 1
atan2f - - 2
atan2 1 1 -
atan2l 1 1 1
atan2f128 2 2 2
atanhf - - 2
atanh 1 1 2
atanhl 3 3 3
atanhf128 4 4 4
cabsf - - -
cabs 1 1 1
cabsl 1 1 1
cabsf128 1 1 1
cacosf 2 + i 2 2 + i 2 2 + i 2
cacos 1 + i 2 1 + i 2 1 + i 2
cacosl 1 + i 2 1 + i 2 1 + i 2
cacosf128 2 + i 2 2 + i 2 2 + i 2
cacoshf 2 + i 2 2 + i 2 2 + i 2
cacosh 2 + i 1 2 + i 1 2 + i 1
cacoshl 2 + i 1 2 + i 1 2 + i 1
cacoshf128 2 + i 2 2 + i 2 2 + i 2
cargf - - 1
carg 1 1 -
cargl 1 1 1
cargf128 2 2 2
casinf 1 + i 2 1 + i 2 1 + i 2
casin 1 + i 2 1 + i 2 1 + i 2
casinl 1 + i 2 1 + i 2 1 + i 2
casinf128 2 + i 2 2 + i 2 2 + i 2
casinhf 2 + i 1 2 + i 1 2 + i 1
casinh 2 + i 1 2 + i 1 2 + i 1
casinhl 2 + i 1 2 + i 1 2 + i 1
casinhf128 2 + i 2 2 + i 2 2 + i 2
catanf 0 + i 1 0 + i 1 1 + i 1
catan 1 + i 1 1 + i 1 1 + i 1
catanl 1 + i 1 1 + i 1 1 + i 1
catanf128 1 + i 1 1 + i 1 1 + i 1
catanhf 1 + i 0 1 + i 0 1 + i 1
catanh 1 + i 1 1 + i 1 1 + i 1
catanhl 1 + i 1 1 + i 1 1 + i 1
catanhf128 1 + i 1 1 + i 1 1 + i 1
cbrtf 1 1 1
cbrt 1 1 4
cbrtl 3 3 1
cbrtf128 1 1 1
ccosf 1 + i 1 1 + i 1 1 + i 1
ccos 1 + i 1 1 + i 1 1 + i 1
ccosl 1 + i 1 1 + i 1 1 + i 1
ccosf128 1 + i 1 1 + i 1 1 + i 1
ccoshf 1 + i 1 1 + i 1 1 + i 1
ccosh 1 + i 1 1 + i 1 1 + i 1
ccoshl 1 + i 1 1 + i 1 1 + i 1
ccoshf128 1 + i 1 1 + i 1 1 + i 1
cexpf 1 + i 2 1 + i 2 1 + i 2
cexp 2 + i 1 2 + i 1 2 + i 1
cexpl 1 + i 1 1 + i 1 1 + i 1
cexpf128 1 + i 1 1 + i 1 1 + i 1
clogf 3 + i 0 3 + i 0 3 + i 1
clog 2 + i 1 2 + i 1 3 + i 1
clogl 3 + i 1 3 + i 1 3 + i 1
clogf128 2 + i 1 2 + i 1 2 + i 1
clog10f 4 + i 2 4 + i 2 4 + i 2
clog10 3 + i 2 3 + i 2 3 + i 2
clog10l 4 + i 2 4 + i 2 4 + i 2
clog10f128 2 + i 2 2 + i 2 2 + i 2
cosf 1 1 1
cos 1 1 1
cosl 1 1 1
cosf128 2 2 2
cos_advsimdf - - -
cos_advsimd - - -
cos_advsimdl - - -
cos_advsimdf128 - - -
cos_svef - - -
cos_sve - - -
cos_svel - - -
cos_svef128 - - -
coshf 2 2 2
cosh 1 1 2
coshl 3 3 3
coshf128 2 2 2
cpowf 5 + i 2 5 + i 2 5 + i 2
cpow 2 + i 1 2 + i 0 2 + i 0
cpowl 3 + i 4 3 + i 4 3 + i 4
cpowf128 4 + i 1 4 + i 1 4 + i 1
csinf 1 + i 1 1 + i 1 1 + i 0
csin 1 + i 1 1 + i 0 1 + i 0
csinl 1 + i 0 1 + i 0 1 + i 0
csinf128 1 + i 1 1 + i 1 1 + i 1
csinhf 1 + i 1 1 + i 1 1 + i 1
csinh 1 + i 1 0 + i 1 0 + i 1
csinhl 1 + i 1 1 + i 1 1 + i 1
csinhf128 1 + i 1 1 + i 1 1 + i 1
csqrtf 2 + i 2 2 + i 2 2 + i 2
csqrt 2 + i 2 2 + i 2 2 + i 2
csqrtl 2 + i 2 2 + i 2 2 + i 2
csqrtf128 2 + i 2 2 + i 2 2 + i 2
ctanf 1 + i 2 1 + i 2 1 + i 2
ctan 1 + i 2 1 + i 2 1 + i 2
ctanl 2 + i 1 2 + i 1 2 + i 1
ctanf128 3 + i 3 3 + i 3 3 + i 3
ctanhf 2 + i 2 2 + i 2 2 + i 2
ctanh 2 + i 2 2 + i 2 2 + i 2
ctanhl 1 + i 2 1 + i 2 1 + i 2
ctanhf128 3 + i 3 3 + i 3 3 + i 3
div_ldoublef - - -
div_ldouble - - -
div_ldoublel - - -
div_ldoublef128 - - -
erff 1 1 1
erf 1 1 1
erfl 1 1 1
erff128 1 1 1
erfcf 3 3 3
erfc 5 5 5
erfcl 5 5 5
erfcf128 4 4 4
expf 1 1 1
exp 1 1 1
expl 1 1 1
expf128 1 1 1
exp10f - - 1
exp10 1 1 2
exp10l 1 1 1
exp10f128 2 2 2
exp2f - - 1
exp2 1 1 1
exp2l 1 1 1
exp2f128 1 1 1
exp_advsimdf - - -
exp_advsimd - - -
exp_advsimdl - - -
exp_advsimdf128 - - -
exp_svef - - -
exp_sve - - -
exp_svel - - -
exp_svef128 - - -
expm1f - - 1
expm1 1 1 1
expm1l 3 3 3
expm1f128 2 2 2
fmaf - - -
fma - - -
fmal - - -
fmaf128 - - -
fma_ldoublef - - -
fma_ldouble - - -
fma_ldoublel - - -
fma_ldoublef128 - - -
fmodf - - -
fmod - - -
fmodl - - -
fmodf128 - - -
gammaf 5 5 7
gamma 4 4 4
gammal 4 4 4
gammaf128 - - -
hypotf 1 - 1
hypot 1 1 1
hypotl 1 1 1
hypotf128 1 1 1
j0f 9 9 9
j0 5 5 3
j0l 8 8 8
j0f128 2 2 2
j1f 9 9 9
j1 4 4 4
j1l 9 9 9
j1f128 4 4 4
jnf 4 4 4
jn 4 4 4
jnl 4 4 4
jnf128 7 7 7
lgammaf 5 5 7
lgamma 4 4 4
lgammal 4 4 4
lgammaf128 5 5 5
logf - - 1
log 1 1 1
logl 1 1 1
logf128 1 1 1
log10f - - 2
log10 1 1 2
log10l 1 1 1
log10f128 2 2 2
log1pf - - 1
log1p 1 1 1
log1pl 2 2 2
log1pf128 3 3 3
log2f 1 1 1
log2 1 1 2
log2l 1 1 1
log2f128 3 3 3
log_advsimdf - - -
log_advsimd - - -
log_advsimdl - - -
log_advsimdf128 - - -
log_svef - - -
log_sve - - -
log_svel - - -
log_svef128 - - -
mul_ldoublef - - -
mul_ldouble - - -
mul_ldoublel - - -
mul_ldoublef128 - - -
powf - - 1
pow 1 1 1
powl 1 1 1
powf128 2 2 2
pow10f - - -
pow10 - - -
pow10l - - -
pow10f128 - - -
sinf 1 1 1
sin 1 1 1
sinl 2 2 2
sinf128 2 2 2
sin_advsimdf - - -
sin_advsimd - - -
sin_advsimdl - - -
sin_advsimdf128 - - -
sin_svef - - -
sin_sve - - -
sin_svel - - -
sin_svef128 - - -
sincosf - 1 -
sincos 1 1 1
sincosl 1 1 1
sincosf128 1 1 1
sinhf 2 2 2
sinh 2 2 2
sinhl 3 3 3
sinhf128 2 2 2
sqrtf - - -
sqrt - - -
sqrtl - - -
sqrtf128 - - -
sqrt_ldoublef - - -
sqrt_ldouble - - -
sqrt_ldoublel - - -
sqrt_ldoublef128 - - -
sub_ldoublef - - -
sub_ldouble - - -
sub_ldoublel - - -
sub_ldoublef128 - - -
tanf 1 1 1
tan - - -
tanl 2 2 2
tanf128 1 1 1
tanhf 2 2 2
tanh 2 2 2
tanhl 3 3 3
tanhf128 2 2 2
tgammaf 8 8 8
tgamma 9 9 9
tgammal 5 5 5
tgammaf128 4 4 4
y0f 9 9 9
y0 3 3 3
y0l 2 2 2
y0f128 3 3 3
y1f 9 9 9
y1 3 3 6
y1l 3 3 3
y1f128 5 5 5
ynf 3 3 3
yn 3 3 3
ynl 4 4 4
ynf128 5 5 5