Next: , Previous: Special Functions, Up: Mathematics


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 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.

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.

Function aarch64 Alpha ARM hppa/fpu IA64
acosf - - - - -
acos - - - - -
acosl - - - - -
acoshf - - - - -
acosh 1 1 1 1 -
acoshl 1 1 - - -
asinf - - - - -
asin - - - - -
asinl 1 1 - - -
asinhf 1 1 1 1 -
asinh 1 1 1 1 -
asinhl 1 1 - - -
atanf - - - - -
atan 1 - - - -
atanl - - - - -
atanhf 1 1 1 1 -
atanh - - - - -
atanhl 1 1 - - -
atan2f 1 1 1 1 -
atan2 - - - - -
atan2l 1 1 - - -
cabsf - - - - -
cabs - - - - -
cabsl - - - - -
cacosf 2 + i 2 2 + i 2 2 + i 2 2 + i 2 2 + i 2
cacos 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
cacosl 2 + i 2 2 + i 2 - - 1 + i 2
cacoshf 2 + i 2 2 + i 2 2 + i 2 2 + i 2 2 + i 2
cacosh 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
cacoshl 2 + i 2 2 + i 2 - - 2 + i 1
cargf - - - - -
carg - - - - -
cargl - - - - -
casinf 1 + i 2 1 + i 2 1 + i 2 1 + i 2 1 + i 2
casin 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
casinl 2 + i 2 2 + i 2 - 1 + i 0 1 + i 2
casinhf 2 + i 1 2 + i 1 2 + i 1 2 + i 1 2 + i 1
casinh 1 + i 1 1 + i 1 1 + i 1 5 + i 3 1 + i 1
casinhl 2 + i 2 2 + i 2 - 5 + i 3 2 + i 1
catanf 1 + i 1 1 + i 1 1 + i 1 1 + i 1 0 + i 1
catan 0 + i 1 0 + i 1 0 + i 1 0 + i 1 0 + i 1
catanl 1 + i 1 1 + i 1 - 0 + i 1 0 + i 1
catanhf 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 0
catanh 1 + i 0 1 + i 0 1 + i 0 4 + i 0 1 + i 0
catanhl 1 + i 1 1 + i 1 - 4 + i 0 1 + i 0
cbrtf 1 1 1 1 -
cbrt 1 1 1 1 -
cbrtl 1 1 - 1 -
ccosf 1 + i 1 1 + i 1 1 + i 1 1 + i 1 0 + 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 0 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 1 + i 1 1 + i 1 1 + i 1
ccoshl 1 + i 1 1 + i 1 - 1 + i 0 0 + i 1
ceilf - - - - -
ceil - - - - -
ceill - - - - -
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
cimagf - - - - -
cimag - - - - -
cimagl - - - - -
clogf 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 0
clog 1 + i 1 1 + i 0 1 + i 0 1 + i 0 1 + i 1
clogl 1 + i 1 1 + i 1 - - 1 + i 1
clog10f 2 + i 1 2 + i 1 2 + i 1 2 + i 1 2 + i 1
clog10 2 + i 1 2 + i 1 2 + i 1 2 + i 1 2 + i 1
clog10l 1 + i 2 1 + i 2 - 0 + i 1 1 + i 1
conjf - - - - -
conj - - - - -
conjl - - - - -
copysignf - - - - -
copysign - - - - -
copysignl - - - - -
cosf 1 1 1 1 -
cos - - - 2 1
cosl 1 1 - 2 -
coshf 1 1 1 1 -
cosh 1 1 1 1 -
coshl 1 1 - - -
cpowf 5 + i 2 4 + i 2 4 + i 2 4 + i 2 5 + i 2
cpow 2 + i 0 2 + i 0 2 + i 0 2 + i 2 2 + i 0
cpowl 4 + i 1 4 + i 1 - 2 + i 2 3 + i 4
cprojf - - - - -
cproj - - - - -
cprojl - - - - -
crealf - - - - -
creal - - - - -
creall - - - - -
csinf 1 + i 0 1 + i 0 1 + i 0 1 + i 0 1 + i 1
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 0
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 1 + i 1
csinhl 1 + i 1 1 + i 1 - 0 + i 1 1 + i 0
csqrtf 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
csqrt 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
csqrtl 1 + i 1 1 + i 1 - - 1 + i 1
ctanf 1 + i 1 1 + i 1 1 + i 1 1 + i 1 1 + i 1
ctan 1 + i 2 1 + i 2 1 + i 2 1 + i 2 1 + i 2
ctanl 3 + i 3 3 + i 3 - 0 + i 1 2 + i 2
ctanhf 2 + i 1 1 + i 2 1 + i 2 1 + i 2 1 + i 1
ctanh 2 + i 2 2 + i 2 2 + i 2 2 + i 2 2 + i 2
ctanhl 3 + i 3 3 + i 3 - 1 + i 0 1 + i 2
erff - - - - -
erf 1 1 1 1 -
erfl 1 1 - 1 -
erfcf 1 1 1 1 -
erfc 1 1 1 1 -
erfcl 1 1 - 1 -
expf - - - - -
exp - - - - -
expl - - - - -
exp10f - - - 2 -
exp10 1 1 1 6 -
exp10l 1 1 - 6 -
exp2f - - - - -
exp2 - - - - -
exp2l 1 1 - - -
expm1f 1 1 1 1 -
expm1 1 1 1 1 -
expm1l 1 1 - 1 1
fabsf - - - - -
fabs - - - - -
fabsl - - - - -
fdimf - - - - -
fdim - - - - -
fdiml - - - - -
floorf - - - - -
floor - - - - -
floorl - - - - -
fmaf - - - - -
fma - - - - -
fmal - - - - -
fmaxf - - - - -
fmax - - - - -
fmaxl - - - - -
fminf - - - - -
fmin - - - - -
fminl - - - - -
fmodf - - - - -
fmod - - - - -
fmodl - - - - -
frexpf - - - - -
frexp - - - - -
frexpl - - - - -
gammaf 1 1 1 2 -
gamma 1 1 1 1 -
gammal 1 1 - - -
hypotf - - - 1 -
hypot 1 1 1 1 -
hypotl 1 1 - - -
ilogbf - - - - -
ilogb - - - - -
ilogbl - - - - -
j0f 2 2 2 2 2
j0 2 2 2 2 2
j0l 2 2 - 2 2
j1f 2 2 2 2 2
j1 1 1 1 1 1
j1l 4 4 - 1 1
jnf 4 4 4 5 4
jn 4 4 4 4 4
jnl 7 7 - 4 4
lgammaf 1 1 1 2 -
lgamma 1 1 1 1 -
lgammal 1 1 - 1 -
lrintf - - - - -
lrint - - - - -
lrintl - - - - -
llrintf - - - - -
llrint - - - - -
llrintl - - - - -
logf 1 1 1 1 -
log - - - - -
logl 1 1 - - -
log10f 2 2 2 2 -
log10 1 1 1 1 -
log10l 1 1 - 1 -
log1pf 1 1 1 1 -
log1p - - - - -
log1pl 1 1 - - -
log2f - - - - -
log2 - - - - -
log2l 1 1 - - -
logbf - - - - -
logb - - - - -
logbl - - - - -
lroundf - - - - -
lround - - - - -
lroundl - - - - -
llroundf - - - - -
llround - - - - -
llroundl - - - - -
modff - - - - -
modf - - - - -
modfl - - - - -
nearbyintf - - - - -
nearbyint - - - - -
nearbyintl - - - - -
nextafterf - - - - -
nextafter - - - - -
nextafterl - - - - -
nexttowardf - - - - -
nexttoward - - - - -
nexttowardl - - - - -
powf 1 1 1 1 -
pow - - - - -
powl 1 1 - - -
remainderf - - - - -
remainder - - - - -
remainderl - - - - -
remquof - - - - -
remquo - - - - -
remquol - - - - -
rintf - - - - -
rint - - - - -
rintl - - - - -
roundf - - - - -
round - - - - -
roundl - - - - -
scalbf - - - - -
scalb - - - - -
scalbl - - - - -
scalbnf - - - - -
scalbn - - - - -
scalbnl - - - - -
scalblnf - - - - -
scalbln - - - - -
scalblnl - - - - -
sinf 1 1 1 1 -
sin - - - - 1
sinl 1 1 - - -
sincosf 1 1 1 1 -
sincos - - - 1 1
sincosl 1 1 - 1 -
sinhf - - - - -
sinh - - - - -
sinhl - - - - -
sqrtf - - - - -
sqrt - - - - -
sqrtl - - - - -
tanf - - - - -
tan - - - 1 -
tanl 1 1 - 1 -
tanhf - - - - -
tanh - - - - -
tanhl 1 1 - - -
tgammaf 3 3 3 3 -
tgamma 4 4 4 4 -
tgammal 4 4 - 1 1
truncf - - - - -
trunc - - - - -
truncl - - - - -
y0f 1 1 1 1 1
y0 2 2 2 2 2
y0l 3 3 - 2 1
y1f 2 2 2 2 2
y1 3 3 3 3 3
y1l 2 2 - 3 2
ynf 2 2 2 2 3
yn 3 3 3 3 3
ynl 4 4 - 3 2

