Namespaces
Variants

std:: log (std::complex)

From cppreference.net
Definiert im Header <complex>
template < class T >
std:: complex < T > log ( const std:: complex < T > & z ) ;

Berechnet den komplexen natürlichen Logarithmus (Basis e ) eines komplexen Werts z mit einem Verzweigungsschnitt entlang der negativen reellen Achse.

Inhaltsverzeichnis

Parameter

z - komplexer Wert

Rückgabewert

Wenn keine Fehler auftreten, wird der komplexe natürliche Logarithmus von z zurückgegeben, im Bereich eines Streifens im Intervall [−iπ, +iπ] entlang der imaginären Achse und mathematisch unbeschränkt entlang der reellen Achse.

Fehlerbehandlung und spezielle Werte

Fehler werden gemeldet konsistent mit math_errhandling .

Wenn die Implementierung IEEE-Gleitkommaarithmetik unterstützt,

  • Die Funktion ist auf dem Verzweigungsschnitt stetig unter Berücksichtigung des Vorzeichens des Imaginärteils
  • std:: log ( std:: conj ( z ) ) == std:: conj ( std:: log ( z ) )
  • Wenn z (-0,+0) ist, ist das Ergebnis (-∞,π) und FE_DIVBYZERO wird ausgelöst
  • Wenn z (+0,+0) ist, ist das Ergebnis (-∞,+0) und FE_DIVBYZERO wird ausgelöst
  • Wenn z (x,+∞) ist (für jedes endliche x), ist das Ergebnis (+∞,π/2)
  • Wenn z (x,NaN) ist (für jedes endliche x), ist das Ergebnis (NaN,NaN) und FE_INVALID kann ausgelöst werden
  • Wenn z (-∞,y) ist (für jedes endliche positive y), ist das Ergebnis (+∞,π)
  • Wenn z (+∞,y) ist (für jedes endliche positive y), ist das Ergebnis (+∞,+0)
  • Wenn z (-∞,+∞) ist, ist das Ergebnis (+∞,3π/4)
  • Wenn z (+∞,+∞) ist, ist das Ergebnis (+∞,π/4)
  • Wenn z (±∞,NaN) ist, ist das Ergebnis (+∞,NaN)
  • Wenn z (NaN,y) ist (für jedes endliche y), ist das Ergebnis (NaN,NaN) und FE_INVALID kann ausgelöst werden
  • Wenn z (NaN,+∞) ist, ist das Ergebnis (+∞,NaN)
  • Wenn z (NaN,NaN) ist, ist das Ergebnis (NaN,NaN)

Hinweise

Der natürliche Logarithmus einer komplexen Zahl z mit Polarkoordinatenkomponenten (r,θ) entspricht ln r + i(θ+2nπ) , wobei der Hauptwert ln r + iθ beträgt.

Die Semantik dieser Funktion soll konsistent mit der C-Funktion clog sein.

Beispiel

#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';
}

Mögliche Ausgabe:

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)

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 2597 C++98 Spezifikation behandelt negative Null-Imaginärteile falsch fehlerhafte Anforderung entfernt

Siehe auch

Komplexer dekadischer Logarithmus mit den Verzweigungsschnitten entlang der negativen reellen Achse
(Funktionstemplate)
Komplexe Exponentialfunktion zur Basis e
(Funktionstemplate)
(C++11) (C++11)
berechnet den natürlichen Logarithmus (Basis e ) ( ln(x) )
(Funktion)
wendet die Funktion std::log auf jedes Element des Valarray an
(Funktionstemplate)