poulpy/rns/src/modulus/barrett.rs
rns/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}