名前空間
変種
操作

std::proj(std::complex)

提供: cppreference.com
< cpp‎ | numeric‎ | complex
 
 
 
 
ヘッダ <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 関数は、すべての無限大をひとつに対応付けることによって、リーマン球面のモデル化を補助します (虚部のゼロの符号は与えるか取るかします)。 あらゆる他の無限大に対して誤った結果を与える可能性のあるあらゆる演算 (特に比較) の前に使用されるべきです。

[編集]

#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)

[編集] 関連項目

複素数の絶対値を返します
(関数テンプレート) [edit]
絶対値の平方を返します
(関数テンプレート) [edit]
絶対値と偏角から複素数を構築します
(関数テンプレート) [edit]