arnaucube
arnaucube/poulpyPublic Self-hosted repository
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}