#10039: Make Parma Polyhedra Library a standard library
-------------------------+--------------------------------------------------
Reporter: vbraun | Owner: mhampton
Type: enhancement | Status: needs_review
Priority: major | Milestone: sage-4.7
Component: geometry | Resolution: fixed
Keywords: ppl spkg | Author: Volker Braun
Upstream: N/A | Reviewer: Marshall Hampton
Merged: | Work_issues:
-------------------------+--------------------------------------------------
Changes (by vbraun):
* status: needs_work => needs_review
Old description:
> The Parma Polyhedra Library (ppl) is for many workloads the fastest
> library for polyhedral computations. It is also high-quality code, for
> example GCC uses it (optionally) to optimize loops.
> * ppl has already been widely tested on a multitude of platforms.
> * Native C++ with a pure C interface.
> * Contains a huge testsuite _and_ passes its own testsuite (in contrast
> to some other polydedral library that shall remain unnamed)
>
> Official webpage: http://www.cs.unipr.it/ppl/
>
> My plan is to
> 1. Create a PPL spkg.
> 2. Write a Cython interface.
> 3. Base `sage.geometry.cone.Cone` on PPL instead of `Polyhedron/cddlib`
> 4. Split `sage.geometry.polyhedra.Polyhedron` into an abstract base
> class and derived classes that use different polyhedral computation
> libraries.
>
> Current status:
> 1. Spkg can be found here:
> http://www.stp.dias.ie/~vbraun/Sage/spkg/ppl-0.11.2.spkg
> 2. My cython wrapper for PPL is attached. It has full doctest coverage
> and any invalid input is caught and raises `ValueError`.
> 3. Is split off into trac #10140.
>
> For convenience I mirrored the reference manual page here:
> http://www.stp.dias.ie/~vbraun/Sage/html/en/reference/sage/libs/ppl.html
>
> To apply this ticket
> * copy the ppl spkg to `$SAGE_ROOT/spkg/standard`
> * apply [attachment:trac_10039_parma_polyhedra_library.patch] to the
> Sage library
> * apply [attachment:10039_manifest.patch] to the Sage library
> * apply [attachment:trac_10039_root_repo.patch] the sage root
> repository
> * apply [attachment:trac_10039_SAGE_LOCAL_bin_repo.patch] to the
> `$SAGE_LOCAL/bin` repository
New description:
The Parma Polyhedra Library (ppl) is for many workloads the fastest
library for polyhedral computations. It is also high-quality code, for
example GCC uses it (optionally) to optimize loops.
* ppl has already been widely tested on a multitude of platforms.
* Native C++ with a pure C interface.
* Contains a huge testsuite _and_ passes its own testsuite (in contrast
to some other polydedral library that shall remain unnamed)
Official webpage: http://www.cs.unipr.it/ppl/
My plan is to
1. Create a PPL spkg.
2. Write a Cython interface.
3. Base `sage.geometry.cone.Cone` on PPL instead of `Polyhedron/cddlib`
4. Split `sage.geometry.polyhedra.Polyhedron` into an abstract base
class and derived classes that use different polyhedral computation
libraries.
Current status:
1. Spkg can be found here:
http://www.stp.dias.ie/~vbraun/Sage/spkg/ppl-0.11.2.spkg
2. My cython wrapper for PPL is attached. It has full doctest coverage
and any invalid input is caught and raises `ValueError`.
3. Is split off into trac #10140.
For convenience I mirrored the reference manual page here:
http://www.stp.dias.ie/~vbraun/Sage/html/en/reference/sage/libs/ppl.html
To apply this ticket
* copy the ppl spkg to `$SAGE_ROOT/spkg/standard`
* apply [attachment:trac_10039_parma_polyhedra_library.patch] to the
Sage library
* apply [attachment:trac_10039_ppl_fix_extremize.patch] to the Sage
library
* apply [attachment:10039_manifest.patch] to the Sage library
* apply [attachment:trac_10039_root_repo.patch] the sage root repository
* apply [attachment:trac_10039_SAGE_LOCAL_bin_repo.patch] to the
`$SAGE_LOCAL/bin` repository
--
Comment:
I finally '''got''' the problem with the maximize/minimize doctest
failure. If the linear function is not bounded on the polyhedron then it
doesn't make sense to ask for whether its a maximum or minimum. And PPL
then does not return a consistent value for the corresponding field.
In the attached patch I changed return value of the maximize/minimize
methods to only return `{'bounded':False}` if the linear program is
unbounded, since all other dictionary entries are not well-defined in that
case. If the linear program is bounded then the returned dictionary is the
same as before and contains information about the sup/inf value, whether
it is a maximum, and where it is attained.
The new patch `trac_10039_ppl_fix_extremize.patch` needs to be applied on
top of `trac_10039_parma_polyhedra_library.patch`, see also the ticket
description. The new patch needs review.
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/10039#comment:81>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.