Common mathematical functions | |||||||||||||||||||||||||||||||
Mathematical special functions(C++17) | |||||||||||||||||||||||||||||||
Mathematical constants(C++20) | |||||||||||||||||||||||||||||||
Basic linear algebra algorithms(C++26) | |||||||||||||||||||||||||||||||
Data-parallel types (SIMD)(C++26) | |||||||||||||||||||||||||||||||
Floating-point environment(C++11) | |||||||||||||||||||||||||||||||
Complex numbers | |||||||||||||||||||||||||||||||
Numeric array (valarray ) | |||||||||||||||||||||||||||||||
Pseudo-random number generation | |||||||||||||||||||||||||||||||
Bit manipulation(C++20) | |||||||||||||||||||||||||||||||
Saturation arithmetic(C++26) | |||||||||||||||||||||||||||||||
Factor operations | |||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||
Interpolations | |||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||
Generic numeric operations | |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
C-style checked integer arithmetic | |||||||||||||||||||||||||||||||
|
Defined in header <complex> | ||
template<class T> std::complex<T> proj(conststd::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 |
z | - | complex value |
f | - | floating-point value |
i | - | integer value |
Theproj 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 argumentnum:
T
, thenstd::proj(num) has the same effect asstd::proj(std::complex<T>(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';}
Output:
proj(1,2) = (1,2)proj(inf,-1) = (inf,-0)proj(0,-inf) = (inf,-0)
returns the magnitude of a complex number (function template)[edit] | |
returns the squared magnitude (function template)[edit] | |
constructs a complex number from magnitude and phase angle (function template)[edit] | |
C documentation forcproj |