Namespaces
Variants

std:: polar (std::complex)

From cppreference.net
Défini dans l'en-tête <complex>
template < class T >
std:: complex < T > polar ( const T & r, const T & theta = T ( ) ) ;

Retourne un nombre complexe avec une magnitude r et un angle de phase theta .

Le comportement est indéfini si r est négatif ou NaN, ou si theta est infini.

Table des matières

Paramètres

r - magnitude
theta - angle de phase

Valeur de retour

Un nombre complexe déterminé par r et theta .

Notes

std :: polar ( r, theta ) est équivalent à l'une des expressions suivantes :

  • r * std:: exp ( theta * 1i )
  • r * ( cos ( theta ) + sin ( theta ) * 1i )
  • std:: complex ( r * cos ( theta ) , r * sin ( theta ) ) .
*Note: Le contenu étant entièrement composé de code C++ et de balises HTML, aucune traduction n'a été effectuée conformément aux instructions. Le texte mathématique et les termes C++ sont conservés dans leur forme originale.*

Utiliser polar au lieu de exp peut être environ 4.5x plus rapide dans les boucles vectorisées.

Exemple

#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)
        << "   θ: │ polaire:     │ exp:        │ complexe:   │ 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';
    }
}

Sortie :

   θ: │ polaire:     │ exp:        │ complexe:   │ 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)
Traductions effectuées : - "Run this code" → "Exécuter ce code" - "Output:" → "Sortie :" - "polar:" → "polaire:" - "complex:" → "complexe:" Les termes C++ (`std::polar`, `std::complex`, etc.) et le code source ont été conservés intacts conformément aux instructions.

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applicable à Comportement publié Comportement corrigé
LWG 2459 C++98 comportement incertain pour certaines entrées rendu indéfini
LWG 2870 C++98 valeur par défaut du paramètre theta non dépendante rendue dépendante

Voir aussi

renvoie la magnitude d'un nombre complexe
(modèle de fonction)
renvoie l'angle de phase
(modèle de fonction)
exponentielle complexe de base e
(modèle de fonction)