poulpy_hal/delegates/
zn.rs1use crate::{
2 api::{ZnAddNormal, ZnFillNormal, ZnFillUniform, ZnNormalizeInplace, ZnNormalizeTmpBytes},
3 layouts::{Backend, Module, Scratch, ZnToMut},
4 oep::{ZnAddNormalImpl, ZnFillNormalImpl, ZnFillUniformImpl, ZnNormalizeInplaceImpl, ZnNormalizeTmpBytesImpl},
5 source::Source,
6};
7
8impl<B> ZnNormalizeTmpBytes for Module<B>
9where
10 B: Backend + ZnNormalizeTmpBytesImpl<B>,
11{
12 fn zn_normalize_tmp_bytes(&self, n: usize) -> usize {
13 B::zn_normalize_tmp_bytes_impl(n)
14 }
15}
16
17impl<B> ZnNormalizeInplace<B> for Module<B>
18where
19 B: Backend + ZnNormalizeInplaceImpl<B>,
20{
21 fn zn_normalize_inplace<A>(&self, n: usize, base2k: usize, a: &mut A, a_col: usize, scratch: &mut Scratch<B>)
22 where
23 A: ZnToMut,
24 {
25 B::zn_normalize_inplace_impl(n, base2k, a, a_col, scratch)
26 }
27}
28
29impl<B> ZnFillUniform for Module<B>
30where
31 B: Backend + ZnFillUniformImpl<B>,
32{
33 fn zn_fill_uniform<R>(&self, n: usize, base2k: usize, res: &mut R, res_col: usize, source: &mut Source)
34 where
35 R: ZnToMut,
36 {
37 B::zn_fill_uniform_impl(n, base2k, res, res_col, source);
38 }
39}
40
41impl<B> ZnFillNormal for Module<B>
42where
43 B: Backend + ZnFillNormalImpl<B>,
44{
45 fn zn_fill_normal<R>(
46 &self,
47 n: usize,
48 base2k: usize,
49 res: &mut R,
50 res_col: usize,
51 k: usize,
52 source: &mut Source,
53 sigma: f64,
54 bound: f64,
55 ) where
56 R: ZnToMut,
57 {
58 B::zn_fill_normal_impl(n, base2k, res, res_col, k, source, sigma, bound);
59 }
60}
61
62impl<B> ZnAddNormal for Module<B>
63where
64 B: Backend + ZnAddNormalImpl<B>,
65{
66 fn zn_add_normal<R>(
67 &self,
68 n: usize,
69 base2k: usize,
70 res: &mut R,
71 res_col: usize,
72 k: usize,
73 source: &mut Source,
74 sigma: f64,
75 bound: f64,
76 ) where
77 R: ZnToMut,
78 {
79 B::zn_add_normal_impl(n, base2k, res, res_col, k, source, sigma, bound);
80 }
81}