std::proj(std::complex)
| Defined in header <complex>
|
||
| template< class T > std::complex<T> proj( const std::complex<T>& z ); |
(1) | (since C++11) |
| Additional overloads (since C++11) |
||
| Defined in header <complex>
|
||
| (A) | ||
std::complex<float> proj( float f ); std::complex<double> proj( double f ); |
(until C++23) | |
| template< class FloatingPoint > std::complex<FloatingPoint> proj( FloatingPoint f ); |
(since C++23) | |
| template< class Integer > std::complex<double> proj( Integer i ); |
(B) | |
Contents |
[edit] Parameters
| z | - | complex value |
| f | - | floating-point value |
| i | - | integer value |
[edit] Return value
[edit] 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.
The additional overloads are not required to be provided exactly as (A,B). They only need to be sufficient to ensure that for their argument num:
- If num has a standard(until C++23) floating-point type
T, then std::proj(num) has the same effect as std::proj(std::complex<T>(num)). - Otherwise, if num has an integer type, then std::proj(num) has the same effect as std::proj(std::complex<double>(num)).
[edit] Example
#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'; }
Output:
proj(1,2) = (1,2) proj(inf,-1) = (inf,-0) proj(0,-inf) = (inf,-0)
[edit] See also
| returns the magnitude of a complex number (function template) | |
| returns the squared magnitude (function template) | |
| constructs a complex number from magnitude and phase angle (function template) | |
| C documentation for cproj
| |

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
