名稱空間
變體
操作

csqrtf, csqrt, csqrtl

來自 cppreference.com
< c‎ | numeric‎ | complex
定義在標頭檔案 <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 complex,則呼叫 csqrt。如果 z 的型別是 float complex,則呼叫 csqrtf。如果 z 是實數或整數,則宏呼叫相應的實數函式(sqrtfsqrtsqrtl)。如果 z 是虛數,則呼叫相應的複數版本。

目錄

[編輯] 引數

z - 複數引數

[編輯] 返回值

如果未發生錯誤,則返回 z 的平方根,其範圍在右半平面內,包括虛軸(沿實軸為 [0; +∞),沿虛軸為 (−∞; +∞))。

[編輯] 錯誤處理和特殊值

錯誤按照 math_errhandling 報告

如果實現支援 IEEE 浮點算術,

  • 函式在分支切割上是連續的,並考慮虛部的符號
  • csqrt(conj(z)) == conj(csqrt(z))
  • 如果 z±0+0i,結果是 +0+0i
  • 如果 zx+∞i,即使 x 是 NaN,結果也是 +∞+∞i
  • 如果 zx+NaNi,結果是 NaN+NaNi(除非 x 是 ±∞),並且可能引發 FE_INVALID
  • 如果 z-∞+yi,對於有限正數 y,結果是 +0+∞i
  • 如果 z+∞+yi,對於有限正數 y,結果是 +∞+0i)
  • 如果 z-∞+NaNi,結果是 NaN±∞i(虛部的符號未指定)
  • 如果 z+∞+NaNi,結果是 +∞+NaNi
  • 如果 zNaN+yi,結果是 NaN+NaNi,並且可能引發 FE_INVALID
  • zNaN+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)

[編輯] 另請參見

(C99)(C99)(C99)
計算複數冪函式
(函式) [編輯]
(C99)(C99)
計算平方根 (x)
(函式) [編輯]
C++ 文件 用於 sqrt