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 the [poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs](https://github.com/phantomzone-org/poulpy/blob/main/poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs) reference implementation.
  8/// * See [crate::api::VecZnxDftAlloc] 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 the [poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs](https://github.com/phantomzone-org/poulpy/blob/main/poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs) reference implementation.
 16/// * See [crate::api::VecZnxDftFromBytes] 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 the [poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs](https://github.com/phantomzone-org/poulpy/blob/main/poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs) reference implementation.
 24/// * See [crate::api::VecZnxDftApply] for corresponding public API.
 25/// # Safety [crate::doc::backend_safety] for safety contract.
 26pub unsafe trait VecZnxDftApplyImpl<B: Backend> {
 27    fn vec_znx_dft_apply_impl<R, A>(
 28        module: &Module<B>,
 29        step: usize,
 30        offset: usize,
 31        res: &mut R,
 32        res_col: usize,
 33        a: &A,
 34        a_col: usize,
 35    ) where
 36        R: VecZnxDftToMut<B>,
 37        A: VecZnxToRef;
 38}
 39
 40/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 41/// * See the [poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs](https://github.com/phantomzone-org/poulpy/blob/main/poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs) reference implementation.
 42/// * See [crate::api::VecZnxDftAllocBytes] for corresponding public API.
 43/// # Safety [crate::doc::backend_safety] for safety contract.
 44pub unsafe trait VecZnxDftAllocBytesImpl<B: Backend> {
 45    fn vec_znx_dft_bytes_of_impl(n: usize, cols: usize, size: usize) -> usize;
 46}
 47
 48/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 49/// * See the [poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs](https://github.com/phantomzone-org/poulpy/blob/main/poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs) reference implementation.
 50/// * See [crate::api::VecZnxIdftApplyTmpBytes] for corresponding public API.
 51/// # Safety [crate::doc::backend_safety] for safety contract.
 52pub unsafe trait VecZnxIdftApplyTmpBytesImpl<B: Backend> {
 53    fn vec_znx_idft_apply_tmp_bytes_impl(module: &Module<B>) -> usize;
 54}
 55
 56/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 57/// * See the [poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs](https://github.com/phantomzone-org/poulpy/blob/main/poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs) reference implementation.
 58/// * See [crate::api::VecZnxIdftApply] for corresponding public API.
 59/// # Safety [crate::doc::backend_safety] for safety contract.
 60pub unsafe trait VecZnxIdftApplyImpl<B: Backend> {
 61    fn vec_znx_idft_apply_impl<R, A>(
 62        module: &Module<B>,
 63        res: &mut R,
 64        res_col: usize,
 65        a: &A,
 66        a_col: usize,
 67        scratch: &mut Scratch<B>,
 68    ) where
 69        R: VecZnxBigToMut<B>,
 70        A: VecZnxDftToRef<B>;
 71}
 72
 73/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 74/// * See the [poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs](https://github.com/phantomzone-org/poulpy/blob/main/poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs) reference implementation.
 75/// * See [crate::api::VecZnxIdftApplyTmpA] for corresponding public API.
 76/// # Safety [crate::doc::backend_safety] for safety contract.
 77pub unsafe trait VecZnxIdftApplyTmpAImpl<B: Backend> {
 78    fn vec_znx_idft_apply_tmpa_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &mut A, a_col: usize)
 79    where
 80        R: VecZnxBigToMut<B>,
 81        A: VecZnxDftToMut<B>;
 82}
 83
 84/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 85/// * See the [poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs](https://github.com/phantomzone-org/poulpy/blob/main/poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs) reference implementation.
 86/// * See [crate::api::VecZnxIdftApplyConsume] for corresponding public API.
 87/// # Safety [crate::doc::backend_safety] for safety contract.
 88pub unsafe trait VecZnxIdftApplyConsumeImpl<B: Backend> {
 89    fn vec_znx_idft_apply_consume_impl<D: Data>(module: &Module<B>, a: VecZnxDft<D, B>) -> VecZnxBig<D, B>
 90    where
 91        VecZnxDft<D, B>: VecZnxDftToMut<B>;
 92}
 93
 94/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 95/// * See the [poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs](https://github.com/phantomzone-org/poulpy/blob/main/poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs) reference implementation.
 96/// * See [crate::api::VecZnxDftAdd] for corresponding public API.
 97/// # Safety [crate::doc::backend_safety] for safety contract.
 98pub unsafe trait VecZnxDftAddImpl<B: Backend> {
 99    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)
100    where
101        R: VecZnxDftToMut<B>,
102        A: VecZnxDftToRef<B>,
103        D: VecZnxDftToRef<B>;
104}
105
106/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
107/// * See the [poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs](https://github.com/phantomzone-org/poulpy/blob/main/poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs) reference implementation.
108/// * See [crate::api::VecZnxDftAddInplace] for corresponding public API.
109/// # Safety [crate::doc::backend_safety] for safety contract.
110pub unsafe trait VecZnxDftAddInplaceImpl<B: Backend> {
111    fn vec_znx_dft_add_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
112    where
113        R: VecZnxDftToMut<B>,
114        A: VecZnxDftToRef<B>;
115}
116
117/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
118/// * See the [poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs](https://github.com/phantomzone-org/poulpy/blob/main/poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs) reference implementation.
119/// * See [crate::api::VecZnxDftSub] for corresponding public API.
120/// # Safety [crate::doc::backend_safety] for safety contract.
121pub unsafe trait VecZnxDftSubImpl<B: Backend> {
122    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)
123    where
124        R: VecZnxDftToMut<B>,
125        A: VecZnxDftToRef<B>,
126        D: VecZnxDftToRef<B>;
127}
128
129/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
130/// * See the [poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs](https://github.com/phantomzone-org/poulpy/blob/main/poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs) reference implementation.
131/// * See [crate::api::VecZnxDftSubInplace] for corresponding public API.
132/// # Safety [crate::doc::backend_safety] for safety contract.
133pub unsafe trait VecZnxDftSubInplaceImpl<B: Backend> {
134    fn vec_znx_dft_sub_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
135    where
136        R: VecZnxDftToMut<B>,
137        A: VecZnxDftToRef<B>;
138}
139
140/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
141/// * See the [poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs](https://github.com/phantomzone-org/poulpy/blob/main/poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs) reference implementation.
142/// * See [crate::api::VecZnxDftSubNegateInplace] for corresponding public API.
143/// # Safety [crate::doc::backend_safety] for safety contract.
144pub unsafe trait VecZnxDftSubNegateInplaceImpl<B: Backend> {
145    fn vec_znx_dft_sub_negate_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, 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 the [poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs](https://github.com/phantomzone-org/poulpy/blob/main/poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs) reference implementation.
153/// * See [crate::api::VecZnxDftCopy] for corresponding public API.
154/// # Safety [crate::doc::backend_safety] for safety contract.
155pub unsafe trait VecZnxDftCopyImpl<B: Backend> {
156    fn vec_znx_dft_copy_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: VecZnxDftToRef<B>;
167}
168
169/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
170/// * See the [poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs](https://github.com/phantomzone-org/poulpy/blob/main/poulpy-backend/src/cpu_fft64_ref/vec_znx_dft.rs) reference implementation.
171/// * See [crate::api::VecZnxDftZero] 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}