「cpp/numeric/complex/proj」の版間の差分
提供: cppreference.com
21行: | 21行: | ||
複素数 {{tt|z}} のリーマン球面への射影を返します。 | 複素数 {{tt|z}} のリーマン球面への射影を返します。 | ||
− | ほとんどの {{tt|z}} に対しては {{c|1=std::proj(z)==z}} | + | ほとんどの {{tt|z}} に対しては {{c|1=std::proj(z)==z}} (実部と虚部の片方が無限大で他方が NaN の場合を含む) は正の実数の無限大 {{c|(INFINITY, 0)}} または {{c|(INFINITY, -0)}} になります。 虚部 (ゼロ) の符号は {{c|std::imag(z)}} の符号です。 |
{{c|float}}, {{c|double}}, {{c|long double}} およびすべての整数型に対する追加のオーバーロードが提供されます。 これらの型は虚部がゼロの複素数として扱われます。 | {{c|float}}, {{c|double}}, {{c|long double}} およびすべての整数型に対する追加のオーバーロードが提供されます。 これらの型は虚部がゼロの複素数として扱われます。 |
2018年5月17日 (木) 17:40時点における最新版
ヘッダ <complex> で定義
|
||
template< class T > complex<T> proj( const complex<T>& z ); |
(1) | (C++11以上) |
std::complex<long double> proj( long double z ); |
(2) | (C++11以上) |
template< class DoubleOrInteger > std::complex<double> proj( DoubleOrInteger z ); |
(3) | (C++11以上) |
std::complex<float> proj( float z ); |
(4) | (C++11以上) |
複素数 z
のリーマン球面への射影を返します。
ほとんどの z
に対しては std::proj(z)==z ですが、すべての複素無限大 (実部と虚部の片方が無限大で他方が NaN の場合を含む) は正の実数の無限大 (INFINITY, 0) または (INFINITY, -0) になります。 虚部 (ゼロ) の符号は std::imag(z) の符号です。
float, double, long double およびすべての整数型に対する追加のオーバーロードが提供されます。 これらの型は虚部がゼロの複素数として扱われます。
目次 |
[編集] 引数
z | - | 複素数の値 |
[編集] 戻り値
z
のリーマン球面への射影。
[編集] ノート
proj 関数は、すべての無限大をひとつに対応付けることによって、リーマン球面のモデル化を補助します (虚部のゼロの符号は与えるか取るかします)。 あらゆる他の無限大に対して誤った結果を与える可能性のあるあらゆる演算 (特に比較) の前に使用されるべきです。
[編集] 例
Run this code
#include <iostream> #include <complex> 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)
[編集] 関連項目
複素数の絶対値を返します (関数テンプレート) | |
絶対値の平方を返します (関数テンプレート) | |
絶対値と偏角から複素数を構築します (関数テンプレート) | |
cproj の C言語リファレンス
|