fn lazy_inverse_ntt()

in src/rqpoly.rs [198:225]


    fn lazy_inverse_ntt(&mut self){
        let context = self.context.as_ref().unwrap();
        if !self.is_ntt_form {
            panic!("is already not in ntt");
        }
        let n = context.n;
        let q = context.q.clone();
        let ninv = T::inv_mod(&T::from_u32(n as u32, &q), &q);

        let mut coeffs_u64: Vec<u64> = self.coeffs.iter()
        .map(|elm| elm.rep())
        .collect();

        let invroots_u64: Vec<u64> = context.invroots.iter()
        .map(|elm| elm.rep())
        .collect();

        let scaled_invroots_u64: Vec<u64> = context.scaled_invroots.iter()
        .map(|elm| elm.rep())
        .collect();

        lazy_inverse_ntt_u64(&mut coeffs_u64, &invroots_u64, &scaled_invroots_u64, q.rep()); 

        for (coeff, coeff_u64) in self.coeffs.iter_mut().zip(coeffs_u64.iter()){
            *coeff = T::mul_mod(&ninv, &T::from(*coeff_u64), &context.q); 
        }
        self.set_ntt_form(false);
    }