数论库pari/gp的python接口
cypari2的Python项目详细描述
数论库PARI/GP的python接口。
这个库同时支持Python2和Python3。
安装
gnu/linux
python2-cypari2或python2-cypari2或python3-cypari2包可能是 在包管理器中提供。
使用pip
要求:
- PARI/GP≫=2.9.4(头文件和库)
- python 2.7或python>;=3.4
- 点
- cysignals>;=1.7
- cython=0.28
通过python包索引(pypi)通过
$ pip install cypari2 [--user]
(可选选项–user允许为单个用户安装cypari2 避免使用具有管理员权限的pip)。取决于你的操作 系统pip命令也可以称为pip2或pip3。
如果要尝试开发版本,请使用
$ pip install git+https://github.com/sagemath/cypari2.git [--user]
如果您在说libpari gmp*.so*丢失时出错,并且有所有要求 已安装,请尝试重新安装cysignals和cypari2
$ pip install cysignals --upgrade [--user] $ pip install cypari2 --upgrade [--user]
其他
不支持任何其他安装cypari2的方法。尤其是,python setup.py install将产生一个错误。
用法
接口保持尽可能靠近PARI/GP。以下 以gp计算
? zeta(2) %1 = 1.6449340668482264364724151666460251892 ? p = x^3 + x^2 + x - 1; ? modulus = t^3 + t^2 + t - 1; ? fq = factorff(p, 3, modulus); ? centerlift(lift(fq)) %5 = [ x - t 1] [x + (t^2 + t - 1) 1] [ x + (-t^2 - 1) 1]
翻译成
>>> import cypari2 >>> pari = cypari2.Pari() >>> pari(2).zeta() 1.64493406684823 >>> p = pari("x^3 + x^2 + x - 1") >>> modulus = pari("t^3 + t^2 + t - 1") >>> fq = p.factorff(3, modulus) >>> fq.lift().centerlift() [x - t, 1; x + (t^2 + t - 1), 1; x + (-t^2 - 1), 1]
上面的对象pari是接口的对象,充当 构造器。它可以用基本的python对象(如integer)调用 或浮点。当使用与上一个示例中相同的字符串调用时 对应的字符串被解释为在gp shell中执行。
在接口对象pari类型pari之外,您得到的任何对象 上的句柄的类型是gen(这是gen类型的包装 利伯里)。然后,所有的PARI/GP函数都可以以其原始名称提供。 methods类似于上面的zeta,factorff,lift或centerlift。
或者,pari函数可以作为pari的方法访问。这个 通过
>>> import cypari2 >>> pari = cypari2.Pari() >>> pari.zeta(2) 1.64493406684823 >>> p = pari("x^3 + x^2 + x - 1") >>> modulus = pari("t^3 + t^2 + t - 1") >>> fq = pari.factorff(p, 3, modulus) >>> pari.centerlift(pari.lift(fq)) [x - t, 1; x + (t^2 + t - 1), 1; x + (-t^2 - 1), 1]
cypari2的完整文档可在http://cypari2.readthedocs.io和 在{a6}
中的PARI/GP文档贡献
提交pull请求或与sagemath开发人员联系。