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

C++ 수학 함수 총정리: cmath 라이브러리 핵심 함수 활용 가이드

C++ 프로그래밍에서 복잡한 수학 계산이 필요할 때는 math.h 또는 cmath 라이브러리에 포함된 수학 함수들을 활용하면 됩니다. 이 라이브러리에는 삼각함수, 지수·로그 함수, 반올림 함수 등 다양한 연산을 수행하는 함수들이 정의되어 있습니다. 각 함수의 원형, 호출 문법, 그리고 실제 동작 예제를 하나씩 살펴보겠습니다.


sin – 사인 함수

sin() 함수는 인자로 전달된 각도에 대한 사인 값을 계산합니다. double 타입의 값 하나를 인자로 받아 해당 각도의 sin(x°) 값을 double 타입으로 반환합니다.

double sin(double)

호출 문법

double x = sin(23.4);

예제 코드

#include <iostream>
#include <math.h>
using namespace std;
int main(){
    double x = 45.3;
    cout << "sin ( "<<x<<" ) = " << sin(x) << endl;
}

실행 결과

sin( 45.3 ) = 0.968142

cos – 코사인 함수

cos() 함수는 인자로 전달된 각도에 대한 코사인 값을 계산합니다. double 타입의 값 하나를 인자로 받아 해당 각도의 cos(x°) 값을 double 타입으로 반환합니다.

double cos(double)

호출 문법

double x = cos(23.4);

예제 코드

#include <iostream>
#include <math.h>
using namespace std;
int main(){
    double x = 45.3;
    cout << "cos ( "<<x<<" ) = " << cos(x) << endl;
}

실행 결과

cos( 45.3 ) = 0.2504

tan – 탄젠트 함수

tan() 함수는 인자로 전달된 각도에 대한 탄젠트 값을 계산합니다. tan(x°)은 sin(x°)/cos(x°)와 같으므로, 이 비율의 값을 double 타입으로 반환합니다.

double tan(double)

호출 문법

double x = tan(23.4);

예제 코드

#include <iostream>
#include <math.h>
using namespace std;
int main(){
    double x = 45.3;
    cout << "tan ( "<<x<<" ) = " << tan(x) << endl;
}

실행 결과

tan( 45.3 ) = 3.86638

asin – 아크사인 함수

asin() 함수는 주어진 값의 아크사인(역사인)을 구하는 함수입니다. 입력값은 반드시 -1부터 1 사이의 double 값이어야 하며, 범위를 벗어나면 오류가 발생합니다. 계산된 asin() 결과를 double 타입으로 반환합니다.

double asin(double)

호출 문법

double x = asin(0.3232);

예제 코드

#include <iostream>
#include <math.h>
using namespace std;
int main(){
    double x = 0.3232;
    cout << "asin ( "<<x<<" ) = " << asin(x) << endl;
}

실행 결과

asin( 0.3232 ) = 0.3291

acos – 아크코사인 함수

acos() 함수는 주어진 값의 아크코사인(역코사인)을 구하는 함수입니다. 마찬가지로 입력값은 -1부터 1 사이여야 하며, 범위를 벗어나면 오류가 발생합니다. 계산된 acos() 결과를 double 타입으로 반환합니다.

double acos(double)

호출 문법

double x = acos(0.3232);

예제 코드

#include <iostream>
#include <math.h>
using namespace std;
int main(){
    double x = 0.3232;
    cout << "acos ( "<<x<<" ) = " << acos(x) << endl;
}

실행 결과

acos( 0.3232 ) = 1.24169

atan – 아크탄젠트 함수

atan() 함수는 주어진 값의 아크탄젠트(역탄젠트)를 계산합니다. 매개변수로 전달된 double 입력값에 대한 atan 결과를 double 타입으로 반환합니다.

double atan(double)

호출 문법

double x = atan(0.3232);

예제 코드

#include <iostream>
#include <math.h>
using namespace std;
int main(){
    double x = 0.3232;
    cout << "atan ( "<<x<<" ) = " << atan(x) << endl;
}

실행 결과

atan( 0.3232 ) = 0.312603

cosh – 쌍곡선 코사인 함수

cosh() 함수는 주어진 값의 쌍곡선 코사인(hyperbolic cosine) 값을 계산합니다. 매개변수로 전달된 double 입력값에 대한 cosh 결과를 double 타입으로 반환합니다.

double cosh(double)

호출 문법

double x = cosh(0.342);

예제 코드

#include <iostream>
#include <math.h>
using namespace std;
int main(){
    double x = 0.342;
    cout << "cosh ( "<<x<<" ) = " << cosh(x) << endl;
}

실행 결과

cosh( 0.342 ) = 1.05905

sinh – 쌍곡선 사인 함수

sinh() 함수는 주어진 값의 쌍곡선 사인(hyperbolic sine) 값을 계산합니다. 매개변수로 전달된 double 입력값에 대한 sinh 결과를 double 타입으로 반환합니다.

double sinh(double)

호출 문법

