Namensräume
Varianten
Aktionen

std::exp(std::complex)

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

Berechnet den Eulerschen Zahl-Exponentialwert von z, d.h. e (Eulersche Zahl, 2.7182818) hoch die z-Potenz.

Inhalt

[bearbeiten] Parameter

z - komplexer Wert

[bearbeiten] Rückgabewert

Wenn keine Fehler auftreten, wird e hoch die Potenz z, ez
, zurückgegeben.

[bearbeiten] Fehlerbehandlung und Sonderwerte

Fehler werden konsistent mit math_errhandling gemeldet.

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

  • std::exp(std::conj(z)) == std::conj(std::exp(z))
  • Wenn z (±0,+0) ist, ist das Ergebnis (1,+0)
  • Wenn z (x,+∞) ist (für ein beliebiges endliches x), ist das Ergebnis (NaN,NaN) und FE_INVALID wird ausgelöst.
  • Wenn z (x,NaN) ist (für ein beliebiges endliches x), ist das Ergebnis (NaN,NaN) und FE_INVALID kann ausgelöst werden.
  • Wenn z (+∞,+0) ist, ist das Ergebnis (+∞,+0)
  • Wenn z (-∞,y) ist (für ein beliebiges endliches y), ist das Ergebnis +0cis(y)
  • Wenn z (+∞,y) ist (für ein beliebiges endliches, von Null verschiedenes y), ist das Ergebnis +∞cis(y)
  • Wenn z (-∞,+∞) ist, ist das Ergebnis (±0,±0) (Vorzeichen sind nicht spezifiziert)
  • Wenn z (+∞,+∞) ist, ist das Ergebnis (±∞,NaN) und FE_INVALID wird ausgelöst (das Vorzeichen des Realteils ist nicht spezifiziert)
  • Wenn z (-∞,NaN) ist, ist das Ergebnis (±0,±0) (Vorzeichen sind nicht spezifiziert)
  • Wenn z (+∞,NaN) ist, ist das Ergebnis (±∞,NaN) (das Vorzeichen des Realteils ist nicht spezifiziert)
  • Wenn z (NaN,+0) ist, ist das Ergebnis (NaN,+0)
  • Wenn z (NaN,y) ist (für ein beliebiges von Null verschiedenes y), ist das Ergebnis (NaN,NaN) und FE_INVALID kann ausgelöst werden
  • Wenn z (NaN,NaN) ist, ist das Ergebnis (NaN,NaN)

wobei cis(y) cos(y) + i sin(y) ist.

[bearbeiten] Anmerkungen

Die komplexe Exponentialfunktion ez
für z = x+iy ist gleich ex
cis(y)
oder ex
(cos(y) + i sin(y))
.

Die Exponentialfunktion ist eine ganze Funktion in der komplexen Ebene und hat keine Schnitte.

Die folgenden Ausdrücke ergeben äquivalente Ergebnisse, wenn der Realteil 0 ist:

In diesem Fall kann exp etwa 4,5x langsamer sein. Eine der anderen Formen sollte anstelle des Aufrufs von exp mit einem Argument verwendet werden, dessen Realteil literales 0 ist. Es gibt jedoch keinen Vorteil, eine Laufzeitprüfung von z.real() == 0 zu vermeiden, um exp zu umgehen.

[bearbeiten] Beispiel

#include <cmath>
#include <complex>
#include <iostream>
 
int main()
{
   const double pi = std::acos(-1.0);
   const std::complex<double> i(0.0, 1.0);
 
   std::cout << std::fixed << " exp(i * pi) = " << std::exp(i * pi) << '\n';
}

Ausgabe

exp(i * pi) = (-1.000000,0.000000)

[bearbeiten] Siehe auch

komplexer natürlicher Logarithmus mit dem Schnitt entlang der negativen reellen Achse
(function template) [edit]
(C++11)(C++11)
gibt e hoch der gegebenen Potenz zurück (ex)
(Funktion) [bearbeiten]
wendet die Funktion std::exp auf jedes Element des Valarrays an
(function template) [edit]
konstruiert eine komplexe Zahl aus Betrag und Phasenwinkel
(function template) [edit]
C-Dokumentation für cexp