Namespaces
Variants

std:: acos (std::complex)

From cppreference.net
定義先ヘッダ <complex>
template < class T >
complex < T > acos ( const complex < T > & z ) ;
(C++11以降)

複素数の複素逆余弦を計算します z 。実軸上の区間 [−1, +1] の外側に分岐切断が存在します。

目次

パラメータ

z - 複素数値

戻り値

エラーが発生しない場合、複素数の逆余弦が返されます。その値は虚軸方向には非有界で、実軸方向には区間 [0, +π] 内にあります。

エラー処理と特殊値

エラーの報告は math_errhandling に従って行われます。

IEEE浮動小数点演算がサポートされている実装の場合、

  • std:: acos ( std:: conj ( z ) ) == std:: conj ( std:: acos ( z ) )
  • z (±0,+0) の場合、結果は (π/2,-0) となる
  • z (±0,NaN) の場合、結果は (π/2,NaN) となる
  • z (x,+∞) (任意の有限なxについて)の場合、結果は (π/2,-∞) となる
  • z (x,NaN) (任意の非ゼロ有限なxについて)の場合、結果は (NaN,NaN) となり、 FE_INVALID が発生する可能性がある
  • z (-∞,y) (任意の正の有限なyについて)の場合、結果は (π,-∞) となる
  • z (+∞,y) (任意の正の有限なyについて)の場合、結果は (+0,-∞) となる
  • z (-∞,+∞) の場合、結果は (3π/4,-∞) となる
  • z (+∞,+∞) の場合、結果は (π/4,-∞) となる
  • z (±∞,NaN) の場合、結果は (NaN,±∞) となる(虚部の符号は未指定)
  • z (NaN,y) (任意の有限なyについて)の場合、結果は (NaN,NaN) となり、 FE_INVALID が発生する可能性がある
  • z (NaN,+∞) の場合、結果は (NaN,-∞) となる
  • z (NaN,NaN) の場合、結果は (NaN,NaN) となる

注記

逆余弦(またはアークコサイン)は多価関数であり、複素平面上での分岐切断を必要とします。分岐切断は慣例的に実軸上の線分 (-∞,-1) および (1,∞) に配置されます。

The mathematical definition of the principal value of arc cosine is acos z =
1
2
π + i ln( i z + 1-z 2
)
.

任意の z に対して、 acos(z) = π - acos(-z) が成り立ちます。

#include <cmath>
#include <complex>
#include <iostream>
int main()
{
    std::cout << std::fixed;
    std::complex<double> z1(-2.0, 0.0);
    std::cout << "acos" << z1 << " = " << std::acos(z1) << '\n';
    std::complex<double> z2(-2.0, -0.0);
    std::cout << "acos" << z2 << " (the other side of the cut) = "
              << std::acos(z2) << '\n';
    // for any z, acos(z) = pi - acos(-z)
    const double pi = std::acos(-1);
    std::complex<double> z3 = pi - std::acos(z2);
    std::cout << "cos(pi - acos" << z2 << ") = " << std::cos(z3) << '\n';
}

出力:

acos(-2.000000,0.000000) = (3.141593,-1.316958)
acos(-2.000000,-0.000000) (the other side of the cut) = (3.141593,1.316958)
cos(pi - acos(-2.000000,-0.000000)) = (2.000000,0.000000)

関連項目

複素数の逆正弦を計算する ( arcsin(z) )
(関数テンプレート)
複素数の逆正接を計算する ( arctan(z) )
(関数テンプレート)
複素数の余弦を計算する ( cos(z) )
(関数テンプレート)
(C++11) (C++11)
逆余弦を計算する ( arccos(x) )
(関数)
関数 std::acos をvalarrayの各要素に適用する
(関数テンプレート)