GMP是什么

时间:2020-11-16 15:55:10

简介

GMP(The GNU Multiple Precision Arithmetic Library)又叫GNU多精度算术库,是一个提供了很多操作高精度的大整数,浮点数的运算的算术库,几乎没有什么精度方面的限制,功能丰富。

编译和测试方式

1.配置安装环境

安装wget工具。

yum install wget -y

2.获取软件包

获取“gmp-6.1.2”源码包。

cd /usr/local/src

wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz

3.编译和安装

1)解压软件包。

cd /usr/local/src

xz -d gmp-6.1.2.tar.xz

tar -xvf gmp-6.1.2.tar

2)进入gmp的下载目录。

cd gmp-6.1.2

3)配置gmp生成Makefile。

./configure

4)编译和安装gmp。

make && make install

----结束

4.运行和验证

1)新建C++测试代码例子。

vi test.cpp

该例子实现1000的阶乘,代码如下:

#include <gmp.h>

#include <string.h>

int main(int argc, const char *argv[])

{

  mpz_t z_i, z_s, z_o;

  mpz_init_set_str(z_i, "1", 10);

  mpz_init_set_str(z_s, "1", 10);

  mpz_init_set_str(z_o, "1", 10);

  int i;

  for (i = 0; i < 1000; i++)

  {

    mpz_mul(z_s, z_s, z_i);

    mpz_add(z_i, z_i, z_o);

  }

  gmp_printf("%Zd\n", z_s);

  mpz_clear(z_i);

  mpz_clear(z_s);

  mpz_clear(z_o);

  getchar();

  return 0;

}

2)编译例子。

gcc test.cpp -lgmp -lm -o test

3)    运行例子。

./test

回显信息如下,表示测试gmp安装成功。

40238726007709377354370243392300398571937486421071463254379991042993851239862902059204420848696940480047998861019719605863166

68729948085589013238296699445909974245040870737599188236277271887325197795059509952761208749754624970436014182780946464962910

56393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611

66779739666882029120737914385371958824980812686783837455973174613608537953452422158659320192809087829730843139284440328123155

86110369768013573042161687476096758713483120254785893207671691324484262361314125087802080002616831510273418279777047846358681

70164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975

60290095053761647584772842188967964624494516076535340819890138544248798495995331910172335555660213945039973628075013783761530

71277619268490343526252000158885351473316117021039681759215109077880193931781141945452572238655414610628921879602238389714760

88506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414

28201218736174599264295658174662830295557029902432415318161721046583203678690611726015878352075151628422554026517048330422614

39742869330616908979684825901254583271682264580665267699586526822728070757813918581788896522081643483448259932660433676601769

99612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657

24501440282188525247093519062092902313649327349756551395872055965422874977401141334696271542284586237738753823048386568897646

19273838149001407673104466402598994902222217659043399018860185665264850617997023561938970178600408118897299183110211712298459

01641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940

69428143411852015801412334482801505139969429015348307764456909907315243327828826986460278986432113908350621709500259738986355

42771967428222487575867657523442000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000

----结束

上一篇: CMake是什么

下一篇: 什么是Protobuf

猜你喜欢