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

C++ STL beta(), betaf(), betal() 함수 완벽 정리 – 베타 함수 계산 방법

C++ 표준 템플릿 라이브러리(STL)에는 두 양의 실수에 대한 베타 함수(Beta Function) 값을 계산해 주는 내장 함수인 beta(), betaf(), betal()이 포함되어 있습니다. 이 세 함수는 기능적으로 동일하지만, 다루는 자료형(double, float, long double)이 서로 다르다는 점이 차이입니다.

베타 함수는 다음과 같이 정적분 형태로 정의됩니다.

$B(x,y)=\int_{0}^{1}t^{(x-1)}(1-t)^{(y-1)}dt$

참고로 이 함수들은 C++17부터 <cmath> 헤더를 통해 표준으로 제공되며, 실무에서는 #include <bits/stdc++.h>를 사용해도 무방합니다.

1. beta() – double형 전용

beta() 함수는 double 자료형의 값을 처리합니다. 즉, 매개변수로 double 타입을 받고, 결과 역시 double 타입으로 반환합니다.

문법

double beta(double x, double y)

매개변수

x : 베타 함수의 x 값 (double)
y : 베타 함수의 y 값 (double)

반환값: 베타 함수의 계산 결과를 double 값으로 반환합니다.

예제

#include <bits/stdc++.h>
using namespace std;
int main(){
    double x = 4.93;
    double y = 5.01;
    double result = beta(x, y);
    cout<<"B("<<x<<" , "<<y<<") = "<<result<<"\n";
    return 0;
}

출력

B(4.93 , 5.01) = 0.00166054

2. betaf() – float형 전용

betaf() 함수는 float 자료형의 값을 처리합니다. 매개변수와 반환값 모두 float 타입이며, 메모리 사용량이 상대적으로 적어 정밀도보다 성능이 중요한 경우에 유용합니다.

문법

float betaf(float x, float y)

매개변수

x : 베타 함수의 x 값 (float)
y : 베타 함수의 y 값 (float)

반환값: 베타 함수의 계산 결과를 float 값으로 반환합니다.

예제

#include <bits/stdc++.h>
using namespace std;
int main(){
    float x = 0.31;
    float y = 3.99;
    float result = betaf(x, y);
    cout<<"B("<<x<<" , "<<y<<") = "<<result<<"\n";
    return 0;
}

출력

B(0.31 , 3.99) = 1.93395

3. betal() – long double형 전용

betal() 함수는 long double 자료형의 값을 처리합니다. 매개변수와 반환값 모두 long double 타입으로, 세 함수 중 가장 높은 정밀도를 제공하므로 아주 큰 수나 높은 정확도가 필요한 과학·공학 계산에 적합합니다.

문법

long double betal(long double x, long double y)

매개변수

x : 베타 함수의 x 값 (long double)
y : 베타 함수의 y 값 (long double)

반환값: 베타 함수의 계산 결과를 long double 값으로 반환합니다.

예제

#include <bits/stdc++.h>
using namespace std;
int main(){
    long double x = 3453.35451;
    long double y = 9862.89651;
    long double result = betal(x, y);
    cout<<"B("<<x<<" , "<<y<<") = "<<result<<"\n";
    return 0;
}

출력

B(3453.35 , 9862.9) = 4.39947e-3312

정리

세 함수는 모두 동일한 베타 함수를 계산하지만, 입력 값의 크기와 필요한 정밀도에 따라 적절한 버전을 선택하는 것이 좋습니다. 일반적인 용도라면 beta()(double), 성능 우선이라면 betaf()(float), 최대 정밀도가 필요하다면 betal()(long double)을 사용하세요.