double x = sinh(0.342);

예제 코드

#include <iostream>
#include <math.h>
using namespace std;
int main(){
    double x = 0.342;
    cout << "sinh ( "<<x<<" ) = " << sinh(x) << endl;
}

실행 결과

sinh( 0.342 ) = 0.348706

tanh – 쌍곡선 탄젠트 함수

tanh() 함수는 주어진 값의 쌍곡선 탄젠트(hyperbolic tangent) 값을 계산합니다. 매개변수로 전달된 double 입력값에 대한 tanh 결과를 double 타입으로 반환합니다.

double tanh(double)

호출 문법

double x = tanh(0.342);

예제 코드

#include <iostream>
#include <math.h>
using namespace std;
int main(){
    double x = 0.342;
    cout << "tanh ( "<<x<<" ) = " << tanh(x) << endl;
}

실행 결과

tanh( 0.342 ) = 0.329262

pow – 거듭제곱 함수

pow() 함수는 백(base)을 지수(exponent)만큼 거듭제곱한 값을 계산합니다. 두 개의 double 값을 인자로 받으며(밑과 지수), 밑의 지수승 결과를 double 타입으로 반환합니다.

double pow(double, double)

호출 문법

double x = pow(2, 4);

예제 코드

#include <iostream>
#include <math.h>
using namespace std;
int main(){
    double base = 2, power = 4;
    cout << "pow( "<<base<<" , "<<power<<" ) = " << pow(base, power) << endl;
}

실행 결과

pow( 2 , 4 ) = 16

sqrt – 제곱근 함수

sqrt() 함수는 매개변수로 전달된 double 값의 제곱근(square root)을 반환합니다. double 타입의 값을 입력받아 제곱근을 계산하고, 그 결과를 double 타입으로 출력합니다.

double sqrt(double)

호출 문법

double x = sqrt(25.00);

예제 코드

#include <iostream>
#include <math.h>
using namespace std;
int main(){
    double a = 25;
    cout << "sqrt( "<<a<<" ) = " << sqrt(a) << endl;
}

실행 결과

sqrt( 25 ) = 5.00

log – 자연로그 함수

log() 함수는 주어진 숫자의 자연로그(natural logarithm, 밑이 e인 로그)를 구하는 함수입니다. double 타입의 값 하나를 입력받아 로그 값을 계산하고, 그 결과를 double 타입으로 반환합니다.

double log(double)

호출 문법

double x = log(1.35);

예제 코드

#include <iostream>
#include <math.h>
using namespace std;
int main(){
    double a = 1.35;
    cout << "log( "<<a<<" ) = " << log(a) << endl;
}

실행 결과

log( 1.35 ) = 0.300105

floor – 내림 함수

floor() 함수는 주어진 double 값보다 크지 않은 정수 중 가장 큰 값, 즉 내림(floor) 값을 반환합니다. double 값을 입력받아 floor()로 계산된 결과를 double 타입으로 돌려줍니다.

double floor(double)

호출 문법

double x = floor(5.24);

예제 코드

#include <iostream>
#include <math.h>
using namespace std;
int main(){
    double a = 6.24;
    cout << "floor( "<<a<<" ) = " << floor(a) << endl;
}

실행 결과

floor( 6.24 ) = 6

ceil – 올림 함수

ceil() 함수는 주어진 double 값보다 작지 않은 정수 중 가장 작은 값, 즉 올림(ceiling) 값을 반환합니다. double 값을 입력받아 ceil()로 계산된 결과를 double 타입으로 돌려줍니다.

double ceil(double)

호출 문법

double x = ceil(5.24);

예제 코드

#include <iostream>
#include <math.h>
using namespace std;
int main(){
    double a = 6.64;
    cout << "ceil( "<<a<<" ) = " << ceil(a) << endl;
}

실행 결과

ceil( 6.64 ) = 7

abs – 절댓값 함수

abs() 함수는 주어진 값의 절댓값을 반환합니다. 정수 값을 인자로 받으면, 크기는 같지만 부호가 양수인 값을 반환합니다.

double abs(double)

호출 문법

double x = abs(-512);

예제 코드

#include <iostream>
#include <math.h>
using namespace std;
int main(){
    int a = -345;
    cout << "abs( "<<a<<" ) = " << abs(a) << endl;
}

실행 결과

abs( -345 ) = 345

마무리

지금까지 C++의 math/cmath 라이브러리에서 자주 사용되는 대표적인 수학 함수들을 살펴보았습니다. 삼각함수(sin, cos, tan), 역삼각함수(asin, acos, atan), 쌍곡선 함수(sinh, cosh, tanh), 그리고 pow, sqrt, log, floor, ceil, abs까지, 이 함수들은 과학·공학 계산뿐 아니라 알고리즘 문제 해결에서도 매우 유용하게 활용됩니다. 각 함수의 입력 범위(특히 asin과 acos의 경우 -1~1)를 기억해두면 실수 없이 코드를 작성하는 데 도움이 됩니다.