cprojf, cproj, cprojl
提供: cppreference.com
ヘッダ <complex.h> で定義 | ||
(1) | (C99以上) | |
(2) | (C99以上) | |
(3) | (C99以上) | |
ヘッダ <tgmath.h> で定義 | ||
#define cproj( z ) | (4) | (C99以上) |
1-3) リーマン球面上の
z
の射影を計算します。4) 型総称マクロ。
z
が longdoublecomplex、 longdoubleimaginary または longdouble の場合は cprojl
が呼ばれます。 z
が floatcomplex、 floatimaginary または float の場合は cprojf
が呼ばれます。 z
が doublecomplex、 doubleimaginary、 double または任意の整数型の場合は cproj
が呼ばれます。ほとんどの z
に対しては cproj(z)==z ですが、すべての複素無限大 (実部と虚部の片方が無限大で他方が NaN の場合を含む) は正の実数の無限大 INFINITY+0.0*I または INFINITY-0.0*I になります。 虚部 (ゼロ) の符号は cimag(z) の符号になります。
目次 |
[編集]引数
z | - | 複素数の引数 |
[編集]戻り値
リーマン球面上の z
の射影。
この関数はすべての有り得る入力に対して完全に規定されており、 math_errhandling に記載されているいかなるエラーの対象でもありません。
[編集]ノート
cproj 関数は、すべての無限大をひとつに対応付けることによって、リーマン球面のモデル化を補助します (虚部のゼロの符号は与えるか取るかします)。 あらゆる他の無限大に対して誤った結果を与える可能性のあるあらゆる演算 (特に比較) の前に使用されるべきです。
[編集]例
Run this code
#include <stdio.h>#include <complex.h>#include <math.h> int main(void){doublecomplex z1 = cproj(1+2*I);printf("cproj(1+2i) = %.1f%+.1fi\n", creal(z1),cimag(z1)); doublecomplex z2 = cproj(INFINITY+2.0*I);printf("cproj(Inf+2i) = %.1f%+.1fi\n", creal(z2),cimag(z2)); doublecomplex z3 = cproj(INFINITY-2.0*I);printf("cproj(Inf-2i) = %.1f%+.1fi\n", creal(z3),cimag(z3));}
出力:
cproj(1+2i) = 1.0+2.0i cproj(Inf+2i) = inf+0.0i cproj(Inf-2i) = inf-0.0i
[編集]参考文献
- C11 standard (ISO/IEC 9899:2011):
- 7.3.9.5 The cproj functions (p: 198)
- 7.25 Type-generic math <tgmath.h> (p: 373-375)
- G.7 Type-generic math <tgmath.h> (p: 545)
- C99 standard (ISO/IEC 9899:1999):
- 7.3.9.4 The cproj functions (p: 179)
- 7.22 Type-generic math <tgmath.h> (p: 335-337)
- G.7 Type-generic math <tgmath.h> (p: 480)
[編集]関連項目
proj の C++リファレンス |