cprojf, cproj, cprojl
From cppreference.com
| ヘッダー <complex.h> で定義 |
||
| (1) | (C99以降) | |
| (2) | (C99以降) | |
| (3) | (C99以降) | |
| ヘッダー <tgmath.h> で定義 |
||
| #define cproj( z ) |
(4) | (C99以降) |
1-3)
z のリーマン球への射影を計算します。4) 型汎用マクロ:
z が long double complex, long double imaginary, または long double 型の場合、cprojl が呼び出されます。z が float complex, float imaginary, または float 型の場合、cprojf が呼び出されます。z が double complex, double imaginary, double, または任意の整数型の場合、cproj が呼び出されます。ほとんどの z に対して cproj(z)==z ですが、すべての複素数無限大、たとえ一方の成分が無限大で他方が NaN である数でさえ、正の実無限大、INFINITY+0.0*I または INFINITY-0.0*I にマッピングされます。虚数(ゼロ)成分の符号は cimag(z) の符号になります。
目次 |
[編集] パラメータ
| z | - | 複素数引数 |
[編集] 戻り値
z のリーマン球への射影。
この関数は、すべての可能な入力に対して完全に指定されており、math_errhandling に記載されているエラーの対象にはなりません。
[編集] 注記
cproj 関数は、すべての無限大を 1 つ(虚数ゼロの符号による多少の違いはありますが)にマッピングすることによりリーマン球のモデリングを支援し、他の無限大に対して偽の結果をもたらす可能性のある操作、特に比較の直前に使用されるべきです。
[編集] 例
このコードを実行
#include <stdio.h> #include <complex.h> #include <math.h> int main(void) { double complex z1 = cproj(1 + 2*I); printf("cproj(1+2i) = %.1f%+.1fi\n", creal(z1),cimag(z1)); double complex z2 = cproj(INFINITY+2.0*I); printf("cproj(Inf+2i) = %.1f%+.1fi\n", creal(z2),cimag(z2)); double complex 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標準 (ISO/IEC 9899:2011)
- 7.3.9.5 The cproj functions (p: 198)
- 7.25 型総称数学関数 <tgmath.h> (p: 373-375)
- G.7 Type-generic math <tgmath.h> (p: 545)
- C99標準 (ISO/IEC 9899:1999)
- 7.3.9.4 The cproj functions (p: 179)
- 7.22 型総称数学関数 <tgmath.h> (p: 335-337)
- G.7 Type-generic math <tgmath.h> (p: 480)
[編集] 関連項目
| C++ ドキュメント (
proj ) |