12. Numeric Functions
The numeric functions include all of the functions from the C90 standard library math.h, all of the non-complex functions from C99 tgmath.h (i.e. all except carg, cimag, conj, cproj, and creal), as well as rand from stdlib.h, time from time.h, and the scaled pseudo-random number generators drand, irand, and nrand.Most of the numeric functions take one expression argument and return one value. A few of the functions take no arguments (drand, nrand, rand, time, row, col), and some take two or three arguments. frexp, modf, and remquo can return two values.
The numeric functions are:
acos arc cosine
acosh inverse hyperbolic cosine
asin arc sine
asinh inverse hyperbolic sine
atan two-quadrant arctangent
atan2 four-quadrant arctangent, atan2(y,x) ~= atan(y/x)
atanh inverse hyperbolic tangent
cbrt cube root
ceil ceiling
cell cell(c,r) == value of cell from column c row r
col cell column number
copysign copy sign of a number
cos cosine
cosh hyperbolic cosine
drand pseudo-random double, 0.0 <= drand() < 1.0
erf error function
erfc complementary error function
exp exponential
exp2 base-2 exponential
expm1 exponential minus 1, expm1(x) == exp(x) - 1
fabs absolute value
fdim positive difference
floor floor
fma floating-point multiply and add
fmax maximum of two values
fmin minimum of two values
fmod mod, x%y == fmod(x,y)
frexp extract fraction and exponent, {f,e} = frexp(x)
hypot Euclidean distance
ilogb extract exponent
irand pseudo-random integer, 0 <= irand(i) <= i-1
ldexp ldexp(x,e) produces x * (2**e)
lgamma log gamma function
llrint round to nearest integer
llround round to nearest integer
log natural logarithm
log10 base 10 logarithm
log1p logarithm of 1 plus argument, log1p(x) == log(1+x)
log2 base 2 logarithm
logb extract exponent
lrint round to nearest integer
lround round to nearest integer
modf extract fraction and integral parts, {f,i} = modf(x)
nearbyint round to nearest integer
nextafter nextafter(x,y) == next value following x in the direction of y
nexttoward nexttoward(x,y) == next value following x in the direction of y
nrand pseudo-random normal (Gaussian) -6.0 <= nrand() < 6.0
pow exponentiation, x**y == pow(x,y)
rand pseudo-random integer, 0 <= rand() <= RAND_MAX
remainder remainder(x,y) == remainder of dividing x by y
remquo remainder and part of quotient, {r,q} = remquo(x,y)
rint round to nearest integer
round round to nearest integer
row cell row number
scalbln scalbln(x,e) produces x * (FLT_RADIX**e)
scalbn scalbn(x,e) produces x * (FLT_RADIX**e)
sin sine
sinh hyperbolic sine
sqrt square root
tan tangent
tanh hyperbolic tangent
tgamma gamma function
time time in seconds since 00:00:00 UTC, January 1, 1970
trunc round to integer, towards zero
Notes:
The pseudo-random number generator functions are initialized using
srand(time()) when the program is run, but you can
reinitialize using the srand command.
nrand is a simple approximate truncated Gaussian distribution computed as the sum of 12 uniform samples minus 6.
cell enables run-time evaluation of cell locations using expressions for the column and row. The column is specified as a numeric expression, or as a literal string, or as a cell or symbol containing a string, so the following three examples are equivalent:
a0 = cell( "b", c0+2); // e.g. a0 = b3, if c0 == 1 a0 = cell( a1, c0+2); a1 = "b"; a0 = cell( 1, c0+2); // "b" is column 1