GNU多重精度運算庫

GNU多重精度運算庫(英語:GNU Multiple Precision Arithmetic Library,簡稱GMP或gmpal)是一個開源的任意精度運算庫,支援正負數的整數有理數浮點數。它沒有任何精度限制,只受限於可用記憶體。GMP有很多函數,都有規則的介面。GMP是用C語言寫成的,但也為其他很多語言做了包裝,包括AdaC++C#OCamlPerlPHPpythonR。GMP主要運用於加密應用和研究、互聯網安全應用、電腦代數系統和計算代數研究。GMP的目標是成為最快的大數運算庫,GMP是GNU專案的一部分,它在GNU寬通用公共許可證下發表。GMP在許多電腦輔助代數系統中用於整數運算,如MathematicaMaple。GMP需要使用GCCGNU編譯器套裝)編譯。

GNU Multiple Precision Arithmetic Library
開發者GNU計劃
首次發佈1991年 (1991)[1]
目前版本
  • 6.3.0 (2023年7月30日;穩定版本)[2]
編輯維基數據連結
原始碼庫 編輯維基數據連結
程式語言C語言
作業系統跨平台
類型數學軟件
許可協定LGPL
網站gmplib.org

範例 編輯

這是一個C語言範例,它展示了如何使用GMP做乘法運算並輸出。

#include <stdio.h>
#include <stdlib.h>
#include <gmp.h>

int main(void)
{
 mpz_t x;
 mpz_t y;
 mpz_t result;

 mpz_init(x);
 mpz_init(y);
 mpz_init(result);

 mpz_set_str(x, "7612058254738945", 10);
 mpz_set_str(y, "9263591128439081", 10);

 mpz_mul(result, x, y);
 gmp_printf("\n    %Zd\n*\n    %Zd\n--------------------\n%Zd\n\n", x, y, result);

 /* free used memory释放内存*/ 
 mpz_clear(x);
 mpz_clear(y);
 mpz_clear(result);
 return EXIT_SUCCESS;
}

這段代碼計算7612058254738945和9263591128439081的乘積。

編譯執行,獲得這樣的輸出:(在類UNIX系統下,需要使用 -lgmp 參數)

    7612058254738945
*
    9263591128439081
--------------------
70514995317761165008628990709545

也可以用C++完成相同的運算。(在類UNIX系統下,需要使用 -lgmp 參數)

#include <iostream>
#include <gmpxx.h>

int main()
{
  mpz_class x("7612058254738945");
  mpz_class y("9263591128439081");

  std::cout << "\n    " << x << "\n*\n    " << y;
  std::cout << "\n--------------------\n" << x * y << "\n\n";
}

語言支援 編輯

Library name 語言 許可證
GNU Multi-Precision Library頁面存檔備份,存於互聯網檔案館 C, C++ LGPL
Math::GMP頁面存檔備份,存於互聯網檔案館 Perl
GNU Multi-Precision Library for .NET C#, .NET LGPL
General Multiprecision Python Project頁面存檔備份,存於互聯網檔案館 Python
The RubyGems project頁面存檔備份,存於互聯網檔案館 Ruby
GNU Multi-Precision Library for PHP頁面存檔備份,存於互聯網檔案館 PHP PHP
GNU Multi-Precision Routines for SBCL頁面存檔備份,存於互聯網檔案館 Common Lisp
Ch GMP頁面存檔備份,存於互聯網檔案館 Ch (電腦語言)英語Ch_(computer_programming)
Glasgow Haskell Compiler
(The implementation of Integer
is basically a binding to GMP)
Haskell BSD

參考資料 編輯

  1. ^ The GNU Multiple Precision Arithmetic Library. [29 October 2011]. (原始內容存檔於2021-01-28). 
  2. ^ 2.0 2.1 "GMP 6.3.0 released"; 作者姓名字串: Torbjörn Granlund; 作品或名稱使用語言: 英語; 出版日期: 2023年7月30日; 檢索日期: 2023年7月30日.

外部連結 編輯