Namespaces
Variants

std:: log (std::complex)

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

Calcule le logarithme naturel (base e ) complexe d'une valeur complexe z avec une coupure de branche le long de l'axe réel négatif.

Table des matières

Paramètres

z - valeur complexe

Valeur de retour

Si aucune erreur ne se produit, le logarithme naturel complexe de z est renvoyé, dans la plage d'une bande dans l'intervalle [−iπ, +iπ] le long de l'axe imaginaire et mathématiquement non borné le long de l'axe réel.

Gestion des erreurs et valeurs spéciales

Les erreurs sont signalées conformément à math_errhandling .

Si l'implémentation prend en charge l'arithmétique à virgule flottante IEEE,

  • La fonction est continue sur la coupure de branche en tenant compte du signe de la partie imaginaire
  • std:: log ( std:: conj ( z ) ) == std:: conj ( std:: log ( z ) )
  • Si z est (-0,+0) , le résultat est (-∞,π) et FE_DIVBYZERO est déclenché
  • Si z est (+0,+0) , le résultat est (-∞,+0) et FE_DIVBYZERO est déclenché
  • Si z est (x,+∞) (pour tout x fini), le résultat est (+∞,π/2)
  • Si z est (x,NaN) (pour tout x fini), le résultat est (NaN,NaN) et FE_INVALID peut être déclenché
  • Si z est (-∞,y) (pour tout y positif fini), le résultat est (+∞,π)
  • Si z est (+∞,y) (pour tout y positif fini), le résultat est (+∞,+0)
  • Si z est (-∞,+∞) , le résultat est (+∞,3π/4)
  • Si z est (+∞,+∞) , le résultat est (+∞,π/4)
  • Si z est (±∞,NaN) , le résultat est (+∞,NaN)
  • Si z est (NaN,y) (pour tout y fini), le résultat est (NaN,NaN) et FE_INVALID peut être déclenché
  • Si z est (NaN,+∞) , le résultat est (+∞,NaN)
  • Si z est (NaN,NaN) , le résultat est (NaN,NaN)

Notes

Le logarithme naturel d'un nombre complexe z avec des composantes en coordonnées polaires (r,θ) est égal à ln r + i(θ+2nπ) , avec la valeur principale ln r + iθ .

La sémantique de cette fonction est conçue pour être cohérente avec la fonction C clog .

Exemple

#include <cmath>
#include <complex>
#include <iostream>
int main()
{
    std::complex<double> z {0.0, 1.0}; // r = 1, θ = pi / 2
    std::cout << "2 * log" << z << " = " << 2.0 * std::log(z) << '\n';
    std::complex<double> z2 {sqrt(2.0) / 2, sqrt(2.0) / 2}; // r = 1, θ = pi / 4
    std::cout << "4 * log" << z2 << " = " << 4.0 * std::log(z2) << '\n';
    std::complex<double> z3 {-1.0, 0.0}; // r = 1, θ = pi
    std::cout << "log" << z3 << " = " << std::log(z3) << '\n';
    std::complex<double> z4 {-1.0, -0.0}; // the other side of the cut
    std::cout << "log" << z4 << " (the other side of the cut) = " << std::log(z4) << '\n';
}

Sortie possible :

2 * log(0,1) = (0,3.14159)
4 * log(0.707107,0.707107) = (0,3.14159)
log(-1,0) = (0,3.14159)
log(-1,-0) (the other side of the cut) = (0,-3.14159)

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 S'applique à Comportement tel que publié Comportement correct
LWG 2597 C++98 la spécification gère mal les parties imaginaires de zéro signé exigence erronée supprimée

Voir aussi

logarithme commun complexe avec les coupures de branche le long de l'axe réel négatif
(modèle de fonction)
exponentielle complexe de base e
(modèle de fonction)
(C++11) (C++11)
calcule le logarithme naturel (base e ) ( ln(x) )
(fonction)
applique la fonction std::log à chaque élément du valarray
(modèle de fonction)