arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/poulpy-hal/src/oep/vec_znx_dft.rs
poulpy-hal/src/oep/vec_znx_dft.rsRaw
  1use crate::layouts::{
  2    Backend, Data, Module, Scratch, VecZnxBig, VecZnxBigToMut, VecZnxDft, VecZnxDftOwned, VecZnxDftToMut, VecZnxDftToRef,
  3    VecZnxToRef,
  4};
  5
  6/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
  7/// * See TODO for reference code.
  8/// * See TODO for corresponding public API.
  9/// # Safety [crate::doc::backend_safety] for safety contract.
 10pub unsafe trait VecZnxDftAllocImpl<B: Backend> {
 11    fn vec_znx_dft_alloc_impl(n: usize, cols: usize, size: usize) -> VecZnxDftOwned<B>;
 12}
 13
 14/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 15/// * See TODO for reference code.
 16/// * See TODO for corresponding public API.
 17/// # Safety [crate::doc::backend_safety] for safety contract.
 18pub unsafe trait VecZnxDftFromBytesImpl<B: Backend> {
 19    fn vec_znx_dft_from_bytes_impl(n: usize, cols: usize, size: usize, bytes: Vec<u8>) -> VecZnxDftOwned<B>;
 20}
 21
 22/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 23/// * See TODO for reference code.
 24/// * See TODO for corresponding public API.
 25/// # Safety [crate::doc::backend_safety] for safety contract.
 26pub unsafe trait DFTImpl<B: Backend> {
 27    fn dft_impl<R, A>(module: &Module<B>, step: usize, offset: usize, res: &mut R, res_col: usize, a: &A, a_col: usize)
 28    where
 29        R: VecZnxDftToMut<B>,
 30        A: VecZnxToRef;
 31}
 32
 33/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 34/// * See TODO for reference code.
 35/// * See TODO for corresponding public API.
 36/// # Safety [crate::doc::backend_safety] for safety contract.
 37pub unsafe trait VecZnxDftAllocBytesImpl<B: Backend> {
 38    fn vec_znx_dft_alloc_bytes_impl(n: usize, cols: usize, size: usize) -> usize;
 39}
 40
 41/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 42/// * See TODO for reference code.
 43/// * See TODO for corresponding public API.
 44/// # Safety [crate::doc::backend_safety] for safety contract.
 45pub unsafe trait VecZnxIDFTTmpBytesImpl<B: Backend> {
 46    fn vec_znx_idft_tmp_bytes_impl(module: &Module<B>) -> usize;
 47}
 48
 49/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 50/// * See TODO for reference code.
 51/// * See TODO for corresponding public API.
 52/// # Safety [crate::doc::backend_safety] for safety contract.
 53pub unsafe trait IDFTImpl<B: Backend> {
 54    fn idft_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize, scratch: &mut Scratch<B>)
 55    where
 56        R: VecZnxBigToMut<B>,
 57        A: VecZnxDftToRef<B>;
 58}
 59
 60/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 61/// * See TODO for reference code.
 62/// * See for corresponding public API.
 63/// # Safety [crate::doc::backend_safety] for safety contract.
 64pub unsafe trait IDFTTmpAImpl<B: Backend> {
 65    fn idft_tmp_a_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &mut A, a_col: usize)
 66    where
 67        R: VecZnxBigToMut<B>,
 68        A: VecZnxDftToMut<B>;
 69}
 70
 71/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 72/// * See TODO for reference code.
 73/// * See TODO for corresponding public API.
 74/// # Safety [crate::doc::backend_safety] for safety contract.
 75pub unsafe trait IDFTConsumeImpl<B: Backend> {
 76    fn idft_consume_impl<D: Data>(module: &Module<B>, a: VecZnxDft<D, B>) -> VecZnxBig<D, B>
 77    where
 78        VecZnxDft<D, B>: VecZnxDftToMut<B>;
 79}
 80
 81/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 82/// * See TODO for reference code.
 83/// * See TODO for corresponding public API.
 84/// # Safety [crate::doc::backend_safety] for safety contract.
 85pub unsafe trait VecZnxDftAddImpl<B: Backend> {
 86    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)
 87    where
 88        R: VecZnxDftToMut<B>,
 89        A: VecZnxDftToRef<B>,
 90        D: VecZnxDftToRef<B>;
 91}
 92
 93/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 94/// * See TODO for reference code.
 95/// * See TODO for corresponding public API.
 96/// # Safety [crate::doc::backend_safety] for safety contract.
 97pub unsafe trait VecZnxDftAddInplaceImpl<B: Backend> {
 98    fn vec_znx_dft_add_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
 99    where
100        R: VecZnxDftToMut<B>,
101        A: VecZnxDftToRef<B>;
102}
103
104/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
105/// * See TODO for reference code.
106/// * See TODO for corresponding public API.
107/// # Safety [crate::doc::backend_safety] for safety contract.
108pub unsafe trait VecZnxDftSubImpl<B: Backend> {
109    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)
110    where
111        R: VecZnxDftToMut<B>,
112        A: VecZnxDftToRef<B>,
113        D: VecZnxDftToRef<B>;
114}
115
116/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
117/// * See TODO for reference code.
118/// * See TODO for corresponding public API.
119/// # Safety [crate::doc::backend_safety] for safety contract.
120pub unsafe trait VecZnxDftSubABInplaceImpl<B: Backend> {
121    fn vec_znx_dft_sub_ab_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
122    where
123        R: VecZnxDftToMut<B>,
124        A: VecZnxDftToRef<B>;
125}
126
127/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
128/// * See TODO for reference code.
129/// * See TODO for corresponding public API.
130/// # Safety [crate::doc::backend_safety] for safety contract.
131pub unsafe trait VecZnxDftSubBAInplaceImpl<B: Backend> {
132    fn vec_znx_dft_sub_ba_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
133    where
134        R: VecZnxDftToMut<B>,
135        A: VecZnxDftToRef<B>;
136}
137
138/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
139/// * See TODO for reference code.
140/// * See TODO for corresponding public API.
141/// # Safety [crate::doc::backend_safety] for safety contract.
142pub unsafe trait VecZnxDftCopyImpl<B: Backend> {
143    fn vec_znx_dft_copy_impl<R, A>(
144        module: &Module<B>,
145        step: usize,
146        offset: usize,
147        res: &mut R,
148        res_col: usize,
149        a: &A,
150        a_col: usize,
151    ) where
152        R: VecZnxDftToMut<B>,
153        A: VecZnxDftToRef<B>;
154}
155
156/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
157/// * See TODO for reference code.
158/// * See TODO for corresponding public API.
159/// # Safety [crate::doc::backend_safety] for safety contract.
160pub unsafe trait VecZnxDftZeroImpl<B: Backend> {
161    fn vec_znx_dft_zero_impl<R>(module: &Module<B>, res: &mut R)
162    where
163        R: VecZnxDftToMut<B>;
164}