Rate This Document
Findability
Accuracy
Completeness
Readability

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