数论库pari/gp的python接口

cypari2的Python项目详细描述


https://travis-ci.org/sagemath/cypari2.svg?branch=masterDocumentation Status

数论库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类似于上面的zetafactorffliftcenterlift

或者,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开发人员联系。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java嵌套循环打印一个数字,旁边有相同数量的星号   java JodReports替代方案   java如何将模型类parcelable对象从片段传递到活动?   java JCS缓存删除功能不删除特定元素   如何打开。Java的dll文件。   java在这种情况下如何选择聚合根?   java从CellEditorListener获取编辑的TreeNode   Java到web服务和mysql   从openssl ec在Java中创建公钥时出现加密无效密钥异常   Java数组:添加多个数组的元素时忽略空数组   java在初始化后向fragment发送数据   JButtons的java数组正在返回void   若联接列不包含特定值,则java JPA条件生成器仅返回实体   java ActionBar问题:NPE   java Portlet是被广泛使用还是非常罕见?