Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ log1p() 함수 완벽 가이드: 문법, 반환값, 예제 코드

C++의 log1p() 함수는 인자로 전달된 값에 1을 더한 자연로그, 즉 ln(1 + x)를 계산하는 수학 함수입니다. 이 글에서는 log1p() 함수의 기본 개념과 문법, 반환값, 그리고 실제 동작 예제를 통해 사용법을 자세히 알아보겠습니다.

log1p() 함수란?

log1p()는 하나의 인자 'x'를 받아 그 결과값을 반환하는 해석적(analytical) 수학 함수입니다. 내부적으로는 ln(1 + x)를 계산하며, <cmath> 헤더 파일에 선언되어 있어 사용 시 반드시 포함해야 합니다.

단순히 log(1 + x)를 직접 계산하는 것과 무엇이 다를까요? x가 0에 아주 가까운 작은 값일 때, 부동소수점 연산 과정에서 1 + x가 반올림되면서 정밀도 손실이 발생할 수 있습니다. 반면 log1p()는 이러한 손실 없이 높은 정밀도로 결과를 계산해 주기 때문에, 금융 계산이나 과학적 시뮬레이션처럼 정확도가 중요한 분야에서 유용하게 활용됩니다.

문법(Syntax)

double log1p(double x);      // x의 범위: [-1, ∞)
float log1p(float x);
long double log1p(long double x);

인자 x는 -1 이상의 값을 가져야 하며, 자료형에 따라 double, float, long double 버전이 오버로딩되어 제공됩니다.

반환값(Return Type)

  • x > -1인 경우: ln(1 + x)의 계산 결과를 반환합니다. (x가 0이면 0을 반환)
  • x = -1인 경우: 음의 무한대(-inf)를 반환합니다.
  • x < -1인 경우: 유효하지 않은 값으로 판단하여 NaN(Not a Number, 숫자가 아님)을 반환합니다.

예제

입력

a = 20.34

출력

3.06058

입력

a = 0.0

출력

0

위 예제에서 볼 수 있듯이, log1p(20.34)는 ln(21.34)의 값인 약 3.06058을 반환하고, log1p(0)은 ln(1) 즉 0을 반환합니다.

예제 코드

#include <cmath>
#include <iostream>
using namespace std;

int main(){
    double ans = 20.34;
    double temp;

    temp = log1p(ans);
    cout << "log1p(" << ans << ")의 값은: " << temp << endl;

    ans = 0.0;
    temp = log1p(ans);
    cout << "log1p(" << ans << ")의 값은: " << temp << endl;

    return 0;
}

실행 결과

log1p(20.34)의 값은: 3.06058
log1p(0)의 값은: 0

마무리

log1p() 함수는 겉보기에는 단순한 로그 계산처럼 보이지만, 작은 값에 대한 정밀도를 보장한다는 점에서 표준 라이브러리가 제공하는 강력한 도구입니다. C++ 프로그래밍에서 ln(1 + x) 형태의 계산이 필요하다면, log(1 + x) 대신 log1p(x)를 사용하는 습관을 들이면 좋습니다.