Namespaces
Variants

catanhf, catanh, catanhl

From cppreference.net
定義先ヘッダ <complex.h>
float complex catanhf ( float complex z ) ;
(1) (C99以降)
double complex catanh ( double complex z ) ;
(2) (C99以降)
long double complex catanhl ( long double complex z ) ;
(3) (C99以降)
定義先ヘッダ <tgmath.h>
#define atanh( z )
(4) (C99以降)
1-3) 区間 [−1; +1] の外側に分岐切断を持ち、実軸に沿った複素数の双曲線逆正接を z について計算します。
4) 型総称マクロ: z の型が long double complex の場合、 catanhl が呼び出される。 z の型が double complex の場合、 catanh が呼び出される。 z の型が float complex の場合、 catanhf が呼び出される。 z が実数または整数の場合、マクロは対応する実数関数( atanhf atanh atanhl )を呼び出す。 z が虚数の場合、マクロは atan の対応する実数版を呼び出し、式 atanh(iy) = i atan(y) を実装し、戻り値の型は虚数型となる。

目次

パラメータ

z - 複素引数

戻り値

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

エラー処理と特殊値

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

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

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

注記

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

逆双曲線正接関数は多価関数であり、複素平面上で分岐切断を必要とします。分岐切断は通常、実軸上の線分 (-∞,-1] および [+1,+∞) に配置されます。

The mathematical definition of the principal value of the inverse hyperbolic tangent is atanh z =
ln(1+z)-ln(z-1)
2
.


For any z, atanh(z) =
atan(iz)
i

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

出力:

catanh(+2+0i) = 0.549306+1.570796i
catanh(+2-0i) (the other side of the cut) = 0.549306-1.570796i
catanh(1+2i) = 0.173287+1.178097i
catan(i * (1+2i))/i = 0.173287+1.178097i

参考文献

  • C11標準 (ISO/IEC 9899:2011):
  • 7.3.6.3 catanh関数群 (p: 193)
  • 7.25 総称数学 <tgmath.h> (p: 373-375)
  • G.6.2.3 catanh関数群 (p: 540-541)
  • G.7 総称数学 <tgmath.h> (p: 545)
  • C99標準 (ISO/IEC 9899:1999):
  • 7.3.6.3 catanh関数群 (p: 175)
  • 7.22 総称数学 <tgmath.h> (p: 335-337)
  • G.6.2.3 catanh関数群 (p: 475-476)
  • G.7 総称数学 <tgmath.h> (p: 480)

関連項目

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