catanf, catan, catanl
From cppreference.com
| ヘッダー <complex.h> で定義 |
||
| (1) | (C99以降) | |
| (2) | (C99以降) | |
| (3) | (C99以降) | |
| ヘッダー <tgmath.h> で定義 |
||
| #define atan( z ) |
(4) | (C99以降) |
1-3)
z の複素数アークタンジェントを計算します。分岐カットは虚軸に沿って区間 [−i,+i] の外側にあります。4) 型汎用マクロ:
z の型が long double complex の場合、catanl が呼び出されます。z の型が double complex の場合、catan が呼び出されます。z の型が float complex の場合、catanf が呼び出されます。z が実数または整数である場合、マクロは対応する実数関数(atanf、atan、atanl)を呼び出します。z が虚数である場合、マクロは対応する実数バージョンの関数 atanh を呼び出し、式 atan(iy) = i atanh(y) を実装し、マクロの戻り値の型は虚数になります。目次 |
[編集] パラメータ
| z | - | 複素数引数 |
[編集] 戻り値
エラーが発生しない場合、z の複素数アークタンジェントが返されます。範囲は、虚軸に沿って無限大ですが、実軸に沿っては区間 [−π/2; +π/2] になります。
エラーおよび特殊ケースは、操作が -I * catanh(I*z) によって実装されているかのように処理されます。
[編集] 注記
逆正接(またはアークタンジェント)は多価関数であり、複素平面上に分岐カットが必要です。分岐カットは、慣例により虚軸上の線分 (-∞i,-i) と (+i,+∞i) に配置されます。
逆正接の主値の数学的定義は atan z = -| 1 |
| 2 |
[編集] 例
このコードを実行
#include <stdio.h> #include <float.h> #include <complex.h> int main(void) { double complex z = catan(2*I); printf("catan(+0+2i) = %f%+fi\n", creal(z), cimag(z)); double complex z2 = catan(-conj(2*I)); // or CMPLX(-0.0, 2) printf("catan(-0+2i) (the other side of the cut) = %f%+fi\n", creal(z2), cimag(z2)); double complex z3 = 2*catan(2*I*DBL_MAX); // or CMPLX(0, INFINITY) printf("2*catan(+0+i*Inf) = %f%+fi\n", creal(z3), cimag(z3)); }
出力
catan(+0+2i) = 1.570796+0.549306i catan(-0+2i) (the other side of the cut) = -1.570796+0.549306i 2*catan(+0+i*Inf) = 3.141593+0.000000i
[編集] 参考文献
- C11標準 (ISO/IEC 9899:2011)
- 7.3.5.3 The catan functions (p: 191)
- 7.25 型総称数学関数 <tgmath.h> (p: 373-375)
- G.7 Type-generic math <tgmath.h> (p: 545)
- C99標準 (ISO/IEC 9899:1999)
- 7.3.5.3 The catan functions (p: 173)
- 7.22 型総称数学関数 <tgmath.h> (p: 335-337)
- G.7 Type-generic math <tgmath.h> (p: 480)
[編集] 関連項目
| (C99)(C99)(C99) |
複素アークサインを計算する (関数) |
| (C99)(C99)(C99) |
複素アークコサインを計算する (関数) |
| (C99)(C99)(C99) |
複素タンジェントを計算する (関数) |
| (C99)(C99) |
アークタンジェントを計算する (arctan(x)) (関数) |
| C++ ドキュメント (atan)
| |