Namensräume
Varianten
Aktionen

std::log(std::complex)

Von cppreference.com
< cpp‎ | numeric‎ | complex
 
 
 
 
Definiert in der Header-Datei <complex>
template< class T >
std::complex<T> log( const std::complex<T>& z );

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

Inhalt

[edit] Parameter

z - komplexer Wert

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

[edit] Fehlerbehandlung und Sonderwerte

Fehler werden konsistent mit math_errhandling gemeldet.

Wenn die Implementierung IEEE-Gleitkomma-Arithmetik unterstützt,

  • Die Funktion ist kontinuierlich auf dem Schnitt, 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)

[edit] Hinweise

Der natürliche Logarithmus einer komplexen Zahl z mit den Polarkoordinatenkomponenten (r,θ) ist gleich ln r + i(θ+2nπ), wobei der Hauptwert ln r + iθ ist.

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

[edit] 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)

[edit] Fehlerberichte

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

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 2597 C++98 Spezifikation behandelt vorzeichenbehaftete Null-Imaginärteile fehlerhaft fehlerhafte Anforderung entfernt

[edit] Siehe auch

komplexer gemeinsamer Logarithmus mit dem Schnitt entlang der negativen reellen Achse
(function template) [edit]
komplexer Basis-e-Exponentialwert
(function template) [edit]
(C++11)(C++11)
berechnet den natürlichen (Basis e) Logarithmus (ln(x))
(Funktion) [bearbeiten]
wendet die Funktion std::log auf jedes Element des Valarrays an
(function template) [edit]
C-Dokumentation für clog