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
  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 VecZnxDftAllocBytesImpl<B: Backend> {
 27    fn vec_znx_dft_alloc_bytes_impl(n: usize, cols: usize, size: usize) -> usize;
 28}
 29
 30/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 31/// * See TODO for reference code.
 32/// * See TODO for corresponding public API.
 33/// # Safety [crate::doc::backend_safety] for safety contract.
 34pub unsafe trait VecZnxDftToVecZnxBigTmpBytesImpl<B: Backend> {
 35    fn vec_znx_dft_to_vec_znx_big_tmp_bytes_impl(module: &Module<B>, n: usize) -> usize;
 36}
 37
 38/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 39/// * See TODO for reference code.
 40/// * See TODO for corresponding public API.
 41/// # Safety [crate::doc::backend_safety] for safety contract.
 42pub unsafe trait VecZnxDftToVecZnxBigImpl<B: Backend> {
 43    fn vec_znx_dft_to_vec_znx_big_impl<R, A>(
 44        module: &Module<B>,
 45        res: &mut R,
 46        res_col: usize,
 47        a: &A,
 48        a_col: usize,
 49        scratch: &mut Scratch<B>,
 50    ) where
 51        R: VecZnxBigToMut<B>,
 52        A: VecZnxDftToRef<B>;
 53}
 54
 55/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 56/// * See TODO for reference code.
 57/// * See for corresponding public API.
 58/// # Safety [crate::doc::backend_safety] for safety contract.
 59pub unsafe trait VecZnxDftToVecZnxBigTmpAImpl<B: Backend> {
 60    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)
 61    where
 62        R: VecZnxBigToMut<B>,
 63        A: VecZnxDftToMut<B>;
 64}
 65
 66/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 67/// * See TODO for reference code.
 68/// * See TODO for corresponding public API.
 69/// # Safety [crate::doc::backend_safety] for safety contract.
 70pub unsafe trait VecZnxDftToVecZnxBigConsumeImpl<B: Backend> {
 71    fn vec_znx_dft_to_vec_znx_big_consume_impl<D: Data>(module: &Module<B>, a: VecZnxDft<D, B>) -> VecZnxBig<D, B>
 72    where
 73        VecZnxDft<D, B>: VecZnxDftToMut<B>;
 74}
 75
 76/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 77/// * See TODO for reference code.
 78/// * See TODO for corresponding public API.
 79/// # Safety [crate::doc::backend_safety] for safety contract.
 80pub unsafe trait VecZnxDftAddImpl<B: Backend> {
 81    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)
 82    where
 83        R: VecZnxDftToMut<B>,
 84        A: VecZnxDftToRef<B>,
 85        D: VecZnxDftToRef<B>;
 86}
 87
 88/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 89/// * See TODO for reference code.
 90/// * See TODO for corresponding public API.
 91/// # Safety [crate::doc::backend_safety] for safety contract.
 92pub unsafe trait VecZnxDftAddInplaceImpl<B: Backend> {
 93    fn vec_znx_dft_add_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
 94    where
 95        R: VecZnxDftToMut<B>,
 96        A: VecZnxDftToRef<B>;
 97}
 98
 99/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
100/// * See TODO for reference code.
101/// * See TODO for corresponding public API.
102/// # Safety [crate::doc::backend_safety] for safety contract.
103pub unsafe trait VecZnxDftSubImpl<B: Backend> {
104    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)
105    where
106        R: VecZnxDftToMut<B>,
107        A: VecZnxDftToRef<B>,
108        D: VecZnxDftToRef<B>;
109}
110
111/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
112/// * See TODO for reference code.
113/// * See TODO for corresponding public API.
114/// # Safety [crate::doc::backend_safety] for safety contract.
115pub unsafe trait VecZnxDftSubABInplaceImpl<B: Backend> {
116    fn vec_znx_dft_sub_ab_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
117    where
118        R: VecZnxDftToMut<B>,
119        A: VecZnxDftToRef<B>;
120}
121
122/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
123/// * See TODO for reference code.
124/// * See TODO for corresponding public API.
125/// # Safety [crate::doc::backend_safety] for safety contract.
126pub unsafe trait VecZnxDftSubBAInplaceImpl<B: Backend> {
127    fn vec_znx_dft_sub_ba_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
128    where
129        R: VecZnxDftToMut<B>,
130        A: VecZnxDftToRef<B>;
131}
132
133/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
134/// * See TODO for reference code.
135/// * See TODO for corresponding public API.
136/// # Safety [crate::doc::backend_safety] for safety contract.
137pub unsafe trait VecZnxDftCopyImpl<B: Backend> {
138    fn vec_znx_dft_copy_impl<R, A>(
139        module: &Module<B>,
140        step: usize,
141        offset: usize,
142        res: &mut R,
143        res_col: usize,
144        a: &A,
145        a_col: usize,
146    ) where
147        R: VecZnxDftToMut<B>,
148        A: VecZnxDftToRef<B>;
149}
150
151/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
152/// * See TODO for reference code.
153/// * See TODO for corresponding public API.
154/// # Safety [crate::doc::backend_safety] for safety contract.
155pub unsafe trait VecZnxDftFromVecZnxImpl<B: Backend> {
156    fn vec_znx_dft_from_vec_znx_impl<R, A>(
157        module: &Module<B>,
158        step: usize,
159        offset: usize,
160        res: &mut R,
161        res_col: usize,
162        a: &A,
163        a_col: usize,
164    ) where
165        R: VecZnxDftToMut<B>,
166        A: VecZnxToRef;
167}
168
169/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
170/// * See TODO for reference code.
171/// * See TODO for corresponding public API.
172/// # Safety [crate::doc::backend_safety] for safety contract.
173pub unsafe trait VecZnxDftZeroImpl<B: Backend> {
174    fn vec_znx_dft_zero_impl<R>(module: &Module<B>, res: &mut R)
175    where
176        R: VecZnxDftToMut<B>;
177}