Namespaces
Variants

casinhf, casinh, casinhl

From cppreference.net
ヘッダー <complex.h> で定義
float complex casinhf ( float complex z ) ;
(1) (C99以降)
double complex casinh ( double complex z ) ;
(2) (C99以降)
long double complex casinhl ( long double complex z ) ;
(3) (C99以降)
ヘッダー <tgmath.h> で定義
#define asinh( z )
(4) (C99以降)
1-3) 虚軸に沿って区間 [−i; +i] の外側に分岐切断を持つ z の複素双曲線逆正弦を計算します。
4) 型総称マクロ: z の型が long double complex の場合、 casinhl が呼び出される。 z の型が double complex の場合、 casinh が呼び出される。 z の型が float complex の場合、 casinhf が呼び出される。 z が実数または整数の場合、マクロは対応する実数関数( asinhf asinh asinhl )を呼び出す。 z が虚数の場合、マクロは関数 asin の対応する実数バージョンを呼び出し、公式 asinh(iy) = i asin(y) を実装し、戻り値の型は虚数型となる。

目次

パラメータ

z - 複素引数

戻り値

エラーが発生しない場合、複素数の双曲線逆正弦が z に対して返されます。その値域は、実軸方向に数学的に非有界で、虚軸方向には区間 [−iπ/2; +iπ/2] に含まれます。

エラー処理と特殊値

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

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

  • casinh ( conj ( z ) ) == conj ( casinh ( z ) )
  • casinh ( - z ) == - casinh ( z )
  • z +0+0i の場合、結果は +0+0i
  • z x+∞i (任意の正の有限値x)の場合、結果は +∞+π/2
  • z x+NaNi (任意の有限値x)の場合、結果は NaN+NaNi となり、 FE_INVALID が発生する可能性がある
  • z +∞+yi (任意の正の有限値y)の場合、結果は +∞+0i
  • z +∞+∞i の場合、結果は +∞+iπ/4
  • z +∞+NaNi の場合、結果は +∞+NaNi
  • z NaN+0i の場合、結果は NaN+0i
  • z NaN+yi (任意の有限の非ゼロ値y)の場合、結果は NaN+NaNi となり、 FE_INVALID が発生する可能性がある
  • z NaN+∞i の場合、結果は ±∞+NaNi (実部の符号は未規定)
  • z NaN+NaNi の場合、結果は NaN+NaNi

注記

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

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

逆双曲正弦関数の主値の数学的定義は asinh z = ln(z + 1+z 2
)

For any z, asinh(z) =
asin(iz)
i

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

出力:

casinh(+0+2i) = 1.316958+1.570796i
casinh(-0+2i) (the other side of the cut) = -1.316958+1.570796i
casinh(1+2i) = 1.469352+1.063440i
casin(i * (1+2i))/i =  1.469352+1.063440i

参考文献

  • C11標準 (ISO/IEC 9899:2011):
  • 7.3.6.2 casinh関数 (p: 192-193)
  • 7.25 型総称数学 <tgmath.h> (p: 373-375)
  • G.6.2.2 casinh関数 (p: 540)
  • G.7 型総称数学 <tgmath.h> (p: 545)
  • C99標準 (ISO/IEC 9899:1999):
  • 7.3.6.2 casinh関数 (p: 174-175)
  • 7.22 型総称数学 <tgmath.h> (p: 335-337)
  • G.6.2.2 casinh関数 (p: 475)
  • G.7 型総称数学 <tgmath.h> (p: 480)

関連項目

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