arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/math/src/ring/impl_u64/sampling.rs
math/src/ring/impl_u64/sampling.rsRaw
 1use sampling::source::Source;
 2use crate::modulus::WordOps;
 3use crate::ring::{Ring, RingRNS};
 4use crate::poly::{Poly, PolyRNS};
 5
 6impl Ring<u64>{
 7    pub fn fill_uniform(&self, source: &mut Source, a: &mut Poly<u64>){
 8        let max:u64  = self.modulus.q;
 9        let mask: u64 = max.mask();
10        a.0.iter_mut().for_each(|a|{*a = source.next_u64n(max, mask)});
11    }
12}
13
14impl RingRNS<'_, u64>{
15    pub fn fill_uniform(&self, source: &mut Source, a: &mut PolyRNS<u64>){
16        self.0.iter().enumerate().for_each(|(i, r)|{r.fill_uniform(source, a.at_mut(i))});
17    }
18}