These are some more exotic mathematical functions which are sometimes useful. Currently they only have real-valued versions.
double
erf (double x)
¶float
erff (float x)
¶long double
erfl (long double x)
¶_FloatN
erffN (_FloatN x)
¶_FloatNx
erffNx (_FloatNx x)
¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
erf
returns the error function of x. The error
function is defined as
erf (x) = 2/sqrt(pi) * integral from 0 to x of exp(-t^2) dt
double
erfc (double x)
¶float
erfcf (float x)
¶long double
erfcl (long double x)
¶_FloatN
erfcfN (_FloatN x)
¶_FloatNx
erfcfNx (_FloatNx x)
¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
erfc
returns 1.0 - erf(x)
, but computed in a
fashion that avoids round-off error when x is large.
double
lgamma (double x)
¶float
lgammaf (float x)
¶long double
lgammal (long double x)
¶_FloatN
lgammafN (_FloatN x)
¶_FloatNx
lgammafNx (_FloatNx x)
¶Preliminary: | MT-Unsafe race:signgam | AS-Unsafe | AC-Safe | See POSIX Safety Concepts.
lgamma
returns the natural logarithm of the absolute value of
the gamma function of x. The gamma function is defined as
gamma (x) = integral from 0 to ∞ of t^(x-1) e^-t dt
The 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.
double
lgamma_r (double x, int *signp)
¶float
lgammaf_r (float x, int *signp)
¶long double
lgammal_r (long double x, int *signp)
¶_FloatN
lgammafN_r (_FloatN x, int *signp)
¶_FloatNx
lgammafNx_r (_FloatNx x, int *signp)
¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
lgamma_r
is just like lgamma
, 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.
The lgammafN_r
and lgammafNx_r
functions are
GNU extensions.
double
gamma (double x)
¶float
gammaf (float x)
¶long double
gammal (long double x)
¶Preliminary: | MT-Unsafe race:signgam | AS-Unsafe | AC-Safe | See POSIX Safety Concepts.
These functions exist for compatibility reasons. They are equivalent to
lgamma
etc. It is better to use lgamma
since for one the
name reflects better the actual computation, and moreover lgamma
is
standardized in ISO C99 while gamma
is not.
double
tgamma (double x)
¶float
tgammaf (float x)
¶long double
tgammal (long double x)
¶_FloatN
tgammafN (_FloatN x)
¶_FloatNx
tgammafNx (_FloatNx x)
¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
tgamma
applies the gamma function to x. The gamma
function is defined as
gamma (x) = integral from 0 to ∞ of t^(x-1) e^-t dt
This function was introduced in ISO C99. The _FloatN
and _FloatNx
variants were introduced in ISO/IEC TS 18661-3.
double
j0 (double x)
¶float
j0f (float x)
¶long double
j0l (long double x)
¶_FloatN
j0fN (_FloatN x)
¶_FloatNx
j0fNx (_FloatNx x)
¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
j0
returns the Bessel function of the first kind of order 0 of
x. It may signal underflow if x is too large.
The _FloatN
and _FloatNx
variants are GNU
extensions.
double
j1 (double x)
¶float
j1f (float x)
¶long double
j1l (long double x)
¶_FloatN
j1fN (_FloatN x)
¶_FloatNx
j1fNx (_FloatNx x)
¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
j1
returns the Bessel function of the first kind of order 1 of
x. It may signal underflow if x is too large.
The _FloatN
and _FloatNx
variants are GNU
extensions.
double
jn (int n, double x)
¶float
jnf (int n, float x)
¶long double
jnl (int n, long double x)
¶_FloatN
jnfN (int n, _FloatN x)
¶_FloatNx
jnfNx (int n, _FloatNx x)
¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
jn
returns the Bessel function of the first kind of order
n of x. It may signal underflow if x is too large.
The _FloatN
and _FloatNx
variants are GNU
extensions.
double
y0 (double x)
¶float
y0f (float x)
¶long double
y0l (long double x)
¶_FloatN
y0fN (_FloatN x)
¶_FloatNx
y0fNx (_FloatNx x)
¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
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 -∞.
The _FloatN
and _FloatNx
variants are GNU
extensions.
double
y1 (double x)
¶float
y1f (float x)
¶long double
y1l (long double x)
¶_FloatN
y1fN (_FloatN x)
¶_FloatNx
y1fNx (_FloatNx x)
¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
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 -∞.
The _FloatN
and _FloatNx
variants are GNU
extensions.
double
yn (int n, double x)
¶float
ynf (int n, float x)
¶long double
ynl (int n, long double x)
¶_FloatN
ynfN (int n, _FloatN x)
¶_FloatNx
ynfNx (int n, _FloatNx x)
¶Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
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 -∞.
The _FloatN
and _FloatNx
variants are GNU
extensions.