Processing math: 100%
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Factorization of arbitrary polynomials over UCF = UniversalCyclotomicField() is NotImplemented; this is not hard to believe because it seems nontrivial.

If you know the eigenvalues of N can be expressed using roots of unity, then the splitting field K of the minimal polynomial of N is contained in a cyclotomic field Q(ζn) where we take n to be as small as possible; this n is called the conductor of the abelian extension K/Q. You can find roots in Q(ζn) and map them back to UCF:

sage: f = N.minpoly().change_ring(QQ)
sage: K.<a> = f.splitting_field()
sage: K.is_abelian()
True
sage: n = K.conductor()
7
sage: list(map(UCF, f.roots(CyclotomicField(n),multiplicities=False)))
[-E(7)^3 - E(7)^4, -E(7) - E(7)^6, -E(7)^2 - E(7)^5]

This might be suboptimal in general, but at least it works.