std::polar(std::complex)
De cppreference.com
<tbody>
</tbody>
| Definido en el archivo de encabezado <complex>
|
||
template< class T > complex<T> polar( const T& r, const T& theta = T() ); |
||
Devuelve un número complejo con magnitud r y ángulo de fase theta.
El comportamiento no está definido si r es negativo o NaN, o si theta es infinito.
Parámetros
| r | - | La magnitud. |
| theta | - | El ángulo de fase. |
Valor de retorno
Un número complejo determinado por r y theta.
Notas
std::polar(r, theta) es equivelente a cualquiera de las expresiones siguientes:
r * std::exp(theta * 1i)r * (cos(theta) + sin(theta) * 1i)std::complex(r * cos(theta), r * sin(theta)).
Usar polar en lugar de exp puede ser aproximadamente 4.5x más rápido en bucles vectorizados.
Ejemplo
Ejecuta este código
#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';
}
}
Salida:
θ: │ 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)
Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
| ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2459 | C++98 | El comportamiento no estaba claro para algunas entradas. | Se hizo no definido. |
| LWG 2870 | C++98 | El valor por defecto del parámetro theta no era dependiente,
|
Se hizo dependiente. |
Véase también
| Devuelve la magnitud de un número complejo. (plantilla de función) | |
| Devuelve el ángulo de fase. (plantilla de función) | |
| Base e exponencial compleja. (plantilla de función) |