Namespaces
Variants

cacosf, cacos, cacosl

From cppreference.net
ヘッダー <complex.h> で定義
float complex cacosf ( float complex z ) ;
(1) (C99以降)
double complex cacos ( double complex z ) ;
(2) (C99以降)
long double complex cacosl ( long double complex z ) ;
(3) (C99以降)
ヘッダー <tgmath.h> で定義
#define acos( z )
(4) (C99以降)
1-3) 実軸上の区間 [−1,+1] の外側に分岐切断を持つ z の複素逆余弦を計算します。
4) 型総称マクロ: z の型が long double complex の場合、 cacosl が呼び出される。 z の型が double complex の場合、 cacos が呼び出される。 z の型が float complex の場合、 cacosf が呼び出される。 z が実数または整数の場合、マクロは対応する実数関数( acosf acos acosl )を呼び出す。 z が虚数の場合、マクロは対応する複素数版を呼び出す。

目次

パラメータ

z - 複素引数

戻り値

エラーが発生しない場合、複素数の逆余弦が返されます。その範囲は、虚数軸に沿って非有界の帯域であり、実数軸に沿って区間 [0; π] 内です。

エラー処理と特殊値

エラーは math_errhandling に従って報告されます。

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

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

注記

逆余弦(またはアークコサイン)は多価関数であり、複素平面上での分岐切断が必要です。分岐切断は通常、実軸上の線分 (-∞,-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 <stdio.h>
#include <math.h>
#include <complex.h>
int main(void)
{
    double complex z = cacos(-2);
    printf("cacos(-2+0i) = %f%+fi\n", creal(z), cimag(z));
    double complex z2 = cacos(conj(-2)); // or CMPLX(-2, -0.0)
    printf("cacos(-2-0i) (the other side of the cut) = %f%+fi\n", creal(z2), cimag(z2));
    // for any z, acos(z) = pi - acos(-z)
    double pi = acos(-1);
    double complex z3 = ccos(pi-z2);
    printf("ccos(pi - cacos(-2-0i) = %f%+fi\n", creal(z3), cimag(z3));
}

出力:

cacos(-2+0i) = 3.141593-1.316958i
cacos(-2-0i) (the other side of the cut) = 3.141593+1.316958i
ccos(pi - cacos(-2-0i) = 2.000000+0.000000i

参考文献

  • C11規格 (ISO/IEC 9899:2011):
  • 7.3.5.1 cacos関数群 (p: 190)
  • 7.25 総称数学 <tgmath.h> (p: 373-375)
  • G.6.1.1 cacos関数群 (p: 539)
  • G.7 総称数学 <tgmath.h> (p: 545)
  • C99規格 (ISO/IEC 9899:1999):
  • 7.3.5.1 cacos関数群 (p: 172)
  • 7.22 総称数学 <tgmath.h> (p: 335-337)
  • G.6.1.1 cacos関数群 (p: 474)
  • G.7 総称数学 <tgmath.h> (p: 480)

関連項目

(C99) (C99) (C99)
複素数の逆正弦を計算する
(関数)
(C99) (C99) (C99)
複素数の逆正接を計算する
(関数)
(C99) (C99) (C99)
複素数の余弦を計算する
(関数)
(C99) (C99)
逆余弦を計算する ( arccos(x) )
(関数)