©
本文檔使用 php中文網手册 發布
在头文件<complex.h>中定义 | ||
---|---|---|
float complex csqrtf(float complex z); | (1) | (自C99以来) |
double complex csqrt( double complex z ); | (2) | (自C99以来) |
long double complex csqrtl( long double complex z ); | (3) | (自C99以来) |
在头文件<tgmath.h>中定义 | ||
#define sqrt(z) | (4) | (自C99以来) |
1-3)用负实轴计算分支切割z的复平方根。
4)类型 - 通用宏:如果z有类型long double complex,则调用csqrtl。 如果z具有类型double复合体,则调用csqrt,如果z具有类型float complex,则调用csqrtf。 如果z是实数或整数,那么宏调用相应的实函数(sqrtf,sqrt,sqrtl)。 如果z是虚数,则调用相应的复数版本。
z | - | complex argument |
---|
如果不出现错误,则返回z
右半平面范围内的平方根,包括沿着实轴的虚轴([0; +∞)和沿虚轴的(-∞; +∞)。) 。
报告的错误与math_errhandling一致。
如果实现支持IEEE浮点运算,
考虑到虚部的符号,该功能在分支切割上是连续的
csqrt(conj(z))== conj(csqrt(z))
如果z是±0 + 0i,结果是+ 0 + 0i
如果z是x +∞i,即使x是NaN,结果也是+∞+∞i
如果z是x + NaNi,那么结果是NaN + NaNi(除非x是±∞)并且可以提高FE_INVALID
如果z是-∞+ yi,则对于有限正y,结果为+ 0 +∞i
如果z是+∞+ yi,则对于有限正y,结果为+∞+ 0i)
如果z是-∞+ NaNi,则结果是NaN±∞(虚数部分的符号未指定)
如果z是+∞+ NaNi,则结果是+∞+ NaNi
如果z是NaN + yi,则结果是NaN + NaNi,并且FE_INVALID可能会上升
如果z是NaN + NaNi,结果是NaN + NaNi
#include <stdio.h>#include <complex.h> int main(void){ double complex z1 = csqrt(-4); printf("Square root of -4 is %.1f%+.1fi\n", creal(z1), cimag(z1)); double complex z2 = csqrt(conj(-4)); // or, in C11, CMPLX(-4, -0.0) printf("Square root of -4-0i, the other side of the cut, is " "%.1f%+.1fi\n", creal(z2), cimag(z2));}
输出:
Square root of -4 is 0.0+2.0i Square root of -4-0i, the other side of the cut, is 0.0-2.0i
C11标准(ISO / IEC 9899:2011):
7.3.8.3 csqrt函数(p:196)
7.25类型通用数学<tgmath.h>(p:373-375)
G.6.4.2 csqrt函数(p:544)
G.7类型 - 通用数学<tgmath.h>(p:545)
C99标准(ISO / IEC 9899:1999):
7.3.8.3 csqrt函数(p:178)
7.22类型通用数学<tgmath.h>(p:335-337)
G.6.4.2 csqrt函数(p:479)
G.7类型 - 通用数学<tgmath.h>(p:480)
cpowcpowfcpowl(C99)(C99)(C99) | 计算复数幂函数(函数) |
---|---|
sqrtsqrtfsqrtl(C99)(C99) | 计算平方根(√x)(函数) |
| sqrt 的C ++文档|