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 $\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.

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.