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}