跳转到主要内容

Python PPL 封装

项目描述

此 Python 包提供了一个到 C++ Parma Polyhedra Library (PPL) 的封装。

整个包最初是 Sage 软件的一个小部分的分支。

工作原理

对象和方法的名称与库中相同

>>> import ppl
>>> x = ppl.Variable(0)
>>> y = ppl.Variable(1)
>>> z = ppl.Variable(2)
>>> cs = ppl.Constraint_System()
>>> cs.insert(x >= 0)
>>> cs.insert(y >= 0)
>>> cs.insert(z >= 0)
>>> cs.insert(x + y + z == 1)
>>> poly = ppl.C_Polyhedron(cs)
>>> poly.minimized_generators()
Generator_System {point(1/1, 0/1, 0/1), point(0/1, 1/1, 0/1), point(0/1, 0/1, 1/1)}

ppl Python 模块中可用的对象和函数有

  • VariableVariables_SetLinear_Expression(定义在 ppl.linear_algebra 中)

  • MIP_Problem(定义在 ppl.mip_problem 中)

  • C_PolyhedronNNC_Polyhedron(定义在 ppl.polyhedron 中)

  • GeneratorGenerator_SystemPoly_Gen_Relationpointclosure_pointrayline(定义在 ppl.generator 中)

  • ConstraintConstraint_SystemPoly_Con_Relationinequalityequationstrict_inequality(定义在 ppl.constraint 中)

安装

该项目可在 Python 包索引 中找到,并可以使用 pip 进行安装

$ pip install pplpy

注意,如果您在非标准目录中安装了 gmp 和 ppl(例如,在 MacOSX 上使用 brew),那么在调用 pip 之前需要适当地设置变量 CFLAGS。例如

$ export CFLAGS="-I/path/to/gmp/include/ -L/path/to/gmp/lib/ -I/path/to/ppl/include/ -L/path/to/ppl/lib $CFLAGS"
$ pip install pplpy

使用 Cython

所有 pplpy 中的 Python 类都是扩展类型,可以与 Cython 一起使用。每个扩展类型都有一个属性 thisptr,它包含对 ppl 中相应 C++ 对象的指针。

完整的示例文件包括 tests/testpplpy.pyxtests/setup.py

源代码

您可以在 github 上找到源代码的最新版本:https://github.com/sagemath/pplpy

文档

文档的在线版本可在 https://www.sagemath.org/pplpy/ 中找到

编译 html 文档需要 make 和 sphinx。在构建文档之前,您需要安装 pplpy 包(sphinx 使用 Python 反射)。文档源代码包含在 docs 仓库中,其中有一个标准的 Makefile,包含一个目标 html。在 docs 仓库中运行 make html 会构建位于 docs/build/html 内的文档。有关更多配置选项,请运行 make help

许可协议

pplpy 根据 GNU 通用公共许可证(GPL)的条款分发,该许可证由自由软件基金会发布;许可证的版本 3,或者(在您选择的情况下)任何后续版本。请参阅 https://gnu.ac.cn/licenses/

需求

在 Debian/Ubuntu 系统上,可以使用以下命令安装依赖项

$ sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev libppl-dev cython3 python3-gmpy2 python3-cysignals-pari

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源代码发行版

pplpy-0.8.10.tar.gz (64.2 kB 查看哈希值)

上传时间 源代码

构建的发行版

pplpy-0.8.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.0 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ x86-64

pplpy-0.8.10-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (12.5 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ i686

pplpy-0.8.10-cp312-cp312-macosx_11_0_arm64.whl (1.2 MB 查看哈希值)

上传时间 CPython 3.12 macOS 11.0+ ARM64

pplpy-0.8.10-cp312-cp312-macosx_10_9_x86_64.whl (1.4 MB 查看哈希值)

上传时间 CPython 3.12 macOS 10.9+ x86-64

pplpy-0.8.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.0 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ x86-64

pplpy-0.8.10-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (12.5 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ i686

pplpy-0.8.10-cp311-cp311-macosx_11_0_arm64.whl (1.2 MB 查看哈希值)

上传时间 CPython 3.11 macOS 11.0+ ARM64

pplpy-0.8.10-cp311-cp311-macosx_10_9_x86_64.whl (1.4 MB 查看哈希值)

上传时间 CPython 3.11 macOS 10.9+ x86-64

pplpy-0.8.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.8 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ x86-64

pplpy-0.8.10-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (12.4 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ i686

pplpy-0.8.10-cp310-cp310-macosx_11_0_arm64.whl (1.2 MB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

pplpy-0.8.10-cp310-cp310-macosx_10_9_x86_64.whl (1.4 MB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

pplpy-0.8.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.9 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

pplpy-0.8.10-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (12.4 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ i686

pplpy-0.8.10-cp39-cp39-macosx_11_0_arm64.whl (1.2 MB 查看哈希值)

上传于 CPython 3.9 macOS 11.0+ ARM64

pplpy-0.8.10-cp39-cp39-macosx_10_9_x86_64.whl (1.4 MB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ x86-64

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面