名前空間
変種
操作

std::sqrt(std::complex)

From cppreference.com
< cpp‎ | numeric‎ | complex
 
 
 
 
ヘッダ <complex> で定義
template< class T >
std::complex<T> sqrt( const std::complex<T>& z );

負の実軸に沿って分岐切断がある複素数 z の平方根を計算する。

目次

[編集] パラメータ

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++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 2597 C++98 符号付きゼロの虚部の扱いが仕様で間違っている 誤った要件が削除された

[編集] 関連項目

複素数のべき乗、引数の一方または両方が複素数
(関数テンプレート) [編集]
(C++11)(C++11)
平方根を計算する (x)
(関数) [編集]
valarrayの各要素に関数std::sqrtを適用する
(function template) [編集]
English 日本語 中文(简体) 中文(繁體)