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    #[inline(always)]
 6    pub fn value(&self) -> &O {
 7        &self.0
 8    }
 9
10    #[inline(always)]
11    pub fn quotient(&self) -> &O {
12        &self.1
13    }
14}
15
16#[derive(Clone, Copy, Debug, PartialEq, Eq)]
17pub struct BarrettPrecomp<O> {
18    pub q: O,
19    pub two_q: O,
20    pub four_q: O,
21    pub lo: O,
22    pub hi: O,
23    pub one: Barrett<O>,
24}
25
26impl<O> BarrettPrecomp<O> {
27    #[inline(always)]
28    pub fn value_hi(&self) -> &O {
29        &self.hi
30    }
31
32    #[inline(always)]
33    pub fn value_lo(&self) -> &O {
34        &self.lo
35    }
36}