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