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_alloc_bytes_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}