poulpy_hal/delegates/
zn.rs

1use 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}