29.9 Mathematical functions for floating-point types [c.math]
If any argument value
to any of the functions specified in this subclause
is a NaN (Not a Number),
the function shall return a NaN
but it shall not report a domain error
. Otherwise,
the function shall report a domain error
for just those argument values
for which:
the function description's Returns: clause
explicitly specifies a domain
and those argument values fall
outside the specified domain,
or
the corresponding mathematical function value
has a nonzero imaginary component,
or
the corresponding mathematical function
is not mathematically defined
.
Unless otherwise specified,
each function is defined
for all finite values,
for negative infinity,
and for positive infinity
.double assoc_laguerre(unsigned n, unsigned m, double x);
float assoc_laguerref(unsigned n, unsigned m, float x);
long double assoc_laguerrel(unsigned n, unsigned m, long double x);
Effects:
These functions compute
the associated Laguerre polynomials
of their respective arguments
n,
m, and
x. Returns:
where
n is n,
m is m, and
x is x.
Remarks:
The effect of calling each of these functions
is
implementation-defined
if
n >= 128 or if
m >= 128. double assoc_legendre(unsigned l, unsigned m, double x);
float assoc_legendref(unsigned l, unsigned m, float x);
long double assoc_legendrel(unsigned l, unsigned m, long double x);
Effects:
These functions compute
the associated Legendre functions
of their respective arguments
l,
m, and
x. Returns:
where
l is l,
m is m, and
x is x.
Remarks:
The effect of calling each of these functions
is
implementation-defined
if
l >= 128. double beta(double x, double y);
float betaf(float x, float y);
long double betal(long double x, long double y);
Effects:
These functions compute
the beta function
of their respective arguments
x and
y. Returns:
where
x is x and
y is y.
double comp_ellint_1(double k);
float comp_ellint_1f(float k);
long double comp_ellint_1l(long double k);
Effects:
These functions compute
the complete elliptic integral of the first kind
of their respective arguments
k. double comp_ellint_2(double k);
float comp_ellint_2f(float k);
long double comp_ellint_2l(long double k);
Effects:
These functions compute
the complete elliptic integral of the second kind
of their respective arguments
k. double comp_ellint_3(double k, double nu);
float comp_ellint_3f(float k, float nu);
long double comp_ellint_3l(long double k, long double nu);
Effects:
These functions compute
the complete elliptic integral of the third kind
of their respective arguments
k and
nu. Returns:
where
k is k and
ν is nu.
double cyl_bessel_i(double nu, double x);
float cyl_bessel_if(float nu, float x);
long double cyl_bessel_il(long double nu, long double x);
Effects:
These functions compute
the regular modified cylindrical Bessel functions
of their respective arguments
nu and
x. Returns:
where
ν is nu and
x is x.
Remarks:
The effect of calling each of these functions
is
implementation-defined
if
nu >= 128. double cyl_bessel_j(double nu, double x);
float cyl_bessel_jf(float nu, float x);
long double cyl_bessel_jl(long double nu, long double x);
Effects:
These functions compute
the cylindrical Bessel functions of the first kind
of their respective arguments
nu and
x. Returns:
where
ν is nu and
x is x.
Remarks:
The effect of calling each of these functions
is
implementation-defined
if
nu >= 128. double cyl_bessel_k(double nu, double x);
float cyl_bessel_kf(float nu, float x);
long double cyl_bessel_kl(long double nu, long double x);
Effects:
These functions compute
the irregular modified cylindrical Bessel functions
of their respective arguments
nu and
x. Returns:
where
ν is nu and
x is x.
Remarks:
The effect of calling each of these functions
is
implementation-defined
if
nu >= 128. double cyl_neumann(double nu, double x);
float cyl_neumannf(float nu, float x);
long double cyl_neumannl(long double nu, long double x);
Effects:
These functions compute the cylindrical Neumann functions,
also known as the cylindrical Bessel functions of the second kind,
of their respective arguments
nu and
x. Returns:
where
ν is nu and
x is x.
Remarks:
The effect of calling each of these functions
is
implementation-defined
if
nu >= 128. double ellint_1(double k, double phi);
float ellint_1f(float k, float phi);
long double ellint_1l(long double k, long double phi);
Effects:
These functions compute
the incomplete elliptic integral of the first kind
of their respective arguments
k and
phi (
phi measured in radians)
. Returns:
where
k is k and
φ is phi.
double ellint_2(double k, double phi);
float ellint_2f(float k, float phi);
long double ellint_2l(long double k, long double phi);
Effects:
These functions compute
the incomplete elliptic integral of the second kind
of their respective arguments
k and
phi (
phi measured in radians)
. Returns:
where
k is k and
φ is phi.
double ellint_3(double k, double nu, double phi);
float ellint_3f(float k, float nu, float phi);
long double ellint_3l(long double k, long double nu, long double phi);
Effects:
These functions compute
the incomplete elliptic integral of the third kind
of their respective arguments
k,
nu, and
phi (
phi measured in radians)
. Returns:
where
ν is nu,
k is k, and
φ is phi.
double expint(double x);
float expintf(float x);
long double expintl(long double x);
Effects:
These functions compute the exponential integral
of their respective arguments
x. double hermite(unsigned n, double x);
float hermitef(unsigned n, float x);
long double hermitel(unsigned n, long double x);
Effects:
These functions compute the Hermite polynomials
of their respective arguments
n and
x. Returns:
where
n is n and
x is x.
Remarks:
The effect of calling each of these functions
is
implementation-defined
if
n >= 128. double laguerre(unsigned n, double x);
float laguerref(unsigned n, float x);
long double laguerrel(unsigned n, long double x);
Effects:
These functions compute the Laguerre polynomials
of their respective arguments
n and
x. Returns:
where
n is n and
x is x.
Remarks:
The effect of calling each of these functions
is
implementation-defined
if
n >= 128. double legendre(unsigned l, double x);
float legendref(unsigned l, float x);
long double legendrel(unsigned l, long double x);
Effects:
These functions compute the Legendre polynomials of their
respective arguments
l and
x. Returns:
where
l is l and
x is x.
Remarks:
The effect of calling each of these functions
is
implementation-defined
if
l >= 128. double riemann_zeta(double x);
float riemann_zetaf(float x);
long double riemann_zetal(long double x);
Effects:
These functions compute the Riemann zeta function
of their respective arguments
x. double sph_bessel(unsigned n, double x);
float sph_besself(unsigned n, float x);
long double sph_bessell(unsigned n, long double x);
Effects:
These functions compute
the spherical Bessel functions of the first kind
of their respective arguments
n and
x. Returns:
where
n is n and
x is x.
Remarks:
The effect of calling each of these functions
is
implementation-defined
if
n >= 128. double sph_legendre(unsigned l, unsigned m, double theta);
float sph_legendref(unsigned l, unsigned m, float theta);
long double sph_legendrel(unsigned l, unsigned m, long double theta);
Effects:
These functions compute the spherical associated Legendre functions
of their respective arguments
l,
m, and
theta (
theta measured in radians)
. Returns:
where
and
l is l,
m is m, and
θ is theta.
Remarks:
The effect of calling each of these functions
is
implementation-defined
if
l >= 128. double sph_neumann(unsigned n, double x);
float sph_neumannf(unsigned n, float x);
long double sph_neumannl(unsigned n, long double x);
Effects:
These functions compute the spherical Neumann functions,
also known as the spherical Bessel functions of the second kind,
of their respective arguments
n and
x. Returns:
where
n is n and
x is x.
Remarks:
The effect of calling each of these functions
is
implementation-defined
if
n >= 128.