Namespaces
Variants

std:: log (std::complex)

From cppreference.net
헤더 파일에 정의됨 <complex>
template < class T >
std:: complex < T > log ( const std:: complex < T > & z ) ;

복소수 값 z 자연 (밑 e ) 로그 를 계산하며, 음의 실수 축을 따라 가지 절단(branch cut)이 있습니다.

목차

매개변수

z - 복소수 값

반환값

오류가 발생하지 않으면, 복소수 자연 로그 값이 반환됩니다. 이 값은 허수축을 따라 [−iπ, +iπ] 구간 내의 한 줄무늬 영역에 분포하며, 실수축 방향으로는 수학적으로 무한합니다.

오류 처리 및 특수 값

오류는 math_errhandling 과 일관되게 보고됩니다.

구현이 IEEE 부동 소수점 연산을 지원하는 경우,

  • 함수는 허수부의 부호를 고려하여 브랜치 컷(branch cut) 위에서 연속적입니다.
  • std:: log ( std:: conj ( z ) ) == std:: conj ( std:: log ( z ) )
  • 만약 z (-0,+0) 이면, 결과는 (-∞,π) 이며 FE_DIVBYZERO 가 발생합니다.
  • 만약 z (+0,+0) 이면, 결과는 (-∞,+0) 이며 FE_DIVBYZERO 가 발생합니다.
  • 만약 z (x,+∞) (임의의 유한한 x에 대해), 결과는 (+∞,π/2) 입니다.
  • 만약 z (x,NaN) (임의의 유한한 x에 대해), 결과는 (NaN,NaN) 이며 FE_INVALID 가 발생할 수 있습니다.
  • 만약 z (-∞,y) (임의의 유한한 양수 y에 대해), 결과는 (+∞,π) 입니다.
  • 만약 z (+∞,y) (임의의 유한한 양수 y에 대해), 결과는 (+∞,+0) 입니다.
  • 만약 z (-∞,+∞) 이면, 결과는 (+∞,3π/4) 입니다.
  • 만약 z (+∞,+∞) 이면, 결과는 (+∞,π/4) 입니다.
  • 만약 z (±∞,NaN) 이면, 결과는 (+∞,NaN) 입니다.
  • 만약 z (NaN,y) (임의의 유한한 y에 대해), 결과는 (NaN,NaN) 이며 FE_INVALID 가 발생할 수 있습니다.
  • 만약 z (NaN,+∞) 이면, 결과는 (+∞,NaN) 입니다.
  • 만약 z (NaN,NaN) 이면, 결과는 (NaN,NaN) 입니다.

참고 사항

복소수의 자연 로그는 z 극좌표 성분 (r,θ) 에 대해 ln r + i(θ+2nπ) 와 같으며, 주값은 ln r + iθ 입니다.

이 함수의 의미 체계는 C 함수 clog 와 일관성을 유지하도록 설계되었습니다.

예제

#include <cmath>
#include <complex>
#include <iostream>
int main()
{
    std::complex<double> z {0.0, 1.0}; // r = 1, θ = pi / 2
    std::cout << "2 * log" << z << " = " << 2.0 * std::log(z) << '\n';
    std::complex<double> z2 {sqrt(2.0) / 2, sqrt(2.0) / 2}; // r = 1, θ = pi / 4
    std::cout << "4 * log" << z2 << " = " << 4.0 * std::log(z2) << '\n';
    std::complex<double> z3 {-1.0, 0.0}; // r = 1, θ = pi
    std::cout << "log" << z3 << " = " << std::log(z3) << '\n';
    std::complex<double> z4 {-1.0, -0.0}; // the other side of the cut
    std::cout << "log" << z4 << " (the other side of the cut) = " << std::log(z4) << '\n';
}

가능한 출력:

2 * log(0,1) = (0,3.14159)
4 * log(0.707107,0.707107) = (0,3.14159)
log(-1,0) = (0,3.14159)
log(-1,-0) (the other side of the cut) = (0,-3.14159)

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 2597 C++98 명세가 부호 있는 0 허수부를 잘못 처리함 오류 요구사항 제거됨

참고 항목

음의 실수축을 따라 가지 절단을 갖는 복소수 상용 로그
(함수 템플릿)
복소수 밑 e 지수 함수
(함수 템플릿)
(C++11) (C++11)
자연 (밑 e ) 로그 계산 ( ln(x) )
(함수)
함수 std::log 를 valarray의 각 요소에 적용
(함수 템플릿)
C 문서 for clog