Các kiểu phức tạp trong ngôn ngữ C kể từ tiêu chuẩn C99 ( -std=c99
tùy chọn của GCC). Một số trình biên dịch có thể thực hiện các kiểu phức tạp ngay cả trong các chế độ sớm hơn, nhưng đây là phần mở rộng không chuẩn và không di động (ví dụ như IBM XL, GCC, có thể là intel, ...).
Bạn có thể bắt đầu từ http://en.wikipedia.org/wiki/Complex.h - nó cung cấp mô tả về các chức năng từ complex.h
Hướng dẫn này http://pubs.opengroup.org/onlinepubs/009604499/basedefs/complex.h.html cũng cung cấp một số thông tin về macro.
Để khai báo một biến phức tạp, hãy sử dụng
double _Complex a; // use c* functions without suffix
hoặc là
float _Complex b; // use c*f functions - with f suffix
long double _Complex c; // use c*l functions - with l suffix
Để cung cấp một giá trị thành phức, hãy sử dụng _Complex_I
macro từ complex.h
:
float _Complex d = 2.0f + 2.0f*_Complex_I;
(thực sự có thể có một số vấn đề ở đây với (0,-0i)
số và NaN trong nửa đơn của phức)
Mô-đun là cabs(a)
/ cabsl(c)
/ cabsf(b)
; Phần thực là creal(a)
, phần tưởng tượng là cimag(a)
. carg(a)
dành cho đối số phức tạp.
Trực tiếp truy cập (đọc / ghi) thực một phần IMAG bạn có thể sử dụng này unportable GCC-mở rộng :
__real__ a = 1.4;
__imag__ a = 2.0;
float b = __real__ a;