Namensräume
Varianten
Aktionen

CMPLXF, CMPLX, CMPLXL

Von cppreference.com
< c‎ | numeric‎ | complex
Definiert im Header <complex.h>
float complex       CMPLXF( float real, float imag );
(seit C11)
double complex      CMPLX( double real, double imag );
(seit C11)
long double complex CMPLXL( long double real, long double imag );
(seit C11)

Jede dieser Makros expandiert zu einem Ausdruck, der zu dem Wert des angegebenen komplexen Typs ausgewertet wird, wobei der Realteil den Wert von real (konvertiert in den angegebenen Argumenttyp) und der Imaginärteil den Wert von imag (konvertiert in den angegebenen Argumenttyp) hat.

Die Ausdrücke sind für die Verwendung als Initialisierer für Objekte mit statischer oder Thread-Speicherdauer geeignet, solange die Ausdrücke real und imag ebenfalls geeignet sind.

Inhalt

[bearbeiten] Parameter

real - der Realteil der zurückzugebenden komplexen Zahl
imag - der Imaginärteil der zurückzugebenden komplexen Zahl

[bearbeiten] Rückgabewert

Eine komplexe Zahl, die aus real und imag als Real- und Imaginärteil besteht.

[bearbeiten] Hinweise

Diese Makros sind implementiert, als ob die imaginären Typen unterstützt würden (auch wenn sie ansonsten nicht unterstützt werden und _Imaginary_I tatsächlich undefiniert ist) und als ob sie wie folgt definiert wären:

#define CMPLX(x, y) ((double complex)((double)(x) + _Imaginary_I * (double)(y)))
#define CMPLXF(x, y) ((float complex)((float)(x) + _Imaginary_I * (float)(y)))
#define CMPLXL(x, y) ((long double complex)((long double)(x) + \
                      _Imaginary_I * (long double)(y)))

[bearbeiten] Beispiel

#include <stdio.h>
#include <complex.h>
 
int main(void)
{
    double complex z = CMPLX(0.0, -0.0);
    printf("z = %.1f%+.1fi\n", creal(z), cimag(z));
}

Ausgabe

z = 0.0-0.0i

[bearbeiten] Referenzen

  • C11-Standard (ISO/IEC 9899:2011)
  • 7.3.9.3 Die CMPLX-Makros (S. 197)

[bearbeiten] Siehe auch

die imaginäre Einheit konstante i
(Makro-Konstante) [bearbeiten]
C++-Dokumentation für complex