Namespaces
Variants

std:: norm (std::complex)

From cppreference.net
Definiert im Header <complex>
(1)
template < class T >
T norm ( const std:: complex < T > & z ) ;
(bis C++20)
template < class T >
constexpr T norm ( const std:: complex < T > & z ) ;
(seit C++20)
Definiert im Header <complex>
(A)
float norm ( float f ) ;

double norm ( double f ) ;

long double norm ( long double f ) ;
(bis C++20)
constexpr float norm ( float f ) ;

constexpr double norm ( double f ) ;

constexpr long double norm ( long double f ) ;
(seit C++20)
(bis C++23)
template < class FloatingPoint >
constexpr FloatingPoint norm ( FloatingPoint f ) ;
(seit C++23)
(B)
template < class Integer >
double norm ( Integer i ) ;
(bis C++20)
template < class Integer >
constexpr double norm ( Integer i ) ;
(seit C++20)
1) Gibt das quadrierte Betragsquadrat der komplexen Zahl z zurück.
A,B) Zusätzliche Überladungen werden für alle Ganzzahl- und Gleitkommatypen bereitgestellt, die als komplexe Zahlen mit null Imaginärteil behandelt werden.
(since C++11)

Inhaltsverzeichnis

Parameter

z - komplexer Wert
f - Fließkommawert
i - Ganzzahlwert

Rückgabewert

1) Das quadrierte Betragsquadrat von z .
A) Das Quadrat von f .
B) Das Quadrat von i .

Hinweise

Die von dieser Funktion berechnete Norm ist auch bekannt als field norm oder absolute square .

Die euklidische Norm einer komplexen Zahl wird durch std::abs bereitgestellt, deren Berechnung aufwändiger ist. In manchen Situationen kann sie durch std::norm ersetzt werden, zum Beispiel wenn abs ( z1 ) > abs ( z2 ) dann norm ( z1 ) > norm ( z2 ) .

Die zusätzlichen Überladungen müssen nicht exakt als (A,B) bereitgestellt werden. Sie müssen lediglich ausreichend sein, um sicherzustellen, dass für ihr Argument num :

  • Wenn num einen Standard (bis C++23) Gleitkommatyp T hat, dann hat std :: norm ( num ) denselben Effekt wie std :: norm ( std:: complex < T > ( num ) ) .
  • Andernfalls, wenn num einen Ganzzahltyp hat, dann hat std :: norm ( num ) denselben Effekt wie std :: norm ( std:: complex < double > ( num ) ) .

Beispiel

#include <cassert>
#include <complex>
#include <iostream>
int main()
{
    constexpr std::complex<double> z {3.0, 4.0};
    static_assert(std::norm(z) == (z.real() * z.real() + z.imag() * z.imag()));
    static_assert(std::norm(z) == (z * std::conj(z)));
           assert(std::norm(z) == (std::abs(z) * std::abs(z)));
    std::cout << "std::norm(" << z << ") = " << std::norm(z) << '\n';
}

Ausgabe:

std::norm((3,4)) = 25

Siehe auch

gibt den Betrag einer komplexen Zahl zurück
(Funktionstemplate)
gibt die komplex Konjugierte zurück
(Funktionstemplate)
erstellt eine komplexe Zahl aus Betrag und Phasenwinkel
(Funktionstemplate)