Complex number arithmetic
|
Falls die Makrokonstante
|
(seit C11) |
Die Programmiersprache C unterstützt ab C99 die Mathematik mit komplexen Zahlen durch die drei eingebauten Typen double _Complex , float _Complex und long double _Complex (siehe _Complex ). Wenn der Header <complex.h> eingebunden wird, sind die drei komplexen Zahlentypen auch als double complex , float complex und long double complex zugänglich.
Zusätzlich zu den komplexen Typen können die drei imaginären Typen unterstützt werden: double _Imaginary , float _Imaginary und long double _Imaginary (siehe _Imaginary ). Wenn der Header <complex.h> eingebunden wird, sind die drei imaginären Typen auch zugänglich als double imaginary , float imaginary und long double imaginary .
Standarde arithmetische Operatoren + , - , * , / können mit reellen, komplexen und imaginären Typen in beliebiger Kombination verwendet werden.
|
Ein Compiler, der
|
(seit C99)
(bis C11) |
|
Imaginäre Zahlen werden unterstützt, wenn
|
(seit C11) |
|
Definiert im Header
<complex.h>
|
||
Typen |
||
|
(C99)
|
Imaginärer Typ-Makro
(Schlüsselwort-Makro) |
|
|
(C99)
|
Komplexer Typ-Makro
(Schlüsselwort-Makro) |
|
Die imaginäre Konstante |
||
|
(C99)
|
die imaginäre Einheitskonstante i
(Makrokonstante) |
|
|
(C99)
|
die komplexe Einheitskonstante i
(Makrokonstante) |
|
|
(C99)
|
die komplexe oder imaginäre Einheitskonstante i
(Makrokonstante) |
|
Manipulation |
||
|
(C11)
(C11)
(C11)
|
konstruiert eine komplexe Zahl aus Real- und Imaginärteil
(Funktionsmakro) |
|
|
(C99)
(C99)
(C99)
|
berechnet den Realteil einer komplexen Zahl
(Funktion) |
|
|
(C99)
(C99)
(C99)
|
berechnet den Imaginärteil einer komplexen Zahl
(Funktion) |
|
|
(C99)
(C99)
(C99)
|
berechnet den Betrag einer komplexen Zahl
(Funktion) |
|
|
(C99)
(C99)
(C99)
|
berechnet den Phasenwinkel einer komplexen Zahl
(Funktion) |
|
|
(C99)
(C99)
(C99)
|
berechnet die komplex Konjugierte
(Funktion) |
|
|
(C99)
(C99)
(C99)
|
berechnet die Projektion auf die Riemannsche Zahlenkugel
(Funktion) |
|
Exponentialfunktionen |
||
|
(C99)
(C99)
(C99)
|
berechnet die komplexe Basis-e-Exponentialfunktion
(Funktion) |
|
|
(C99)
(C99)
(C99)
|
berechnet den komplexen natürlichen Logarithmus
(Funktion) |
|
Potenzfunktionen |
||
|
(C99)
(C99)
(C99)
|
berechnet die komplexe Potenzfunktion
(Funktion) |
|
|
(C99)
(C99)
(C99)
|
berechnet die komplexe Quadratwurzel
(Funktion) |
|
Trigonometrische Funktionen |
||
|
(C99)
(C99)
(C99)
|
berechnet den komplexen Sinus
(Funktion) |
|
|
(C99)
(C99)
(C99)
|
berechnet den komplexen Kosinus
(Funktion) |
|
|
(C99)
(C99)
(C99)
|
berechnet den komplexen Tangens
(Funktion) |
|
|
(C99)
(C99)
(C99)
|
berechnet den komplexen Arkussinus
(Funktion) |
|
|
(C99)
(C99)
(C99)
|
berechnet den komplexen Arkuskosinus
(Funktion) |
|
|
(C99)
(C99)
(C99)
|
berechnet den komplexen Arcustangens
(Funktion) |
|
Hyperbelfunktionen |
||
|
(C99)
(C99)
(C99)
|
berechnet den komplexen hyperbolischen Sinus
(Funktion) |
|
|
(C99)
(C99)
(C99)
|
berechnet den komplexen hyperbolischen Kosinus
(Funktion) |
|
|
(C99)
(C99)
(C99)
|
berechnet den komplexen hyperbolischen Tangens
(Funktion) |
|
|
(C99)
(C99)
(C99)
|
berechnet den komplexen Areasinus Hyperbolicus
(Funktion) |
|
|
(C99)
(C99)
(C99)
|
berechnet den komplexen Areakosinus Hyperbolicus
(Funktion) |
|
|
(C99)
(C99)
(C99)
|
berechnet den komplexen Areakosinus Hyperbolicus
(Funktion) |
|
Hinweise
Die folgenden Funktionsnamen sind
potenziell
(seit C23)
für zukünftige Ergänzungen zu
<complex.h>
reserviert und stehen nicht zur Verwendung in Programmen zur Verfügung, die diesen Header einbinden:
cerf
,
cerfc
,
cexp2
,
cexpm1
,
clog10
,
clog1p
,
clog2
,
clgamma
,
ctgamma
,
csinpi
,
ccospi
,
ctanpi
,
casinpi
,
cacospi
,
catanpi
,
ccompoundn
,
cpown
,
cpowr
,
crootn
,
crsqrt
,
cexp10m1
,
cexp10
,
cexp2m1
,
clog10p1
,
clog2p1
,
clogp1
(seit C23)
, zusammen mit ihren -
f
- und -
l
-suffigierten Varianten.
Obwohl der C-Standard die inversen hyperbolischen Funktionen als "komplexer Areahyperbelsinus" etc. bezeichnet, sind die Umkehrfunktionen der hyperbolischen Funktionen die Areafunktionen. Ihr Argument ist die Fläche eines hyperbolischen Sektors, nicht ein Bogen. Die korrekten Bezeichnungen sind "komplexer inverser Hyperbelsinus" etc. Einige Autoren verwenden "komplexer Areahyperbelsinus" etc.
Eine komplexe oder imaginäre Zahl ist unendlich, wenn einer ihrer Teile unendlich ist, selbst wenn der andere Teil NaN ist.
Eine komplexe oder imaginäre Zahl ist endlich, wenn beide Teile weder Unendlichkeiten noch NaNs sind.
Eine komplexe oder imaginäre Zahl ist null, wenn beide Teile positive oder negative Nullen sind.
Während MSVC zwar einen
<complex.h>
Header bereitstellt, implementiert es komplexe Zahlen nicht als native Typen, sondern als
struct
s, die inkompatibel mit standardmäßigen C-Komplexzahltypen sind und die
+
-,
-
-,
*
- und
/
-Operatoren nicht unterstützen.
Beispiel
#include <complex.h> #include <stdio.h> #include <tgmath.h> int main(void) { double complex z1 = I * I; // imaginäre Einheit quadriert printf("I * I = %.1f%+.1fi\n", creal(z1), cimag(z1)); double complex z2 = pow(I, 2); // imaginäre Einheit quadriert printf("pow(I, 2) = %.1f%+.1fi\n", creal(z2), cimag(z2)); double PI = acos(-1); double complex z3 = exp(I * PI); // Eulersche Formel printf("exp(I*PI) = %.1f%+.1fi\n", creal(z3), cimag(z3)); double complex z4 = 1 + 2 * I, z5 = 1 - 2 * I; // Konjugierte printf("(1+2i)*(1-2i) = %.1f%+.1fi\n", creal(z4 * z5), cimag(z4 * z5)); }
Ausgabe:
I * I = -1.0+0.0i pow(I, 2) = -1.0+0.0i exp(I*PI) = -1.0+0.0i (1+2i)*(1-2i) = 5.0+0.0i
Referenzen
| Erweiterter Inhalt |
|---|
|
Siehe auch
|
C++ Dokumentation
für
Complex number arithmetic
|