C99 标准对复数类型和复数运算的支持
最近写计算程序经常要用到复数运算,以前都是用 gsl 库中对复数运算的支持。这两天看了看C99 标准,发现C99 中对复数运算的支持还是蛮给力的,这里做个总结。C99 中引入了两个关键字 _Complex和 _Imaginary,并且定义了如下的复数类型:
#include <stdio.h>#include <complex.h>int main(void){ double _Complex a = 1.0 + 2.0 * I; double _Complex b = 5.0 + 4.0 * I; printf("a = %f + %fi\n", creal(a), cimag(a)); printf("b = %f + %fi\n", creal(b), cimag(b)); a *= b; printf("a * b = %f + %fi\n", creal(a), cimag(a)); a = csin(b); printf("sin(b) = %f + %fi\n", creal(a), cimag(a)); return 0;}