arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/math/src/modulus/barrett.rs
math/src/modulus/barrett.rsRaw
 1#[derive(Clone, Copy, Debug, PartialEq, Eq)]
 2pub struct Barrett<O>(pub O, pub O);
 3
 4impl<O> Barrett<O> {
 5    
 6    #[inline(always)]
 7    pub fn value(&self) -> &O {
 8        &self.0
 9    }
10
11    #[inline(always)]
12    pub fn quotient(&self) -> &O {
13        &self.1
14    }
15}
16
17#[derive(Clone, Copy, Debug, PartialEq, Eq)]
18pub struct BarrettPrecomp<O>{
19    pub q: O,
20    pub two_q:O,
21    pub four_q:O,
22    pub lo:O,
23    pub hi:O,
24    pub one: Barrett<O>,
25}
26
27impl<O> BarrettPrecomp<O>{
28
29    #[inline(always)]
30    pub fn value_hi(&self) -> &O{
31        &self.hi
32    }
33
34    #[inline(always)]
35    pub fn value_lo(&self) -> &O{
36        &self.lo
37    }
38}
39