名前空間
変種
操作

cacosf, cacos, cacosl

From cppreference.com
< c‎ | numeric‎ | complex
ヘッダー <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) z の複素数アークコサインを計算します。分岐点は実軸に沿った区間 [−1,+1] の外側にあります。
4) 型汎用マクロ: z の型が long double complex の場合、cacosl が呼び出されます。z の型が double complex の場合、cacos が呼び出されます。z の型が float complex の場合、cacosf が呼び出されます。z が実数または整数である場合、マクロは対応する実数関数 (acosfacosacosl) を呼び出します。z が虚数である場合、マクロは対応する複素数バージョンを呼び出します。

目次

[edit] パラメータ

z - 複素数引数

[edit] 戻り値

エラーが発生しない場合、z の複素数アークコサインが返されます。範囲は、虚軸に沿って無制限の帯状領域と、実軸に沿って [0; π] の区間です。

[edit] エラー処理と特殊値

math_errhandling と一貫したエラーが報告されます。

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

  • cacos(conj(z)) == conj(cacos(z))
  • z±0+0i の場合、結果は π/2-0i です。
  • z±0+NaNi の場合、結果は π/2+NaNi です。
  • zx+∞i (任意の有限 x) の場合、結果は π/2-∞i です。
  • zx+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 (虚部の符号は未指定) です。
  • zNaN+yi(任意の有限 y に対して)の場合、結果は NaN+NaNi となり、FE_INVALID が発生する場合があります。
  • zNaN+∞i の場合、結果は NaN-∞i です。
  • zNaN+NaNi の場合、結果は NaN+NaNi となります。

[edit] 注記

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

アークコサインの主値の数学的定義は acos z =
1
2
π + iln(iz + 1-z2
)
です。

任意の z に対して、acos(z) = π - acos(-z)

[edit]

#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

[edit] 参考文献

  • C11標準 (ISO/IEC 9899:2011)
  • 7.3.5.1 The cacos functions (p: 190)
  • 7.25 型総称数学関数 <tgmath.h> (p: 373-375)
  • G.6.1.1 The cacos functions (p: 539)
  • G.7 Type-generic math <tgmath.h> (p: 545)
  • C99標準 (ISO/IEC 9899:1999)
  • 7.3.5.1 The cacos functions (p: 172)
  • 7.22 型総称数学関数 <tgmath.h> (p: 335-337)
  • G.6.1.1 The cacos functions (p: 474)
  • G.7 Type-generic math <tgmath.h> (p: 480)

[edit] 関連項目

(C99)(C99)(C99)
複素アークサインを計算する
(関数) [編集]
(C99)(C99)(C99)
複素アークタンジェントを計算する
(関数) [編集]
(C99)(C99)(C99)
複素コサインを計算する
(関数) [編集]
(C99)(C99)
アークコサインを計算する (arccos(x))
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)