C99标准支持复数计算,C11进一步支持了这个功能。实现除提供_Complex类型外还可以选择是否提供_Imaginary类型。在C11中,可以选择是否提供这两类型。C99规定,实现必须提供_Complex类型,但是_Imaginary类型是可选,可以提供或不提供。
complex.h宏 | ||
宏 | 描述 | |
complex | 展开为类型关键字_Complex | |
_Complex_I | 展开为const float _Complex类型的表达式,其值的平方是-1 | |
imaginary | 如果支持虚数类型,展开为类型关键字_Imaginary | |
_Imaginary_I | 如果支持虚数类型,展开为const float _Imaginary类型的表达式,其值的平方是-1 | |
I | 展开为_Complex_I或_Imaginary_I |
可以使用STDC CX_LIMITED_RANGE编译指令来表明是使用普通的数学公式(设置为on时),还是要特别注意极值(设置为off时):
#include <complex.h>
#pragma STDC CX_LIMITED_RANGE on
库函数分为3种:double、float、long double。float和long double版本只需要在函数名后面分别加上f和l。即csinf()就是csin()的float版本,而csinl()是csin()的long double版本。另外要注意,角度的单位是弧度。
复数函数 | ||
原型 | 描述 | |
double complex cacos(double complex z) | 返回z的复数反余弦 | |
double complex casin(dobule complex z) | 返回z的复数反正弦 | |
double complex catan(double complex z) | 返回z的复数反正切 | |
double complex ccos(double complex z) | 返回z的复数余弦 | |
double complex csin(double complex z) | 返回z的复数正弦 | |
double complex ctan(double complex z) | 返回z的复数正切 | |
double complex cacosh(double complex z) | 返回z的复数反双曲余弦 | |
double complex casinh(double complex z) | 返回z的复数反双曲正弦 | |
double complex catanh(double complex z) | 返回z的复数反双曲正切 | |
double complex ccosh(double complex z) | 返回z的复数双曲余弦 | |
double complex csinh(double complex z) | 返回z的复数双曲正弦 | |
double complex ctanh(double complex z) | 返回z的复数双曲正切 | |
double complex cexp(double complex z) | 返回e的z次幂复数值 | |
double complex clog(double complex z) | 返回z的自然对数(以e为底)的复数值 | |
double cabs(double complex z) | 返回z的绝对值(或大小) | |
double complex cpows(double complex z, double complex y) | 返回z的y次幂 | |
double complex csqrt(double complex z) | 返回z的复数平方根 | |
double carg(double complex z) | 以弧度为单位返回z的相位角(或幅角) | |
double cimag(double complex z) | 以实数形式返回z的虚部 | |
double complex conj(double complex z) | 返回z的共轭复数 | |
double complex cproj(double complex z) | 返回z在黎曼球面上的投影 | |
double complex CMPLX(double x, double y) | 返回实部为x、虚部为y的复数(C11) | |
double creal(double complex z) | 以实数形式返回z的实部 |