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