复数算术
| 若实现定义了宏常量  | (C11 起) | 
C 编程语言从 C99 开始支持三种内建类型 double _Complex、 float _Complex 及 long double _Complex 的复数数学运算(见 _Complex )。包含头文件 <complex.h> 时,三种复数类型亦可通过 double complex、 float complex、 long double complex 使用。
除了复数类型,还支持三种虚数类型: double _Imaginary、 float _Imaginary 及 long double _Imaginary (见 _Imaginary )。包含头文件 <complex.h> 时,三种虚数类型亦可通过 double imaginary、 float imaginary 及 long double imaginary 使用。
标准算术运算符 +, -, *, / 可用于实数、复数及虚数类型的任意混合。
| 推荐编译器定义  | (C99 起) (C11 前) | 
| 若定义  | (C11 起) | 
| 定义于头文件  <complex.h> | |
| 类型 | |
| (C99) | 虚数类型宏 (关键词宏) | 
| (C99) | 复数类型宏 (关键词宏) | 
| 虚数常量 | |
| (C99) | 虚数单位常量 i (宏常量) | 
| (C99) | 复数单位常量 i (宏常量) | 
| (C99) | 复数或虚数单位常量 i (宏常量) | 
| 操作 | |
| (C11)(C11)(C11) | 由实部和虚部构建复数 (宏函数) | 
| (C99)(C99)(C99) | 计算复数的实部 (函数) | 
| (C99)(C99)(C99) | 计算复数的虚部 (函数) | 
| (C99)(C99)(C99) | 计算复数的模(绝对值) (函数) | 
| (C99)(C99)(C99) | 计算复数的辐角 (函数) | 
| (C99)(C99)(C99) | 计算共轭复数 (函数) | 
| (C99)(C99)(C99) | 计算黎曼球上的投影 (函数) | 
| 指数函数 | |
| (C99)(C99)(C99) | 计算复数的 e 底指数 (函数) | 
| (C99)(C99)(C99) | 计算复数的自然对数 (函数) | 
| 幂函数 | |
| (C99)(C99)(C99) | 计算复数幂函数 (函数) | 
| (C99)(C99)(C99) | 计算复数平方根 (函数) | 
| 三角函数 | |
| (C99)(C99)(C99) | 计算复数正弦 (函数) | 
| (C99)(C99)(C99) | 计算复数余弦 (函数) | 
| (C99)(C99)(C99) | 计算复数正切 (函数) | 
| (C99)(C99)(C99) | 计算复数反正弦 (函数) | 
| (C99)(C99)(C99) | 计算复数反余弦 (函数) | 
| (C99)(C99)(C99) | 计算复数反正切 (函数) | 
| 双曲函数 | |
| (C99)(C99)(C99) | 计算复数双曲正弦 (函数) | 
| (C99)(C99)(C99) | 计算复双曲余弦 (函数) | 
| (C99)(C99)(C99) | 计算复数双曲正切 (函数) | 
| (C99)(C99)(C99) | 计算复数反双曲正弦 (函数) | 
| (C99)(C99)(C99) | 计算复数反双曲余弦 (函数) | 
| (C99)(C99)(C99) | 计算复数反双曲正切 (函数) | 
注解
下列函数名为 <complex.h> 的未来扩充而潜在 (C23 起)保留,并且在包含该头文件的程序中不可使用: cerf、 cerfc、 cexp2 、 cexpm1、 clog10、 clog1p、 clog2、 clgamma、 ctgamma、 csinpi、 ccospi、 ctanpi、 casinpi、 cacospi、 catanpi、 ccompoundn、 cpown、 cpowr、 crootn、 crsqrt、 cexp10m1、 cexp10、 cexp2m1、 clog10p1、 clog2p1、 clogp1 (C23 起) ,还有它们带 -f 及 -l 后缀的变体。
尽管 C 标准以“复弧双曲正弦( complex arc hyperbolic sine )”等名称指名反双曲函数,双曲函数的反函数却是面积函数。它们的参数是双曲扇形的面积,而非弧长。正确名称是“复反双曲正弦”等等。一些作者会使用“复面积双曲正弦( complex area hyperbolic sine )”等名称。
若组分的一部分是无穷大,则复数或虚数为无穷大,即使另一组分是 NaN 。
若双组分都不是无穷大或 NaN ,则复数或虚数是有限的。
若双组分皆为正零或负零,则复数或虚数为零。
示例
#include <stdio.h> #include <complex.h> #include <tgmath.h> int main(void) { double complex z1 = I * I; // 虚数单位平方 printf("I * I = %.1f%+.1fi\n", creal(z1), cimag(z1)); double complex z2 = pow(I, 2); // 虚数单位平方 printf("pow(I, 2) = %.1f%+.1fi\n", creal(z2), cimag(z2)); double PI = acos(-1); double complex z3 = exp(I * PI); // 欧拉公式 printf("exp(I*PI) = %.1f%+.1fi\n", creal(z3), cimag(z3)); double complex z4 = 1+2*I, z5 = 1-2*I; // 共轭 printf("(1+2i)*(1-2i) = %.1f%+.1fi\n", creal(z4*z5), cimag(z4*z5)); }
输出:
I * I = -1.0+0.0i pow(I, 2) = -1.0+0.0i exp(I*PI) = -1.0+0.0i (1+2i)*(1-2i) = 5.0+0.0i
引用
- C17 标准(ISO/IEC 9899:2018):
-  6.10.8.3/1/2 __STDC_NO_COMPLEX__(第 128 页)
 
-  6.10.8.3/1/2 
-  6.10.8.3/1/2 __STDC_IEC_559_COMPLEX__(第 128 页)
 
-  6.10.8.3/1/2 
-  7.3 Complex arithmetic <complex.h>(第 136-144 页)
 
-  7.3 Complex arithmetic 
-  7.25 Type-generic math <tgmath.h>(第 272-273 页)
 
-  7.25 Type-generic math 
-  7.31.1 Complex arithmetic <complex.h>(第 391 页)
 
-  7.31.1 Complex arithmetic 
- Annex G (normative) IEC 60559-compatible complex arithmetic (第 469-479 页)
 
- C11 标准(ISO/IEC 9899:2011):
-  6.10.8.3/1/2 __STDC_NO_COMPLEX__(第 177 页)
 
-  6.10.8.3/1/2 
-  6.10.8.3/1/2 __STDC_IEC_559_COMPLEX__(第 177 页)
 
-  6.10.8.3/1/2 
-  7.3 Complex arithmetic <complex.h>(第 188-199 页)
 
-  7.3 Complex arithmetic 
-  7.25 Type-generic math <tgmath.h>(第 373-375 页)
 
-  7.25 Type-generic math 
-  7.31.1 Complex arithmetic <complex.h>(第 455 页)
 
-  7.31.1 Complex arithmetic 
- Annex G (normative) IEC 60559-compatible complex arithmetic (第 532-545 页)
 
- C99 标准(ISO/IEC 9899:1999):
-  6.10.8/2 __STDC_IEC_559_COMPLEX__(第 161 页)
 
-  6.10.8/2 
-  7.3 Complex arithmetic <complex.h>(第 170-180 页)
 
-  7.3 Complex arithmetic 
-  7.22 Type-generic math <tgmath.h>(第 335-337 页)
 
-  7.22 Type-generic math 
-  7.26.1 Complex arithmetic <complex.h>(第 401 页)
 
-  7.26.1 Complex arithmetic 
- Annex G (informative) IEC 60559-compatible complex arithmetic (第 467-480 页)