使用 Python 导入 PARI 库(在 C++ 中)

计算科学 线性代数 Python C++
2021-12-17 05:00:47

我注意到 Python 对有理数没有很好的数据类型,当然对于像的实根这样的代数数也没有他们有数据类型,我能够使用精心安排的矩阵从那里破解我的特定问题的解决方案。1+23x35x+7fractions

提前PARI使用C. 由于GP是 PARI 的接口,因此似乎可以为这些库编写 Python 接口。

我似乎无法安装Pari-Python,所以这是一个学习直接导入 C 库的机会。


在它的核心,我只想学习如何将 C++ 库导入 Python。具体来说,来自PARI-GP源代码的库。

3个回答

我注意到 Python 对有理数没有很好的数据类型,当然对于像的实根这样的代数数也没有他们有数据类型,我能够使用精心安排的矩阵从那里破解我的特定问题的解决方案。1+23x35x+7fractions

如果您不想使用 Sage 的原因是您不想安装厨房水槽,您可以使用 Python 在 Python 中执行此操作sympy

要将 C 或 C++ 代码导入 Python,请参阅SWIG

但是,尝试修复您在安装或导入pari-python库时看到的错误可能会更容易,因此可以将您看到的错误作为一个单独的问题发布并解决它们。

SWIG的替代品CythonCython vs SWIG 中,战斗!您可以看到它们的语法比较(TL;DW:两者都需要您编写一些划船代码,每个代码都在不同的角落)。

我认为 Cython 的主要优点是语法,更接近 Python,并且您可以轻松地逐步将 Python 代码转换为 C。它正在大量开发中,但它非常稳定。它是大多数主要科学图书馆正在使用的(Numpy、Scipy、scikits...),其中包含大量面向科学堆栈的文档。

SWIG 是一个更成熟的项目,也维护并与其他编程语言兼容。我知道一些大量使用它的研究项目;但据我所知,我没有详细使用过这些库。