Namespaces
Variants

clogf, clog, clogl

From cppreference.net
헤더 파일에 정의됨 <complex.h>
float complex clogf ( float complex z ) ;
(1) (C99부터)
double complex clog ( double complex z ) ;
(2) (C99부터)
long double complex clogl ( long double complex z ) ;
(3) (C99부터)
헤더 파일에 정의됨 <tgmath.h>
#define log( z )
(4) (C99부터)
1-3) 음의 실수 축을 따라 가지 절단(branch cut)을 적용하여 z 의 복소수 자연 (밑이 e 인) 로그를 계산합니다.
4) 타입-제네릭 매크로: z 의 타입이 long double complex 인 경우, clogl 이 호출됩니다. z 의 타입이 double complex 인 경우, clog 이 호출됩니다. z 의 타입이 float complex 인 경우, clogf 이 호출됩니다. z 가 실수 또는 정수인 경우, 매크로는 해당 실수 함수( logf , log , logl )를 호출합니다. z 가 허수인 경우, 해당 복소수 버전이 호출됩니다.

목차

매개변수

z - 복소 인수

반환값

오류가 발생하지 않으면, 복소수 자연 로그 값이 z 에 대해 반환됩니다. 이 값은 허수축을 따라 [−iπ, +iπ] 구간 내의 스트립 범위에 속하며, 실수축 방향으로는 수학적으로 무한합니다.

오류 처리 및 특수 값

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

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

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

참고 사항

복소수의 자연 로그 z 가 극좌표 성분 (r,θ) 를 가질 때, 그 값은 ln r + i(θ+2nπ) 이며, 주값은 ln r + iθ 입니다.

예제

#include <stdio.h>
#include <math.h>
#include <complex.h>
int main(void)
{
    double complex z = clog(I); // r = 1, θ = pi/2
    printf("2*log(i) = %.1f%+fi\n", creal(2*z), cimag(2*z));
    double complex z2 = clog(sqrt(2)/2 + sqrt(2)/2*I); // r = 1, θ = pi/4
    printf("4*log(sqrt(2)/2+sqrt(2)i/2) = %.1f%+fi\n", creal(4*z2), cimag(4*z2));
    double complex z3 = clog(-1); // r = 1, θ = pi
    printf("log(-1+0i) = %.1f%+fi\n", creal(z3), cimag(z3));
    double complex z4 = clog(conj(-1)); // or clog(CMPLX(-1, -0.0)) in C11
    printf("log(-1-0i) (the other side of the cut) = %.1f%+fi\n", creal(z4), cimag(z4));
}

출력:

2*log(i) = 0.0+3.141593i
4*log(sqrt(2)/2+sqrt(2)i/2) = 0.0+3.141593i
log(-1+0i) = 0.0+3.141593i
log(-1-0i) (the other side of the cut) = 0.0-3.141593i

참고문헌

  • C11 표준 (ISO/IEC 9899:2011):
  • 7.3.7.2 clog 함수들 (p: 195)
  • 7.25 타입-제네릭 수학 <tgmath.h> (p: 373-375)
  • G.6.3.2 clog 함수들 (p: 543-544)
  • G.7 타입-제네릭 수학 <tgmath.h> (p: 545)
  • C99 표준 (ISO/IEC 9899:1999):
  • 7.3.7.2 clog 함수들 (p: 176-177)
  • 7.22 타입-제네릭 수학 <tgmath.h> (p: 335-337)
  • G.6.3.2 clog 함수들 (p: 478-479)
  • G.7 타입-제네릭 수학 <tgmath.h> (p: 480)

참고 항목

(C99) (C99) (C99)
복소수 밑-e 지수 계산
(함수)
(C99) (C99)
자연 (밑- e ) 로그 계산 ( ln(x) )
(함수)
C++ 문서 for log