std::proj(std::complex)
Von cppreference.com
| Definiert in der Header-Datei <complex> |
||
| template< class T > std::complex<T> proj( const std::complex<T>& z ); |
(1) | (seit C++11) |
| Zusätzliche Überladungen (seit C++11) |
||
| Definiert in der Header-Datei <complex> |
||
| (A) | ||
std::complex<float> proj( float f ); std::complex<double> proj( double f ); |
(bis C++23) | |
| template< class FloatingPoint > std::complex<FloatingPoint> proj( FloatingPoint f ); |
(seit C++23) | |
| template< class Integer > std::complex<double> proj( Integer i ); |
(B) | |
Für die meisten z gilt std::proj(z) == z, aber alle komplexen Unendlichkeiten, einschließlich der Zahlen, bei denen eine Komponente unendlich und die andere NaN ist, werden zu positiver reeller Unendlichkeit, (INFINITY, 0.0) oder (INFINITY, -0.0). Das Vorzeichen der imaginären (Null-)Komponente ist das Vorzeichen von std::imag(z).
A,B) Zusätzliche Überladungen für alle ganzzahligen und Gleitkommatypen werden bereitgestellt. Diese werden als komplexe Zahlen mit positiver reeller Null als Imaginärteil behandelt.
Inhalt |
[edit] Parameter
| z | - | komplexer Wert |
| f | - | Gleitkommawert |
| i | - | ganzzahliger Wert |
[edit] Rückgabewert
1) Die Projektion von z auf die Riemannsche Zahlenkugel.
A) Die Projektion von std::complex(f) auf die Riemannsche Zahlenkugel.
B) Die Projektion von std::complex<double>(i) auf die Riemannsche Zahlenkugel.
[edit] Anmerkungen
Die Funktion proj hilft bei der Modellierung der Riemannschen Zahlenkugel, indem sie alle Unendlichkeiten auf eine einzige (bis auf das Vorzeichen des imaginären Nullteils) abbildet. Sie sollte unmittelbar vor Operationen, insbesondere Vergleichen, verwendet werden, die bei anderen Unendlichkeiten zu fehlerhaften Ergebnissen führen könnten.
Die zusätzlichen Überladungen müssen nicht exakt wie in (A,B) angegeben bereitgestellt werden. Sie müssen nur ausreichen, um sicherzustellen, dass für ihr Argument num
- Wenn num einen Standard(bis C++23) Gleitkommatyp
That, dann hat std::proj(num) denselben Effekt wie std::proj(std::complex<T>(num)). - Andernfalls, wenn num einen ganzzahligen Typ hat, dann hat std::proj(num) denselben Effekt wie std::proj(std::complex<double>(num)).
[edit] Beispiel
Führen Sie diesen Code aus
#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'; }
Ausgabe
proj(1,2) = (1,2) proj(inf,-1) = (inf,-0) proj(0,-inf) = (inf,-0)
[edit] Siehe auch
| gibt den Betrag einer komplexen Zahl zurück (function template) | |
| gibt das Quadrat des Betrags zurück (function template) | |
| konstruiert eine komplexe Zahl aus Betrag und Phasenwinkel (function template) | |
| C-Dokumentation für cproj
| |