std:: log (std::complex)
|
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) |
|
|
C-Dokumentation
für
clog
|
|