poulpy/math/src/ring/impl_u64/sampling.rs
math/src/ring/impl_u64/sampling.rsRaw
1use crate::modulus::WordOps;
2use crate::poly::{Poly, PolyRNS};
3use crate::ring::{Ring, RingRNS};
4use sampling::source::Source;
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()
11 .for_each(|a| *a = source.next_u64n(max, mask));
12 }
13}
14
15impl RingRNS<u64> {
16 pub fn fill_uniform(&self, source: &mut Source, a: &mut PolyRNS<u64>) {
17 self.0
18 .iter()
19 .enumerate()
20 .for_each(|(i, r)| r.fill_uniform(source, a.at_mut(i)));
21 }
22}