환경: macOS Sierra
C++에서 제공하는 int형 변수 혹은 unsigned long long int 등의 최대값을 넘어서는 매우 큰 숫자를 활용해야 할 경우가 개발하는 도중에 있을지도 모르겠다.
그런 경우에 활용 가능한 라이브러리가 바로 GMP 라이브러리이다. GMP는 'the GNU Multiple Precision Arithmetic Library'를 말하며 이름에서 알 수 있듯 GNU 프로젝트에서 만든 라이브러리이다.
이 라이브러리를 활용하기 위해서는 우선 현재 사용하고 있는 컴퓨터에 gmp 라이브러리가 설치되어 있는지를 확인해야 한다. 맥 환경 기준으로 gmp 라이브러리를 설치하기 위해서는 다음과 같은 명령어를 터미널에서 실행하여 설치한다.
$brew install gmp
다음은 gmp 라이브러리를 활용한 test.cpp라는 이름의 예제이다.
#include <iostream>#include <gmpxx.h>using namespace std;mpz_class getFactorial(int);int main(int argc, char **argv) {int num = 100;mpz_class factorial = getFactorial(num);cout << "Factorial of " << num << ": " << factorial << endl;return 0;}mpz_class getFactorial(int num) {int i;mpz_class factorial = 1;for(i=1; i<=num; i++) {factorial *= i;}return factorial;}
위의 코드를 gcc를 통해 컴파일 할 경우, 커맨드 내에 별도의 플래그가 필요하다.
$gcc test.cpp -lstdc++ -lgmpxx -lgmp -o test
성공적으로 컴파일 되었을 경우 test라는 이름의 실행 파일이 만들어진다. 이를 실행시켜 보면 그 결과를 알 수 있을 것이다.
반응형
'C++' 카테고리의 다른 글
[C++] 네이키드 포인터를 썼을 때 발생할 수 있는 문제 && 이를 방지할 방안 (스마트 포인터) (0) | 2022.12.18 |
---|---|
[C++] 네이키드 포인터 / 스마트 포인터 (unique_ptr, shared_ptr, weak_ptr) (1) (0) | 2022.12.16 |
[C++] 두 수의 합/차가 overflow가 발생하는 경우 감지하는 코드 작성 (0) | 2022.12.14 |
[C++] 정수 연산시 오버플로우가 발생하는 문제점 (0) | 2022.12.13 |
GCC로 .cpp 파일 컴파일 하는 법 (0) | 2016.04.14 |