最近因为项目需要,需要写一段复数计算的程序,项目是用C语言写的,最初想的是自己定义一个复数类型,包含实部虚部,但是完成基本运算就麻烦些,不想使用C++的话可以直接进行操作符重载,这样计算的算法是可以通用的。后来在网上查找了一下才发现,原来C99 中已经引入了两个关键字 _Complex和 _Imaginary来支持复数类型,增加了如下几种类型
- float _Complex
- double _Complex
- long double _Complex
- float _Imaginary
- double _Imaginary
- long double _Imaginary
使用时需要包含<complex.h>
定义复数变量时,可以如此:
double _Complex v1=3.1+5*I; double _Complex v2=3.2+5*_Complex_I; float _Complex v3=4.6f+12.0IF; //必须先写i,后写f _Complex float v4=8.2f+2.3if; long double _Complex v5=1.23456789L+3.456789999iL; //必须先写i,后写L
除了基本的加减乘除可以直接运算外,还有以下函数可以使用:
- 复三角函数
- 复双曲函数
- 反双曲余弦
- cacosh 双精度版本
- cacoshf 单精度版本
- cacoshl 长双精度版本
- 反双曲正弦
- casinh 双精度版本
- casinhf 单精度版本
- casinhl 长双精度版本
- 反双曲正切
- catanh 双精度版本
- catanhf 单精度版本
- catanhl 长双精度版本
- 双曲余弦
- ccosh 双精度版本
- ccoshf 单精度版本
- ccoshl 长双精度版本
- 双曲正弦
- csinh 双精度版本
- csinhf 单精度版本
- csinhl 长双精度版本
- 双曲正切
- ctanh 双精度版本
- ctanhf 单精度版本
- ctanhl 长双精度版本
- 反双曲余弦
- 指数与对数函数
- 指数
- cexp 双精度版本
- cexpf 单精度版本
- cexpl 长双精度版本
- 自然对数
- clog 双精度版本
- clogf 单精度版本
- clogl 长双精度版本
- 指数
- 幂运算和绝对值
- 绝对值
- cabs 双精度版本
- cabsf 单精度版本
- cabsl 长双精度版本
- 幂运算
- cpow 双精度版本
- cpowf 单精度版本
- cpowl 长双精度版本
- 平方根
- csqrt 双精度版本
- csqrtf 单精度版本
- csqrtl 长双精度版本
- 绝对值
- 操作