Namensräume
Varianten
Aktionen

std::sqrt(std::complex)

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

Berechnet die Quadratwurzel der komplexen Zahl z mit einem Schnitt entlang der negativen reellen Achse.

Inhalt

[bearbeiten] Parameter

z - komplexe Zahl, von der die Quadratwurzel gezogen werden soll

[bearbeiten] Rückgabewert

Wenn keine Fehler auftreten, wird die Quadratwurzel von z zurückgegeben, im Bereich der rechten Halbebene, einschließlich der imaginären Achse ([0; +∞) entlang der reellen Achse und (−∞; +∞) entlang der imaginären Achse).

[bearbeiten] Fehlerbehandlung und spezielle Werte

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::sqrt(std::conj(z)) == std::conj(std::sqrt(z))
  • Wenn z (±0,+0) ist, ist das Ergebnis (+0,+0)
  • Wenn z (x,+∞) ist, ist das Ergebnis (+∞,+∞), auch wenn x NaN ist
  • Wenn z (x,NaN) ist, ist das Ergebnis (NaN,NaN) (es sei denn, x ist ±∞) und FE_INVALID kann ausgelöst werden
  • Wenn z (-∞,y) ist, ist das Ergebnis (+0,+∞) für endliches positives y
  • Wenn z (+∞,y) ist, ist das Ergebnis (+∞,+0) für endliches positives y
  • Wenn z (-∞,NaN) ist, ist das Ergebnis (NaN,∞) (Vorzeichen des Imaginärteils nicht spezifiziert)
  • Wenn z (+∞,NaN) ist, ist das Ergebnis (+∞,NaN)
  • Wenn z (NaN,y) ist, ist das Ergebnis (NaN,NaN) und FE_INVALID kann ausgelöst werden
  • Wenn z (NaN,NaN) ist, ist das Ergebnis (NaN,NaN)

[bearbeiten] Hinweise

Die Semantik dieser Funktion ist dazu bestimmt, mit der C-Funktion csqrt konsistent zu sein.

[bearbeiten] Beispiel

#include <complex>
#include <iostream>
 
int main()
{
    std::cout << "Square root of -4 is "
              << std::sqrt(std::complex<double>(-4.0, 0.0)) << '\n'
              << "Square root of (-4,-0) is "
              << std::sqrt(std::complex<double>(-4.0, -0.0))
              << " (the other side of the cut)\n";
}

Ausgabe

Square root of -4 is (0,2)
Square root of (-4,-0) is (0,-2) (the other side of the cut)

[bearbeiten] 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 handhabt signierte Null-Imaginärteile fehlerhaft fehlerhafte Anforderung entfernt

[bearbeiten] Siehe auch

komplexe Potenz, ein oder beide Argumente können komplexe Zahlen sein
(function template) [edit]
(C++11)(C++11)
berechnet die Quadratwurzel (x)
(Funktion) [bearbeiten]
wendet die Funktion std::sqrt auf jedes Element des Valarrays an
(function template) [edit]
C-Dokumentation für csqrt