Function m68k/coldfire/fpu m68k/m680x0/fpu microblaze mips/mips32 mips/mips64
acosf - - - - -
acos - - - - -
acosl - - - - -
acoshf - - - - -
acosh - 1 1 1 1
acoshl - - - - 1
asinf - - - - -
asin - - - - -
asinl - - - - 1
asinhf - 1 1 1 1
asinh - - 1 1 1
asinhl - 1 - - 1
atanf - - - - -
atan - - - - -
atanl - - - - -
atanhf 1 - 1 1 1
atanh - - - - -
atanhl - - - - 1
atan2f 1 - 1 1 1
atan2 - - - - -
atan2l - 1 - - 1
cabsf - - - - -
cabs - - - - -
cabsl - - - - -
cacosf - 2 + i 1 2 + i 2 2 + i 2 2 + i 2
cacos - 1 + i 1 1 + i 1 1 + i 1 1 + i 1
cacosl - 1 + i 2 - - 2 + i 2
cacoshf 0 + i 1 1 + i 2 2 + i 2 2 + i 2 2 + i 2
cacosh - 1 + i 1 1 + i 1 1 + i 1 1 + i 1
cacoshl - 2 + i 1 - - 2 + i 2
cargf - - - - -
carg - - - - -
cargl - - - - -
casinf 1 + i 0 1 + i 1 1 + i 2 1 + i 2 1 + i 2
casin 1 + i 0 1 + i 1 1 + i 1 1 + i 1 1 + i 1
casinl - 1 + i 2 - - 2 + i 2
casinhf 1 + i 6 1 + i 1 2 + i 1 2 + i 1 2 + i 1
casinh 5 + i 3 1 + i 1 1 + i 1 1 + i 1 1 + i 1
casinhl - 2 + i 1 - - 2 + i 2
catanf 0 + i 1 0 + i 1 1 + i 1 1 + i 1 1 + i 1
catan 0 + i 1 0 + i 1 0 + i 1 0 + i 1 0 + i 1
catanl - 1 + i 1 - - 1 + i 1
catanhf - 1 + i 0 1 + i 1 1 + i 1 1 + i 1
catanh 4 + i 0 1 + i 0 1 + i 0 1 + i 0 1 + i 0
catanhl - 1 + i 1 - - 1 + i 1
cbrtf - 1 1 1 1
cbrt 1 1 1 1 1
cbrtl - 1 - - 1
ccosf 1 + i 1 - 1 + i 1 1 + i 1 1 + i 1
ccos 1 + i 0 - 1 + i 1 1 + i 1 1 + i 1
ccosl - 1 + i 1 - - 1 + i 1
ccoshf 1 + i 1 - 1 + i 1 1 + i 1 1 + i 1
ccosh 1 + i 0 - 1 + i 1 1 + i 1 1 + i 1
ccoshl - 0 + i 1 - - 1 + i 1
ceilf - - - - -
ceil - - - - -
ceill - - - - -
cexpf 1 + i 1 - 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
cimagf - - - - -
cimag - - - - -
cimagl - - - - -
clogf 1 + i 0 1 + i 1 1 + i 1 1 + i 1 1 + i 1
clog - 1 + i 1 1 + i 0 1 + i 0 1 + i 0
clogl - 1 + i 1 - - 1 + i 1
clog10f 1 + i 1 1 + i 1 2 + i 1 2 + i 1 2 + i 1
clog10 0 + i 1 1 + i 1 2 + i 1 2 + i 1 2 + i 1
clog10l - 1 + i 2 - - 1 + i 2
conjf - - - - -
conj - - - - -
conjl - - - - -
copysignf - - - - -
copysign - - - - -
copysignl - - - - -
cosf 1 - 1 1 1
cos 2 1 - - -
cosl - - - - 1
coshf - - 1 1 1
cosh - - 1 1 1
coshl - - - - 1
cpowf 4 + i 2 3 + i 5 4 + i 2 4 + i 2 4 + i 2
cpow 2 + i 2 1 + i 0 2 + i 0 2 + i 0 2 + i 0
cpowl - 3 + i 1 - - 4 + i 1
cprojf - - - - -
cproj - - - - -
cprojl - - - - -
crealf - - - - -
creal - - - - -
creall - - - - -
csinf - - 1 + i 0 1 + i 0 1 + i 0
csin - - 1 + i 0 1 + i 0 1 + i 0
csinl - 1 + i 0 - - 1 + i 1
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 - 1 + i 0 - - 1 + i 1
csqrtf 1 + i 0 - 1 + i 1 1 + i 1 1 + i 1
csqrt - 1 + i 1 1 + i 1 1 + i 1 1 + i 1
csqrtl - 1 + i 1 - - 1 + i 1
ctanf - 1 + i 1 1 + i 1 1 + i 1 1 + i 1
ctan 0 + i 1 1 + i 1 1 + i 2 1 + i 2 1 + i 2
ctanl - 2 + i 2 - - 3 + i 3
ctanhf 2 + i 1 1 + i 2 1 + i 2 1 + i 2 1 + i 2
ctanh 1 + i 0 1 + i 1 2 + i 2 2 + i 2 2 + i 2
ctanhl - 2 + i 2 - - 3 + i 3
erff - - - - -
erf 1 - 1 1 1
erfl - 1 - - 1
erfcf - 1 1 1 1
erfc 1 - 1 1 1
erfcl - 1 - - 1
expf - - - - -
exp - - - - -
expl - - - - -
exp10f 2 - - - -
exp10 6 - 1 1 1
exp10l - - - - 1
exp2f - - - - -
exp2 - - - - -
exp2l - - - - 1
expm1f 1 - 1 1 1
expm1 1 - 1 1 1
expm1l - 1 - - 1
fabsf - - - - -
fabs - - - - -
fabsl - - - - -
fdimf - - - - -
fdim - - - - -
fdiml - - - - -
floorf - - - - -
floor - - - - -
floorl - - - - -
fmaf - - - - -
fma - - - - -
fmal - - - - -
fmaxf - - - - -
fmax - - - - -
fmaxl - - - - -
fminf - - - - -
fmin - - - - -
fminl - - - - -
fmodf - - - - -
fmod - - - - -
fmodl - - - - -
frexpf - - - - -
frexp - - - - -
frexpl - - - - -
gammaf - - 1 1 1
gamma - - 1 1 1
gammal - 1 - - 1
hypotf 1 - - - -
hypot - 1 1 1 1
hypotl - 1 - - 1
ilogbf - - - - -
ilogb - - - - -
ilogbl - - - - -
j0f 2 2 2 2 2
j0 2 1 2 2 2
j0l - 2 - - 2
j1f 2 2 2 2 2
j1 1 - 1 1 1
j1l - 1 - - 4
jnf 4 2 4 4 4
jn 4 1 4 4 4
jnl - 4 - - 7
lgammaf 2 - 1 1 1
lgamma 1 - 1 1 1
lgammal - 1 - - 1
lrintf - - - - -
lrint - - - - -
lrintl - - - - -
llrintf - - - - -
llrint - - - - -
llrintl - - - - -
logf - - 1 1 1
log - - - - -
logl - - - - 1
log10f 2 - 2 2 2
log10 1 - 1 1 1
log10l - - - - 1
log1pf 1 - 1 1 1
log1p - - - - -
log1pl - - - - 1
log2f - - - - -
log2 - - - - -
log2l - - - - 1
logbf - - - - -
logb - - - - -
logbl - - - - -
lroundf - - - - -
lround - - - - -
lroundl - - - - -
llroundf - - - - -
llround - - - - -
llroundl - - - - -
modff - - - - -
modf - - - - -
modfl - - - - -
nearbyintf - - - - -
nearbyint - - - - -
nearbyintl - - - - -
nextafterf - - - - -
nextafter - - - - -
nextafterl - - - - -
nexttowardf - - - - -
nexttoward - - - - -
nexttowardl - - - - -
powf - 5 1 1 1
pow - 1 - - -
powl - 7 - - 1
remainderf - - - - -
remainder - - - - -
remainderl - - - - -
remquof - - - - -
remquo - - - - -
remquol - - - - -
rintf - - - - -
rint - - - - -
rintl - - - - -
roundf - - - - -
round - - - - -
roundl - - - - -
scalbf - - - - -
scalb - - - - -
scalbl - - - - -
scalbnf - - - - -
scalbn - - - - -
scalbnl - - - - -
scalblnf - - - - -
scalbln - - - - -
scalblnl - - - - -
sinf - - 1 1 1
sin - 1 - - -
sinl - - - - 1
sincosf 1 - 1 1 1
sincos 1 - - - -
sincosl - - - - 1
sinhf - - - - -
sinh - - - - -
sinhl - - - - -
sqrtf - - - - -
sqrt - - - - -
sqrtl - - - - -
tanf - - - - -
tan 1 - - - -
tanl - - - - 1
tanhf - - - - -
tanh - - - - -
tanhl - - - - 1
tgammaf 1 3 3 3 3
tgamma 1 4 4 4 4
tgammal - 9 - - 4
truncf - - - - -
trunc - - - - -
truncl - - - - -
y0f 1 1 1 1 1
y0 2 1 2 2 2
y0l - 1 - - 3
y1f 2 2 2 2 2
y1 3 1 3 3 3
y1l - 2 - - 2
ynf 2 3 2 2 2
yn 3 1 3 3 3
ynl - 4 - - 4

