Hi Christian! On Sun, Sep 19, 2010 at 05:16:11PM -0700, Christian Stump wrote: > after Sebastian's explanations how to push things to the combinat > queue (thanks again), I pushed a first version of the universal > cyclotomic field. If anyone has some time, it would be nice to get > some feedback what runs smoothly and where is still work to be done... > > You get the universal cyclotomic field with UCF and any root of unity > by E(n) or E(n,k) for E(n)^k. Everything else should be self- > explaining, if it is not I should change it.
Quick summary of our discussion with the GAP developers in Aachen: They suggested the following benchmark, which is fairly typical of the use cases around Coxeter groups and the like: sage: W = gap3.ComplexReflectionGroup(14) sage: UC = W.UnipotentCharacters() sage: time M = matrix(UC.families[2].fourierMat.sage()) CPU times: user 7.32 s, sys: 0.01 s, total: 7.33 s sage: time M^2 CPU times: user 132.48 s, sys: 1.07 s, total: 133.55 s Wall time: 133.69 s 54 x 54 dense matrix over Universal Cyclotomic Field endowed with the Zumbroich basis sage: M^2.is_one() True The result is correct and should make for a fairly strong check :-) The above would be a good candidate for being in the doctests (although it depends on gap3, so it has to be #optional) They liked it that the conversion between GAP and Sage was working at once without any other changed. They also liked it that there is potential for user configuration of the reducing strategies. There is however a speed issue: the conversion from GAP to Sage and the product are quite slow (the product takes a fraction of a second in GAP). I ran the code under the profiler, and a lot of time is eaten up by the caching (the usual cached_method slowness issue). One more reason to finally take the time to optimize it! If we are lucky, this is the only problem. For the record, here is the example where GAP and sage differed. They agreed it was a bug in GAP, and are upstreaming it to Saint Andrews. sage: E( 2^11 * 3^4 ) -E(165888)^55297 - E(165888)^110593 sage: gap("E( 2^11 * 3^4 )") -E(165888)^55297-E(165888)^45057 sage: sage: E(2^10*3^7) -E(2239488)^1119745 sage: gap("E(2^10*3^7)") -E(2239488)^5633 sage: 110593 - 45057 65536 Please include the above in the doctests, together with the GAP example, and a comment about it! Further comments: They asked about coercions/conversions to/from standard Sage's cyclotomic fields. If this is implemented, a couple examples in the Sage documentation would be nice. Breuer mentioned that the implementation of inverses in GAP was naive, and suggested further approaches. I did not have time to write them down while it was fresh in my mind, but one of them was about solving an appropriate system of linear equations. Maybe you could have a quick phone call with him. Jean asked about a feature he finds very useful, namely the recognition if a given element in the universal cyclotomic field is a root of unity, and if yes which one. See AsRootOfUnity in gap3-jm2/src/pkg/chevie/lib/cycpol.g, which uses a trick of Breuer, which is well documented there. Cheers, Nicolas -- Nicolas M. ThiƩry "Isil" <nthi...@users.sf.net> http://Nicolas.Thiery.name/ -- You received this message because you are subscribed to the Google Groups "sage-combinat-devel" group. To post to this group, send email to sage-combinat-de...@googlegroups.com. To unsubscribe from this group, send email to sage-combinat-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.