arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/src/modulus.rs
src/modulus.rsRaw
 1pub(crate) mod prime;
 2pub(crate) mod montgomery;
 3pub(crate) mod barrett;
 4
 5trait ReduceOnce<O>{
 6    fn reduce_once_assign(&mut self, q: O);
 7    fn reduce_once(&self, q:O) -> O;
 8}
 9
10impl ReduceOnce<u64> for u64{
11    fn reduce_once_assign(&mut self, q: u64){
12        if *self >= q{
13            *self -= q
14        }
15    }
16
17    fn reduce_once(&self, q:u64) -> u64{
18        if *self >= q {
19            *self - q
20        } else {
21            *self
22        }
23    }
24}