简介
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
----结束