Skip to main content

simple_bfv/
config.rs

1use simple_ring::{RingParams, ntt::{NTTprecaculated, precalculate}};
2
3
4#[derive(Clone)]
5pub struct BFV {
6    pub params: RingParams,
7    pub t: u64,
8    pub eta: usize,
9    pub ntt_precalculated: NTTprecaculated,
10}
11
12impl BFV {
13    pub fn for_test() -> Self {
14        let params = RingParams { n:64, q:786_433, omega: 368299};
15        Self { params: params.clone(), t: 256, eta: 2, ntt_precalculated: precalculate(&params) } 
16    }
17
18    pub fn for_medium() -> Self {
19        let params = RingParams { n: 1024, q: 2572289, omega:  457185};
20        Self { params: params.clone(), t: 256, eta: 4, ntt_precalculated: precalculate(&params) } 
21    }
22
23    pub fn for_large() -> Self {
24        let params = RingParams { n: 4096, q: 512032769, omega:  431951560};
25        Self { params: params.clone(), t: 512, eta: 8, ntt_precalculated : precalculate(&params) } 
26    }
27
28} 
29