std:: norm (std::complex)
|
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) | |
|
Zusätzliche Überladungen
(seit C++11)
|
||
|
Definiert im Header
<complex>
|
||
| (A) | ||
|
float
norm
(
float
f
)
;
double
norm
(
double
f
)
;
|
(bis C++20) | |
|
constexpr
float
norm
(
float
f
)
;
constexpr
double
norm
(
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) | |
|
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
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
That, 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) |