use crate::layouts::{
Backend, ScratchArena, VecZnxBackendRef, VecZnxBigBackendMut, VecZnxDftBackendMut, VecZnxDftBackendRef, VecZnxDftOwned,
};
pub trait VecZnxDftAlloc<B: Backend> {
fn vec_znx_dft_alloc(&self, cols: usize, size: usize) -> VecZnxDftOwned<B>;
}
pub trait VecZnxDftFromBytes<B: Backend> {
fn vec_znx_dft_from_bytes(&self, cols: usize, size: usize, bytes: Vec<u8>) -> VecZnxDftOwned<B>;
}
pub trait VecZnxDftBytesOf {
fn bytes_of_vec_znx_dft(&self, cols: usize, size: usize) -> usize;
}
pub trait VecZnxDftApply<B: Backend> {
fn vec_znx_dft_apply<'a>(
&self,
step: usize,
offset: usize,
res: &mut VecZnxDftBackendMut<'_, B>,
res_col: usize,
a: &VecZnxBackendRef<'a, B>,
a_col: usize,
);
}
pub trait VecZnxIdftApplyTmpBytes {
fn vec_znx_idft_apply_tmp_bytes(&self) -> usize;
}
pub trait VecZnxIdftApply<B: Backend> {
fn vec_znx_idft_apply(
&self,
res: &mut VecZnxBigBackendMut<'_, B>,
res_col: usize,
a: &VecZnxDftBackendRef<'_, B>,
a_col: usize,
scratch: &mut ScratchArena<'_, B>,
);
}
pub trait VecZnxIdftApplyTmpA<B: Backend> {
fn vec_znx_idft_apply_tmpa(
&self,
res: &mut VecZnxBigBackendMut<'_, B>,
res_col: usize,
a: &mut VecZnxDftBackendMut<'_, B>,
a_col: usize,
);
}
pub trait VecZnxDftAddInto<B: Backend> {
fn vec_znx_dft_add_into(
&self,
res: &mut VecZnxDftBackendMut<'_, B>,
res_col: usize,
a: &VecZnxDftBackendRef<'_, B>,
a_col: usize,
b: &VecZnxDftBackendRef<'_, B>,
b_col: usize,
);
}
pub trait VecZnxDftAddAssign<B: Backend> {
fn vec_znx_dft_add_assign(
&self,
res: &mut VecZnxDftBackendMut<'_, B>,
res_col: usize,
a: &VecZnxDftBackendRef<'_, B>,
a_col: usize,
);
}
pub trait VecZnxDftAddScaledAssign<B: Backend> {
fn vec_znx_dft_add_scaled_assign(
&self,
res: &mut VecZnxDftBackendMut<'_, B>,
res_col: usize,
a: &VecZnxDftBackendRef<'_, B>,
a_col: usize,
a_scale: i64,
);
}
pub trait VecZnxDftSub<B: Backend> {
fn vec_znx_dft_sub(
&self,
res: &mut VecZnxDftBackendMut<'_, B>,
res_col: usize,
a: &VecZnxDftBackendRef<'_, B>,
a_col: usize,
b: &VecZnxDftBackendRef<'_, B>,
b_col: usize,
);
}
pub trait VecZnxDftSubAssign<B: Backend> {
fn vec_znx_dft_sub_assign(
&self,
res: &mut VecZnxDftBackendMut<'_, B>,
res_col: usize,
a: &VecZnxDftBackendRef<'_, B>,
a_col: usize,
);
}
pub trait VecZnxDftSubNegateAssign<B: Backend> {
fn vec_znx_dft_sub_negate_assign(
&self,
res: &mut VecZnxDftBackendMut<'_, B>,
res_col: usize,
a: &VecZnxDftBackendRef<'_, B>,
a_col: usize,
);
}
pub trait VecZnxDftCopy<B: Backend> {
fn vec_znx_dft_copy(
&self,
step: usize,
offset: usize,
res: &mut VecZnxDftBackendMut<'_, B>,
res_col: usize,
a: &VecZnxDftBackendRef<'_, B>,
a_col: usize,
);
}
pub trait VecZnxDftZero<B: Backend> {
fn vec_znx_dft_zero(&self, res: &mut VecZnxDftBackendMut<'_, B>, res_col: usize);
}