名前空間
変種
操作

cacoshf, cacosh, cacoshl

From cppreference.com
< c‎ | numeric‎ | complex
ヘッダー <complex.h> で定義
float complex       cacoshf( float complex z );
(1) (C99以降)
double complex      cacosh( double complex z );
(2) (C99以降)
long double complex cacoshl( long double complex z );
(3) (C99以降)
ヘッダー <tgmath.h> で定義
#define acosh( z )
(4) (C99以降)
1-3) 複素数zの複素逆双曲線余弦を計算します。実軸に沿った1未満の値に枝分かれがあります。
4) 型汎用マクロ: zの型がlong double complexの場合、cacoshlが呼び出されます。zの型がdouble complexの場合、cacoshが呼び出されます。zの型がfloat complexの場合、cacoshfが呼び出されます。zが実数または整数である場合、マクロは対応する実数関数(acoshfacoshacoshl)を呼び出します。zが虚数である場合、マクロは対応する複素数バージョンを呼び出し、戻り値の型は複素数になります。

目次

[編集] パラメータ

z - 複素数引数

[編集] 戻り値

zの複素逆双曲線余弦。実軸に沿っては区間[0; ∞)、虚軸に沿っては区間[−iπ; +iπ]の範囲で定義されます。

[編集] エラー処理と特殊値

エラーは math_errhandling に準拠して報告されます。

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

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

[編集] 注記

C標準ではこの関数を「複素逆双曲線余弦」と呼んでいますが、双曲線関数の逆関数は面積関数です。引数は円弧ではなく、双曲線扇形の面積です。正しい名称は「複素逆双曲線余弦」であり、あまり一般的ではありませんが、「複素面積双曲線余弦」とも呼ばれます。

逆双曲線余弦は多価関数であり、複素平面上に枝切りが必要です。枝切りは通常、実軸の線分(-∞,+1)に配置されます。

主値の逆双曲線余弦の数学的定義はacosh z = ln(z + z+1 z-1)です。

任意のzに対して、acosh(z) =
z-1
1-z
acos(z)
、または複素平面の上半平面では単にi acos(z)です。

[編集]

#include <stdio.h>
#include <complex.h>
 
int main(void)
{
    double complex z = cacosh(0.5);
    printf("cacosh(+0.5+0i) = %f%+fi\n", creal(z), cimag(z));
 
    double complex z2 = conj(0.5); // or cacosh(CMPLX(0.5, -0.0)) in C11
    printf("cacosh(+0.5-0i) (the other side of the cut) = %f%+fi\n", creal(z2), cimag(z2));
 
    // in upper half-plane, acosh(z) = i*acos(z) 
    double complex z3 = casinh(1+I);
    printf("casinh(1+1i) = %f%+fi\n", creal(z3), cimag(z3));
    double complex z4 = I*casin(1+I);
    printf("I*asin(1+1i) = %f%+fi\n", creal(z4), cimag(z4));
}

出力

cacosh(+0.5+0i) = 0.000000-1.047198i
cacosh(+0.5-0i) (the other side of the cut) = 0.500000-0.000000i
casinh(1+1i) = 1.061275+0.666239i
I*asin(1+1i) = -1.061275+0.666239i

[編集] 参考文献

  • C11標準 (ISO/IEC 9899:2011)
  • 7.3.6.1 The cacosh functions (p: 192)
  • 7.25 型総称数学関数 <tgmath.h> (p: 373-375)
  • G.6.2.1 The cacosh functions (p: 539-540)
  • G.7 Type-generic math <tgmath.h> (p: 545)
  • C99標準 (ISO/IEC 9899:1999)
  • 7.3.6.1 The cacosh functions (p: 174)
  • 7.22 型総称数学関数 <tgmath.h> (p: 335-337)
  • G.6.2.1 The cacosh functions (p: 474-475)
  • G.7 Type-generic math <tgmath.h> (p: 480)

[編集] 関連項目

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