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}