std:: proj (std::complex)
|
ヘッダー
<complex>
で定義
|
||
|
template
<
class
T
>
std:: complex < T > proj ( const std:: complex < T > & z ) ; |
(1) | (C++11以降) |
|
追加のオーバーロード
(C++11以降)
|
||
|
ヘッダー
<complex>
で定義
|
||
| (A) | ||
|
std::
complex
<
float
>
proj
(
float
f
)
;
std::
complex
<
double
>
proj
(
double
f
)
;
|
(C++23以前) | |
|
template
<
class
FloatingPoint
>
std:: complex < FloatingPoint > proj ( FloatingPoint f ) ; |
(C++23以降) | |
|
template
<
class
Integer
>
std:: complex < double > proj ( Integer i ) ; |
(B) | |
目次 |
パラメータ
| z | - | 複素数値 |
| f | - | 浮動小数点値 |
| i | - | 整数値 |
戻り値
注記
proj 関数は、すべての無限大を1つにマッピングすることでリーマン球面をモデル化するのに役立ち(虚数ゼロの符号を除く)、特に比較など、他の無限大に対して疑わしい結果を生じる可能性のある操作の直前に使用する必要があります。
追加のオーバーロードは (A,B) と厳密に同一である必要はありません。それらは引数 num に対して以下を保証するのに十分であればよいのです:
-
num
が
標準
(C++23まで)
浮動小数点型
Tを持つ場合、 std :: proj ( num ) は std :: proj ( std:: complex < T > ( num ) ) と同じ効果を持つ。 - それ以外の場合、 num が整数型を持つならば、 std :: proj ( num ) は std :: proj ( std:: complex < double > ( num ) ) と同じ効果を持つ。
例
#include <complex> #include <iostream> int main() { std::complex<double> c1(1, 2); std::cout << "proj" << c1 << " = " << std::proj(c1) << '\n'; std::complex<double> c2(INFINITY, -1); std::cout << "proj" << c2 << " = " << std::proj(c2) << '\n'; std::complex<double> c3(0, -INFINITY); std::cout << "proj" << c3 << " = " << std::proj(c3) << '\n'; }
出力:
proj(1,2) = (1,2) proj(inf,-1) = (inf,-0) proj(0,-inf) = (inf,-0)
関連項目
|
複素数の絶対値を返す
(関数テンプレート) |
|
|
絶対値の2乗を返す
(関数テンプレート) |
|
|
絶対値と偏角から複素数を構築する
(関数テンプレート) |
|
|
Cドキュメント
for
cproj
|
|