arnaucube
arnaucube/phantom-zonePublic Self-hosted repository
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}