table of contents
std::proj(std::complex)(3) | C++ Standard Libary | std::proj(std::complex)(3) |
NAME¶
std::proj(std::complex) - std::proj(std::complex)
Synopsis¶
Defined in header <complex>
template< class T > (1) (since C++11)
std::complex<T> proj( const std::complex<T>& z );
std::complex<long double> proj( long double z ); (2) (since
C++11)
template< class DoubleOrInteger > (3) (since C++11)
std::complex<double> proj( DoubleOrInteger z );
std::complex<float> proj( float z ); (4) (since
C++11)
Returns the projection of the complex number z onto the Riemann sphere.
For most z, std::proj(z)==z, but all complex infinities, even the numbers
where one
component is infinite and the other is NaN, become positive real infinity,
(INFINITY, 0.0) or (INFINITY, -0.0). The sign of the imaginary (zero)
component is
the sign of std::imag(z).
Additional overloads are provided for float, double, long double, and all
integer
types, which are treated as complex numbers with positive zero imaginary
component.
Parameters¶
z - complex value
Return value¶
the projection of z onto the Riemann sphere
Notes¶
The proj function helps model the Riemann sphere by mapping all
infinities to one
(give or take the sign of the imaginary zero), and should be used just before
any
operation, especially comparisons, that might give spurious results for any
of the
other infinities.
Example¶
// 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';
}
Output:¶
proj(1,2) = (1,2)
proj(inf,-1) = (inf,-0)
proj(0,-inf) = (inf,-0)
See also¶
abs(std::complex) returns the magnitude of a complex number
(function template)
norm returns the squared magnitude
(function template)
polar constructs a complex number from magnitude and phase angle
(function template)
2022.07.31 | http://cppreference.com |