Inhaltsverzeichnis
<cmath>
Funktionen
Aufgelistet sind die Funktionen für double
-Argumente.
Daneben gibt es überladene Versionen für float
und long double
, die den gleichen Typ zurückliefern.
Für einige Funktionen definierte die Sprache C Versionen mit Endungen f
bzw. l
,
diese werden hier nicht aufgeführt.
Zahleigenschaften
bool isfinite (double x)
Beschreibung:
Liefert true
, wenn die Zahl im Bereich $(-\infty,\infty)$ liegt.
bool isinf (double x)
Beschreibung:
Liefert true
, wenn die Zahl $-\infty$ oder $\infty$ ist.
bool isnan (double x)
Beschreibung:
Liefert true
, wenn x
keine darstellbare Zahl ("not a number") ist.
bool isnormal (double x)
Beschreibung:
Liefert true
, wenn die Gleitkommazahl x
normalisiert ist.
bool isunordered (double x, double y)
Beschreibung:
Liefert true
, wenn die Argumente keine der drei Relationen x<y
, x==y
, x>y
erfüllen (Vergleich mit NaNs).
Vorzeichen
double abs (double x)
Beschreibung:
Liefert den Absolutbetrag der Zahl x
.
double fabs (double x)
Beschreibung:
Liefert den Absolutbetrag der Zahl x
.
bool signbit (double x)
Beschreibung:
Liefert true
für Zahlen x
mit negativem Vorzeichen.
double copysign (double x, double y)
Beschreibung:
Liefert $|x| \cdot sgn(y)$ mit dem Betrag von x
und dem Vorzeichen von y
.
Runden
double ceil (double x)
Beschreibung: Liefert die kleinste Ganzzahl $n \geq x$.
double floor (double x)
Beschreibung: Liefert die größte Ganzzahl $n \leq x$.
double nearbyint (double x)
Beschreibung:
Liefert die nächstgelegene Ganzzahl mit der aktuell vorgebenen Rundungsrichtung, ohne FE_INEXACT
-Ausnahme der Gleitkommaeinheit zu setzen.
long lrint (double x) long long llrint (double x) double rint (double x)
Beschreibung:
Liefert die nächstgelegene Ganzzahl mit der aktuell vorgebenen Rundungsrichtung,
setzt FE_INEXACT
-Ausnahme der Gleitkommaeinheit,
wenn Ergebnis != x.
long lround (double x) long long llround (double x) double round(double x)
Beschreibung: Rundet zur nächstgelegenen Ganzzahl $n\leq x$ (bei $n,5$ bei von Null weg gerundet).
double nextafter (double x, double y) double nexttoward (double x, long double y)
Beschreibung:
Liefert die nächste darstellbare Gleitkommazahl nach x
in Richtung y
.
double trunc (double x)
Beschreibung:
Schneidet den Nachkommaanteil der Zahl x
ab (rundet zu Null hin).
Arithmetik
double fmax (double x, double y)
Beschreibung: Liefert den größten der beiden Werte, auch für NANs.
double fmin (double x, double y)
Beschreibung: Liefert den kleinsten der beiden Werte, auch für NANs.
double fdim (double x, double y)
Beschreibung:
Liefert positive Differenz von x
und y
oder 0.
double fma (double x, double x, double z)
Beschreibung:
Liefert x*y + z
mit nur einer Rundung.
double fmod (double x, double y)
Beschreibung:
Liefert Gleitkommarest der Division zaehler/nenner
.
Liefert Gleitkommarest $r = x - n y$
mit ganzzahligem Quotienten $n$, so dass
$|r|<|y|$ und $sgn(r) = sgn(y)$.
double modf (double x, double *ganzzahl)
Beschreibung:
Spaltet ganzzahl
von x
ab und liefert den Nachkommaanteil.
double remainder (double x, double y)
Beschreibung: Liefert $r = x - n y$ mit nächstgelegenem ganzzahligen Quotienten $n$. Bei $|n - x/y| = 0.5$ ist $n$ gerade.
double remquo (double x, double y, int* n)
Beschreibung: Liefert $r = x - n y$ und den nächstgelegenen ganzzahligen Quotienten $n$. Bei $|n - x/y| = 0.5$ ist $n$ gerade.
Potenzieren und Logarithmieren
double exp (double x)
Beschreibung: Liefert $e^x$.
double exp1m (double x)
Beschreibung: Liefert $e^x-1$.
double exp2 (double x)
Beschreibung: Liefert $2^x$.
double log (double x)
Beschreibung: Liefert den natürlichen Logarithmus $\ln x$ zur Basis e für $x>0$.
double log1p (double x)
Beschreibung: Liefert $\ln (1+x)$ für $x>-1$.
double log2 (double x)
Beschreibung:
Liefert den Logarithmus von x
zur Basis 2 für $x>0$.
double logb (double x)
Beschreibung:
Liefert den ganzzahligen Logarithmus von x
zur Basis 2 für $x>0$.
int ilogb (double x)
Beschreibung:
Liefert den ganzzahligen Logarithmus von x
zur Basis 2 für $x>0$.
double log10 (double x)
Beschreibung:
Liefert den Logarithmus von x
zur Basis 10 für $x>0$.
double pow (double x, double y)
Beschreibung: Liefert die Potenz $x^y$. Für $x<0$ muss $y$ ganzzahlig sein.
double sqrt (double x)
Beschreibung:
Liefert die Quadratwurzel $\sqrt{x}$ von nichtnegativen x
.
double cbrt (double x)
Beschreibung:
Liefert die Kubikwurzel $\sqrt[3]{x}$ von x
.
double hypot (double x, double y) double hypot (double x, double y, double z) // seit C++17
Beschreibung:
Liefert die Hypotenuse $\sqrt{x^2 +y^2}$ zweier Kathetenlängen x
und y
bzw. die Länge der Raumdiagonale eines Quaders mit den drei Kantenlängen x
, y
und z
.
double frexp (double x, int *n)
Beschreibung:
Zerlegt x
so in $m\cdot 2^n$, dass 0.5$<$fabs(m)
$\leq 1$. Liefert die Mantisse m als Rückgabewert.
double ldexp (double x, int n)
Beschreibung: Liefert $x\cdot 2^n$.
double scalbn (double x, int n)
Beschreibung: Liefert $x\cdot b^n$ mit $b$ = FLT_RADIX.
Trigonometrische Funktionen
double cos (double x)
Beschreibung:
Liefert den Cosinus von x
.
double sin (double x)
Beschreibung:
Liefert den Sinus von x
.
double tan (double x)
Beschreibung:
Liefert den Tangens von x
.
double acos (double x)
Beschreibung:
Liefert den Arcuscosinus von x
für $-1\leq x\leq 1$.
double asin (double x)
Beschreibung:
Liefert den Arcussinus von x
für $-1\leq x\leq 1$.
double atan2 (double y, double x)
Beschreibung: Liefert den Arcustangens von $y/x$. Das Ergebnis liegt im Bereich $(- \pi, \pi)$. Beide Argumente dürfen 0 sein, jedoch nicht gleichzeitig.
double atan (double x)
Beschreibung:
Liefert den Arcustangens von x
. Das Ergebnis liegt im Bereich $(- \pi/2, \pi/2)$.
Hyberbelfunktionen
double cosh (double x)
Beschreibung:
Liefert den Cosinus hyberbolicus von x
.
double sinh (double x)
Beschreibung:
Liefert den Sinus hyberbolicus von x
.
double tanh (double x)
Beschreibung:
Liefert den Tangens hyberbolicus von x
.
Höhere Funktionen
double erf (double x)
Beschreibung: Liefert die Gaußsche Fehlerfunktion $\frac{2}{\sqrt{\pi}} \int_0^x e^{-t^2} dt$.
double erfc (double x)
Beschreibung:
Liefert das Komplement der Gaußschen Fehlerfunktion 1-erf(x)
= $\frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2} dt$.
double lgamma (double x)
Beschreibung: Liefert den natürlichen Logarithmus vom Betrag der Gammafunktion $\ln | \Gamma(x) |$ für $x \neq -n$.
double tgamma (double x)
Beschreibung: Liefert den Wert der Gammafunktion $\Gamma(x) = \int_0^\infty t^{x-1}e^{-t} dt$ für $x \neq -n$.
Spezielle Funktionen
C++17 integriert den Standard ISO/IEC 29124:2010 "Extensions to the C++ library to support mathematical special functions" in die Mathematik-Bibliothek.
Bei diesen handelte es sich im Wesentlichen um Polynome und nicht geschlossen integrierbare Funktionen.
Die Bezeichnung "speziell" tragen diese "höheren" Funktionen nur aus historischen Gründen,
da sie einige wichtige Anwendungen in den Naturwissenschaften
als Lösungen spezieller Differentialgleichungen haben.
Das oben aufgeführte Gaußsche Fehlerintegral erf(x)
und die Eulersche Gammafunktion $\Gamma(x)$ gehören aus mathematischer Sicht auch dazu,
befinden sich aber schon lange in <cmath>
.
double riemann_zeta(double x) // C++17
Beschreibung:
Liefert Wert der Riemannschen Zeta-Funktion $\zeta(x) = \sum_{n=1}^{\infty} \frac{1}{n^x}$ für reelles x
.
Integrale
double beta(double x, double y) // C++17
Beschreibung: Liefert Wert der Eulerschen Betafunktion $B(x,y) = \int_0^1 t^{x-1} (1-t)^{y-1} dt = \Gamma(x)\cdot\Gamma(y)/\Gamma(x+y)$.
double expint(double x) // C++17
Beschreibung: Liefert Wert der Integralexponentialfunktion $Ei(x) = -\int_{-x}^\infty \frac{e^{-t}}{t}dt$.
Elliptische Integrale
double ellint_1(double k, double phi) // C++17
Beschreibung: Liefert Wert des unvollständigen Elliptischen Integrals 1. Art $F(k,\varphi) = \int_0^\varphi \frac{d\theta}{\sqrt{1-k^2 \sin^2 \theta}}$.
double ellint_2(double k, double phi) // C++17
Beschreibung: Liefert Wert des unvollständigen Elliptischen Integrals 2. Art $E(k,\varphi) = \int_0^\varphi \sqrt{1-k^2 \sin^2 \theta}\, d\theta$.
double ellint_3(double k, double nu, double phi) // C++17
Beschreibung: Liefert Wert des unvollständigen Elliptischen Integrals 3. Art $\Pi(k,\nu,\varphi) = \int_0^\varphi \frac{d\theta}{(1-\nu \sin^2 \theta)\sqrt{1-k^2 \sin^2 \theta}}$ für $|k| \leq 1$ und $\nu > -1/\sin^2 \theta$.
double comp_ellint_1(double k) // C++17
Beschreibung: Liefert Wert des vollständigen Elliptischen Integrals 1. Art $K(k) = \int_0^{\pi/2} \frac{d\theta}{\sqrt{1-k^2 \sin^2 \theta}} = F(k,\pi/2)$.
double comp_ellint_2(double k) // C++17
Beschreibung: Liefert Wert des vollständigen Elliptischen Integrals 2. Art $E(k) = \int_0^{\pi/2} \sqrt{1-k^2 \sin^2 \theta}\, d\theta = E(k,\pi/2)$.
double comp_ellint_3(double k, double nu) // C++17
Beschreibung: Liefert Wert des vollständigen Elliptischen Integrals 3. Art $\Pi(k,\nu) = \int_0^{\pi/2} \frac{d\theta}{(1-\nu \sin^2 \theta)\sqrt{1-k^2 \sin^2 \theta}} = \Pi'(k,\nu,\pi/2)$.
Zylinderfunktionen
double cyl_bessel_j(double nu, double x) // C++17
Beschreibung: Liefert Wert der Bessel-Funktion 1. Art $J_\nu(x) = \sum_{k=0}^\infty \frac{(-1)^k(x/2)^{\nu+2k}}{k! \Gamma(\nu+k+1)} = \frac{1}{\pi}\int_0^\pi \cos(x \sin \theta -\nu\theta) d\theta - \frac{\sin(\nu \pi)}{\pi} \int_0^\infty e^{-x \sinh t - \nu t} dt$ für $x \geq 0$.
double cyl_bessel_i(double nu, double x) // C++17
Beschreibung: Liefert Wert der modifizierten Bessel-Funktion 1. Art $I_\nu(x) = \sum_{k=0}^\infty \frac{(x/2)^{\nu+2k}}{k! \Gamma(\nu+k+1)} = \frac{1}{\pi}\int_0^\pi e^{x \cos \theta} \cos(\nu\theta) d\theta - \frac{\sin(\nu \pi)}{\pi} \int_0^\infty e^{-x \cosh t - \nu t} dt$ für $x \geq 0$.
double cyl_bessel_k(double nu, double x) // C++17
Beschreibung: Liefert Wert der modifizierten Bessel-Funktion 2. Art $K_\nu(x) = \int_0^\infty e^{-x \cosh t} \cosh (\nu t) dt = \frac{\pi}{2} \frac{I_{-\nu}(x)-I_\nu (x)}{\sin (\nu\pi)}$ für $x \geq 0$.
double cyl_neumann(double nu, double x) // C++17
Beschreibung: Liefert Wert der Bessel-Funktion 2. Art (auch Weber- oder Neumann-Funktion) $Y_\nu(x) = \frac{J_\nu(x)\cos(\nu\pi)-I_{-\nu} (x)}{\sin (\nu\pi)}$ bzw. $lim_{\nu\to n} Y_\nu(x)$ bei ganzzahligem $\nu$ für $x \geq 0$.
Kugelfunktionen
double sph_bessel(unsigned n, double x) // C++17
Beschreibung: Liefert Wert der sphärischen Bessel-Funktion (1. Art) $j_\nu(x) = \sqrt{\frac{\pi}{2x}} J_{\nu+1/2}(x)$ für $x \geq 0$.
double sph_neumann(unsigned n, double x) // C++17
Beschreibung: Liefert Wert der sphärischen Bessel-Funktion 2. Art (oder sphärischen Neumann-Funktion) $y_\nu(x) = \sqrt{\frac{\pi}{2x}} Y_{\nu+1/2}(x)$ für $x \geq 0$.
double sph_legendre(unsigned n, unsigned m, double theta) // C++17
Beschreibung: Liefert Wert der Kugelflächenfunktion $Y_n^m(\theta,0) = (-1)^m \sqrt{\frac{(2n-1)(n-m)}{4\pi(n+m)!}} P_n^m(\cos \theta)$ für $0 \leq m \leq n$.
Polynome
double hermite(unsigned n, double x) // C++17
Beschreibung:
Liefert Wert für das Hermitesche Polynom n
-ten Grades
$H_n(x) = (-1)^n e^{x^2} \frac{d^n}{dx^n} e^{-x^2}$.
double laguerre(unsigned n, double x) // C++17
Beschreibung:
Liefert Wert für das Laguerre-Polynom n
-ten Grades
$L_n(x) = \frac{e^x}{n!}\frac{d^n}{dx^n} (x^n e^{-x})$ für $x \geq 0$.
double legendre(unsigned n, double x) // C++17
Beschreibung:
Liefert Wert für das Legendre-Polynom n
-ten Grades
$P_n(x) = \frac{1}{2^n n!}\frac{d^n}{dx^n} (x^2-1)^n$ für $|x| \leq 1$.
double assoc_laguerre(unsigned n, unsigned m, double x) // C++17
Beschreibung: Liefert Wert für das zugeordnete Laguerre-Polynom $L_n^m (x) = (-1)^m \frac{d^m}{dx^m} L_{n+m}(x)$ mit $0 \leq m \leq n$ für $x \geq 0$.
double assoc_legendre(unsigned n, unsigned m, double x) // C++17
Beschreibung: Liefert Wert für das zugeordnete Legendre-Polynom (genauer: die zugeordnete Kugelfunktion) $P_n^m(x) = (-1)^m (1-x^2)^{m/2}\frac{d^m}{dx^m} P_n(x)$ mit $0 \leq m \leq n$ und $|x| \leq 1$.