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 |
參考資料
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.