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: 1152921504606830593,
42 rlwe_logq: 60,
43 lwe_q: 1 << 20,
44 lwe_logq: 20,
45 br_q: 1 << 12,
46 rlwe_n: 1 << 11,
47 lwe_n: 500,
48 d_rgsw: 10,
49 logb_rgsw: 6,
50 d_lwe: 5,
51 logb_lwe: 4,
52 g: 5,
53 w: 1,
54};
55
56#[cfg(test)]
57mod tests {
58 use crate::utils::generate_prime;
59
60 #[test]
61 fn find_prime() {
62 let bits = 60;
63 let ring_size = 1 << 11;
64 let prime = generate_prime(bits, ring_size * 2, 1 << bits).unwrap();
65 dbg!(prime);
66 }
67}