carg
在头文件<math.h>中定义 | ? | ? |
---|---|---|
float cargf( float complex z ); | (1) | (since C99) |
double carg( double complex z ); | (2) | (since C99) |
long double cargl( long double complex z ); | (3) | (since C99) |
Defined in header <tgmath.h> | ? | ? |
#define carg( z ) | (4) | (since C99) |
1-3)z
用沿着负实轴的分支来计算参数(也称为相位角)。
4)式泛型宏:如果z
具有类型long
double
complex
,long
double
imaginary
或long double
,cargl
被调用。如果z
有类型float
complex
,float
imaginary
或者float
,cargf
被调用。如果z
有类型double
complex
,double
imaginary
,double
,或任何整数类型,carg
被调用。
参数
z | - | 复杂的论点 |
---|
返回值
如果没有错误发生,则返回z
间隔(-π;π)的相位角。
处理错误和特殊情况,就像该函数被实现为atan2(cimag(z),
creal(z))
。
例
#include <stdio.h>
#include <complex.h>
int main(void)
{
double complex z1 = 1.0+0.0*I;
printf("phase angle of %.1f%+.1fi is %f\n", creal(z1), cimag(z1), carg(z1));
double complex z2 = 0.0+1.0*I;
printf("phase angle of %.1f%+.1fi is %f\n", creal(z2), cimag(z2), carg(z2));
double complex z3 = -1.0+0.0*I;
printf("phase angle of %.1f%+.1fi is %f\n", creal(z3), cimag(z3), carg(z3));
double complex z4 = conj(z3); // or CMPLX(-1, -0.0)
printf("phase angle of %.1f%+.1fi (the other side of the cut) is %f\n",
creal(z4), cimag(z4), carg(z4));
}
输出:
phase angle of 1.0+0.0i is 0.000000
phase angle of 0.0+1.0i is 1.570796
phase angle of -1.0+0.0i is 3.141593
phase angle of -1.0-0.0i (the other side of the cut) is -3.141593
参考
- C11标准(ISO / IEC 9899:2011):
- 7.3.9.1 carg函数(p:196)
- 7.25类型通用数学<tgmath.h>(p:373-375)
- G.7类型 - 通用数学<tgmath.h>(p:545)
- C99标准(ISO / IEC 9899:1999):
- 7.3.9.1 carg函数(p:178)
- 7.22类型通用数学<tgmath.h>(p:335-337)
- G.7类型 - 通用数学<tgmath.h>(p:480)
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com