Namespaces
Variants

std:: norm (std::complex)

From cppreference.net
헤더 파일에 정의됨 <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) 모든 정수 및 부동소수점 타입에 대해 추가 오버로드가 제공되며, 이들은 0인 허수부를 가진 복소수로 처리됩니다.
(since C++11)

목차

매개변수

z - 복소수 값
f - 부동소수점 값
i - 정수 값

반환값

1) z 의 제곱 크기.
A) f 의 제곱.
B) i 의 제곱.

참고 사항

이 함수로 계산된 노름은 field norm 또는 absolute square 로도 알려져 있습니다.

복소수의 유클리드 노름(Euclidean norm) 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

참고 항목

복소수의 크기를 반환합니다
(함수 템플릿)
켤레 복소수를 반환합니다
(함수 템플릿)
크기와 위상각으로부터 복소수를 생성합니다
(함수 템플릿)