• gmpy2安装使用方法


    GMP(GNU Multiple Precision Arithmetic Library,即GNU高精度算术运算库),它是一个开源的高精度运算库,其中不但有普通的整数、实数、浮点数的高精度运算,还有随机数生成,尤其是提供了非常完备的数论中的运算接口,比如Miller-Rabin素数测试算法、大素数生成、欧几里德算法、求域中元素的逆、Jacobi符号、legendre符号等。
    gmpy2是Python的一个扩展库,是对GMP的封装,它的前身是gmpy,经过其作者的调整和封装,使得gmpy2的使用大大简化。

    官方文档:https://gmpy2.readthedocs.io/en/latest/

    -------

    1、windows上安装gmpy2

    在windows上直接安装wheel文件就方便多了。

    https://pypi.org/project/gmpy2/#files

    这里面有python2.6、2.7、3.2、3.3、3.4版本的wheel文件,下载后用pip安装即可。(暂时还找不到3.5版本)

    后来也发现有一个gmpy2-2.0.8.win-amd64-py2.7.exe文件。

    -= 2018.01补充 =-

    现在gmpy2 2.1.0a1里可以支持3.4+

    2、linux上安装gmpy2

    gmpy2是依赖GMP、MPFR、MPC三个库,故此在linux上安装前得先安装这3个库。

    为了后续安装的方便,先建立2个文件夹。

    mkdir -p $HOME/src
    mkdir -p $HOME/static

    -= 2018.04补充 =-

    测试有没有安装m4模块:

    man m4

    如果出现No manual entry for m4,就说明没有安装m4模块。

    如果没安装m4模块,在编译GMP时候会报错checking for suitable m4... configure: error: No usable m4 in $PATH or /usr/5bin (see config.log for reasons).

    安装m4:

    GNU M4 is an implementation of the traditional Unix macro processor. It is mostly SVR4 compatible although it has some extensions (for example, handling more than 9 positional parameters to macros). GNU M4 also has built-in functions for including files, running shell commands, doing arithmetic, etc.

    当前最新的是1.4.18

    v=1.4.18
    cd $HOME/src
    wget http://ftp.gnu.org/gnu/m4/m4-${v}.tar.gz
    tar xf m4-${v}.tar.gz && cd m4-${v}
    ./configure -prefix=/usr/local
    make && make check && make install

    3、安装GMP

    GMP(The GNU Multiple Precision Arithmetic Library) is a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating-point numbers.
    https://gmplib.org/

    当前最新的是6.1.2

    v=6.1.2
    cd $HOME/src
    wget https://gmplib.org/download/gmp/gmp-${v}.tar.bz2
    tar -jxvf gmp-${v}.tar.bz2 && cd gmp-${v}
    ./configure --prefix=$HOME/static --enable-static --disable-shared --with-pic
    make && make check && make install

    4、安装MPFR

    The MPFR library is a C library for multiple-precision floating-point computations with correct rounding.
    http://www.mpfr.org/mpfr-current/#download
    当前最新的是4.0.1 (请自己访问官网,替换成最新的版本号)

    v=4.0.1
    cd $HOME/src
    wget http://www.mpfr.org/mpfr-current/mpfr-${v}.tar.bz2
    tar -jxvf mpfr-${v}.tar.bz2 && cd mpfr-${v}
    ./configure --prefix=$HOME/static --enable-static --disable-shared --with-pic --with-gmp=$HOME/static
    make && make check && make install

    -= 2018.04补充 =-

    如果mpfr.org下载太慢,可以换为

    wget http://ftp.gnu.org/gnu/mpfr/mpfr-${v}.tar.bz2

    5、安装MPC

    GNU MPC is a C library for the arithmetic of complex numbers with arbitrarily high precision and correct rounding of the result.
    http://www.multiprecision.org/mpc/download.html (这里最新是1.0.3)
    但当mpfr版本为4.x以上会报错Makefile:532: recipe for target 'mul.lo' failed

    ftp://ftp.gnu.org/gnu/mpc/ 可以找到更新的1.1.0版本

    v=1.1.0
    cd $HOME/src
    wget ftp://ftp.gnu.org/gnu/mpc/mpc-${v}.tar.gz
    tar -zxvf mpc-${v}.tar.gz && cd mpc-${v}
    ./configure --prefix=$HOME/static --enable-static --disable-shared --with-pic --with-gmp=$HOME/static --with-mpfr=$HOME/static
    make && make check && make install

    6、安装gmpy2

    github项目:https://github.com/aleaxit/gmpy

    现在新的版本(2-2.1.0b1以上版本)在执行python setup.py build_ext --static=$HOME/static install

    会报错error: option --static must not have an argument

    解决法子1:

    releases版本(2-2.1.0a1以下版本)来安装

    v=2-2.1.0a1
    cd $HOME/src
    wget https://github.com/aleaxit/gmpy/releases/download/gmpy${v}/gmpy${v}.tar.gz
    tar xf gmpy${v}.tar.gz && cd gmpy${v}
    python setup.py build_ext --static=$HOME/static install

    解决法子2:

    因为新版本的setup.py修改了不少,故得采用以下法子:

    python setup.py build_ext --static-dir=$HOME/static install

    安装后,命令行进入python模式后,输入import gmpy2没报错就成功了。

    -= 2018.04补充 =-

    如果使用wget下载时候一直卡在:

    Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.227.24|:443...

    可以尝试:

    echo 52.216.16.16 github-production-release-asset-2e65be.s3.amazonaws.com >>/etc/hosts
    /etc/init.d/networking restart

    -= 2018.05补充 =-

    如果报错fatal error: Python.h: 没有那个文件或目录

    apt-get install python-dev

    7、gmpy2使用方法

    这里pcat就介绍找一百以内的素数,更多gmpy2的用法自己搜索吧,或者以后补充(←_←)。

    import gmpy2
    for i in xrange(100+1):
        if gmpy2.is_prime(i):
            print i
  • 相关阅读:
    PHP操作目录(文件夹)的常用函数
    PHP处理时间的常用函数
    PHP操作文件的常用函
    PHP处理数组的常用函数
    PHP处理字符串的常用函数
    什么是 CGI?什么是 FastCGI?php-fpm,FastCGI,Nginx 之间是什么关系?
    一天一个 Linux 命令(18):ln 命令
    IntelliJ IDEA get set 快捷键
    mysql的一些问题记录
    数据库的乐观锁和悲观锁是什么?怎么实现的?
  • 原文地址:https://www.cnblogs.com/pcat/p/5746821.html
Copyright © 2020-2023  润新知