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