Ask Your Question

Revision history [back]

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 $\mathbb{Q}(\zeta_n)$ where we take $n$ to be as small as possible; this $n$ is called the conductor of the abelian extension $K/\mathbb{Q}$. You can find roots in $\mathbb{Q}(\zeta_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.