These are some more exotic mathematical functions which are sometimes useful. Currently they only have real-valued versions.
— Function: float erff (float x)
— Function: long double erfl (long double x)
erf
returns the error function of x. The error function is defined aserf (x) = 2/sqrt(pi) * integral from 0 to x of exp(-t^2) dt
— Function: float erfcf (float x)
— Function: long double erfcl (long double x)
erfc
returns1.0 - erf(
x)
, but computed in a fashion that avoids round-off error when x is large.
— Function: float lgammaf (float x)
— Function: long double lgammal (long double x)
lgamma
returns the natural logarithm of the absolute value of the gamma function of x. The gamma function is defined asgamma (x) = integral from 0 to ∞ of t^(x-1) e^-t dtThe sign of the gamma function is stored in the global variable signgam, which is declared in math.h. It is
1
if the intermediate result was positive or zero, or-1
if it was negative.To compute the real gamma function you can use the
tgamma
function or you can compute the values as follows:lgam = lgamma(x); gam = signgam*exp(lgam);The gamma function has singularities at the non-positive integers.
lgamma
will raise the zero divide exception if evaluated at a singularity.
— Function: float lgammaf_r (float x, int *signp)
— Function: long double lgammal_r (long double x, int *signp)
lgamma_r
is just likelgamma
, but it stores the sign of the intermediate result in the variable pointed to by signp instead of in the signgam global. This means it is reentrant.
— Function: float gammaf (float x)
— Function: long double gammal (long double x)
These functions exist for compatibility reasons. They are equivalent to
lgamma
etc. It is better to uselgamma
since for one the name reflects better the actual computation, moreoverlgamma
is standardized in ISO C99 whilegamma
is not.
— Function: float tgammaf (float x)
— Function: long double tgammal (long double x)
tgamma
applies the gamma function to x. The gamma function is defined asgamma (x) = integral from 0 to ∞ of t^(x-1) e^-t dtThis function was introduced in ISO C99.
— Function: float j0f (float x)
— Function: long double j0l (long double x)
j0
returns the Bessel function of the first kind of order 0 of x. It may signal underflow if x is too large.
— Function: float j1f (float x)
— Function: long double j1l (long double x)
j1
returns the Bessel function of the first kind of order 1 of x. It may signal underflow if x is too large.
— Function: float jnf (int n, float x)
— Function: long double jnl (int n, long double x)
jn
returns the Bessel function of the first kind of order n of x. It may signal underflow if x is too large.
— Function: float y0f (float x)
— Function: long double y0l (long double x)
y0
returns the Bessel function of the second kind of order 0 of x. It may signal underflow if x is too large. If x is negative,y0
signals a domain error; if it is zero,y0
signals overflow and returns -∞.
— Function: float y1f (float x)
— Function: long double y1l (long double x)
y1
returns the Bessel function of the second kind of order 1 of x. It may signal underflow if x is too large. If x is negative,y1
signals a domain error; if it is zero,y1
signals overflow and returns -∞.
— Function: float ynf (int n, float x)
— Function: long double ynl (int n, long double x)
yn
returns the Bessel function of the second kind of order n of x. It may signal underflow if x is too large. If x is negative,yn
signals a domain error; if it is zero,yn
signals overflow and returns -∞.