Implementation of the number theoretic transform (NTT) in Rust.
The NTT is a DFT over the ring Z/mZ. We use a fast divide-and conquer algorithm. The array size n must be a power of two.
We allow composite moduli as long as n divides phi(p^e) for each prime factor p of the modulus, where phi is the Euler totient.