GNU多重精度運算庫
外觀
開發者 | GNU計劃 |
---|---|
首次發布 | 1991年[1] |
目前版本 | 6.3.0[2](2023年7月30日) |
原始碼庫 | |
程式語言 | C語言 |
作業系統 | 跨平台 |
類型 | 數學軟體 |
許可協定 | LGPL |
網站 | gmplib |
GNU多重精度運算庫(英語:GNU Multiple Precision Arithmetic Library,簡稱GMP或gmpal)是一個開源的任意精度運算庫,支援正負數的整數、有理數、浮點數。它沒有任何精度限制,只受限於可用主記憶體。GMP有很多函式,都有規則的介面。GMP是用C語言寫成的,但也為其他很多語言做了包裝,包括Ada,C++,C#,OCaml,Perl,PHP,python 和 R。GMP主要運用於加密應用和研究、網際網路安全應用、電腦代數系統和計算代數研究。GMP的目標是成為最快的大數運算庫,GMP是GNU專案的一部分,它在GNU寬通用公共許可證下發表。GMP在許多電腦輔助代數系統中用於整數運算,如Mathematica和Maple。GMP需要使用GCC(GNU編譯器套裝)編譯。
範例
[編輯]這是一個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 (電腦語言) | |
Glasgow Haskell Compiler (The implementation of Integer is basically a binding to GMP) |
Haskell | BSD |
參考資料
[編輯]- ^ The GNU Multiple Precision Arithmetic Library. [29 October 2011]. (原始內容存檔於2021-01-28).
- ^ "GMP 6.3.0 released"; 作者姓名字串: Torbjörn Granlund; 作品或名稱使用語言: 英語; 出版日期: 2023年7月30日; 檢索日期: 2023年7月30日.
外部連結
[編輯]- gmplib官方首頁 (頁面存檔備份,存於網際網路檔案館)