#10039: Make Parma Polyhedra Library a standard library
----------------------------+-----------------------------------------------
   Reporter:  vbraun        |       Owner:  mhampton    
       Type:  enhancement   |      Status:  new         
   Priority:  major         |   Milestone:  sage-feature
  Component:  geometry      |    Keywords:  ppl spkg    
     Author:  Volker Braun  |    Upstream:  N/A         
   Reviewer:                |      Merged:              
Work_issues:                |  
----------------------------+-----------------------------------------------

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.p0.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
>
> Dependencies:
>   * #10094: cython and c++
>   * #9828: Upgrade to Cython 0.13

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.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

 Dependencies:
   * #10094: cython and c++
   * #9828: Upgrade to Cython 0.13

--

Comment(by vbraun):

 The testsuite fails on Solaris gcc 4.5.0, most likely due to a gcc bug.
 For reference, the real error is
 {{{
 interval1.cc:76:3: error: no matching function for call to
 'Parma_Polyhedra_Library::Interval<float,
 
Parma_Polyhedra_Library::Interval_Restriction_None<Parma_Polyhedra_Library::Interval_Info_Bitset<unsigned
 int,
 <unnamed>::My_Interval<float>::Floating_Point_Real_Interval_Info_Policy> >
 >::join_assign(double)'
 interval1.cc:194:3:   instantiated from here
 }}}
 Everything should work fine with gcc 4.5.1. In particular, I could compile
 and run the testsuite on OpenSolaris/i386 with gcc 4.5.1. Also note that
 the offending floating point code is currently not used in the Cython
 wrapper. A similar bug report is here:
 https://www.cs.unipr.it/mantis/view.php?id=110

 About the `-W`, the gcc manual says:

 > -Wextra: This enables some extra warning flags that are not enabled by
 -Wall. (This option used to be called -W. The older name is still
 supported, but the newer name is more descriptive.)

 I have addressed the other issues that you raised. The updated spgk is
 here:

 http://www.stp.dias.ie/~vbraun/Sage/spkg/ppl-0.11.spkg

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/10039#comment:15>
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.

Reply via email to