in src/rqpoly.rs [116:140]
fn compute_roots(&mut self) {
let mut roots = vec![];
let root = self.find_root();
if root.is_none() {
self.is_ntt_enabled = false;
return;
}
let phi = root.unwrap();
let mut s = T::one();
for _ in 0..self.n {
roots.push(s.clone());
s = T::mul_mod(&s, &phi, &self.q);
}
reverse_bits_perm(&mut roots);
self.roots = roots;
let mut invroots: Vec<T> = vec![];
for x in self.roots.iter() {
invroots.push(T::inv_mod(x, &self.q));
}
self.invroots = invroots;
self.is_ntt_enabled = true;
}