#17979: Reimplementation of IntegerListsLex
-------------------------------------+-------------------------------------
       Reporter:  aschilling         |        Owner:
           Type:  defect             |       Status:  needs_review
       Priority:  blocker            |    Milestone:  sage-6.6
      Component:  combinatorics      |   Resolution:
       Keywords:  days64             |    Merged in:
        Authors:  Bryan Gillespie,   |    Reviewers:  Nathann Cohen, Jeroen
  Anne Schilling, Nicolas M. Thiery  |  Demeyer
Report Upstream:  N/A                |  Work issues:
         Branch:                     |       Commit:
  public/ticket/17979                |  f73c43fd4423675f9ce279da9bb929a44db31483
   Dependencies:                     |     Stopgaps:
-------------------------------------+-------------------------------------

Comment (by jdemeyer):

 Replying to [comment:178 nthiery]:
 > Ok, I believe all the points that have been raised have been catered
 > for (but some may have slipped through in this long thread). So this
 > is up for formal review.

 Let me remind everybody here that #17920 is ''also'' up for formal review.

 Comparing both approaches (I am of course not completely unbiased, but
 I'll really try to be objective):

 * '''Bugs''': neither #17979 nor #17920 have obvious bugs (although I find
 [comment:166] dubious at least), both fix #17548. I assume both pass
 doctests.

 * '''Features''': #17979 tries to replicate the old behaviour as closely
 as possible, #17920 generalizes certain conditions (e.g. allowing negative
 numbers; allowing iteration in non-invlex order) but also adds a few
 restrictions (e.g. not allowing an iterable for `n`).

 * '''Interface with rest of Sage''': #17920 only uses the new
 `IntegerLists` code for `IntegerListsLex`, `Partitions` and `Compositions`
 (in the other places in Sage where `IntegerListsLex` was used, I didn't
 find any bugs so I left those). This ticket #17979 replaces the old code
 in almost all cases (except partially in `IntegerVectors`).

 * '''Speed''': for simple examples, #17979 is faster. Both implementations
 have cases where they behave pathologically: for #17979 this is for
 example {{{IntegerListsLex(10^10, length=2, min_slope=0, max_slope=0)}}},
 while #17920 behaves badly if the length gets large.

 * '''Extensibility''': because #17920 is based on polyhedra, it will be
 much easier to generalize the code (it already does some things more
 general than #17979). Also, if Sage ever gets better `Polyhedron` code, it
 will make #17920 faster for free.

--
Ticket URL: <http://trac.sagemath.org/ticket/17979#comment:181>
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 unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to