Typy złożone są w języku C od standardu C99 ( -std=c99
opcja GCC). Niektóre kompilatory mogą implementować złożone typy nawet we wcześniejszych trybach, ale jest to niestandardowe i nieprzenośne rozszerzenie (np. IBM XL, GCC, może być intel, ...).
Możesz zacząć od http://en.wikipedia.org/wiki/Complex.h - zawiera opis funkcji z complex.h
Ten podręcznik http://pubs.opengroup.org/onlinepubs/009604499/basedefs/complex.h.html również zawiera informacje o makrach.
Aby zadeklarować zmienną złożoną, użyj
double _Complex a; // use c* functions without suffix
lub
float _Complex b; // use c*f functions - with f suffix
long double _Complex c; // use c*l functions - with l suffix
Aby nadać wartość złożonemu, użyj _Complex_I
makra z complex.h
:
float _Complex d = 2.0f + 2.0f*_Complex_I;
(właściwie mogą tu występować problemy z (0,-0i)
liczbami i NaN w jednej połowie złożonej)
Moduł to cabs(a)
/ cabsl(c)
/ cabsf(b)
; Prawdziwą częścią jest creal(a)
wyobrażenie cimag(a)
. carg(a)
służy do złożonych argumentów.
Aby uzyskać bezpośredni dostęp (odczyt / zapis) do rzeczywistej części obrazu , możesz użyć tego nieporęcznego rozszerzenia GCC :
__real__ a = 1.4;
__imag__ a = 2.0;
float b = __real__ a;