1use crate::reference::znx::{
8 ZnxAdd, ZnxAddAssign, ZnxAutomorphism, ZnxCopy, ZnxExtractDigitAddMul, ZnxMulAddPowerOfTwo, ZnxMulPowerOfTwo,
9 ZnxMulPowerOfTwoAssign, ZnxNegate, ZnxNegateAssign, ZnxNormalizeDigit, ZnxNormalizeFinalStep, ZnxNormalizeFinalStepAssign,
10 ZnxNormalizeFinalStepSub, ZnxNormalizeFirstStep, ZnxNormalizeFirstStepAssign, ZnxNormalizeFirstStepCarryOnly,
11 ZnxNormalizeMiddleStep, ZnxNormalizeMiddleStepAssign, ZnxNormalizeMiddleStepCarryOnly, ZnxNormalizeMiddleStepSub, ZnxRotate,
12 ZnxSub, ZnxSubAssign, ZnxSubNegateAssign, ZnxSwitchRing, ZnxZero, znx_add_assign_ref, znx_add_ref, znx_automorphism_ref,
13 znx_copy_ref, znx_extract_digit_addmul_ref, znx_mul_add_power_of_two_ref, znx_mul_power_of_two_assign_ref,
14 znx_mul_power_of_two_ref, znx_negate_assign_ref, znx_negate_ref, znx_normalize_digit_ref,
15 znx_normalize_final_step_assign_ref, znx_normalize_final_step_ref, znx_normalize_final_step_sub_ref,
16 znx_normalize_first_step_assign_ref, znx_normalize_first_step_carry_only_ref, znx_normalize_first_step_ref,
17 znx_normalize_middle_step_assign_ref, znx_normalize_middle_step_carry_only_ref, znx_normalize_middle_step_ref,
18 znx_normalize_middle_step_sub_ref, znx_rotate, znx_sub_assign_ref, znx_sub_negate_assign_ref, znx_sub_ref,
19 znx_switch_ring_ref, znx_zero_ref,
20};
21
22use crate::NTT120Ref;
23
24impl ZnxAdd for NTT120Ref {
25 #[inline(always)]
26 fn znx_add(res: &mut [i64], a: &[i64], b: &[i64]) {
27 znx_add_ref(res, a, b);
28 }
29}
30
31impl ZnxAddAssign for NTT120Ref {
32 #[inline(always)]
33 fn znx_add_assign(res: &mut [i64], a: &[i64]) {
34 znx_add_assign_ref(res, a);
35 }
36}
37
38impl ZnxSub for NTT120Ref {
39 #[inline(always)]
40 fn znx_sub(res: &mut [i64], a: &[i64], b: &[i64]) {
41 znx_sub_ref(res, a, b);
42 }
43}
44
45impl ZnxSubAssign for NTT120Ref {
46 #[inline(always)]
47 fn znx_sub_assign(res: &mut [i64], a: &[i64]) {
48 znx_sub_assign_ref(res, a);
49 }
50}
51
52impl ZnxSubNegateAssign for NTT120Ref {
53 #[inline(always)]
54 fn znx_sub_negate_assign(res: &mut [i64], a: &[i64]) {
55 znx_sub_negate_assign_ref(res, a);
56 }
57}
58
59impl ZnxMulAddPowerOfTwo for NTT120Ref {
60 #[inline(always)]
61 fn znx_muladd_power_of_two(k: i64, res: &mut [i64], a: &[i64]) {
62 znx_mul_add_power_of_two_ref(k, res, a);
63 }
64}
65
66impl ZnxMulPowerOfTwo for NTT120Ref {
67 #[inline(always)]
68 fn znx_mul_power_of_two(k: i64, res: &mut [i64], a: &[i64]) {
69 znx_mul_power_of_two_ref(k, res, a);
70 }
71}
72
73impl ZnxMulPowerOfTwoAssign for NTT120Ref {
74 #[inline(always)]
75 fn znx_mul_power_of_two_assign(k: i64, res: &mut [i64]) {
76 znx_mul_power_of_two_assign_ref(k, res);
77 }
78}
79
80impl ZnxAutomorphism for NTT120Ref {
81 #[inline(always)]
82 fn znx_automorphism(p: i64, res: &mut [i64], a: &[i64]) {
83 znx_automorphism_ref(p, res, a);
84 }
85}
86
87impl ZnxCopy for NTT120Ref {
88 #[inline(always)]
89 fn znx_copy(res: &mut [i64], a: &[i64]) {
90 znx_copy_ref(res, a);
91 }
92}
93
94impl ZnxNegate for NTT120Ref {
95 #[inline(always)]
96 fn znx_negate(res: &mut [i64], src: &[i64]) {
97 znx_negate_ref(res, src);
98 }
99}
100
101impl ZnxNegateAssign for NTT120Ref {
102 #[inline(always)]
103 fn znx_negate_assign(res: &mut [i64]) {
104 znx_negate_assign_ref(res);
105 }
106}
107
108impl ZnxRotate for NTT120Ref {
109 #[inline(always)]
110 fn znx_rotate(p: i64, res: &mut [i64], src: &[i64]) {
111 znx_rotate::<Self>(p, res, src);
112 }
113}
114
115impl ZnxZero for NTT120Ref {
116 #[inline(always)]
117 fn znx_zero(res: &mut [i64]) {
118 znx_zero_ref(res);
119 }
120}
121
122impl ZnxSwitchRing for NTT120Ref {
123 #[inline(always)]
124 fn znx_switch_ring(res: &mut [i64], a: &[i64]) {
125 znx_switch_ring_ref(res, a);
126 }
127}
128
129impl ZnxNormalizeFirstStep for NTT120Ref {
130 #[inline(always)]
131 fn znx_normalize_first_step<const OVERWRITE: bool>(base2k: usize, lsh: usize, x: &mut [i64], a: &[i64], carry: &mut [i64]) {
132 znx_normalize_first_step_ref::<OVERWRITE>(base2k, lsh, x, a, carry);
133 }
134}
135
136impl ZnxNormalizeMiddleStep for NTT120Ref {
137 #[inline(always)]
138 fn znx_normalize_middle_step<const OVERWRITE: bool>(base2k: usize, lsh: usize, x: &mut [i64], a: &[i64], carry: &mut [i64]) {
139 znx_normalize_middle_step_ref::<OVERWRITE>(base2k, lsh, x, a, carry);
140 }
141}
142
143impl ZnxNormalizeFinalStep for NTT120Ref {
144 #[inline(always)]
145 fn znx_normalize_final_step<const OVERWRITE: bool>(base2k: usize, lsh: usize, x: &mut [i64], a: &[i64], carry: &mut [i64]) {
146 znx_normalize_final_step_ref::<OVERWRITE>(base2k, lsh, x, a, carry);
147 }
148}
149
150impl ZnxNormalizeMiddleStepSub for NTT120Ref {
151 #[inline(always)]
152 fn znx_normalize_middle_step_sub(base2k: usize, lsh: usize, x: &mut [i64], a: &[i64], carry: &mut [i64]) {
153 znx_normalize_middle_step_sub_ref(base2k, lsh, x, a, carry);
154 }
155}
156
157impl ZnxNormalizeFinalStepSub for NTT120Ref {
158 #[inline(always)]
159 fn znx_normalize_final_step_sub(base2k: usize, lsh: usize, x: &mut [i64], a: &[i64], carry: &mut [i64]) {
160 znx_normalize_final_step_sub_ref(base2k, lsh, x, a, carry);
161 }
162}
163
164impl ZnxNormalizeFinalStepAssign for NTT120Ref {
165 #[inline(always)]
166 fn znx_normalize_final_step_assign(base2k: usize, lsh: usize, x: &mut [i64], carry: &mut [i64]) {
167 znx_normalize_final_step_assign_ref(base2k, lsh, x, carry);
168 }
169}
170
171impl ZnxNormalizeFirstStepCarryOnly for NTT120Ref {
172 #[inline(always)]
173 fn znx_normalize_first_step_carry_only(base2k: usize, lsh: usize, x: &[i64], carry: &mut [i64]) {
174 znx_normalize_first_step_carry_only_ref(base2k, lsh, x, carry);
175 }
176}
177
178impl ZnxNormalizeFirstStepAssign for NTT120Ref {
179 #[inline(always)]
180 fn znx_normalize_first_step_assign(base2k: usize, lsh: usize, x: &mut [i64], carry: &mut [i64]) {
181 znx_normalize_first_step_assign_ref(base2k, lsh, x, carry);
182 }
183}
184
185impl ZnxNormalizeMiddleStepCarryOnly for NTT120Ref {
186 #[inline(always)]
187 fn znx_normalize_middle_step_carry_only(base2k: usize, lsh: usize, x: &[i64], carry: &mut [i64]) {
188 znx_normalize_middle_step_carry_only_ref(base2k, lsh, x, carry);
189 }
190}
191
192impl ZnxNormalizeMiddleStepAssign for NTT120Ref {
193 #[inline(always)]
194 fn znx_normalize_middle_step_assign(base2k: usize, lsh: usize, x: &mut [i64], carry: &mut [i64]) {
195 znx_normalize_middle_step_assign_ref(base2k, lsh, x, carry);
196 }
197}
198
199impl ZnxExtractDigitAddMul for NTT120Ref {
200 #[inline(always)]
201 fn znx_extract_digit_addmul(base2k: usize, lsh: usize, res: &mut [i64], src: &mut [i64]) {
202 znx_extract_digit_addmul_ref(base2k, lsh, res, src);
203 }
204}
205
206impl ZnxNormalizeDigit for NTT120Ref {
207 #[inline(always)]
208 fn znx_normalize_digit(base2k: usize, res: &mut [i64], src: &mut [i64]) {
209 znx_normalize_digit_ref(base2k, res, src);
210 }
211}