C++数论库

1.Ntl

NTL is a high-performance, portable C++ library providing data structures and algorithms for manipulating signed, arbitrary length integers, and for vectors, matrices, and polynomials over the integers and over finite fields.
By default, NTL is thread safe.
Ubuntu16.04中,若通过apt-getinstalllibntl-dev,安装的ntl版本比较老。可按如下方式编译安装新的版本:

%tarxzvfntl-xxx.tar.gz
%cdntl-xxx/src
#注意,此处加了-fPIC,保证64位系统编译出来的静态库具有重定位能力
%./configureCXXFLAGS=-fPIC
%make
%makecheck
%sudomakeinstall

2.PARI/GP

PARI/GP是一种针对数论中的快速计算(大数分解,代数数论,椭圆曲线…)而设计的广泛应用的计算机代数系统,同样具备大量实用的函数来对于数学实体的计算,诸如矩阵,多项式,幂级数,代数数,以及相当多的超越方程等等。PARI也可以作为快速计算的C语言库。这个系统最初是由HenriCohen和他的合作者们(来自法国的波尔多第一大学)发展起来的。PARI现在在公共授权条款(GPL)之下并在许多志愿者的帮助下由
KarimBelabas进行维护。

  • PARI是一个可以快速计算的C语言库。
  • gp是一个容易上手的交互式外壳,它赋予用户调用PARI函数的权力。
  • GP是gp脚本语言的名字。
  • gp2c,GP到C的编译器,通过编译GP脚本至C语言以及透明载入结果函数至gp来结合两者的最优点。(由gp2c编译的脚本一般情况下运行速度将快3至4倍。)目前gp2c只能运行GP语言的一部分。

其源码编译安装方法为:

gitclonehttp://pari.math.u-bordeaux.fr/git/pari.git
cdpari
./Configure--prefix=GPDIR--mt=pthread
make-j4gp
makedoc
makestatest-all
makeinstall
makeinstall-bin-sta
./Configure--prefix=GPDIR.dbg-g
make-j4gp.dbg
makeinstall-COlinux-x86_64.dbg
GPDIR/bin/gp

以https://github.com/JohnCremona/eclib中调用Pari库的方式为:

./configure–with-pari=$pwd/GPDIR
make

引自https://bbs.emath.ac.cn/thread-15419-1-1.html:
pari/gp的确效率不是很好,能够使用的内存也是预先分配的,不能使用太多内存。Linux比Windows效率明显要高,但是还不是特别好。

参考资料:
[1]https://github.com/hyraxZK/pylaurent/tree/c2176c97b06ee8e8e17c30fc53ba93c29e42c744
[2]https://www.shoup.net/ntl/
[3]http://pari.math.u-bordeaux.fr/
[4]ntl64位操作系统静态库编译参考博客/usr/local/ssl/lib/libssl.a:erroradding symbols:Badvalue
[5]https://bbs.emath.ac.cn/thread-15419-1-1.html

发布了154 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/mutourend/article/details/103774819