C++ 표준 라이브러리 중 하나로 수학 연산을 위한 여러 함수와 매크로를 포함한다.
문법
double abs(double number);
float abs(float number);
number의 절댓값을 리턴한다.
예시
#include <iostream>
#include <cmath>
using namespace std;
int main() {
cout << abs(-4.7) << "\n";
cout << abs(4.7) << "\n";
cout << abs(3) << "\n";
return 0;
}
출력
4.7
4.7
3
C++11 이하 버전에서는 정수용 (abs())과 실수용(fabs())으로 차이가 있어
abs(-5.6) 이런 식으로 실수를 넘기면 정수로 자동 형변환되어 5를 리턴하는 식의 문제가 발생했지만 현재 사용할 때는 연산자 오버로딩이 되어있어 abs()만 사용해도 5.6으로 소수 부분까지 제대로 출력된다.
문법
pow(double base, double exponent);
pow(float base, float exponent);
base를 exponent 제곱한 값을 리턴한다.
예시
#include <iostream>
#include <cmath>
using namespace std;
int main() {
cout << pow(2.0f, 8.0f) << "\n";
cout << pow(3.0f, 4.0f) << "\n";
cout << pow(9.0, 0.5) << "\n";
cout << pow(8.0, -1.0) << "\n";
cout << pow(10.0f, -2.0f) << "\n";
return 0;
}
출력
256
81
3
0.125
0.01
📖
문제를 풀 때 정수형 인자만 사용해서 정수 연산만 되는 줄 알았는데 원형 문법 자체가 실수 연상용이었다.
정수를 입력해도 실수로 처리된다고 한다.
0 제곱은 1을 반환하고 음수의 제곱은 지수의 -를 지우고 역수를 취하면 된다.
증명 링크
문법
sqrt(double number);
sqrt(float number);
number의 제곱근 갌을 리턴한다.
예시
#include <iostream>
#include <cmath>
using namespace std;
int main() {
cout << sqrt(0) << "\n";
cout << sqrt(1) << "\n";
cout << sqrt(9) << "\n";
cout << sqrt(0.64) << "\n";
cout << sqrt(-25) << "\n";
return 0;
}
출력
0
1
3
0.8
-nan
📖
어떤 수를 제곱하여 음수가 나올 수 없으므로 음수를 넘기면 에러 메시지를 출력한다.
코사인, 사인, 탄젠트, 아크 코사인 ... 관련 값을 구할 수 있는 함수들이 있다.
float acos(float x);
float asin(float x);
float atan(float x);
float cos(float x);
float sin(float x);
float tan(float x);
.
.
.
https://learn.microsoft.com/ko-kr/cpp/standard-library/cmath?view=msvc-170
https://www.w3schools.com/cpp/cpp_ref_math.asp
https://alpaca-code.tistory.com/81