change_ring for DirichletGroup: some initialisation is required for ComplexIntervalField?

asked 2020-08-02 00:12:42 +0200

updated 2020-08-02 15:09:17 +0200

Dear all,

A code will better explain my predicament:

myCIF = ComplexIntervalField( 200 )                                                                   
myD = DirichletGroup(5)                                                                               
myDCIF = myD.change_ring(myCIF)                                                                           
[e.values() for e in myDCIF] 
--> NotImplementedError followed by lots of shouting involving in particular 'cachefunc.pyx'

Then do it a second time:

[e.values() for e in myDCIF] 
--> Good result!

The mystery gets more mysterious if one tries it with 'ComplexField' rather than with 'ComplexIntervalField': everything goes smoothly. Here is thus my way out:

myCF =  ComplexField( 200 + 1)
myCIF = ComplexIntervalField( 200 )                                                                   
myD = DirichletGroup(5)                                                                               
myDCF = myD.change_ring(myCF)                                                                           
[[myCIF(v) for v in e.values()] for e in myDCF]

Maybe there is something simple I didn't get that would avoid the above manipulation?

Many thanks in advance! Olivier

edit retag flag offensive close merge delete


This looks like a bug. Maybe use directly sage: DirichletGroup(5, myCIF)

FrédéricC gravatar imageFrédéricC ( 2020-08-14 08:15:39 +0200 )edit

but this has the same issue. This comes from caching the order of the root of unity in the coefficient field.

FrédéricC gravatar imageFrédéricC ( 2020-08-14 09:17:35 +0200 )edit