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
17pub struct BarrettRNS<O>(pub Vec<Barrett<O>>);
18
19#[derive(Clone, Copy, Debug, PartialEq, Eq)]
20pub struct BarrettPrecomp<O>{
21    pub q: O,
22    pub two_q:O,
23    pub four_q:O,
24    pub lo:O,
25    pub hi:O,
26    pub one: Barrett<O>,
27}
28
29impl<O> BarrettPrecomp<O>{
30
31    #[inline(always)]
32    pub fn value_hi(&self) -> &O{
33        &self.hi
34    }
35
36    #[inline(always)]
37    pub fn value_lo(&self) -> &O{
38        &self.lo
39    }
40}
41