©
This document uses PHP Chinese website manual Release
如果宏实例__STDC_NO_COMPLEX__由实现定义,则将不提供复杂类型,头文件<complex.h>和此处列出的所有名称。 | (自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
。
标准算术运算符+, -, *, /
可以与任何组合中的真实,复杂和虚构类型一起使用。
建议定义__STDC_IEC_559_COMPLEX__的编译器,但不要求支持虚数。POSIX建议检查宏_Imaginary_I是否被定义为标识虚数支持。 | (自C99开始)(直到C11) |
---|---|
如果定义了__STDC_IEC_559_COMPLEX__,则支持虚数。 | (自C11以来) |
| 在头文件<complex.h> |中定义
|:----|
| 类型|
| 想象(C99)| 虚构类型宏(宏常量)|
| 复杂(C99)| 复杂类型宏(宏常量)|
| 虚数|
| _Imaginary_I(C99)| 虚数单元常数i(宏常数)|
| _Complex_I(C99)| 复数单位常数i(宏常数)|
| I(C99)| 复数或虚数单元常数i(宏常数)|
| 操作|
| CMPLXCMPLXFCMPLXL(C11)(C11)(C11)| 从实部和虚部(函数宏)|构造一个复数
| crealcrealfcreall(C99)(C99)(C99)| 计算复数(函数)|的实部
| cimagcimagfcimagl(C99)(C99)(C99)| 计算复数(函数)|的虚部
| cabscabsfcabsl(C99)(C99)(C99)| 计算复数(函数)|的大小
| cargcargfcargl(C99)(C99)(C99)| 计算复数(函数)|的相位角
| conjconjfconjl(C99)(C99)(C99)| 计算复共轭(函数)|
| cprojcprojfcprojl(C99)(C99)(C99)| 计算黎曼球体(函数)|上的投影
| 指数函数|
| cexpcexpfcexpl(C99)(C99)(C99)| 计算复数基-e指数(函数)|
| clogclogfclogl(C99)(C99)(C99)| 计算复数自然对数(函数)|
| 电源功能|
| cpowcpowfcpowl(C99)(C99)(C99)| 计算复数幂函数(函数)|
| csqrtcsqrtfcsqrtl(C99)(C99)(C99)| 计算复平方根(函数)|
| 三角函数|
| csincsinfcsinl(C99)(C99)(C99)| 计算复杂正弦函数| |
| ccosccosfccosl(C99)(C99)(C99)| 计算复余弦(函数)|
| ctanctanfctanl(C99)(C99)(C99)| 计算复切线(函数)|
| casincasinfcasinl(C99)(C99)(C99)| 计算复杂的反正弦(函数)|
| cacoscacosfcacosl(C99)(C99)(C99)| 计算复合反余弦(函数)|
| catancatanfcatanl(C99)(C99)(C99)| 计算复数反正切(函数)|
| 双曲函数|
| csinhcsinhfcsinhl(C99)(C99)(C99)| 计算复数双曲正弦函数| |
| ccoshccoshfccoshl(C99)(C99)(C99)| 计算复双曲余弦(函数)|
| ctanhctanhfctanhl(C99)(C99)(C99)| 计算复双曲正切(函数)|
| casinhcasinhfcasinhl(C99)(C99)(C99)| 计算复数双曲正弦曲线(函数)|
| cacoshcacoshfcacoshl(C99)(C99)(C99)| 计算复曲线双曲余弦(函数)|
| catanhcatanhfcatanhl(C99)(C99)(C99)| 计算复圆弧双曲正切函数| |
下面的函数名保留为将来除了complex.h
并且不可用于在包括头节目:cerf
,cerfc
,cexp2
,cexpm1
,clog10
,clog1p
,clog2
,clgamma
,和ctgamma
,连同他们-f -l和后缀的变体。
虽然C标准将反双曲线命名为“复圆弧双曲正弦”等,但双曲函数的反函数是区域函数。他们的论点是双曲线领域,而不是弧线。正确的名称是“复反双曲正弦”等。一些作者使用“复曲面双曲正弦”等。
如果一个复数或虚数的一个成分是无限的,即使另一个成分是NaN,它也是无限的。
如果两个分量既不是无穷也不是NaN,则复数或虚数是有限的。
如果两个分量均为正或负零,则复数或虚数为零。
#include <stdio.h>#include <complex.h>#include <tgmath.h> int main(void){ double complex z1 = I * I; // imaginary unit squared printf("I * I = %.1f%+.1fi\n", creal(z1), cimag(z1)); double complex z2 = pow(I, 2); // imaginary unit squared printf("pow(I, 2) = %.1f%+.1fi\n", creal(z2), cimag(z2)); double PI = acos(-1); double complex z3 = exp(I * PI); // Euler's formula printf("exp(I*PI) = %.1f%+.1fi\n", creal(z3), cimag(z3)); double complex z4 = 1+2*I, z5 = 1-2*I; // conjugates printf("(1+2i)*(1-2i) = %.1f%+.1fi\n", creal(z4*z5), cimag(z4*z5));}
输出:
I * I = -1.0+0.0ipow(I, 2) = -1.0+0.0iexp(I*PI) = -1.0+0.0i(1+2i)*(1-2i) = 5.0+0.0i
C11标准(ISO / IEC 9899:2011):
6.10.8.3/1/2 __STDC_NO_COMPLEX__(p:177)
6.10.8.3/1/2 __STDC_IEC_559_COMPLEX__(p:177)
7.3复杂算术<complex.h>(p:188-199)
7.3.1 / 2 __STDC_NO_COMPLEX__(p:188)
7.25类型通用数学<tgmath.h>(p:373-375)
7.31.1复杂算术<complex.h>(p:455)
B.2复杂<complex.h>(p:475-477)
附录G(规范性附录)兼容IEC 60559的复数运算(p:532-545)
G.1 / 1 __STDC_IEC_559_COMPLEX__(p:532)
C99标准(ISO / IEC 9899:1999):
6.10.8 / 2 __STDC_IEC_559_COMPLEX__(p:161)
7.3复杂算术<complex.h>(p:170-180)
7.22类型通用数学<tgmath.h>(p:335-337)
7.26.1复杂算术<complex.h>(p:401)
B.2复杂<complex.h>(p:419-420)
附录G(资料性附录)符合IEC 60559的复杂算术(p:467-480)
G.1 / 1 __STDC_IEC_559_COMPLEX__(p:467)
| 用于复数运算的C ++文档
|:----|