poulpy/poulpy-backend/src/cpu_fft64_ref/znx.rs
poulpy-backend/src/cpu_fft64_ref/znx.rsRaw
1use poulpy_hal::reference::znx::{
2 ZnxAdd, ZnxAddInplace, ZnxAutomorphism, ZnxCopy, ZnxNegate, ZnxNegateInplace, ZnxNormalizeFinalStep,
3 ZnxNormalizeFinalStepInplace, ZnxNormalizeFirstStep, ZnxNormalizeFirstStepCarryOnly, ZnxNormalizeFirstStepInplace,
4 ZnxNormalizeMiddleStep, ZnxNormalizeMiddleStepCarryOnly, ZnxNormalizeMiddleStepInplace, ZnxRotate, ZnxSub, ZnxSubABInplace,
5 ZnxSubBAInplace, ZnxSwitchRing, ZnxZero, znx_add_inplace_ref, znx_add_ref, znx_automorphism_ref, znx_copy_ref,
6 znx_negate_inplace_ref, znx_negate_ref, znx_normalize_final_step_inplace_ref, znx_normalize_final_step_ref,
7 znx_normalize_first_step_carry_only_ref, znx_normalize_first_step_inplace_ref, znx_normalize_first_step_ref,
8 znx_normalize_middle_step_carry_only_ref, znx_normalize_middle_step_inplace_ref, znx_normalize_middle_step_ref, znx_rotate,
9 znx_sub_ab_inplace_ref, znx_sub_ba_inplace_ref, znx_sub_ref, znx_switch_ring_ref, znx_zero_ref,
10};
11
12use crate::cpu_fft64_ref::FFT64Ref;
13
14impl ZnxAdd for FFT64Ref {
15 #[inline(always)]
16 fn znx_add(res: &mut [i64], a: &[i64], b: &[i64]) {
17 znx_add_ref(res, a, b);
18 }
19}
20
21impl ZnxAddInplace for FFT64Ref {
22 #[inline(always)]
23 fn znx_add_inplace(res: &mut [i64], a: &[i64]) {
24 znx_add_inplace_ref(res, a);
25 }
26}
27
28impl ZnxSub for FFT64Ref {
29 #[inline(always)]
30 fn znx_sub(res: &mut [i64], a: &[i64], b: &[i64]) {
31 znx_sub_ref(res, a, b);
32 }
33}
34
35impl ZnxSubABInplace for FFT64Ref {
36 #[inline(always)]
37 fn znx_sub_ab_inplace(res: &mut [i64], a: &[i64]) {
38 znx_sub_ab_inplace_ref(res, a);
39 }
40}
41
42impl ZnxSubBAInplace for FFT64Ref {
43 #[inline(always)]
44 fn znx_sub_ba_inplace(res: &mut [i64], a: &[i64]) {
45 znx_sub_ba_inplace_ref(res, a);
46 }
47}
48
49impl ZnxAutomorphism for FFT64Ref {
50 #[inline(always)]
51 fn znx_automorphism(p: i64, res: &mut [i64], a: &[i64]) {
52 znx_automorphism_ref(p, res, a);
53 }
54}
55
56impl ZnxCopy for FFT64Ref {
57 #[inline(always)]
58 fn znx_copy(res: &mut [i64], a: &[i64]) {
59 znx_copy_ref(res, a);
60 }
61}
62
63impl ZnxNegate for FFT64Ref {
64 #[inline(always)]
65 fn znx_negate(res: &mut [i64], src: &[i64]) {
66 znx_negate_ref(res, src);
67 }
68}
69
70impl ZnxNegateInplace for FFT64Ref {
71 #[inline(always)]
72 fn znx_negate_inplace(res: &mut [i64]) {
73 znx_negate_inplace_ref(res);
74 }
75}
76
77impl ZnxRotate for FFT64Ref {
78 #[inline(always)]
79 fn znx_rotate(p: i64, res: &mut [i64], src: &[i64]) {
80 znx_rotate::<Self>(p, res, src);
81 }
82}
83
84impl ZnxZero for FFT64Ref {
85 #[inline(always)]
86 fn znx_zero(res: &mut [i64]) {
87 znx_zero_ref(res);
88 }
89}
90
91impl ZnxSwitchRing for FFT64Ref {
92 #[inline(always)]
93 fn znx_switch_ring(res: &mut [i64], a: &[i64]) {
94 znx_switch_ring_ref(res, a);
95 }
96}
97
98impl ZnxNormalizeFinalStep for FFT64Ref {
99 #[inline(always)]
100 fn znx_normalize_final_step(basek: usize, lsh: usize, x: &mut [i64], a: &[i64], carry: &mut [i64]) {
101 znx_normalize_final_step_ref(basek, lsh, x, a, carry);
102 }
103}
104
105impl ZnxNormalizeFinalStepInplace for FFT64Ref {
106 #[inline(always)]
107 fn znx_normalize_final_step_inplace(basek: usize, lsh: usize, x: &mut [i64], carry: &mut [i64]) {
108 znx_normalize_final_step_inplace_ref(basek, lsh, x, carry);
109 }
110}
111
112impl ZnxNormalizeFirstStep for FFT64Ref {
113 #[inline(always)]
114 fn znx_normalize_first_step(basek: usize, lsh: usize, x: &mut [i64], a: &[i64], carry: &mut [i64]) {
115 znx_normalize_first_step_ref(basek, lsh, x, a, carry);
116 }
117}
118
119impl ZnxNormalizeFirstStepCarryOnly for FFT64Ref {
120 #[inline(always)]
121 fn znx_normalize_first_step_carry_only(basek: usize, lsh: usize, x: &[i64], carry: &mut [i64]) {
122 znx_normalize_first_step_carry_only_ref(basek, lsh, x, carry);
123 }
124}
125
126impl ZnxNormalizeFirstStepInplace for FFT64Ref {
127 #[inline(always)]
128 fn znx_normalize_first_step_inplace(basek: usize, lsh: usize, x: &mut [i64], carry: &mut [i64]) {
129 znx_normalize_first_step_inplace_ref(basek, lsh, x, carry);
130 }
131}
132
133impl ZnxNormalizeMiddleStep for FFT64Ref {
134 #[inline(always)]
135 fn znx_normalize_middle_step(basek: usize, lsh: usize, x: &mut [i64], a: &[i64], carry: &mut [i64]) {
136 znx_normalize_middle_step_ref(basek, lsh, x, a, carry);
137 }
138}
139
140impl ZnxNormalizeMiddleStepCarryOnly for FFT64Ref {
141 #[inline(always)]
142 fn znx_normalize_middle_step_carry_only(basek: usize, lsh: usize, x: &[i64], carry: &mut [i64]) {
143 znx_normalize_middle_step_carry_only_ref(basek, lsh, x, carry);
144 }
145}
146
147impl ZnxNormalizeMiddleStepInplace for FFT64Ref {
148 #[inline(always)]
149 fn znx_normalize_middle_step_inplace(basek: usize, lsh: usize, x: &mut [i64], carry: &mut [i64]) {
150 znx_normalize_middle_step_inplace_ref(basek, lsh, x, carry);
151 }
152}