Seit der Verabschiedung des C99 Standards gibt es die Möglichkeit, direkt mit komplexen Zahlen in C zu arbeiten. Zur Verfügung stehen einem die verschiedenen Darstellungsformen und mathematische Operationen.
Schreibweise In diesem Abschnitt werden die verschiedenen Möglichkeiten gezeigt, mit denen komplexe Zahlen ein- und ausgegeben werden können. Kartesische-Form Im folgendem Beispiel wird eine komplexe Zahl definiert und ausgegeben.
#include #include
int main() ( double complex z = 3 + 4I; printf('%f + %fi\n', creal(z), cimag(z));
return EXIT_SUCCESS; )
3.000000 + 4.000000 i
Um im Quelltext Real- von Imaginärteil zu unterscheiden, wird das Makro I mit dem Imaginärteil multipliziert. Dieses verhält sich wie bei der mathematischen Schreibweise, bei der ebenfalls ein j oder i mit dem Imaginärteil multipliziert wird. Bei der Ausgabe in Zeile 7 werden zunächst der Real- und Imaginärteil der komplexen Zahl bestimmt, um diese dann als normale double-Werte auszugeben.
In diesem Beispiel wurde die komplexe Zahl in der Polarform angegeben. Dafür wurde die Funktion cexp() benutzt, welche die natürliche Exponentialfunktion für komplexe Zahlen darstellt. Das Makro M_PI_2 ist eine mathematische Konstante und entspricht \pi / 2, welches in unserem Beipiel einem Winkel φ = 90° entspricht. Bei der Ausgabe wird mit der Funktion cabs() der Betrag und mit carg() die Phase unserer komplexen Zahl z bestimmt.