catanhf, catanh, catanhl
提供: cppreference.com
ヘッダ <complex.h> で定義 | ||
(1) | (C99以上) | |
(2) | (C99以上) | |
(3) | (C99以上) | |
ヘッダ <tgmath.h> で定義 | ||
#define atanh( z ) | (4) | (C99以上) |
1-3)
z
の複素逆双曲線正接を計算します。 実軸に沿って区間 [−1; +1] の外側に分岐切断を持ちます。4) 型総称マクロ。
z
が longdoublecomplex 型の場合は catanhl
が呼ばれ、 z
が doublecomplex 型の場合は catanh
が呼ばれ、 z
が floatcomplex 型の場合は 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 標準はこの関数に「complex arc hyperbolic tangent」と名付けていますが、双曲線関数の逆関数は面積関数です。 引数は双曲的扇形の面積であり、円弧 (arc) ではありません。 正しい名前は「complex inverse hyperbolic tangent」、あるいは、あまり一般的ではありませんが、「complex area hyperbolic tangent」です。
逆双曲線正接は多値関数であり、複素平面上に分岐切断を要求します。 分岐切断は慣習的に実軸上の線分 (-∞,-1] および [+1,+∞) に置かれます。
逆双曲線正接の主値の数学的な定義は atanh z =ln(1+z)-ln(z-1) |
2 |
atan(iz) |
i |
[編集]例
Run this code
#include <stdio.h>#include <complex.h> int main(void){doublecomplex z = catanh(2);printf("catanh(+2+0i) = %f%+fi\n", creal(z), cimag(z)); doublecomplex z2 = catanh(conj(2));// or catanh(CMPLX(2, -0.0)) in C11printf("catanh(+2-0i) (the other side of the cut) = %f%+fi\n", creal(z2), cimag(z2)); // for any z, atanh(z) = atan(iz)/idoublecomplex z3 = catanh(1+2*I);printf("catanh(1+2i) = %f%+fi\n", creal(z3), cimag(z3));doublecomplex 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 standard (ISO/IEC 9899:2011):
- 7.3.6.3 The catanh functions (p: 193)
- 7.25 Type-generic math <tgmath.h> (p: 373-375)
- G.6.2.3 The catanh functions (p: 540-541)
- G.7 Type-generic math <tgmath.h> (p: 545)
- C99 standard (ISO/IEC 9899:1999):
- 7.3.6.3 The catanh functions (p: 175)
- 7.22 Type-generic math <tgmath.h> (p: 335-337)
- G.6.2.3 The catanh functions (p: 475-476)
- G.7 Type-generic math <tgmath.h> (p: 480)
[編集]関連項目
(C99)(C99)(C99) | 複素数逆双曲線正弦を計算します (関数) |
(C99)(C99)(C99) | 複素数逆双曲線余弦を計算します (関数) |
(C99)(C99)(C99) | 複素数双曲線正接を計算します (関数) |
(C99)(C99)(C99) | 逆双曲線正接 (artanh(x)) を計算します (関数) |
atanh の C++リファレンス |