poulpy/src/modulus/impl_u64/mod.rs
src/modulus/impl_u64/mod.rsRaw
1pub mod prime;
2pub mod barrett;
3pub mod montgomery;
4pub mod operations;
5
6use crate::modulus::ReduceOnce;
7
8impl ReduceOnce<u64> for u64{
9 #[inline(always)]
10 fn reduce_once_constant_time_assign(&mut self, q: u64){
11 debug_assert!(q < 0x8000000000000000, "2q >= 2^64");
12 *self -= (q.wrapping_sub(*self)>>63)*q;
13 }
14
15 #[inline(always)]
16 fn reduce_once_constant_time(&self, q:u64) -> u64{
17 debug_assert!(q < 0x8000000000000000, "2q >= 2^64");
18 self - (q.wrapping_sub(*self)>>63)*q
19 }
20
21 #[inline(always)]
22 fn reduce_once_assign(&mut self, q: u64){
23 debug_assert!(q < 0x8000000000000000, "2q >= 2^64");
24 *self = *self.min(&mut self.wrapping_sub(q))
25 }
26
27 #[inline(always)]
28 fn reduce_once(&self, q:u64) -> u64{
29 debug_assert!(q < 0x8000000000000000, "2q >= 2^64");
30 *self.min(&mut self.wrapping_sub(q))
31 }
32}