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)를 기억해두면 실수 없이 코드를 작성하는 데 도움이 됩니다.