Function tile Generic ix86 PowerPC powerpc/nofpu
acosf - - - - -
acos - - - - -
acosl - - 1 1 1
acoshf - - - - -
acosh 1 - - 1 1
acoshl - - - 1 1
asinf - - - - -
asin - - - - -
asinl - - - 2 2
asinhf 1 - - 1 1
asinh 1 - - 1 1
asinhl - - 1 1 1
atanf - - - - -
atan - - - 1 -
atanl - - - - -
atanhf 1 - - 1 1
atanh - - - - -
atanhl - - 1 1 1
atan2f 1 - - 1 1
atan2 - - - - -
atan2l - - 1 2 2
cabsf - - - 1 -
cabs - - - - -
cabsl - - - 1 1
cacosf 2 + i 2 - 1 + i 1 2 + i 2 2 + i 2
cacos 1 + i 1 - 1 + i 1 1 + i 3 1 + i 1
cacosl - - 1 + i 2 1 + i 2 2 + i 2
cacoshf 2 + i 2 - 1 + i 1 7 + i 3 2 + i 2
cacosh 1 + i 1 - 1 + i 1 1 + i 1 1 + i 1
cacoshl - - 2 + i 1 2 + i 1 2 + i 2
cargf - - - - -
carg - - - - -
cargl - - - 1 1
casinf 1 + i 2 - 1 + i 1 1 + i 2 1 + i 2
casin 1 + i 1 - 1 + i 1 1 + i 3 1 + i 1
casinl - - 1 + i 2 1 + i 2 2 + i 2
casinhf 2 + i 1 - 1 + i 1 2 + i 1 2 + i 1
casinh 1 + i 1 - 1 + i 1 5 + i 3 1 + i 1
casinhl - - 2 + i 1 2 + i 1 2 + i 2
catanf 1 + i 1 - 0 + i 1 4 + i 1 1 + i 1
catan 0 + i 1 - 0 + i 1 0 + i 1 0 + i 1
catanl - - 0 + i 1 1 + i 1 1 + i 1
catanhf 1 + i 1 - 1 + i 0 1 + i 1 1 + i 1
catanh 1 + i 0 - 1 + i 0 4 + i 0 1 + i 0
catanhl - - 1 + i 0 1 + i 1 1 + i 1
cbrtf 1 - - 1 1
cbrt 1 - 1 1 1
cbrtl - - 1 1 1
ccosf 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
ccosl - - 1 + i 1 1 + i 1 1 + i 2
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 2 1 + i 2
ceilf - - - - -
ceil - - - - -
ceill - - - - -
cexpf 1 + i 2 - 1 + i 1 1 + i 2 1 + i 2
cexp 2 + i 1 - 1 + i 1 2 + i 1 2 + i 1
cexpl - - 1 + i 1 2 + i 2 2 + i 2
cimagf - - - - -
cimag - - - - -
cimagl - - - - -
clogf 1 + i 1 - 1 + i 0 2 + i 3 1 + i 1
clog 1 + i 0 - 1 + i 1 1 + i 1 1 + i 0
clogl - - 1 + i 1 1 + i 2 1 + i 2
clog10f 2 + i 1 - 1 + i 1 2 + i 1 2 + i 1
clog10 2 + i 1 - 1 + i 1 2 + i 1 2 + i 1
clog10l - - 1 + i 1 2 + i 2 2 + i 2
conjf - - - - -
conj - - - - -
conjl - - - - -
copysignf - - - - -
copysign - - - - -
copysignl - - - - -
cosf 1 - - 1 1
cos - - - 2 -
cosl - - 1 2 2
coshf 1 - - 1 1
cosh 1 - - 1 1
coshl - - 2 3 3
cpowf 4 + i 2 - 5 + i 1 5 + i 2 4 + i 2
cpow 2 + i 0 - 2 + i 1 2 + i 2 2 + i 0
cpowl - - 3 + i 4 4 + i 2 4 + i 1
cprojf - - - - -
cproj - - - - -
cprojl - - - 0 + i 1 -
crealf - - - - -
creal - - - - -
creall - - - - -
csinf 1 + i 0 - 1 + i 1 1 + i 0 1 + i 0
csin 1 + i 0 - 1 + i 1 1 + i 0 1 + i 0
csinl - - 1 + i 0 1 + i 1 2 + i 1
csinhf 1 + i 1 - 1 + i 1 1 + i 1 1 + i 1
csinh 0 + i 1 - 1 + i 1 0 + i 1 0 + i 1
csinhl - - 1 + i 0 1 + i 1 1 + i 2
csqrtf 1 + i 1 - - 2 + i 2 1 + i 1
csqrt 1 + i 1 - 1 + i 0 1 + i 1 1 + i 1
csqrtl - - 1 + i 1 1 + i 1 1 + i 1
ctanf 1 + i 1 - 1 + i 1 1 + i 1 1 + i 1
ctan 1 + i 2 - 1 + i 1 1 + i 2 1 + i 2
ctanl - - 2 + i 1 2 + i 2 2 + i 2
ctanhf 1 + i 2 - 1 + i 1 2 + i 1 1 + i 2
ctanh 2 + i 2 - 1 + i 1 2 + i 2 2 + i 2
ctanhl - - 1 + i 2 2 + i 3 2 + i 3
erff - - - - -
erf 1 - 1 1 1
erfl - - 1 1 1
erfcf 1 - - 1 1
erfc 1 - 1 1 1
erfcl - - 1 2 2
expf - - - - -
exp - - - - -
expl - - - 1 1
exp10f - - - 1 -
exp10 1 - - 1 1
exp10l - - 1 1 1
exp2f - - - - -
exp2 - - - - -
exp2l - - - 2 -
expm1f 1 - - 1 1
expm1 1 - - 1 1
expm1l - - 1 1 1
fabsf - - - - -
fabs - - - - -
fabsl - - - - -
fdimf - - - - -
fdim - - - - -
fdiml - - - - -
floorf - - - - -
floor - - - - -
floorl - - - - -
fmaf - - - - -
fma - - - - -
fmal - - - - -
fmaxf - - - - -
fmax - - - - -
fmaxl - - - - -
fminf - - - - -
fmin - - - - -
fminl - - - - -
fmodf - - - - -
fmod - - - - -
fmodl - - - - -
frexpf - - - - -
frexp - - - - -
frexpl - - - - -
gammaf 1 - 1 2 1
gamma 1 - 1 1 1
gammal - - 1 1 1
hypotf - - - 1 -
hypot 1 - - 1 1
hypotl - - 1 1 1
ilogbf - - - - -
ilogb - - - - -
ilogbl - - - - -
j0f 2 - 1 2 2
j0 2 - 1 3 2
j0l - - 2 2 2
j1f 2 - 1 2 2
j1 1 - 2 1 1
j1l - - 1 1 1
jnf 4 - 3 5 4
jn 4 - 2 4 4
jnl - - 4 7 4
lgammaf 1 - 1 2 1
lgamma 1 - 1 1 1
lgammal - - 1 1 1
lrintf - - - - -
lrint - - - - -
lrintl - - - - -
llrintf - - - - -
llrint - - - - -
llrintl - - - - -
logf 1 - - 1 1
log - - - - -
logl - - 1 1 1
log10f 2 - - 2 2
log10 1 - - 1 1
log10l - - 1 1 1
log1pf 1 - - 1 1
log1p - - - - -
log1pl - - 1 1 1
log2f - - - - -
log2 - - - - -
log2l - - - 1 1
logbf - - - - -
logb - - - - -
logbl - - - - -
lroundf - - - - -
lround - - - - -
lroundl - - - - -
llroundf - - - - -
llround - - - - -
llroundl - - - - -
modff - - - - -
modf - - - - -
modfl - - - - -
nearbyintf - - - - -
nearbyint - - - - -
nearbyintl - - - - -
nextafterf - - - - -
nextafter - - - - -
nextafterl - - - - -
nexttowardf - - - - -
nexttoward - - - - -
nexttowardl - - - - -
powf 1 - - 1 1
pow - - - - -
powl - - 1 1 1
remainderf - - - - -
remainder - - - - -
remainderl - - - - -
remquof - - - - -
remquo - - - - -
remquol - - - - -
rintf - - - - -
rint - - - - -
rintl - - - - -
roundf - - - - -
round - - - - -
roundl - - - - -
scalbf - - - - -
scalb - - - - -
scalbl - - - - -
scalbnf - - - - -
scalbn - - - - -
scalbnl - - - - -
scalblnf - - - - -
scalbln - - - - -
scalblnl - - - - -
sinf 1 - - 1 1
sin - - - - -
sinl - - 1 1 1
sincosf 1 - - 1 1
sincos - - - 1 -
sincosl - - 1 1 1
sinhf - - - - -
sinh - - - - -
sinhl - - - 1 1
sqrtf - - - - -
sqrt - - - 1 -
sqrtl - - - 1 -
tanf - - 1 - -
tan - - - 1 -
tanl - - 1 2 2
tanhf - - - - -
tanh - - - - -
tanhl - - - 1 1
tgammaf 3 - 2 3 3
tgamma 4 - 4 4 4
tgammal - - 4 3 3
truncf - - - - -
trunc - - - - -
truncl - - - - -
y0f 1 - 1 1 1
y0 2 - 1 2 2
y0l - - 1 1 1
y1f 2 - 2 2 2
y1 3 - 2 3 3
y1l - - 2 2 2
ynf 2 - 3 2 2
yn 3 - 2 3 3
ynl - - 4 2 2

