Polyhedral Computation in Julia
JuliaPolyhedra is the Julia organization targeted to polyhedral computation. Its packages share a common interface defined in the Polyhedra.jl package.
List of libraries
The following table provides a list of Polyhedra Manipulation Libraries.
When they have a Julia library implementing the interface of Polyhedra.jl then the "Julia Package" column shows the name of the package.
By convention, if the name of the package is X, the name of the libary is X.Library.
For instance, the CDD library can be created with CDDLib.Library().
Some libraries have options such as the solver they use to solve linear programs or
the arithmetic they use.
For instance, to use CDD with exact arithmetic, do CDDLib.Library(:exact).
The call CDDLib.Library() is equivalent to CDDLib.Library(:float).
| Solver | Julia Package | License | Exact Rational | Floating point |
|---|---|---|---|---|
| cdd | CDDLib.jl | GPL | X | X |
| ConvexHull | ConvexHull.jl | MIT | X | X |
| lrs | LRSLib.jl | GPL | X | |
| qhull | QHull.jl | X | ||
| CHull2d | CHull2d.jl | MIT | X | X |
| NewPolka | None | GPL | X | |
| Parma Polyhedra Library | None | GPL | X | |
| pd | None | GPL | X | |
| porta | XPORTA.jl | GPL | X (overflow !) |
Please let me know if you plan to write a new wrapper (or an implementation in pure Julia). Since libraries use different algorithms, no library is better for every problem; here and here are comparisons.