Los tipos complejos están en lenguaje C desde el estándar C99 ( -std=c99opción de GCC). Algunos compiladores pueden implementar tipos complejos incluso en modos más anteriores, pero esta es una extensión no estándar y no portátil (por ejemplo, IBM XL, GCC, puede ser Intel, ...).
Puede comenzar desde http://en.wikipedia.org/wiki/Complex.h : proporciona una descripción de las funciones de complex.h
Este manual http://pubs.opengroup.org/onlinepubs/009604499/basedefs/complex.h.html también brinda información sobre macros.
Para declarar una variable compleja, use
double _Complex a; // use c* functions without suffix
o
float _Complex b; // use c*f functions - with f suffix
long double _Complex c; // use c*l functions - with l suffix
Para dar un valor en complejo, use _Complex_Imacro de complex.h:
float _Complex d = 2.0f + 2.0f*_Complex_I;
(en realidad puede haber algunos problemas aquí con (0,-0i)números y NaN en la mitad del complejo)
Módulo es cabs(a)/ cabsl(c)/ cabsf(b); La parte real es creal(a), Imaginary is cimag(a). carg(a)es para argumentos complejos.
Para acceder directamente (leer / escribir) una parte real e imag puede usar esta extensión GCC no portable :
__real__ a = 1.4;
__imag__ a = 2.0;
float b = __real__ a;