expm1() 함수는 임의의 숫자를 지수로 하는 자연상수 e의 거듭제곱에서 1을 뺀 값을 계산하는 데 사용되는 C++ 수학 함수입니다. 즉, (ea) − 1의 결과를 반환합니다.
expm1()의 수학적 표현
expm1() 함수는 다음과 같은 수식으로 나타낼 수 있습니다.
expm1(a) = (e^a) − 1
C++에서 expm1()의 문법
float expm1(variable_name);
여기서 각 요소의 의미는 다음과 같습니다.
variable_name − 계산하려는 값이 저장된 변수의 이름입니다. int, float, double 등 다양한 숫자 자료형을 사용할 수 있습니다.
왜 expm1()을 사용해야 할까?
x의 값이 아주 작을 때, exp(x) − 1을 직접 계산하면 부동소수점 연산 특성상 유효 숫자가 크게 손실되는 '정밀도 손실(catastrophic cancellation)' 문제가 발생합니다. 반면 expm1()은 이러한 손실 없이 높은 정밀도로 결과를 계산해 주기 때문에 과학 및 금융 계산 등 정확도가 중요한 분야에서 유용하게 활용됩니다.
예제
다음은 C++에서 expm1() 함수를 사용하는 예제 코드입니다.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int x = 10;
float y = 8.28;
cout << "The value of x : " << expm1(x);
cout << "\nThe value of y : " << expm1(y);
return 0;
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 나타납니다.
The value of x : 22025.5 The value of y : 3943.19
출력 결과에서 볼 수 있듯이, expm1(10)은 e10 − 1인 약 22025.5를 반환하고, expm1(8.28)은 e8.28 − 1인 약 3943.19를 반환합니다. 이처럼 expm1() 함수는 <cmath> 헤더 파일에 포함되어 있으며, 지수 계산 시 정밀도가 중요한 상황에서 표준 exp() 함수보다 안정적인 결과를 제공합니다.