std::norm(std::complex)

来自cppreference.com
< cpp‎ | numeric‎ | 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 具有类型 long double,那么std::norm(num)std::norm(std::complex<long double>(num)) 的效果相同。
  • 否则,如果 num 具有类型 double 或整数类型,那么 std::norm(num)std::norm(std::complex<double>(num)) 的效果相同。
  • 否则,如果 num 具有类型 float,那么 std::norm(num)std::norm(std::complex<float>(num)) 的效果相同。
(C++23 前)
  • 如果 num 具有浮点类型 T,那么 std::norm(num)std::norm(std::complex<T>(num)) 的效果相同。
  • 否则,如果 num 具有整数类型,那么 std::norm(num)std::norm(std::complex<double>(num)) 的效果相同。
(C++23 起)

参阅

返回复数的模
(函数模板)
返回复共轭
(函数模板)
从模和辐角构造复数
(函数模板)