文档首页 > > 移植指南> 移植GMP

移植GMP

分享
更新时间:2020/11/02 GMT+08:00

介绍

简要介绍

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

语言:C++

一句话描述:大整数运算库

开源协议:LGPL3、GPL

建议的版本

建议使用版本为“gmp-6.1.2”

环境要求

云服务器要求

本文以云服务器KC1实例测试,云服务器配置如表1所示。

表1 云服务器配置

项目

说明

规格

kc1.xlarge.2 | 4vCPUs | 14GB

磁盘

系统盘:高IO(40GB)

操作系统要求

操作系统要求如表2所示。

表2 操作系统要求

项目

说明

下载地址

CentOS

7.5

在公共镜像中已提供。

Kernel

4.14.0-49

在公共镜像中已提供。

配置编译环境

安装wget工具。

yum install wget -y

获取源码

获取“gmp-6.1.2”源码包。

cd /usr/local/src

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

编译和安装

  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

运行和验证

  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

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问