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(¶ms) }
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(¶ms) }
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(¶ms) }
26 }
27
28}
29