GNU多重精度运算库 - 维基百科,自由的百科全书

GNU Multiple Precision Arithmetic Library
開發者GNU计划
首次发布1991年 (1991)[1]
当前版本
  • 6.3.0 (2023年7月30日;穩定版本)[2]
編輯維基數據鏈接
源代码库 編輯維基數據鏈接
编程语言C语言
操作系统跨平台
类型数学软件
许可协议LGPL
网站gmplib.org

GNU多重精度运算库(英語:GNU Multiple Precision Arithmetic Library,简称GMP或gmpal)是一个开源的任意精度运算库,支持正负数的整数有理数浮点数。它没有任何精度限制,只受限于可用内存。GMP有很多函数,都有规则的接口。GMP是用C语言写成的,但也为其他很多语言做了包装,包括AdaC++C#OCamlPerlPHPpythonR。GMP主要运用于加密应用和研究、互联网安全应用、计算机代数系统和计算代数研究。GMP的目标是成为最快的大数运算库,GMP是GNU项目的一部分,它在GNU宽通用公共许可证下发表。GMP在许多计算机辅助代数系统中用于整数运算,如MathematicaMaple。GMP需要使用GCCGNU编译器套装)编译。

示例

[编辑]

这是一个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日.

外部链接

[编辑]