use crate::layouts::{
Backend, ScalarZnxBackendRef, SvpPPolBackendMut, SvpPPolBackendRef, SvpPPolOwned, VecZnxBackendRef, VecZnxDftBackendMut,
VecZnxDftBackendRef,
};
pub trait SvpPPolAlloc<B: Backend> {
fn svp_ppol_alloc(&self, cols: usize) -> SvpPPolOwned<B>;
}
pub trait SvpPPolBytesOf {
fn bytes_of_svp_ppol(&self, cols: usize) -> usize;
}
pub trait SvpPrepare<B: Backend> {
fn svp_prepare(&self, res: &mut SvpPPolBackendMut<'_, B>, res_col: usize, a: &ScalarZnxBackendRef<'_, B>, a_col: usize);
}
pub trait SvpPPolCopyBackend<B: Backend> {
fn svp_ppol_copy_backend(
&self,
res: &mut SvpPPolBackendMut<'_, B>,
res_col: usize,
a: &SvpPPolBackendRef<'_, B>,
a_col: usize,
);
}
pub trait SvpApplyDft<B: Backend> {
fn svp_apply_dft(
&self,
res: &mut VecZnxDftBackendMut<'_, B>,
res_col: usize,
a: &SvpPPolBackendRef<'_, B>,
a_col: usize,
b: &VecZnxBackendRef<'_, B>,
b_col: usize,
);
}
pub trait SvpApplyDftToDft<B: Backend> {
fn svp_apply_dft_to_dft(
&self,
res: &mut VecZnxDftBackendMut<'_, B>,
res_col: usize,
a: &SvpPPolBackendRef<'_, B>,
a_col: usize,
b: &VecZnxDftBackendRef<'_, B>,
b_col: usize,
);
}
pub trait SvpApplyDftToDftAssign<B: Backend> {
fn svp_apply_dft_to_dft_assign(
&self,
res: &mut VecZnxDftBackendMut<'_, B>,
res_col: usize,
a: &SvpPPolBackendRef<'_, B>,
a_col: usize,
);
}