arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/backend/src/hal/oep/vec_znx_dft.rs
backend/src/hal/oep/vec_znx_dft.rsRaw
  1use crate::hal::layouts::{
  2    Backend, Data, Module, Scratch, VecZnxBig, VecZnxBigToMut, VecZnxDft, VecZnxDftOwned, VecZnxDftToMut, VecZnxDftToRef,
  3    VecZnxToRef,
  4};
  5
  6pub unsafe trait VecZnxDftAllocImpl<B: Backend> {
  7    fn vec_znx_dft_alloc_impl(n: usize, cols: usize, size: usize) -> VecZnxDftOwned<B>;
  8}
  9
 10pub unsafe trait VecZnxDftFromBytesImpl<B: Backend> {
 11    fn vec_znx_dft_from_bytes_impl(n: usize, cols: usize, size: usize, bytes: Vec<u8>) -> VecZnxDftOwned<B>;
 12}
 13
 14pub unsafe trait VecZnxDftAllocBytesImpl<B: Backend> {
 15    fn vec_znx_dft_alloc_bytes_impl(n: usize, cols: usize, size: usize) -> usize;
 16}
 17
 18pub unsafe trait VecZnxDftToVecZnxBigTmpBytesImpl<B: Backend> {
 19    fn vec_znx_dft_to_vec_znx_big_tmp_bytes_impl(module: &Module<B>, n: usize) -> usize;
 20}
 21
 22pub unsafe trait VecZnxDftToVecZnxBigImpl<B: Backend> {
 23    fn vec_znx_dft_to_vec_znx_big_impl<R, A>(
 24        module: &Module<B>,
 25        res: &mut R,
 26        res_col: usize,
 27        a: &A,
 28        a_col: usize,
 29        scratch: &mut Scratch<B>,
 30    ) where
 31        R: VecZnxBigToMut<B>,
 32        A: VecZnxDftToRef<B>;
 33}
 34
 35pub unsafe trait VecZnxDftToVecZnxBigTmpAImpl<B: Backend> {
 36    fn vec_znx_dft_to_vec_znx_big_tmp_a_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &mut A, a_col: usize)
 37    where
 38        R: VecZnxBigToMut<B>,
 39        A: VecZnxDftToMut<B>;
 40}
 41
 42pub unsafe trait VecZnxDftToVecZnxBigConsumeImpl<B: Backend> {
 43    fn vec_znx_dft_to_vec_znx_big_consume_impl<D: Data>(module: &Module<B>, a: VecZnxDft<D, B>) -> VecZnxBig<D, B>
 44    where
 45        VecZnxDft<D, B>: VecZnxDftToMut<B>;
 46}
 47
 48pub unsafe trait VecZnxDftAddImpl<B: Backend> {
 49    fn vec_znx_dft_add_impl<R, A, D>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize, b: &D, b_col: usize)
 50    where
 51        R: VecZnxDftToMut<B>,
 52        A: VecZnxDftToRef<B>,
 53        D: VecZnxDftToRef<B>;
 54}
 55
 56pub unsafe trait VecZnxDftAddInplaceImpl<B: Backend> {
 57    fn vec_znx_dft_add_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
 58    where
 59        R: VecZnxDftToMut<B>,
 60        A: VecZnxDftToRef<B>;
 61}
 62
 63pub unsafe trait VecZnxDftSubImpl<B: Backend> {
 64    fn vec_znx_dft_sub_impl<R, A, D>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize, b: &D, b_col: usize)
 65    where
 66        R: VecZnxDftToMut<B>,
 67        A: VecZnxDftToRef<B>,
 68        D: VecZnxDftToRef<B>;
 69}
 70
 71pub unsafe trait VecZnxDftSubABInplaceImpl<B: Backend> {
 72    fn vec_znx_dft_sub_ab_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
 73    where
 74        R: VecZnxDftToMut<B>,
 75        A: VecZnxDftToRef<B>;
 76}
 77
 78pub unsafe trait VecZnxDftSubBAInplaceImpl<B: Backend> {
 79    fn vec_znx_dft_sub_ba_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
 80    where
 81        R: VecZnxDftToMut<B>,
 82        A: VecZnxDftToRef<B>;
 83}
 84
 85pub unsafe trait VecZnxDftCopyImpl<B: Backend> {
 86    fn vec_znx_dft_copy_impl<R, A>(
 87        module: &Module<B>,
 88        step: usize,
 89        offset: usize,
 90        res: &mut R,
 91        res_col: usize,
 92        a: &A,
 93        a_col: usize,
 94    ) where
 95        R: VecZnxDftToMut<B>,
 96        A: VecZnxDftToRef<B>;
 97}
 98
 99pub unsafe trait VecZnxDftFromVecZnxImpl<B: Backend> {
100    fn vec_znx_dft_from_vec_znx_impl<R, A>(
101        module: &Module<B>,
102        step: usize,
103        offset: usize,
104        res: &mut R,
105        res_col: usize,
106        a: &A,
107        a_col: usize,
108    ) where
109        R: VecZnxDftToMut<B>,
110        A: VecZnxToRef;
111}
112
113pub unsafe trait VecZnxDftZeroImpl<B: Backend> {
114    fn vec_znx_dft_zero_impl<R>(module: &Module<B>, res: &mut R)
115    where
116        R: VecZnxDftToMut<B>;
117}