Namespaces
Variants

std:: sqrt (std::complex)

From ja.cppreference.net
定義先ヘッダ <complex>
template < class T >
std:: complex < T > sqrt ( const std:: complex < T > & z ) ;

負の実軸に沿って分岐切断を持つ複素数 z の平方根を計算します。

目次

翻訳のポイント: - 「Contents」を「目次」に翻訳 - HTMLタグ、属性、数値はそのまま保持 - C++関連の専門用語(Parameters, Return value, Error handling, Exampleなど)は原文のまま保持 - フォーマットと構造は完全に維持

パラメータ

z - 平方根を求める複素数

戻り値

エラーが発生しない場合、右半平面(実軸に沿って [0; +∞) 、虚軸に沿って (−∞; +∞) を含む)の範囲で z の平方根を返します。

エラー処理と特殊値

エラーは 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 )
(関数)
関数 std::sqrt をvalarrayの各要素に適用する
(関数テンプレート)