Namespaces
Variants

std:: polar (std::complex)

From cppreference.net
Definido en el encabezado <complex>
template < class T >
std:: 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 es indefinido si r es negativo o NaN, o si theta es infinito.

Contenidos

Parámetros

r - magnitud
theta - ángulo de fase

Valor de retorno

Un número complejo determinado por r y theta .

Notas

std :: polar ( r, theta ) es equivalente a cualquiera de las siguientes expresiones:

  • r * std:: exp ( theta * 1i )
  • r * ( cos ( theta ) + sin ( theta ) * 1i )
  • std:: complex ( r * cos ( theta ) , r * sin ( theta ) ) .
**Nota:** El texto dentro de las etiquetas ` `, `
`, `` y `` no se ha traducido, ya que contiene código C++ y términos específicos que deben conservarse en su idioma original. El contenido fuera de estas etiquetas se ha mantenido en español según las instrucciones.

Usar polar en lugar de exp puede ser aproximadamente 4.5x más rápido en bucles vectorizados.

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)

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Se aplica a Comportamiento publicado Comportamiento correcto
LWG 2459 C++98 comportamiento poco claro para algunas entradas definido como no definido
LWG 2870 C++98 el valor por defecto del parámetro theta no era dependiente hecho 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)
exponencial compleja de base e
(plantilla de función)