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
             
              )
             
             
              ;
             
              | (C++20 前) | |
| 
           
            
             constexpr
            
            
             float
            
            norm
            
             (
            
            
             float
            
            f
            
             )
            
            
             ;
            
             
             
              constexpr
             
             
              double
             
             norm
             
              (
             
             
              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 起) | |
| 
          
           A,B)
          
          为所有整数和浮点类型提供了额外的重载,这些类型被视为虚部为零的复数。
          | (since C++11) | 
| 目录 | 
参数
| z | - | 复数 | 
| f | - | 浮点数值 | 
| 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
参见
| 返回复数的模 (函数模板) | |
| 返回复共轭 (函数模板) | |
| 通过模和辐角构造复数 (函数模板) |