On Wednesday, May 7, 2014 9:58:48 AM UTC-7, François Colas wrote:
>
> What I want to do is a way to evaluate polynomials of K in a power of a 
> primitive square root of unity: 
>
> omega = CC(e^(2*I*pi/m))
> F = Hom(K, CC)
> f = F([omega])
> TypeError: images do not define a valid homomorphism
>
> Does anyone see another way to do this?
>
 
Have you tried using CyclotomicField(m) ? I think that uses specialized 
code, which should handle high degrees much better than generic number 
field code:

sage: K=CyclotomicField(3*5*7*11)
sage: K.coerce_embedding()
Generic morphism:
  From: Cyclotomic Field of order 1155 and degree 480
  To:   Complex Lazy Field
  Defn: zeta1155 -> 0.9999852033056930? + 0.00543996044764063?*I

Alternatively, if you really want to use an explicit quotient ring 
construction:

f = F([omega],check=False)

The error you run into otherwise is:

sage: sage.rings.morphism.RingHomomorphism_im_gens(H,[omega])
ValueError: relations do not all (canonically) map to 0 under map 
determined by images of generators.

i.e., the cyclotomic polynomial evaluated at omega doesn't return an exact 
zero, because CC uses float arithmetic.

-- 
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To post to this group, send email to sage-support@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.

Reply via email to