williamstein / sage_modabvar

1 stars 2 forks source link

Frob #30

Closed kevinywlui closed 8 years ago

kevinywlui commented 8 years ago

I tried implementing frob using a more direct approach (this is the 332ef04) which is to compute Norm (X^d G_p(x+eps(p)*p/x)) but taking the norm was tricky. If I take the product over all embeddings into QQbar, it was really slow and if I take the product over all embeddings into CC, it had rounding errors.

It turns out that the interpolation method had comparable runtime to computing the norm using CC and it has no rounding errors so I stuck with it.

williamstein commented 8 years ago

I tried implementing frob using a more direct approach (this is the 332ef04) which is to compute Norm (X^d G_p(x+eps(p)*p/x)) but taking the norm was tricky. If I take the product over all embeddings into QQbar, it was really slow and if I take the product over all embeddings into CC, it had rounding errors.

Resultants. In computational number theory directly using the definition to try to compute something is almost never the best approach. One can use resultants to efficiently compute norms of polynomials without doing arithmetic in either QQbar or CC -- it's all over the same field. I think there is a section in Cohen's first big computational GTM book about this...

kevinywlui commented 8 years ago

Thanks for telling me about resultants. They're really fast for computing norms. In the few cases I checked, they're slightly faster than what's currently implemented for norms of elements in number fields.

williamstein commented 8 years ago

Nice -- resultants are kind of like computing the norm of a number field element by computing the determinant of left multiplication by the element instead of computing the product of the conjugates.