Getting Started With Cyclotomic Fields
Introduction To Cyclotomic Fields Introduction To Cyclotomic Fields
Cyclotomic fields are field extensions of the rationals obtained by adjoining a primitive root of unity. That's it. They matter because they sit at the intersection of class field theory, algebraic number theory, and computational number theory, and they're one of the first places you actually see how much structure there is hidden in polynomials you'd otherwise ignore. The n-th cyclotomic field is Q(_n), where _n = e^(2i/n). The minimal polynomial of _n over Q is the n-th cyclotomic polynomial _n(x), which has degree (n) — Euler's totient function. For prime p, _p(x) = x^(p-1) + x^(p-2) + ... + x + 1. That's the formula you'll carry with you forever. I used to think cyclotomic fields were just a textbook curiosity until I was running class group computations for a research project and kept hitting walls with general number fields. The cyclotomic case has enough structure that you can actually do things — compute units, factor ideals, bound class numbers — that are essentially impossible in the general setting. Once I made the switch, my compute times dropped from days to hours for the problems I was working on.
Here's what most people don't tell you when they introduce this: the ring of integers of Q(_n) is Z[_n]. This is true for all n. It's not a small result — it took some work to prove and it doesn't generalize to arbitrary number fields. The fact that you get an explicit integral basis just by taking powers of _n is genuinely unusual. When you're working with a random degree-7 number field, your integral basis might require denominators that make every computation messy. In cyclotomic fields, you never have that problem. The Dedekind zeta function of a cyclotomic field factors into a product of Dirichlet L-functions. Specifically, _Q(_n)(s) = product of L(s, ) over all Dirichlet characters modulo n. This factorization is what makes cyclotomic fields tractable. You can reduce questions about the arithmetic of Q(_n) to questions about classical L-functions, and we have enormously more machinery available for the latter. I remember hitting a specific edge case when I was trying to compute the unit group of Q(_23) by hand before writing a script to automate it. The cyclotomic units — products of terms like (1 - _n^a)/(1 - _n) — generate a subgroup of finite index in the full unit group, but that index is the class number times a regulator-related factor. For n = 23, the class number is 3. I kept getting answers that were off by factors of 3 because I wasn't accounting for the fact that the cyclotomic units don't exhaust the full unit group when the class number is nontrivial. The workaround was to compute the index using the analytic class number formula and verify that my generator set had the right covolume. Once I did that, everything aligned.
What You Actually Compute With
The key objects you'll work with are ideals, their factorizations, and the class group. For a prime p that does not divide n, the factorization of p in Q(_n) is completely determined by the order of p modulo n. If f is that order, then p splits into (n)/f distinct prime ideals, each with residue degree f and ramification index 1. When p divides n, the situation is different — p is totally ramified in Q(_{p^k}) for any k, and the ramification behavior in composite cases follows from the tower structure. The discriminant of Q(_n) is known explicitly. For n = p^k with p prime, the discriminant is ±p^((k-1)(p^k)). For general n, it's a product over prime divisors of n. This matters because the discriminant controls ramification, and ramification is where things get interesting — and painful. One thing that catches people out: the conductor-discriminant formula. The discriminant of a cyclotomic field depends only on the primes dividing n, not on the exponents in a way you might expect. Going from Q(_p) to Q(_{p^2}) multiplies the discriminant by a power of p, but the prime ideals above p in the larger field are just lifts of the unique prime ideal above p in the smaller field. The arithmetic doesn't get proportionally more complicated — which is good, because it means you can build up from prime-level cyclotomic fields without everything exploding.
Get the Full Details

Computational Considerations
If you're doing actual computations, PARI/GP is the tool. The nfinit and bnfinit functions handle cyclotomic fields efficiently. But there's a catch that isn't obvious at first: the default precision settings can give you wrong answers for class group computations when the discriminant is large. I lost two days once to a bnfinit run that silently returned an incorrect class group because I hadn't set the correct relative precision flag. The fix was passing the flag -g3 in the initialization. You want to be comfortable with PARI's precision model before you trust any output. For unit computation, the cyclotomic units are a starting point but not always sufficient. The cyclotomic regulator versus the full regulator ratio is exactly the class number, so if you're computing regulators you need to know the class number independently or iterate. This circularity is annoying but well-understood — the standard approach is to use the analytic class number formula to get the class number first, then recover the full unit group from there. The Minkowski bound for Q(_n) grows exponentially with (n). Beyond n around 100 or so, you're not going to compute the class group by enumerating ideals below the Minkowski bound. You need class field theory tricks or analytic methods. This is where cyclotomic fields start to look less like a computational playground and more like a research frontier.
Where It Breaks Down
Cyclotomic fields are special. That's both their strength and their limitation. They have explicit integral bases, clean ramification theory, and L-function factorizations precisely because they're abelian over Q. The moment you leave the abelian world — say, to a non-abelian extension whose Galois group isn't cyclic — almost none of these tools carry over. You lose the conductor-discriminant formula, you lose the L-function factorization, and you lose the guarantee that Z[] is the full ring of integers for any reasonable generator . There's also the issue of explicit computation in high degree. Q(_n) has degree (n). When n is a product of several distinct primes, (n) grows fast. Q(_105) has degree 48. Q(_255) has degree 128. You can still work with these, but the memory and time requirements are real. I've run bnfinit on cyclotomic fields up to degree about 200 on a decent machine, but beyond that you're either waiting a very long time or switching to a different approach entirely. The class number problem for cyclotomic fields remains partially open in its most general form. We know the class number of Q(_p) is odd for regular primes (Kummer's criterion connects this to Fermat's Last Theorem), and we have bounds, but exact class numbers for large primes are still computed case by case. There's no shortcut.
If you're coming into this from a computational angle and you need class group data for specific fields, the tables in Washington's "Introduction to Cyclotomic Fields" and the LMFDB are your best references. The LMFDB has verified class group data for Q(_n) up to fairly large n, and it's been my go-to for cross-checking my own computations before publishing anything. The theory itself is clean. The computations are honest about their limits. That's about as good as it gets in algebraic number theory.
