Espacios de nombres
Variantes
Acciones

std::polar(std::complex)

De cppreference.com
< cpp‎ | numeric‎ | complex
 
 
 
std::complex
Funciones miembro
Funciones no miembro
(C++11)
polar
Funciones exponenciales
Funciones de potencias
Funciones trigonométricas
(C++11)
(C++11)
(C++11)
Funciones hiperbólicas
(C++11)
(C++11)
(C++11)
 
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.

Contenido

[editar] Parámetros

r - La magnitud.
theta - El ángulo de fase.

[editar] Valor de retorno

Un número complejo determinado por r y theta.

[editar] 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.

[editar] Ejemplo

#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)

[editar] 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.

[editar] Véase también

Devuelve la magnitud de un número complejo.
(plantilla de función) [editar]
Devuelve el ángulo de fase.
(plantilla de función) [editar]
Base e exponencial compleja.
(plantilla de función) [editar]