GNU多重精度运算库

GNU多重精度运算库（，简称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  Glasgow Haskell Compiler(The implementation of Integeris basically a binding to GMP) Haskell BSD

参考资料

外部链接
 gmplib官方主页 

Category:数学软件
Category:GNU计划软件
Category:C函式庫
Category:用C編程的自由軟體