arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/poulpy-hal/src/api/vec_znx_dft.rs
poulpy-hal/src/api/vec_znx_dft.rsRaw
  1use crate::layouts::{
  2    Backend, Data, Scratch, VecZnxBig, VecZnxBigToMut, VecZnxDft, VecZnxDftOwned, VecZnxDftToMut, VecZnxDftToRef, VecZnxToRef,
  3};
  4
  5pub trait VecZnxDftAlloc<B: Backend> {
  6    fn vec_znx_dft_alloc(&self, cols: usize, size: usize) -> VecZnxDftOwned<B>;
  7}
  8
  9pub trait VecZnxDftFromBytes<B: Backend> {
 10    fn vec_znx_dft_from_bytes(&self, cols: usize, size: usize, bytes: Vec<u8>) -> VecZnxDftOwned<B>;
 11}
 12
 13pub trait VecZnxDftBytesOf {
 14    fn bytes_of_vec_znx_dft(&self, cols: usize, size: usize) -> usize;
 15}
 16
 17pub trait VecZnxDftApply<B: Backend> {
 18    fn vec_znx_dft_apply<R, A>(&self, step: usize, offset: usize, res: &mut R, res_col: usize, a: &A, a_col: usize)
 19    where
 20        R: VecZnxDftToMut<B>,
 21        A: VecZnxToRef;
 22}
 23
 24pub trait VecZnxIdftApplyTmpBytes {
 25    fn vec_znx_idft_apply_tmp_bytes(&self) -> usize;
 26}
 27
 28pub trait VecZnxIdftApply<B: Backend> {
 29    fn vec_znx_idft_apply<R, A>(&self, res: &mut R, res_col: usize, a: &A, a_col: usize, scratch: &mut Scratch<B>)
 30    where
 31        R: VecZnxBigToMut<B>,
 32        A: VecZnxDftToRef<B>;
 33}
 34
 35pub trait VecZnxIdftApplyTmpA<B: Backend> {
 36    fn vec_znx_idft_apply_tmpa<R, A>(&self, 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 trait VecZnxIdftApplyConsume<B: Backend> {
 43    fn vec_znx_idft_apply_consume<D: Data>(&self, a: VecZnxDft<D, B>) -> VecZnxBig<D, B>
 44    where
 45        VecZnxDft<D, B>: VecZnxDftToMut<B>;
 46}
 47
 48pub trait VecZnxDftAdd<B: Backend> {
 49    fn vec_znx_dft_add<R, A, D>(&self, 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 trait VecZnxDftAddInplace<B: Backend> {
 57    fn vec_znx_dft_add_inplace<R, A>(&self, res: &mut R, res_col: usize, a: &A, a_col: usize)
 58    where
 59        R: VecZnxDftToMut<B>,
 60        A: VecZnxDftToRef<B>;
 61}
 62
 63pub trait VecZnxDftAddScaledInplace<B: Backend> {
 64    fn vec_znx_dft_add_scaled_inplace<R, A>(&self, res: &mut R, res_col: usize, a: &A, a_col: usize, a_scale: i64)
 65    where
 66        R: VecZnxDftToMut<B>,
 67        A: VecZnxDftToRef<B>;
 68}
 69
 70pub trait VecZnxDftSub<B: Backend> {
 71    fn vec_znx_dft_sub<R, A, D>(&self, res: &mut R, res_col: usize, a: &A, a_col: usize, b: &D, b_col: usize)
 72    where
 73        R: VecZnxDftToMut<B>,
 74        A: VecZnxDftToRef<B>,
 75        D: VecZnxDftToRef<B>;
 76}
 77
 78pub trait VecZnxDftSubInplace<B: Backend> {
 79    fn vec_znx_dft_sub_inplace<R, A>(&self, res: &mut R, res_col: usize, a: &A, a_col: usize)
 80    where
 81        R: VecZnxDftToMut<B>,
 82        A: VecZnxDftToRef<B>;
 83}
 84
 85pub trait VecZnxDftSubNegateInplace<B: Backend> {
 86    fn vec_znx_dft_sub_negate_inplace<R, A>(&self, res: &mut R, res_col: usize, a: &A, a_col: usize)
 87    where
 88        R: VecZnxDftToMut<B>,
 89        A: VecZnxDftToRef<B>;
 90}
 91
 92pub trait VecZnxDftCopy<B: Backend> {
 93    fn vec_znx_dft_copy<R, A>(&self, step: usize, offset: usize, res: &mut R, res_col: usize, a: &A, a_col: usize)
 94    where
 95        R: VecZnxDftToMut<B>,
 96        A: VecZnxDftToRef<B>;
 97}
 98
 99pub trait VecZnxDftZero<B: Backend> {
100    fn vec_znx_dft_zero<R>(&self, res: &mut R)
101    where
102        R: VecZnxDftToMut<B>;
103}