phantom-zone/src/bool/parameters.rs
src/bool/parameters.rsRaw
1#[derive(Clone, PartialEq)]
2pub(super) struct BoolParameters<El> {
3 pub(super) rlwe_q: El,
4 pub(super) rlwe_logq: usize,
5 pub(super) lwe_q: El,
6 pub(super) lwe_logq: usize,
7 pub(super) br_q: usize,
8 pub(super) rlwe_n: usize,
9 pub(super) lwe_n: usize,
10 pub(super) d_rgsw: usize,
11 pub(super) logb_rgsw: usize,
12 pub(super) d_lwe: usize,
13 pub(super) logb_lwe: usize,
14 pub(super) g: usize,
15 pub(super) w: usize,
16}
17
18// impl<El> BoolParameters<El> {
19// fn rlwe_q(&self) -> &El {
20// &self.rlwe_q
21// }
22// }
23
24pub(super) const SP_BOOL_PARAMS: BoolParameters<u64> = BoolParameters::<u64> {
25 rlwe_q: 268369921u64,
26 rlwe_logq: 28,
27 lwe_q: 1 << 16,
28 lwe_logq: 16,
29 br_q: 1 << 10,
30 rlwe_n: 1 << 10,
31 lwe_n: 493,
32 d_rgsw: 4,
33 logb_rgsw: 7,
34 d_lwe: 4,
35 logb_lwe: 4,
36 g: 5,
37 w: 1,
38};
39
40pub(super) const MP_BOOL_PARAMS: BoolParameters<u64> = BoolParameters::<u64> {
41 rlwe_q: 18014398509404161,
42 rlwe_logq: 54,
43 lwe_q: 1 << 18,
44 lwe_logq: 18,
45 // TODO(Jay:) why does this fail when q=1<<11?
46 br_q: 1 << 11,
47 rlwe_n: 1 << 11,
48 lwe_n: 200,
49 d_rgsw: 5,
50 logb_rgsw: 10,
51 d_lwe: 4,
52 logb_lwe: 4,
53 g: 5,
54 w: 1,
55};
56
57#[cfg(test)]
58mod tests {
59 use crate::utils::generate_prime;
60
61 #[test]
62 fn find_prime() {
63 let bits = 54;
64 let ring_size = 1 << 11;
65 let prime = generate_prime(bits, ring_size * 2, 1 << bits).unwrap();
66 dbg!(prime);
67 }
68}