#16976: Conjugacy classes and rational period functions for Hecke triangle 
groups
-------------------------------------+-------------------------------------
       Reporter:  jj                 |        Owner:
           Type:  enhancement        |       Status:  needs_info
       Priority:  major              |    Milestone:  sage-6.5
      Component:  modular forms      |   Resolution:
       Keywords:  hecke triangle     |    Merged in:
  group conjugacy class rational     |    Reviewers:
  period function                    |  Work issues:
        Authors:  Jonas Jermann      |       Commit:
Report Upstream:  N/A                |  616b0486776cdff54d8653c7bbc52269bd6df44c
         Branch:  public/16976       |     Stopgaps:
   Dependencies:  #16936             |
-------------------------------------+-------------------------------------

Comment (by jj):

 Hey Vincent,

 1) I don't mind at all.

 2) Thanks a lot. I checked all the changes very closely. They look great!
 :-)
  I made some small adjustments:
    - For Hecke triangle groups k is usually a rational number,
      so k = ZZ(k) quite often fails and we want to provide the same
      exception message

    - I pulled the factor ZZ(-1) factor out of (-Q) again. It produces
      better looking numerators/denominators and it emphasizes the
      form resp. sign of the factor.

    - I used "u = sum((v[0]-1) for v in L)", some authors use "v[0]-1"
      instead of "v[0]" in their definitions, so it feels more natural
      to me that way.

    - For now I added 2 cached_methods back (and ideally I would like to
 add
      _block_data too).

 3) Thanks for the test, I didn't write mine down unfortunately.
  "but I would say that removing 3 cached_method is much more!":
  Can you maybe elaborate a bit more on the drawbacks/overheads with
 (unused)
  cached_methods? How large is the overhead? The tests (in particular
  interactive usages) seem to only indicate positive effects from caching.
  I would prefer to keep the cached methods in:

    - primitive_power: I would really prefer to keep this a cached_method.
      It only stores one integer and the calculation of it can be long:
      Basically the method compares powers of the primitive part against
 the
      original matrix until it finds a match. Also that method is reused to
      e.g. determine if a matrix is primitive. Which is again reused by
 other
      functions. Moreover the primitive_power is a number of interest for a
      given matrix. Caching only occurs if the method is used.
      In my opinion this is a perfect example of something worthwhile to
 cache.
      Also note that most doctests involve only small powers of matrices
 and there
      are much slower functions which have more influence on the total time
 in doctests...

    - _basic_data: This method is a candidate to be removed. It is the only
 cached
      method which is always called, so disabled caching would reduce the
 overhead.
      The calculation of it basically involves determening a representative
 of a
      number/matrix in the fundamental domain, which can take very long if
 the number
      lies close to "1". So why not cache the result? It is also beeing
 used for
      calculations of automorphy factors for modular forms. So if matrices
 are beeing
      reused there in modular operations caching could give a big speed up.
 It's also
      used for "basic" string representations which is a very good
 candidate for the
      default representation of matrices (just saying). So it seems like a
 waste to
      compute _basic_data repeatedly (and having to wait for the output).
 The user
      experience is improved a lot if he has fast response time to his
 commands.
      Without caching "basic" representation might be too "laggy" to use
 comfortably.
      Note that when doing calculations one usually uses "basic", "conj" or
 "block"
      for representations (so the results can immediately be interpreted).
 Caching
      has a large (positive) effect for such calculations.
      I would keep it in, but yes it's definitely a candidate for removal.

    - _block_data: I don't think there are many test cases which reuse
 block data.
      If matrices and their block data are beeing reused several times
 caching might
      be a big issue. As for _basic_data the user experience with string
 representations
      ("conj" or "block") should at least be considered. Again: I would
 keep it in,
      but yes it's a candidate for removal.

  All in all I also wouldn't neglect the impact on user experience from
 fast/slow representations.
  If you insist on removing the cached methods I will accept it however.

 4) I tried to improve the wording slightly. "Block length" is a term used
 in papers.

 5) I added more remarks (see is_primitive and is_simple). The terms
 basically relate
  1-1 to the corresponding terms for the associated fixed points
 respectively the
  associated binary quadratic form (at least in the hyperbolic case). The
 methods
  reduced_elements resp. simple_elements return all corresponding elements
 in the
  conjugacy class of the given element. Ideally those should be member
 functions
  for conjugacy classes. But those aren't implemented yet (and probably
 will
  never be). :(


 Best
     Jonas

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