use crate::ring::Ring; use crate::poly::Poly; use crate::modulus::barrett::Barrett; use crate::modulus::ONCE; impl Ring{ pub fn trace_inplace(&self, log_start: usize, log_end: usize, a: &mut Poly){ assert!(log_end <= self.log_n(), "invalid argument log_end: log_end={} > self.log_n()={}", log_end, self.log_n()); assert!(log_end > log_start, "invalid argument log_start: log_start={} > log_end={}", log_start, log_end); let log_steps = log_end - log_start; if log_steps > 0 { let n_inv: Barrett = self.modulus.barrett.prepare(self.modulus.inv(1<(&n_inv, a); if !NTT{ self.ntt_inplace::(a); } let mut tmp: Poly = self.new_poly(); (log_start..log_end).for_each(|i|{ }); } } }