#17662: Evenly distributed sets
-------------------------------------+-------------------------------------
       Reporter:  vdelecroix         |        Owner:
           Type:  enhancement        |       Status:  needs_info
       Priority:  major              |    Milestone:  sage-6.5
      Component:  combinatorial      |   Resolution:
  designs                            |    Merged in:
       Keywords:                     |    Reviewers:  Nathann Cohen
        Authors:  Vincent Delecroix  |  Work issues:
Report Upstream:  N/A                |       Commit:
         Branch:  public/17662       |  7224a147e9af6bb37a891e6536aa10fbf3135bd6
   Dependencies:                     |     Stopgaps:
-------------------------------------+-------------------------------------

Comment (by vdelecroix):

 Hello,

 == Commits precision ==

 The method `_check_cosets` was just wrong and not tested. I corrected it
 in `​0a750d9`. It is also optimized to not use Python data. In the end
 there is a new example which test the `check=True` in the class (and which
 indirectly uses this method).

 In `0a750d9`:
  - as you suggested, now `x = B[kk]`
  - I simplified the `_add_element` and rename it into
 `_check_last_element` it is also much cleaner and a bit faster
  - I removed `_pop` and copy/paste the corresponding code in two places
  - To choose the next element x in the main loop, there are now some easy
 check and it results in a great speedup

 == Answers ==

 > - Isn't it weird that all EDS not considered 'up to isomorphism' always
 begin
 >   with `0,1`? Perhaps you should say somewhere that they are always
 normalized?

    yes it is, now there is a comment in the `INPUT` section

 > - `to_difference_family` -- could you add a check that this is indeed a
 >   difference family? Like with the usual `check` argument?
 >
 > - Same with `an_element`.

     done and done

 > - "The value of the other" -- the value of the other what?
 >   {{{
 >   # Given one such function, the values of the other are 1/z, 1-z,
 >   # 1/(1-z), (z-1)/z and z/(z-1).
 >   }}}

     it was value of the other functions. It is now clarified.

 > - Why would that map `B[i]` to 1?
 >   {{{
 >   # We choose
 >   #    t -> (x - t)/ (x - B[j])
 >   #  (that maps x to 0 and B[i] to 1
 >   }}}

     it was a typo, should be "(x - t) / (x - B[i])". Corrected.

 > - I do not get this line
 >   ...

     it is now very different and I hope, simpler (see commit `0a750d9`)

 >   Wouldn't it be better to call `_B_automorphisms()` in
 `self._add_element`, and
 >   to not add the element if the min property is not satisfied?

     `_B_automorphisms` (now `_B_relabelled_copies`) is very slow. We
 should not use that seriously inside the main loop.

 > - I do not understand why you do the same test twice:
 >   ...
 >   Isn't it better to define x as "the last element in the list+1"? This
 way you
 >   couldn't have `x==q-2` when `B[kk-1]=q-2`

     this is completely modified in the commit `0a750d9`

 Vincent

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