arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/poulpy-hal/src/oep/zn.rs
poulpy-hal/src/oep/zn.rsRaw
 1use crate::{
 2    layouts::{Backend, Scratch, ZnToMut},
 3    source::Source,
 4};
 5
 6/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
 7/// * See TODO
 8/// * See [crate::api::ZnNormalizeTmpBytes] for corresponding public API.
 9/// # Safety [crate::doc::backend_safety] for safety contract.
10pub unsafe trait ZnNormalizeTmpBytesImpl<B: Backend> {
11    fn zn_normalize_tmp_bytes_impl(n: usize) -> usize;
12}
13
14/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
15/// * See [zn_normalize_base2k_ref](https://github.com/phantomzone-org/spqlios-arithmetic/blob/32a3f5fcce9863b58e949f2dfd5abc1bfbaa09b4/spqlios/arithmetic/zn64.c#L9) for reference code.
16/// * See [crate::api::ZnNormalizeInplace] for corresponding public API.
17/// # Safety [crate::doc::backend_safety] for safety contract.
18pub unsafe trait ZnNormalizeInplaceImpl<B: Backend> {
19    fn zn_normalize_inplace_impl<R>(n: usize, basek: usize, res: &mut R, res_col: usize, scratch: &mut Scratch<B>)
20    where
21        R: ZnToMut;
22}
23
24/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
25/// * See [crate::api::ZnFillUniform] for corresponding public API.
26/// # Safety [crate::doc::backend_safety] for safety contract.
27pub unsafe trait ZnFillUniformImpl<B: Backend> {
28    fn zn_fill_uniform_impl<R>(n: usize, basek: usize, res: &mut R, res_col: usize, source: &mut Source)
29    where
30        R: ZnToMut;
31}
32
33#[allow(clippy::too_many_arguments)]
34/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
35/// * See [crate::api::ZnFillNormal] for corresponding public API.
36/// # Safety [crate::doc::backend_safety] for safety contract.
37pub unsafe trait ZnFillNormalImpl<B: Backend> {
38    fn zn_fill_normal_impl<R>(
39        n: usize,
40        basek: usize,
41        res: &mut R,
42        res_col: usize,
43        k: usize,
44        source: &mut Source,
45        sigma: f64,
46        bound: f64,
47    ) where
48        R: ZnToMut;
49}
50
51#[allow(clippy::too_many_arguments)]
52/// # THIS TRAIT IS AN OPEN EXTENSION POINT (unsafe)
53/// * See [crate::api::ZnAddNormal] for corresponding public API.
54/// # Safety [crate::doc::backend_safety] for safety contract.
55pub unsafe trait ZnAddNormalImpl<B: Backend> {
56    fn zn_add_normal_impl<R>(
57        n: usize,
58        basek: usize,
59        res: &mut R,
60        res_col: usize,
61        k: usize,
62        source: &mut Source,
63        sigma: f64,
64        bound: f64,
65    ) where
66        R: ZnToMut;
67}