Namespaces
Variants

CMPLXF, CMPLX, CMPLXL

From cppreference.net
Definido en el encabezado <complex.h>
float complex CMPLXF ( float real, float imag ) ;
(desde C11)
double complex CMPLX ( double real, double imag ) ;
(desde C11)
long double complex CMPLXL ( long double real, long double imag ) ;
(desde C11)

Cada una de estas macros se expande a una expresión que evalúa al valor del tipo complejo especificado, con la parte real teniendo el valor de real (convertido al tipo de argumento especificado) y la parte imaginaria teniendo el valor de imag (convertido al tipo de argumento especificado)

Las expresiones son adecuadas para su uso como inicializadores para objetos con duración de almacenamiento estático o de hilo, siempre que las expresiones real y imag también sean adecuadas.

Contenidos

Parámetros

real - la parte real del número complejo a devolver
imag - la parte imaginaria del número complejo a devolver

Valor de retorno

Un número complejo compuesto por real y imag como las partes real e imaginaria.

Notas

Estas macros se implementan como si los tipos imaginarios estuvieran soportados (incluso si no están soportados de otro modo y _Imaginary_I está realmente indefinido) y como si estuvieran definidos de la siguiente manera:

#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)))

Ejemplo

#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));
}

Salida:

z = 0.0-0.0i

Referencias

  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.3.9.3 Las macros CMPLX (p: 197)

Véase también

la constante de unidad imaginaria i
(macro constante)
C++ documentation para complex