Function Description
KML_MATH is a basic math function library implemented in the C language. The calculation result of the high-performance version (libkm.so) is benchmarked against the open source math library MPFR, and the calculation result of the high-precision version (libkm_l9.so) is benchmarked against the x86 math library.
Function Class |
Function |
Description |
High Performance |
High Precision |
|---|---|---|---|---|
Trigonometric functions
|
sin |
Sine function |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
sind |
Sine function (The input is an angle.) |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
sinpi |
Sine function (Computes the sine of the input multiplied by π.) |
Single-precision/double-precision real number |
None |
|
cos |
Cosine function |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
cosd |
Cosine function (The input parameter is an angle.) |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
cospi |
Cosine function (Computes the cosine of the input multiplied by π.) |
Single-precision/double-precision real number |
None |
|
sincos |
Sine and cosine function |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
sincosd |
Sine and cosine function (The input is an angle.) |
Single-precision/double-precision real number |
None |
|
tan |
Tangent function |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
tand |
Tangent function (The input is an angle.) |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
tanpi |
Tangent function (Computes the tangent of the input multiplied by π.) |
Single-precision/double-precision real number |
None |
|
asin |
Arcsine function |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
asind |
Arcsine function (The input parameter is an angle.) |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
asinpi |
Arcsine function/π |
Single-precision/double-precision real number |
None |
|
acos |
Arccosine function |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
acosd |
Arccosine function (The input is an angle.) |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
acospi |
Arccosine function/π |
Single-precision/double-precision real number |
None |
|
atan |
Arctangent function |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
atand |
Arctangent function (The output is an angle.) |
Single-precision/double-precision real number |
None |
|
atanpi |
Arctangent function/π |
Single-precision/double-precision real number |
None |
|
atan2 |
Arctangent function |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
atan2d |
Arctangent function (The input parameter is an angle.) |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
atan2pi |
Arctangent function/π |
Single-precision/double-precision real number |
None |
|
cosd |
Cosine function (The input parameter is an angle.) |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
cot |
Cotangent function (The input is a radian angle.) |
Single-precision/double-precision real number |
None |
|
cotd |
Cotangent function (The input is an angle.) |
Single-precision/double-precision real number |
None |
|
Hyperbolic functions
|
sinh |
Hyperbolic sine function |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
cosh |
Hyperbolic cosine function |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
sinhcosh |
Hyperbolic sine and cosine function |
Single-precision/double-precision real number |
None |
|
tanh |
Hyperbolic tangent function |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
asinh |
Hyperbolic arcsine function |
Single-precision/double-precision real number |
None |
|
acosh |
Hyperbolic arccosine function |
Single-precision/double-precision real number |
None |
|
atanh |
Hyperbolic arctangent function |
Single-precision/double-precision real number |
Long double-precision real number |
|
Exponential and logarithmic functions
|
exp |
Exponential function (base e) |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
exp2 |
Exponential function (base 2) |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
exp10 |
Exponential function (base 10) |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
expm1 |
Exponential function (e^x – 1) |
Single-precision/double-precision real number |
None |
|
frexp |
Breaks x down into a mantissa (a floating point with an absolute value between [1/2, 1)) and an integral exponent for 2. |
None |
Single-precision/double-precision/long double-precision real number |
|
ldexp |
Exponential function (x * 2^exp) |
None |
Single-precision/double-precision/long double-precision real number |
|
log |
Logarithmic function (base e) |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
log2 |
Logarithmic function (base 2) |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
log10 |
Logarithmic function (base 10) |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
log1p |
Logarithmic function (ln(1+x)) |
Single-precision/double-precision real number |
None |
|
logb |
Logarithmic function (Computes the exponent of x.) |
Single-precision/double-precision real number |
None |
|
ilogb |
Computes the exponent of x and returns the value as an integer. |
Single-precision/double-precision real number |
None |
|
scalb |
Computes x*(2^y). |
Single-precision/double-precision real number |
None |
|
hypot |
Computes the root of (x^2 + y^2). |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
Power and root functions |
pow |
Power function |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
powr?i? |
Power function |
None |
Single-precision/double-precision/long double-precision real number |
|
powi?i? |
Power function |
None |
Real integer/long integer |
|
pow2o3 |
Power function (power of 2/3) |
Single-precision/double-precision real number |
None |
|
pow3o2 |
Power function (power of 3/2) |
Single-precision/double-precision real number |
None |
|
powr |
Power function (x > 0) |
Single-precision/double-precision real number |
None |
|
sqrt |
Square root function |
Single-precision/double-precision/long double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
invsqrt |
Computes the reciprocal of the square root ( |
None |
Single-precision/double-precision/long double-precision real number |
|
cbrt |
Cubic root function |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
Miscellaneous functions |
fabs |
Computes the absolute value of a floating point number. |
Single-precision/double-precision real number |
None |
fdim |
Returns zero if x is smaller than or equal to y, or returns a value of x - y if x is greater than y. |
Single-precision/double-precision real number |
None |
|
fmax |
Returns the maximum value of the input parameters. |
Single-precision/double-precision real number |
None |
|
fmaxmag |
Returns an input parameter with a larger absolute value. Otherwise, the function behaves like fmax(x, y). |
Single-precision/double-precision real number |
None |
|
fmin |
Returns the minimum value of the input parameters. |
Single-precision/double-precision real number |
None |
|
fminmag |
Returns an input parameter with a smaller absolute value. Otherwise, the function behaves like fmin(x, y). |
Single-precision/double-precision real number |
None |
|
nextafter |
Returns the next representable value of the specified return format after x in the direction of y. |
Single-precision/double-precision real number |
None |
|
nexttoward |
Returns the next floating point number of x in the y direction. |
Single-precision/double-precision real number |
None |
|
significand |
Computes the significant digit of x. |
Single-precision/double-precision real number |
None |
|
Special functions |
annuity |
Computes the present value interest factor of an annuity ( |
Single-precision/double-precision real number |
None |
compound |
Computes the factor of the compound terminal value ( |
Single-precision/double-precision real number |
None |
|
erf |
Error function |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
erfc |
Complementary error function |
Single-precision/double-precision real number |
None |
|
erfcx |
Computes the product of the complementary error function and |
Single-precision/double-precision real number |
None |
|
erfinv |
Inverse error function |
Single-precision/double-precision real number |
None |
|
gamma |
Computes the natural logarithm of the absolute gamma value of x. |
None |
Single-precision/double-precision real number |
|
gamma_r |
Computes the natural logarithm of the absolute gamma value of x, with the sign of the gamma value also returned. |
None |
Double-precision real number |
|
tgamma |
Computes the gamma value of x. |
None |
Single-precision/double-precision real number |
|
Rounding functions (nearest integer) |
ceil |
Computes the integer value rounded toward plus infinity for each vector element. |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
floor |
Computes the integer value rounded toward minus infinity for each vector element. |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
llrint |
Computes the rounded integer value in the current rounding mode. |
Single-precision/double-precision real number |
None |
|
llround |
Computes the integer value rounded to nearest for each vector element. |
Single-precision/double-precision real number |
None |
|
lrint |
Computes the rounded integer value in the current rounding mode. |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
lround |
Computes the integer value rounded to nearest for each vector element. |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
modf |
Obtains the integer and decimal parts of a floating point number. |
None |
Single-precision/double-precision/long double-precision real number |
|
nearbyint |
Computes the rounded integer value in the current rounding mode for each vector element. |
Single-precision/double-precision real number |
Single-precision/double-precision real number |
|
rint |
Computes the rounded integer value in the current rounding mode. |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
round |
Computes the integer value rounded to nearest for each vector element. |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
trunc |
Computes the integer value rounded toward zero for each vector element. |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
|
Remainder functions |
fmod |
Computes the remainder (x-ny). |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision real number |
remainder |
Computes the remainder. (IEEE standards) |
Single-precision/double-precision real number |
None |
|
remquo |
Computes the quotient and remainder. |
Single-precision/double-precision real number |
None |
|
Complex functions |
cabs |
Computes the absolute value of a complex number. |
Single-precision/double-precision real number |
Single-precision/double-precision/long double-precision complex number |
cacos |
Complex arccosine function |
Single-precision/double-precision complex number |
Single-precision/double-precision complex number |
|
cacosh |
Complex hyperbolic arccosine function |
Single-precision/double-precision complex number |
None |
|
carg |
Retrieves the argument of a complex number, with a branch cut along the negative real axis. |
Single-precision/double-precision complex number |
None |
|
casin |
Complex arcsine function |
Single-precision/double-precision complex number |
Single-precision/double-precision complex number |
|
casinh |
Complex hyperbolic arcsine function |
Single-precision/double-precision complex number |
Single-precision/double-precision complex number |
|
catan |
Complex arctangent function |
Single-precision/double-precision complex number |
Single-precision/double-precision complex number |
|
catanh |
Computes the hyperbolic tangent of a complex number. |
None |
Single-precision/double-precision complex number |
|
ccos |
Complex cosine function |
Single-precision/double-precision complex number |
Single-precision/double-precision complex number |
|
ccosh |
Complex hyperbolic cosine function |
Single-precision/double-precision complex number |
Single-precision/double-precision complex number |
|
cdiv |
Divides complex numbers. |
None |
Single-precision/double-precision complex number |
|
cexp |
Complex exponential function (base e) |
Single-precision/double-precision complex number |
Single-precision/double-precision/long double-precision complex number |
|
cexp2 |
Complex exponential function (base 2) |
Single-precision/double-precision complex number |
Single-precision/double-precision/long double-precision complex number |
|
cexp10 |
Complex exponential function (base 10) |
Single-precision/double-precision complex number |
None |
|
cimag |
Returns the imaginary part of a complex number. |
Single-precision/double-precision complex number |
None |
|
cis |
Returns the sine/cosine of x using a complex number. |
Single-precision/double-precision complex number |
None |
|
cisd |
Returns the sine/cosine of x using a complex number. (The input is an angle.) |
Single-precision/double-precision complex number |
None |
|
clog |
Complex logarithmic function (base e) |
Single-precision/double-precision complex number |
Double-precision/long double-precision complex number |
|
clog2 |
Complex logarithmic function (base 2) |
Single-precision/double-precision complex number |
None |
|
clog10 |
Complex logarithmic function (base 10) |
Single-precision/double-precision complex number |
Single-precision/double-precision/long double-precision complex number |
|
conj |
Computes the conjugate of complex number z. |
Single-precision/double-precision complex number |
None |
|
cpow |
Complex power function |
None |
Single-precision/double-precision/long double-precision complex number |
|
cproj |
Retrieves the projection of a complex number on the Reimann sphere. |
Single-precision/double-precision complex number |
None |
|
creal |
Returns the real part of a complex number. |
Single-precision/double-precision complex number |
None |
|
csin |
Complex sine function |
Single-precision/double-precision complex number |
Single-precision/double-precision complex number |
|
csinh |
Complex hyperbolic sine function |
Single-precision/double-precision complex number |
Single-precision/double-precision complex number |
|
csqrt |
Complex square root function |
Single-precision/double-precision complex number |
Single-precision/double-precision/long double-precision complex number |
|
ctan |
Complex tangent function |
Single-precision/double-precision complex number |
Single-precision/double-precision complex number |
|
ctanh |
Complex hyperbolic tangent function |
Single-precision/double-precision complex number |
None |



