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: 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}