use backend::{Backend, Module, VecZnxDft, VecZnxDftAlloc}; use crate::Infos; pub struct FourierGLWECiphertext { pub data: VecZnxDft, pub basek: usize, pub k: usize, } impl FourierGLWECiphertext, B> { pub fn alloc(module: &Module, basek: usize, k: usize, rank: usize) -> Self { Self { data: module.new_vec_znx_dft(rank + 1, k.div_ceil(basek)), basek: basek, k: k, } } pub fn bytes_of(module: &Module, basek: usize, k: usize, rank: usize) -> usize { module.bytes_of_vec_znx_dft(rank + 1, k.div_ceil(basek)) } } impl Infos for FourierGLWECiphertext { type Inner = VecZnxDft; fn inner(&self) -> &Self::Inner { &self.data } fn basek(&self) -> usize { self.basek } fn k(&self) -> usize { self.k } } impl FourierGLWECiphertext { pub fn rank(&self) -> usize { self.cols() - 1 } }