catanhf, catanh, catanhl
From cppreference.net
|
定義先ヘッダ
<complex.h>
|
||
| (1) | (C99以降) | |
| (2) | (C99以降) | |
| (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 |
| 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)
)
(関数) |
|
C++ドキュメント
for
atanh
|
|