맨위로가기

GMP (라이브러리)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

GMP (GNU Multiple Precision Arithmetic Library)는 임의 정밀도 산술 연산을 위한 라이브러리이다. C 및 C++로 작성되었으며, 큰 숫자를 처리하는 데 사용된다. GMP는 다양한 프로그래밍 언어에 대한 바인딩을 제공하며, C, C++, Perl, Python, R, Ruby, Rust, PHP, Common Lisp, Ch, Haskell, LuaJIT, Delphi, OCaml, .NET, Nim, Java 등에서 사용 가능하다.

더 읽어볼만한 페이지

  • 수치 해석 소프트웨어 - LINPACK
    LINPACK은 부동소수점 연산 성능을 평가하는 벤치마크 프로그램이자 FORTRAN 라이브러리로, 슈퍼컴퓨터 성능 측정 기준으로 사용되는 HPLinpack 벤치마크의 기반이 되었으며, TOP500 목록에서 고성능 컴퓨터 순위를 결정하는 데 기여한다.
  • 수치 해석 소프트웨어 - NumPy
    NumPy는 파이썬에서 다차원 배열을 효과적으로 다루기 위한 라이브러리로, C API를 제공하여 외부 라이브러리와 연동을 지원하며, 다양한 연산 기능과 멀티스레딩을 통한 성능 향상을 제공한다.
  • LGPL 라이선스 소프트웨어 - Qt (소프트웨어)
    Qt는 C++로 작성된 크로스 플랫폼 애플리케이션 개발 프레임워크로, GUI, 멀티미디어, 네트워크 등 다양한 기능을 제공하며, 시그널과 슬롯 메커니즘과 Qt Creator 등의 개발 도구를 통해 데스크톱, 임베디드, 모바일 UI 개발에 널리 사용된다.
  • LGPL 라이선스 소프트웨어 - GTK
    GTK는 GIMP를 위해 개발된 크로스 플랫폼 GUI 툴킷으로, 다양한 운영체제와 프로그래밍 언어를 지원하며 여러 데스크톱 환경 및 애플리케이션에서 활용된다.
  • C 라이브러리 - OpenSSL
    OpenSSL은 1998년에 설립된 암호화 도구 프로젝트로, 다양한 암호화 알고리즘과 프로토콜을 지원하며, 아파치 라이선스를 채택했고, 보안 문제와 API 호환성 문제 등의 비판을 받았다.
  • C 라이브러리 - SQLite
    SQLite는 D. 리처드 히프가 설계한 서버리스 구조의 임베디드 SQL 데이터베이스 엔진으로, 별도의 DBMS 없이 프로그램에 통합되어 작동하며 전체 데이터베이스를 단일 파일로 저장하는 특징이 있고, 다양한 운영체제와 환경에서 널리 사용된다.
GMP (라이브러리) - [IT 관련 정보]에 관한 문서
기본 정보
GMP 로고
GMP 로고
개발자GNU 프로젝트
최초 릴리스1991년
최신 안정화 버전6.2.0
최신 안정화 버전 출시일2020년 1월 18일
최신 미리보기 버전6.3.0
최신 미리보기 버전 출시일2024년 1월 14일
저장소GMP 저장소
프로그래밍 언어C, (C++, 어셈블리 선택 사항)
종류수학 소프트웨어
라이선스LGPLv3 및 GPLv2 이중 라이선스
웹사이트GNU MP Bignum Library

2. 코드 예제

GMP를 사용하면 C나 C++에서 큰 수를 다룰 수 있다. C 코드 예제에서는 `mpz_t` 타입을 사용하여 변수를 초기화하고, `mpz_mul` 함수로 곱셈을 수행하며, 결과는 `gmp_printf`를 통해 출력한다. C++ 코드 예제에서는 `mpz_class`를 사용하며, 더 간결하게 곱셈 연산을 수행하고 `std::cout`으로 결과를 출력할 수 있다.

C 예제에서는 컴파일 시 `-lgmp` 플래그를, C++ 예제에서는 `-lgmpxx -lgmp` 플래그를 사용해야 한다.

2. 1. C

다음은 GMP 라이브러리를 사용하여 큰 숫자를 곱하고 출력하는 C 언어 코드 예제이다.