Function S/390 sh sparc/fpu x86_64/fpu
acosf - - - -
acos - - - -
acosl - - - 1
acoshf - - - -
acosh 1 1 1 1
acoshl 1 - 1 -
asinf - - - -
asin - - - -
asinl 1 - 1 -
asinhf 1 1 1 1
asinh 1 1 1 1
asinhl 1 - 1 1
atanf - - - -
atan 1 - - -
atanl - - - -
atanhf 1 1 1 1
atanh - - - -
atanhl 1 - 1 1
atan2f 1 1 1 1
atan2 - - - -
atan2l 1 - 1 1
cabsf - - - -
cabs - - - -
cabsl - - - -
cacosf 2 + i 2 2 + i 2 2 + i 2 2 + i 2
cacos 1 + i 1 1 + i 1 1 + i 1 1 + i 1
cacosl 2 + i 2 - 2 + i 2 1 + i 2
cacoshf 2 + i 2 2 + i 2 2 + i 2 2 + i 2
cacosh 1 + i 1 1 + i 1 1 + i 1 1 + i 1
cacoshl 2 + i 2 - 2 + i 2 2 + i 1
cargf - - - -
carg - - - -
cargl - - - -
casinf 1 + i 2 1 + i 2 1 + i 2 1 + i 2
casin 1 + i 1 1 + i 1 1 + i 1 1 + i 1
casinl 2 + i 2 - 2 + i 2 1 + i 2
casinhf 2 + i 1 2 + i 1 2 + i 1 2 + i 1
casinh 1 + i 1 1 + i 1 1 + i 1 1 + i 1
casinhl 2 + i 2 - 2 + i 2 2 + i 1
catanf 1 + i 1 1 + i 1 1 + i 1 1 + i 1
catan 0 + i 1 0 + i 1 0 + i 1 0 + i 1
catanl 1 + i 1 - 1 + i 1 0 + i 1
catanhf 1 + i 1 1 + i 1 1 + i 1 1 + i 1
catanh 1 + i 0 1 + i 0 1 + i 0 1 + i 0
catanhl 1 + i 1 - 1 + i 1 1 + i 0
cbrtf 1 1 1 1
cbrt 1 1 1 1
cbrtl 1 - 1 1
ccosf 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
ccosl 1 + i 1 - 1 + i 1 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 1 + i 1 - 1 + i 1 0 + i 1
ceilf - - - -
ceil - - - -
ceill - - - -
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
cimagf - - - -
cimag - - - -
cimagl - - - -
clogf 1 + i 1 1 + i 1 1 + i 1 1 + i 1
clog 1 + i 1 1 + i 0 1 + i 0 1 + i 0
clogl 1 + i 1 - 1 + i 1 1 + i 1
clog10f 2 + i 1 2 + i 1 2 + i 1 2 + i 1
clog10 2 + i 1 2 + i 1 2 + i 1 2 + i 1
clog10l 1 + i 2 - 1 + i 2 1 + i 1
conjf - - - -
conj - - - -
conjl - - - -
copysignf - - - -
copysign - - - -
copysignl - - - -
cosf 1 1 1 -
cos - - - -
cosl 1 - 1 1
coshf 1 1 1 1
cosh 1 1 1 1
coshl 1 - 1 2
cpowf 5 + i 2 4 + i 2 4 + i 2 5 + i 2
cpow 2 + i 0 2 + i 0 2 + i 0 2 + i 0
cpowl 4 + i 1 - 4 + i 1 3 + i 4
cprojf - - - -
cproj - - - -
cprojl - - - -
crealf - - - -
creal - - - -
creall - - - -
csinf 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
csinl 1 + i 1 - 1 + i 1 1 + i 0
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 1 + i 1 - 1 + i 1 1 + i 0
csqrtf 1 + i 1 1 + i 1 1 + i 1 1 + i 1
csqrt 1 + i 1 1 + i 1 1 + i 1 1 + i 1
csqrtl 1 + i 1 - 1 + i 1 1 + i 1
ctanf 1 + i 1 1 + i 1 1 + i 1 1 + i 2
ctan 1 + i 2 1 + i 2 1 + i 2 1 + i 2
ctanl 3 + i 3 - 3 + i 3 2 + i 1
ctanhf 2 + i 1 1 + i 2 1 + i 2 2 + i 2
ctanh 2 + i 2 2 + i 2 2 + i 2 2 + i 2
ctanhl 3 + i 3 - 3 + i 3 1 + i 2
erff - - - -
erf 1 1 1 1
erfl 1 - 1 1
erfcf 1 1 1 1
erfc 1 1 1 1
erfcl 1 - 1 1
expf - - - -
exp - - - -
expl - - - -
exp10f - - - -
exp10 1 1 1 1
exp10l 1 - 1 1
exp2f - - - -
exp2 - - - -
exp2l 1 - 1 -
expm1f 1 1 1 1
expm1 1 1 1 1
expm1l 1 - 1 1
fabsf - - - -
fabs - - - -
fabsl - - - -
fdimf - - - -
fdim - - - -
fdiml - - - -
floorf - - - -
floor - - - -
floorl - - - -
fmaf - - - -
fma - - - -
fmal - - - -
fmaxf - - - -
fmax - - - -
fmaxl - - - -
fminf - - - -
fmin - - - -
fminl - - - -
fmodf - - - -
fmod - - - -
fmodl - - - -
frexpf - - - -
frexp - - - -
frexpl - - - -
gammaf 1 1 1 1
gamma 1 1 1 1
gammal 1 - 1 1
hypotf - - - -
hypot 1 1 1 1
hypotl 1 - 1 1
ilogbf - - - -
ilogb - - - -
ilogbl - - - -
j0f 2 2 2 2
j0 2 2 2 2
j0l 2 - 2 2
j1f 2 2 2 2
j1 1 1 1 1
j1l 4 - 4 1
jnf 4 4 4 4
jn 4 4 4 4
jnl 7 - 7 4
lgammaf 1 1 1 1
lgamma 1 1 1 1
lgammal 1 - 1 1
lrintf - - - -
lrint - - - -
lrintl - - - -
llrintf - - - -
llrint - - - -
llrintl - - - -
logf 1 1 1 1
log - - - -
logl 1 - 1 1
log10f 2 2 2 2
log10 1 1 1 1
log10l 1 - 1 1
log1pf 1 1 1 1
log1p - - - -
log1pl 1 - 1 1
log2f - - - -
log2 - - - -
log2l 1 - 1 -
logbf - - - -
logb - - - -
logbl - - - -
lroundf - - - -
lround - - - -
lroundl - - - -
llroundf - - - -
llround - - - -
llroundl - - - -
modff - - - -
modf - - - -
modfl - - - -
nearbyintf - - - -
nearbyint - - - -
nearbyintl - - - -
nextafterf - - - -
nextafter - - - -
nextafterl - - - -
nexttowardf - - - -
nexttoward - - - -
nexttowardl - - - -
powf 1 1 1 1
pow - - - -
powl 1 - 1 1
remainderf - - - -
remainder - - - -
remainderl - - - -
remquof - - - -
remquo - - - -
remquol - - - -
rintf - - - -
rint - - - -
rintl - - - -
roundf - - - -
round - - - -
roundl - - - -
scalbf - - - -
scalb - - - -
scalbl - - - -
scalbnf - - - -
scalbn - - - -
scalbnl - - - -
scalblnf - - - -
scalbln - - - -
scalblnl - - - -
sinf 1 1 1 -
sin - - - -
sinl 1 - 1 1
sincosf 1 1 1 -
sincos - - - -
sincosl 1 - 1 1
sinhf - - - -
sinh - - - -
sinhl - - - 1
sqrtf - - - -
sqrt - - - -
sqrtl - - - -
tanf - - - -
tan - - - -
tanl 1 - 1 1
tanhf - - - -
tanh - - - -
tanhl 1 - 1 -
tgammaf 3 3 3 3
tgamma 4 4 4 4
tgammal 4 - 4 4
truncf - - - -
trunc - - - -
truncl - - - -
y0f 1 1 1 1
y0 2 2 2 2
y0l 3 - 3 1
y1f 2 2 2 2
y1 3 3 3 3
y1l 2 - 2 2
ynf 2 2 2 3
yn 3 3 3 3
ynl 4 - 4 4