arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/src/modulus.rs
src/modulus.rsRaw
 1pub mod prime;
 2pub mod barrett;
 3pub mod montgomery;
 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    #[inline(always)]
12    fn reduce_once_assign(&mut self, q: u64){
13        if *self >= q{
14            *self -= q
15        }
16    }
17    #[inline(always)]
18    fn reduce_once(&self, q:u64) -> u64{
19        if *self >= q {
20            *self - q
21        } else {
22            *self
23        }
24    }
25}