#include

#include

int main(void) {

mpz_t x, y, result;

mpz_init_set_str(x, "7612058254738945", 10);

mpz_init_set_str(y, "9263591128439081", 10);

mpz_init(result);

mpz_mul(result, x, y);

gmp_printf(" %Zd\n"

"*\n"

" %Zd\n"

"--------------------\n"

"%Zd\n", x, y, result);

/* free used memory */

mpz_clear(x);

mpz_clear(y);

mpz_clear(result);

return 0;

}



이 코드는 7612058254738945 × 9263591128439081의 값을 계산한다.

이 프로그램을 컴파일하여 실행하면 다음과 같은 결과가 나온다. (Unix 계열 시스템에서 컴파일하는 경우 `-lgmp` 플래그가 사용된다.)



7612058254738945



9263591128439081

  • -------------------

70514995317761165008628990709545


2. 2. C++

다음은 GMP를 사용하여 큰 숫자를 곱하고 표시하는 C++ 프로그램 예제이다.



#include

#include

int main() {

mpz_class x("7612058254738945");

mpz_class y("9263591128439081");

std::cout << " " << x << "\n"

<< "*\n"

<< " " << y << "\n"

<< "--------------------\n"

<< x * y << "\n";

return 0;

}



이 코드는 7612058254738945 × 9263591128439081의 값을 계산한다.

컴파일하여 실행할 때(Unix 계열 시스템에서 컴파일하는 경우 `-lgmpxx -lgmp` 플래그가 사용된다.)는 다음과 같은 결과가 나온다.



7612058254738945



9263591128439081

  • -------------------

70514995317761165008628990709545


3. 언어 바인딩

(Integer의 구현은 기본적으로 GMP에 대한 바인딩입니다)하스켈BSD[https://github.com/Playermet/luajit-gmp luajit-gmp]LuaJITMIT[https://code.google.com/archive/p/gmp-wrapper-for-delphi gmp-wrapper-for-delphi]델파이MIT[https://github.com/ocaml/Zarith Zarith]OCamlLGPL[https://github.com/MachineCognitis/Math.Gmp.Native Math.Gmp.Native 라이브러리].NETMIT[https://github.com/FedeOmoto/nim-gmp nim-gmp]MIT[https://github.com/jandom-devel/JGMP JGMP]자바LGPL


참조

[1] 웹사이트 GNU MP archive https://gmplib.org/d[...] 2018-12-03
[2] 웹사이트 What is GMP? https://gmplib.org/#[...] 2014-04-07
[3] 웹사이트 Problems with mpz_set_str and huge strings https://gmplib.org/l[...] 2009-07-06
[4] 웹사이트 GMP 6.0 News https://gmplib.org/g[...] 2019-10-04
[5] 웹사이트 Removed GMP math? http://www.kaffe.org[...] 2008-02-28
[6] 웹사이트 GNU Classpath 0.98 "Better Late Than Never" https://www.gnu.org/[...] 2009-02-05
[7] 웹사이트 GNU MP Bignum Library https://gmplib.org/ 2018-12-03
[8] 웹사이트 The Mathematica Kernel: Issues in the Design and Implementation https://library.wolf[...] 2006-10
[9] 웹사이트 The GNU Multiple Precision (GMP) Library https://www.maplesof[...] Maplesoft 2013-03-17
[10] 웹사이트 GCC 4.3 Release Series: Changes, New Features, and Fixes https://gcc.gnu.org/[...] 2012-11-02
[11] 웹사이트 GMP 6.2 release notes https://gmplib.org/g[...] 2020-07-18
[12] 웹사이트 Future releases http://gmplib.org/#F[...]
[13] 뉴스 GCの変更と高速化を盛り込んだRuby 2.1.0 https://atmarkit.itm[...] "@IT" 2014-01-07
[14] 문서 Numerical computation features for Mathematica 5.0 http://library.wolfr[...]
[15] 웹인용 GNU MP archive https://gmplib.org/d[...] 2018-12-03
[16] 웹인용 GNU MP Bignum Library https://gmplib.org/ 2018-12-03
[17] 문서 Numerical computation features for Mathematica 5.0 http://library.wolfr[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com