Namespaces
Variants

std:: proj (std::complex)

From cppreference.net
헤더 파일에 정의됨 <complex>
template < class T >
std:: complex < T > proj ( const std:: complex < T > & z ) ;
(1) (C++11 이후)
추가 오버로드 (C++11 이후)
헤더 파일에 정의됨 <complex>
(A)
std:: complex < float > proj ( float f ) ;

std:: complex < double > proj ( double f ) ;

std:: complex < long double > proj ( long double f ) ;
(C++23 이전)
template < class FloatingPoint >
std:: complex < FloatingPoint > proj ( FloatingPoint f ) ;
(C++23 이후)
template < class Integer >
std:: complex < double > proj ( Integer i ) ;
(B)
1) 복소수 z 리만 구 위로 투영한 값을 반환합니다.
대부분의 z 에 대해, std :: proj ( z ) == z 이지만, 모든 복소수 무한대(한 구성 요소가 무한대이고 다른 구성 요소가 NaN인 숫자들 포함)는 양의 실수 무한대, ( INFINITY , 0.0 ) 또는 ( INFINITY , - 0.0 ) 가 됩니다. 허수(영) 구성 요소의 부호는 std:: imag ( z ) 의 부호입니다.
A,B) 모든 정수 및 부동 소수점 타입에 대해 추가 오버로드가 제공되며, 이들은 양의 제로 허수부를 가진 복소수로 처리됩니다.

목차

매개변수

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

반환값

1) 리만 구에 대한 z 의 사영.
A) std:: complex ( f ) 의 리만 구면으로의 사영.
B) 리만 구에 대한 std:: complex < double > ( i ) 의 사영.

참고 사항

proj 함수는 모든 무한대를 하나로 매핑하여 리만 구를 모델링하는 데 도움을 주며(허수 영의 부호 차이는 제외), 특히 다른 무한대에 대해 잘못된 결과를 줄 수 있는 연산(특히 비교 연산) 바로 전에 사용해야 합니다.

추가 오버로드는 반드시 (A,B) 형태로 정확히 제공될 필요는 없습니다. 이들은 단지 해당 인수 num 에 대해 다음을 보장할 수 있을 만큼 충분하기만 하면 됩니다:

  • 만약 num 표준 (C++23 이전) 부동소수점 타입 T 를 가지면, std :: proj ( num ) std :: proj ( std:: complex < T > ( num ) ) 과 동일한 효과를 가집니다.
  • 그렇지 않고 만약 num 이 정수 타입을 가지면, std :: proj ( num ) std :: proj ( std:: complex < double > ( num ) ) 과 동일한 효과를 가집니다.

예제

#include <complex>
#include <iostream>
int main()
{
    std::complex<double> c1(1, 2);
    std::cout << "proj" << c1 << " = " << std::proj(c1) << '\n';
    std::complex<double> c2(INFINITY, -1);
    std::cout << "proj" << c2 << " = " << std::proj(c2) << '\n';
    std::complex<double> c3(0, -INFINITY);
    std::cout << "proj" << c3 << " = " << std::proj(c3) << '\n';
}

출력:

proj(1,2) = (1,2)
proj(inf,-1) = (inf,-0)
proj(0,-inf) = (inf,-0)

참고 항목

복소수의 크기를 반환합니다
(function template)
제곱된 크기를 반환합니다
(function template)
크기와 위상각으로부터 복소수를 생성합니다
(function template)