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}