std::sqrt(std::complex)
來自 cppreference.com
定義於標頭檔案 <complex> |
||
template< class T > std::complex<T> sqrt( const std::complex<T>& z ); |
||
計算複數 z 的平方根,其分支切割(branch cut)沿負實軸。
目錄 |
[編輯] 引數
z | - | 要計算平方根的複數 |
[編輯] 返回值
如果沒有發生錯誤,返回 z 的平方根,位於右半平面範圍內,包括虛軸(實軸沿 [0; +∞),虛軸沿 (−∞; +∞))。
[編輯] 錯誤處理與特殊值
錯誤報告與 math_errhandling 保持一致。
如果實現支援 IEEE 浮點算術,
- 函式在分支切割上是連續的,並考慮虛部的符號
- std::sqrt(std::conj(z)) == std::conj(std::sqrt(z))
- 若 z 為
(±0,+0)
,則結果為(+0,+0)
- 若 z 為
(x,+∞)
,即使 x 是 NaN,結果也為(+∞,+∞)
- 若 z 為
(x,NaN)
,則結果為(NaN,NaN)
(除非 x 是 ±∞),並可能引發 FE_INVALID - 若 z 為
(-∞,y)
,對於有限正 y,結果為(+0,+∞)
- 若 z 為
(+∞,y)
,對於有限正 y,結果為(+∞,+0)
- 若 z 為
(-∞,NaN)
,則結果為(NaN,∞)
(虛部符號未指定) - 若 z 為
(+∞,NaN)
,則結果為(+∞,NaN)
- 若 z 為
(NaN,y)
,則結果為(NaN,NaN)
,並可能引發 FE_INVALID - 若 z 為
(NaN,NaN)
,則結果為(NaN,NaN)
[編輯] 注意
此函式的語義旨在與 C 函式 csqrt 保持一致。
[編輯] 示例
執行此程式碼
#include <complex> #include <iostream> int main() { std::cout << "Square root of -4 is " << std::sqrt(std::complex<double>(-4.0, 0.0)) << '\n' << "Square root of (-4,-0) is " << std::sqrt(std::complex<double>(-4.0, -0.0)) << " (the other side of the cut)\n"; }
輸出
Square root of -4 is (0,2) Square root of (-4,-0) is (0,-2) (the other side of the cut)
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 2597 | C++98 | 規範錯誤地處理了有符號的零虛部 | 已刪除錯誤的求值要求 |
[編輯] 另見
複數冪,一個或兩個引數可以是複數 (函式模板) | |
(C++11)(C++11) |
計算平方根(√x) (函式) |
將函式 std::sqrt 應用於 valarray 的每個元素 (函式模板) | |
C 文件 關於 csqrt
|