poulpy/poulpy-hal/src/oep/vec_znx_big.rs
poulpy-hal/src/oep/vec_znx_big.rsRaw
1use crate::{
2 layouts::{Backend, Module, Scratch, VecZnxBigOwned, VecZnxBigToMut, VecZnxBigToRef, VecZnxToMut, VecZnxToRef},
3 source::Source,
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 VecZnxBigFromSmallImpl<B: Backend> {
11 fn vec_znx_big_from_small_impl<R, A>(res: &mut R, res_col: usize, a: &A, a_col: usize)
12 where
13 R: VecZnxBigToMut<B>,
14 A: VecZnxToRef;
15}
16
17/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
18/// * See TODO for reference code.
19/// * See TODO for corresponding public API.
20/// # Safety [crate::doc::backend_safety] for safety contract.
21pub unsafe trait VecZnxBigAllocImpl<B: Backend> {
22 fn vec_znx_big_alloc_impl(n: usize, cols: usize, size: usize) -> VecZnxBigOwned<B>;
23}
24
25/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
26/// * See TODO for reference code.
27/// * See TODO for corresponding public API.
28/// # Safety [crate::doc::backend_safety] for safety contract.
29pub unsafe trait VecZnxBigFromBytesImpl<B: Backend> {
30 fn vec_znx_big_from_bytes_impl(n: usize, cols: usize, size: usize, bytes: Vec<u8>) -> VecZnxBigOwned<B>;
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 VecZnxBigAllocBytesImpl<B: Backend> {
38 fn vec_znx_big_alloc_bytes_impl(n: usize, cols: usize, size: usize) -> usize;
39}
40
41#[allow(clippy::too_many_arguments)]
42/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
43/// * See TODO for reference code.
44/// * See TODO for corresponding public API.
45/// # Safety [crate::doc::backend_safety] for safety contract.
46pub unsafe trait VecZnxBigAddNormalImpl<B: Backend> {
47 fn add_normal_impl<R: VecZnxBigToMut<B>>(
48 module: &Module<B>,
49 basek: usize,
50 res: &mut R,
51 res_col: usize,
52 k: usize,
53 source: &mut Source,
54 sigma: f64,
55 bound: f64,
56 );
57}
58
59/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
60/// * See TODO for reference code.
61/// * See TODO for corresponding public API.
62/// # Safety [crate::doc::backend_safety] for safety contract.
63pub unsafe trait VecZnxBigAddImpl<B: Backend> {
64 fn vec_znx_big_add_impl<R, A, C>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize, b: &C, b_col: usize)
65 where
66 R: VecZnxBigToMut<B>,
67 A: VecZnxBigToRef<B>,
68 C: VecZnxBigToRef<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 VecZnxBigAddInplaceImpl<B: Backend> {
76 fn vec_znx_big_add_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
77 where
78 R: VecZnxBigToMut<B>,
79 A: VecZnxBigToRef<B>;
80}
81
82/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
83/// * See TODO for reference code.
84/// * See TODO for corresponding public API.
85/// # Safety [crate::doc::backend_safety] for safety contract.
86pub unsafe trait VecZnxBigAddSmallImpl<B: Backend> {
87 fn vec_znx_big_add_small_impl<R, A, C>(
88 module: &Module<B>,
89 res: &mut R,
90 res_col: usize,
91 a: &A,
92 a_col: usize,
93 b: &C,
94 b_col: usize,
95 ) where
96 R: VecZnxBigToMut<B>,
97 A: VecZnxBigToRef<B>,
98 C: VecZnxToRef;
99}
100
101/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
102/// * See TODO for reference code.
103/// * See TODO for corresponding public API.
104/// # Safety [crate::doc::backend_safety] for safety contract.
105pub unsafe trait VecZnxBigAddSmallInplaceImpl<B: Backend> {
106 fn vec_znx_big_add_small_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
107 where
108 R: VecZnxBigToMut<B>,
109 A: VecZnxToRef;
110}
111
112/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
113/// * See TODO for reference code.
114/// * See TODO for corresponding public API.
115/// # Safety [crate::doc::backend_safety] for safety contract.
116pub unsafe trait VecZnxBigSubImpl<B: Backend> {
117 fn vec_znx_big_sub_impl<R, A, C>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize, b: &C, b_col: usize)
118 where
119 R: VecZnxBigToMut<B>,
120 A: VecZnxBigToRef<B>,
121 C: VecZnxBigToRef<B>;
122}
123
124/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
125/// * See TODO for reference code.
126/// * See TODO for corresponding public API.
127/// # Safety [crate::doc::backend_safety] for safety contract.
128pub unsafe trait VecZnxBigSubABInplaceImpl<B: Backend> {
129 fn vec_znx_big_sub_ab_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
130 where
131 R: VecZnxBigToMut<B>,
132 A: VecZnxBigToRef<B>;
133}
134
135/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
136/// * See TODO for reference code.
137/// * See TODO for corresponding public API.
138/// # Safety [crate::doc::backend_safety] for safety contract.
139pub unsafe trait VecZnxBigSubBAInplaceImpl<B: Backend> {
140 fn vec_znx_big_sub_ba_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
141 where
142 R: VecZnxBigToMut<B>,
143 A: VecZnxBigToRef<B>;
144}
145
146/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
147/// * See TODO for reference code.
148/// * See TODO for corresponding public API.
149/// # Safety [crate::doc::backend_safety] for safety contract.
150pub unsafe trait VecZnxBigSubSmallAImpl<B: Backend> {
151 fn vec_znx_big_sub_small_a_impl<R, A, C>(
152 module: &Module<B>,
153 res: &mut R,
154 res_col: usize,
155 a: &A,
156 a_col: usize,
157 b: &C,
158 b_col: usize,
159 ) where
160 R: VecZnxBigToMut<B>,
161 A: VecZnxToRef,
162 C: VecZnxBigToRef<B>;
163}
164
165/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
166/// * See TODO for reference code.
167/// * See TODO for corresponding public API.
168/// # Safety [crate::doc::backend_safety] for safety contract.
169pub unsafe trait VecZnxBigSubSmallAInplaceImpl<B: Backend> {
170 fn vec_znx_big_sub_small_a_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
171 where
172 R: VecZnxBigToMut<B>,
173 A: VecZnxToRef;
174}
175
176/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
177/// * See TODO for reference code.
178/// * See TODO for corresponding public API.
179/// # Safety [crate::doc::backend_safety] for safety contract.
180pub unsafe trait VecZnxBigSubSmallBImpl<B: Backend> {
181 fn vec_znx_big_sub_small_b_impl<R, A, C>(
182 module: &Module<B>,
183 res: &mut R,
184 res_col: usize,
185 a: &A,
186 a_col: usize,
187 b: &C,
188 b_col: usize,
189 ) where
190 R: VecZnxBigToMut<B>,
191 A: VecZnxBigToRef<B>,
192 C: VecZnxToRef;
193}
194
195/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
196/// * See TODO for reference code.
197/// * See TODO for corresponding public API.
198/// # Safety [crate::doc::backend_safety] for safety contract.
199pub unsafe trait VecZnxBigSubSmallBInplaceImpl<B: Backend> {
200 fn vec_znx_big_sub_small_b_inplace_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
201 where
202 R: VecZnxBigToMut<B>,
203 A: VecZnxToRef;
204}
205
206/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
207/// * See TODO for reference code.
208/// * See TODO for corresponding public API.
209/// # Safety [crate::doc::backend_safety] for safety contract.
210pub unsafe trait VecZnxBigNegateImpl<B: Backend> {
211 fn vec_znx_big_negate_impl<R, A>(module: &Module<B>, res: &mut R, res_col: usize, a: &A, a_col: usize)
212 where
213 R: VecZnxBigToMut<B>,
214 A: VecZnxBigToRef<B>;
215}
216
217/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
218/// * See TODO for reference code.
219/// * See TODO for corresponding public API.
220/// # Safety [crate::doc::backend_safety] for safety contract.
221pub unsafe trait VecZnxBigNegateInplaceImpl<B: Backend> {
222 fn vec_znx_big_negate_inplace_impl<A>(module: &Module<B>, a: &mut A, a_col: usize)
223 where
224 A: VecZnxBigToMut<B>;
225}
226
227/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
228/// * See TODO for reference code.
229/// * See TODO for corresponding public API.
230/// # Safety [crate::doc::backend_safety] for safety contract.
231pub unsafe trait VecZnxBigNormalizeTmpBytesImpl<B: Backend> {
232 fn vec_znx_big_normalize_tmp_bytes_impl(module: &Module<B>) -> usize;
233}
234
235/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
236/// * See TODO for reference code.
237/// * See TODO for corresponding public API.
238/// # Safety [crate::doc::backend_safety] for safety contract.
239pub unsafe trait VecZnxBigNormalizeImpl<B: Backend> {
240 fn vec_znx_big_normalize_impl<R, A>(
241 module: &Module<B>,
242 basek: usize,
243 res: &mut R,
244 res_col: usize,
245 a: &A,
246 a_col: usize,
247 scratch: &mut Scratch<B>,
248 ) where
249 R: VecZnxToMut,
250 A: VecZnxBigToRef<B>;
251}
252
253/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
254/// * See TODO for reference code.
255/// * See TODO for corresponding public API.
256/// # Safety [crate::doc::backend_safety] for safety contract.
257pub unsafe trait VecZnxBigAutomorphismImpl<B: Backend> {
258 fn vec_znx_big_automorphism_impl<R, A>(module: &Module<B>, k: i64, res: &mut R, res_col: usize, a: &A, a_col: usize)
259 where
260 R: VecZnxBigToMut<B>,
261 A: VecZnxBigToRef<B>;
262}
263
264/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
265/// * See TODO for reference code.
266/// * See TODO for corresponding public API.
267/// # Safety [crate::doc::backend_safety] for safety contract.
268pub unsafe trait VecZnxBigAutomorphismInplaceTmpBytesImpl<B: Backend> {
269 fn vec_znx_big_automorphism_inplace_tmp_bytes_impl(module: &Module<B>) -> usize;
270}
271
272/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
273/// * See TODO for reference code.
274/// * See TODO for corresponding public API.
275/// # Safety [crate::doc::backend_safety] for safety contract.
276pub unsafe trait VecZnxBigAutomorphismInplaceImpl<B: Backend> {
277 fn vec_znx_big_automorphism_inplace_impl<A>(module: &Module<B>, k: i64, a: &mut A, a_col: usize, scratch: &mut Scratch<B>)
278 where
279 A: VecZnxBigToMut<B>;
280}