Namespaces
Variants

cacoshf, cacosh, cacoshl

From cppreference.net
ヘッダーで定義 <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 が実数または整数の場合、マクロは対応する実数関数( acoshf acosh acoshl )を呼び出す。 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 が発生する可能性があります
  • z 0+NaNi の場合、結果は NaN±iπ/2 となり、虚部の符号は未規定です
  • z -∞+yi (任意の正の有限なyに対して)の場合、結果は +∞+iπ です
  • z +∞+yi (任意の正の有限なyに対して)の場合、結果は +∞+0i です
  • z -∞+∞i の場合、結果は +∞+3iπ/4 です
  • z +∞+∞i の場合、結果は +∞+iπ/4 です
  • z ±∞+NaNi の場合、結果は +∞+NaNi です
  • z NaN+yi (任意の有限なyに対して)の場合、結果は NaN+NaNi となり、 FE_INVALID が発生する可能性があります
  • z NaN+∞i の場合、結果は +∞+NaNi です
  • z NaN+NaNi の場合、結果は NaN+NaNi です

注記

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

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

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

For any z, acosh(z) =
z-1
1-z
acos(z)
, or simply i acos(z) in the upper half of the complex plane.

#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 cacosh関数群 (p: 192)
  • 7.25 総称数学 <tgmath.h> (p: 373-375)
  • G.6.2.1 cacosh関数群 (p: 539-540)
  • G.7 総称数学 <tgmath.h> (p: 545)
  • C99規格 (ISO/IEC 9899:1999):
  • 7.3.6.1 cacosh関数群 (p: 174)
  • 7.22 総称数学 <tgmath.h> (p: 335-337)
  • G.6.2.1 cacosh関数群 (p: 474-475)
  • G.7 総称数学 <tgmath.h> (p: 480)

関連項目

(C99) (C99) (C99)
複素数の逆余弦を計算する
(関数)
(C99) (C99) (C99)
複素数の逆双曲線正弦を計算する
(関数)
(C99) (C99) (C99)
複素数の逆双曲線正接を計算する
(関数)
(C99) (C99) (C99)
複素数の双曲線余弦を計算する
(関数)
(C99) (C99) (C99)
逆双曲線余弦を計算する ( arcosh(x) )
(関数)