C语言下使用复数类型完成数学计算

时间:2022-09-02 23:17:57
最近因为项目需要,需要写一段复数计算的程序,项目是用C语言写的,最初想的是自己定义一个复数类型,包含实部虚部,但是完成基本运算就麻烦些,不想使用C++的话可以直接进行操作符重载,这样计算的算法是可以通用的。后来在网上查找了一下才发现,原来C99 中已经引入了两个关键字 _Complex和 _Imaginary来支持复数类型,增加了如下几种类型
  1. float _Complex  
  2. double _Complex  
  3. long double _Complex  
  4. float _Imaginary  
  5. double _Imaginary  
  6. 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


除了基本的加减乘除可以直接运算外,还有以下函数可以使用:

  • 复三角函数
    • 反余弦
    • 反正弦
      • casin 双精度版本
      • casinf 单精度版本
      • casinl 长双精度版本
    • 反正切
      • catan 双精度版本
      • catanf 单精度版本
      • catanl 长双精度版本
    • 余弦
      • ccos 双精度版本
      • ccosf 单精度版本
      • ccosl 长双精度版本
    • 正弦
      • csin 双精度版本
      • csinf 单精度版本
      • csinl 长双精度版本
    • 正切
      • ctan 双精度版本
      • ctanf 单精度版本
      • ctanl 长双精度版本
  • 复双曲函数
    • 反双曲余弦
      • 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 长双精度版本
  • 操作
    • 相角
      • carg 双精度版本
      • cargf 单精度版本
      • cargl 长双精度版本
    • 虚部
      • cimag 双精度版本
      • cimagf 单精度版本
      • cimagl 长双精度版本
    • 复共轭
      • cong 双精度版本
      • congf 单精度版本
      • congl 长双精度版本
    • 黎曼球面投影
      • cproj 双精度版本
      • cprojf 单精度版本
      • cprojl 长双精度版本
    • 实部
      • creal 双精度版本
      • crealf 单精度版本
      • creall 长双精度版本