std::polar(std::complex)
Von cppreference.com
| Definiert in der Header-Datei <complex> |
||
| template< class T > std::complex<T> polar( const T& r, const T& theta = T() ); |
||
Gibt eine komplexe Zahl mit Betrag r und Phasenwinkel theta zurück.
Das Verhalten ist undefiniert, wenn r negativ oder NaN ist oder wenn theta unendlich ist.
Inhalt |
[bearbeiten] Parameter
| r | - | Betrag |
| theta | - | Phasenwinkel |
[bearbeiten] Rückgabewert
Eine komplexe Zahl, die durch r und theta bestimmt wird.
[bearbeiten] Hinweise
std::polar(r, theta) ist äquivalent zu einem der folgenden Ausdrücke
- r * std::exp(theta * 1i)
- r * (cos(theta) + sin(theta) * 1i)
- std::complex(r * cos(theta), r * sin(theta)).
Die Verwendung von polar anstelle von exp kann in vektorisierten Schleifen etwa 4,5x schneller sein.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <cmath> #include <complex> #include <iomanip> #include <iostream> #include <numbers> using namespace std::complex_literals; int main() { constexpr auto π_2{std::numbers::pi / 2.0}; constexpr auto mag{1.0}; std::cout << std::fixed << std::showpos << std::setprecision(1) << " θ: │ polar: │ exp: │ complex: │ trig:\n"; for (int n{}; n != 4; ++n) { const auto θ{n * π_2}; std::cout << std::setw(4) << 90 * n << "° │ " << std::polar(mag, θ) << " │ " << mag * std::exp(θ * 1.0i) << " │ " << std::complex(mag * cos(θ), mag * sin(θ)) << " │ " << mag * (cos(θ) + 1.0i * sin(θ)) << '\n'; } }
Ausgabe
θ: │ polar: │ exp: │ complex: │ trig: +0° │ (+1.0,+0.0) │ (+1.0,+0.0) │ (+1.0,+0.0) │ (+1.0,+0.0) +90° │ (+0.0,+1.0) │ (+0.0,+1.0) │ (+0.0,+1.0) │ (+0.0,+1.0) +180° │ (-1.0,+0.0) │ (-1.0,+0.0) │ (-1.0,+0.0) │ (-1.0,+0.0) +270° │ (-0.0,-1.0) │ (-0.0,-1.0) │ (-0.0,-1.0) │ (-0.0,-1.0)
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 2459 | C++98 | Verhalten für einige Eingaben unklar | als undefiniert markiert |
| LWG 2870 | C++98 | Standardwert des Parameters theta nicht abhängig | als abhängig markiert |
[bearbeiten] Siehe auch
| gibt den Betrag einer komplexen Zahl zurück (function template) | |
| gibt den Phasenwinkel zurück (function template) | |
| komplexer Basis-e-Exponentialwert (function template) |