Wednesday, August 31, 2016

C Library Header – math

The <math.h> header defines several mathematic functions.

The <math.h> header shall define the following macro constants:
HUGE_VALF
HUGE_VAL
HUGE_VALL
indicates value too big to be representable (infinity) by float(C99), double and long double(C99) respectively
INFINITYevaluates to positive infinity or the value guaranteed to overflow a float (C99)
NANNot a Number - evaluates to a quiet NaN of type float (C99)
math_errhandling defines the error handling mechanism used by the common mathematical functions. (C99)
MATH_ERRNO
MATH_ERREXCEPT
Bitmask value with the possible values math_errhandling can take. (C99)
FP_FAST_FM
FP_FAST_FMAF
FP_FAST_FMAL
Each, if defined, identifies for which type fma is at least as efficient as x*y+z. (C99)
FP_INFINITE
FP_NAN
FP_NORMAL
FP_SUBNORMAL
FP_ZERO
The possible values returned by fpclassify. (C99)
FP_ILOGB0
FP_ILOGBNAN
Special values the ilogb function may return. (C99)

The <math.h> header shall define the following functions:
Trigonometric functions:
sin
sinf
sinl
computes sine (sin(x)) . double, float (C99) and long double (C99)
cos
cosf
cosl
computes cosine (cos(x)) . double, float (C99) and long double (C99)
tan
tanf
tanl
computes tangent (tan(x)) . double, float (C99) and long double (C99)
asin
asinf
asinl
computes arc sine (arcsin(x)) . double, float (C99) and long double (C99)
acos
acosf
acosl
computes arc cosine (arccos(x)) . double, float (C99) and long double (C99)
atan
atanf
atanl
computes arc tangent (arctan(x)) . double, float (C99) and long double (C99)
atan2
atan2f
atan2l
computes arc tangent, using signs to determine quadrants . double, float (C99) and long double (C99)

Hyperbolic functions:
sinh
sinhf
sinhl
computes hyperbolic sine (sh(x)) . double, float (C99) and long double (C99)
cosh
coshf
coshl
computes hyperbolic cosine (ch(x)) . double, float (C99) and long double (C99)
tanh
tanhf
tanhl
computes hyperbolic tangent . double, float (C99) and long double (C99)
asinh
asinhf
asinhl
computes inverse hyperbolic sine (arsinh(x)) (C99)
acosh
acoshf
acoshl
computes inverse hyperbolic cosine (arcosh(x)) (C99)
atanh
atanhf
atanhl
computes inverse hyperbolic tangent (artanh(x)) (C99)

Exponential and logarithmic functions:
exp
expf
expl
computes e raised to the given power (ex) . double, float (C99) and long double (C99)
exp2
exp2f
exp2l
computes 2 raised to the given power (2x) . (C99)
expml
expm1f
expm1l
computes e raised to the given power, minus one (ex-1) . (C99)
log
logf
logl
computes natural (base-e) logarithm (ln(x)) . double, float (C99) and long double (C99)
log10
log10f
log10l
computes common (base-10) logarithm (log10(x)) . double, float (C99) and long double (C99)
log2
log2f
log2l
computes base-2 logarithm (log2(x)) . (C99)
log1p
log1pf
log1pl
computes natural (base-e) logarithm of 1 plus the given number (ln(1+x)) . (C99)

Power functions:
pow
powf
powl
computes a number raised to the given power (xy) . double, float (C99) and long double (C99)
sqrt
sqrtf
sqrtl
computes square root (√x) . double, float (C99) and long double (C99)
cbrt
cbrtf
cbrtl
computes cubic root (3√x) . (C99)
hypot
hypotf
hypotl
computes square root of the sum of the squares of two given numbers (√x2+y2) . (C99)

Error and gamma functions:
erf
erff
erfl
computes error function (C99)
erfc
erfcf
erfcl
computes complementary error function (C99)
tgamma
tgammaf
tgammal
computes gamma function (C99)
lgamma
lgammaf
lgammal
computes natural (base-e) logarithm of the gamma function (C99)

Nearest integer floating-point operations:
ceil
ceilf
ceill
computes smallest integer not less than the given value .double, float (C99) and long double (C99)
floor
floorf
floorl
computes largest integer not greater than the given value .double, float (C99) and long double (C99)
trunc
truncf
truncl
rounds to nearest integer not greater in magnitude than the given value (C99)
round
lround
llround
rounds to nearest integer, rounding away from zero in halfway cases (C99)
nearbyint
nearbyintf
nearbyintl
rounds to an integer using current rounding mode (C99)
rint
rintf
rintl
lrint
lrintf
lrintl
llrint
llrintf
llrintl
rounds to an integer using current rounding mode with exception if the result differs (C99)

Floating-point manipulation functions:
frexp
frexpf
frexpl
breaks a number into significand and a power of 2 .double, float (C99) and long double (C99)
ldexp
ldexpf
ldexpl
multiplies a number by 2 raised to a power .double, float (C99) and long double (C99)
modf
modff
modfl
breaks a number into integer and fractional parts .double, float (C99) and long double (C99)
scalbn
scalbnf
scalbnl
scalbln
scalblnf
scalblnl
computes efficiently a number times FLT_RADIX raised to a power (C99)
ilogb
ilogbf
ilogbl
extracts exponent of the given number (C99)
logb
logbf
logbl
extracts exponent of the given number (C99)
nextafter
nextafterf
nextafterl
nexttoward
nexttowardf
nexttowardl
determines next representable floating-point value towards the given value (C99)
copysign
copysignf
copysignl
produces a value with the magnitude of a given value and the sign of another given value (C99)

Basic operations:
fabs
fabsf
fabsl
computes absolute value of a floating-point value (|x|). double, float (C99) and long double (C99)
fmod
fmodf
fmodl
computes remainder of the floating-point division operation . double, float (C99) and long double (C99)
remainder
remainderf
remainderl
computes signed remainder of the floating-point division operation (C99)
remquo
remquof
remquol
computes signed remainder as well as the three last bits of the division operation (C99)
fma
fmaf
fmal
computes fused multiply-add operation (C99)
fmax
fmaxf
fmaxl
determines larger of two floating-point values (C99)
fmin
fminf
fminl
determines smaller of two floating-point values (C99)
fdim
fdimf
fdiml
determines positive difference of two floating-point values (max(0, x-y)) (C99)
nan
nanf
nanl
returns a NaN (not-a-number) (C99)

Classification and comparison:
fpclassify classifies the given floating-point value (C99)
isfinite checks if the given number has finite value (C99)
isinf checks if the given number is infinite (C99)
isnan checks if the given number is NaN (C99)
isnormal checks if the given number is normal (C99)
signbit checks if the given number is negative (C99)
isgreater checks if the first floating-point argument is greater than the second (C99)
isgreaterequal checks if the first floating-point argument is greater or equal than the second (C99)
isless checks if the first floating-point argument is less than the second (C99)
islessequal checks if the first floating-point argument is less or equal than the second (C99)
islessgreater checks if the first floating-point argument is less or greater than the second (C99)
isunordered checks if two floating-point values are unordered (C99)

The <math.h> header shall define the following types:
float_t most efficient floating-point type at least as wide as float (C99)
double_t most efficient floating-point type at least as wide as double (C99)



Related topics:
<float.h>   |   <inttypes.h>   |   <iso646.h>   |   <limits.h>   |   <locale.h>   |   Standard Library in C

List of topics: C Programming


No comments:

Post a Comment