std::norm(std::complex)
Определено в заголовке <complex> |
||
|---|---|---|
| (1) | ||
template< class T > T norm( const std::complex<T>& z ); |
(до C++20) | |
template< class T > constexpr T norm( const std::complex<T>& z ); |
(с C++20) | |
| Дополнительные перегрузки (с C++11) | ||
Определено в заголовке <complex> |
||
| (A) | ||
float norm( float f ); double norm( double f ); long double norm( long double f ); |
(до C++20) | |
constexpr float norm( float f ); constexpr double norm( double f ); constexpr long double norm( long double f ); |
(с C++20) (до C++23) |
|
template< class FloatingPoint > constexpr FloatingPoint norm( FloatingPoint f ); |
(с C++23) | |
| (B) | ||
template< class Integer > double norm( Integer i ); |
(до C++20) | |
template< class Integer > constexpr double norm( Integer i ); |
(с C++20) |
1) Возвращает квадратный модуль комплексного числа
z.
| A,B) Дополнительные перегрузки предоставляются для всех целых и чисел с плавающей точкой, которые рассматриваются как комплексные числа с нулевой мнимой частью. | (с C++11) |
Параметры
| z | - | комплексное значение |
| f | - | значение с плавающей точкой |
| i | - | целое значение |
Значение возврата
1) Квадратный модуль
z.
A) Квадрат
f.
B) Квадрат
i.
Примечания
Норма, вычисляемая этой функцией, также известна как норма поля или абсолютное значение в квадрате.
Евклидова норма комплексного числа предоставляется std::abs, вычисление которой более затратно. В некоторых ситуациях она может быть заменена std::norm, например, если abs(z1) > abs(z2) тогда norm(z1) > norm(z2).
Дополнительные перегрузки не обязаны предоставляться ровно как (A,B). Они должны быть достаточными для обеспечения того, что для их аргумента num:
- Если
numимеет стандартный(до C++23) тип с плавающей точкойT, тогдаstd::norm(num)имеет тот же эффект, что иstd::norm(std::complex<T>(num)). - В противном случае, если
numимеет целочисленный тип, тогдаstd::norm(num)имеет тот же эффект, что иstd::norm(std::complex<double>(num)).
Пример
#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';
}Вывод:
std::norm((3,4)) = 25
См. также
| возвращает модуль комплексного числа (функция-шаблон) |
|
| возвращает комплексно сопряженное число (функция-шаблон) |
|
| создает комплексное число из модуля и угла фазы (функция-шаблон) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/complex/norm