Line data Source code
1 : /* Note: This file is auto generated. */
2 : #ifndef HEADER_fd_src_ballet_reedsol_fd_reedsol_ppt_h
3 : #define HEADER_fd_src_ballet_reedsol_fd_reedsol_ppt_h
4 :
5 : #include "fd_reedsol_fft.h"
6 :
7 : /* This file implements the Principal Pivot Transform for the Reed
8 : Solomon FFT operator as described in:
9 : S. -J. Lin, A. Alloum and T. Al-Naffouri, "Principal pivot
10 : transforms on radix-2 DFT-type matrices," 2017 IEEE International
11 : Symposium on Information Theory (ISIT), Aachen, Germany, 2017, pp.
12 : 2358-2362, doi: 10.1109/ISIT.2017.8006951
13 :
14 : The main macro this file provides is FD_REEDSOL_GENERATE_PPT. The
15 : rest of this file is auto-generated implementation details.
16 :
17 : When the number of data shreds we have is not a power of 2, the
18 : approach used in the 32-32 case doesn't apply. I found the paper
19 : extending it to the general case uninterpretable. So we use the
20 : principal pivot transform as an alternative with similar
21 : computational complexity.
22 :
23 : The goal of the first step of the 32-32 case is to find a polynomial
24 : of degree < 32 that interpolates the data shreds. If we only have k
25 : data shreds, where k<32, then instead we need a polynomial P of
26 : degree <k that passes through the k data shreds that we have. If we
27 : could somehow determine P(k), P(k+1), ... P(31), then we could just
28 : use the 32-32 fast case. The principal pivot transform gives us a
29 : way to do exactly that.
30 :
31 : In the 32-32 case, we have:
32 : ( m_0 ) ( y_0 )
33 : ( m_1 ) ( y_1 )
34 : F^{-1} * ( ... ) = ( ... )
35 : ( m_30 ) ( y_30 )
36 : ( m_31 ) ( y_31 )
37 :
38 : where m is in the evaluation domain (i.e. P(i) = m_i) and y is in the
39 : coefficient domain (coefficients of the special basis elements).
40 : Now, we don't know the last 32-k elements of the m vector, i.e.
41 :
42 : ( m_0 ) ( y_0 )
43 : ( m_1 ) ( y_1 )
44 : F^{-1} * ( ... ) = ( ... )
45 : ( ??? ) ( y_30 )
46 : ( ??? ) ( y_31 )
47 :
48 : but what we do know is that the last 32-k elements of the y vector
49 : must be 0 in order for P to have the right order. I.e.
50 :
51 : ( m_0 ) ( y_0 )
52 : ( m_1 ) ( y_1 )
53 : F^{-1} * ( ... ) = ( ... )
54 : ( ??? ) ( 0 )
55 : ( ??? ) ( 0 )
56 :
57 : The principal pivot transform solves this type of problem, and for
58 : certain operators F (including the one we care about here) has a
59 : complexity of O(n log n), where F is an nxn matrix. To keep
60 : consistent with the paper, we multiply through by F and name the
61 : unknowns, actually solving
62 :
63 : ( y_0 ) ( m_0 )
64 : ( y_1 ) ( m_1 )
65 : F * ( ... ) = ( ... )
66 : ( 0 ) ( x_30 )
67 : ( 0 ) ( x_31 )
68 :
69 : Once we've solved this, x_k gives us P(k), i.e. the first parity
70 : shred. If we need more than 32-k parity shreds, then we can just use
71 : the same strategy as the 32-32 case and use the shifted FFT operation
72 : to go back from the coefficient domain to the evaluation domain with
73 : an offset of 32, giving us P(32), P(33), ... P(63) cheaply.
74 :
75 : The paper describes a more general case than what we need, since we
76 : always know the first k elements of the product vector, and not an
77 : arbitrary subset of them. This file only implements the specific
78 : case. */
79 :
80 : /* FD_REEDSOL_GENERATE_PPT: Inserts code to compute the principal pivot
81 : transform of size n (must be a power of 2, currently 16, 32, 64, and
82 : 128 are emitted by the code generator) and when you have k known
83 : elements of the evaluation domain (i.e. k data shreds). k must be
84 : less than n, but the code generator adds the additional restrictions
85 : that k<=67 and only the smallest n is chosen for each k.
86 : Additionally, The remaining n arguments should be vector variables of
87 : type gf_t (which is a typedef for wb_t in the AVX case). These are
88 : used as input and output, since there's no other good way to return n
89 : vector values. As such, this macro is not robust.
90 :
91 : As explained above, the PPT computes the k non-zero elements of the
92 : coefficient domain, followed by the first n-k parity elements. If
93 : the last n-k return values are replaced with zero, they can then be
94 : used with FD_REEDSOL_GENERATE_FFT and the appropriate shift to
95 : compute many more parity elements. The PPT is computed in a
96 : vectorized fashion, i.e. the PPT of the ith byte is computed and
97 : stored in the ith byte of the output for each i independently. */
98 :
99 0 : #define FD_REEDSOL_GENERATE_PPT(n, k, ...) FD_REEDSOL_PPT_IMPL_##n##_##k( __VA_ARGS__ )
100 :
101 : /* For n>=32, this header also declares
102 : void fd_reedsol_ppt_n_k( gf_t *, ... )
103 : that takes n gf_t elements by reference. The arguments are used for
104 : input and output, and it performs the same operation as the similarly
105 : named macro, but this signature allows the function to be defined in
106 : a different compilation unit to speed up compile times. */
107 :
108 : #define GF_MUL22( inout0, inout1, c00, c01, c10, c11) \
109 0 : do { \
110 0 : gf_t temp = GF_ADD( GF_MUL( inout0, c00 ), GF_MUL( inout1, c01 ) ); \
111 0 : inout1 = GF_ADD( GF_MUL( inout0, c10 ), GF_MUL( inout1, c11 ) ); \
112 0 : inout0 = temp; \
113 0 : } while( 0 )
114 :
115 : #define FD_REEDSOL_PPT_IMPL_16_1( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09 , \
116 : in10, in11, in12, in13, in14, in15) \
117 0 : do { \
118 0 : gf_t scratch_2, scratch_4, scratch_8; \
119 0 : scratch_8 = in08; \
120 0 : in08 = GF_MUL( in08, 1 ); \
121 0 : GF_MUL22( in01, in09, 1, 0, 1, 1 ); \
122 0 : GF_MUL22( in02, in10, 1, 0, 1, 1 ); \
123 0 : GF_MUL22( in03, in11, 1, 0, 1, 1 ); \
124 0 : GF_MUL22( in04, in12, 1, 0, 1, 1 ); \
125 0 : GF_MUL22( in05, in13, 1, 0, 1, 1 ); \
126 0 : GF_MUL22( in06, in14, 1, 0, 1, 1 ); \
127 0 : GF_MUL22( in07, in15, 1, 0, 1, 1 ); \
128 0 : scratch_4 = in04; \
129 0 : in04 = GF_MUL( in04, 1 ); \
130 0 : GF_MUL22( in01, in05, 1, 0, 1, 1 ); \
131 0 : GF_MUL22( in02, in06, 1, 0, 1, 1 ); \
132 0 : GF_MUL22( in03, in07, 1, 0, 1, 1 ); \
133 0 : scratch_2 = in02; \
134 0 : in02 = GF_MUL( in02, 1 ); \
135 0 : GF_MUL22( in01, in03, 1, 0, 1, 1 ); \
136 0 : GF_MUL22( in00, in01, 1, 0, 1, 1 ); \
137 0 : in02 = GF_ADD( GF_MUL( in00, 1 ), in02 ); \
138 0 : GF_MUL22( in02, in03, 1, 2, 1, 3 ); \
139 0 : in00 = GF_MUL( in00, 1 ); \
140 0 : in00 = GF_ADD( GF_MUL( scratch_2, 0 ), in00 ); \
141 0 : in04 = GF_ADD( GF_MUL( in00, 1 ), in04 ); \
142 0 : FD_REEDSOL_GENERATE_FFT( 4, 4, in04, in05, in06, in07 ); \
143 0 : in00 = GF_MUL( in00, 1 ); \
144 0 : in00 = GF_ADD( GF_MUL( scratch_4, 0 ), in00 ); \
145 0 : in08 = GF_ADD( GF_MUL( in00, 1 ), in08 ); \
146 0 : FD_REEDSOL_GENERATE_FFT( 8, 8, in08, in09, in10, in11, in12, in13, in14, in15 ); \
147 0 : in00 = GF_MUL( in00, 1 ); \
148 0 : in00 = GF_ADD( GF_MUL( scratch_8, 0 ), in00 ); \
149 0 : } while( 0 )
150 :
151 : #define FD_REEDSOL_PPT_IMPL_16_2( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09 , \
152 : in10, in11, in12, in13, in14, in15) \
153 0 : do { \
154 0 : gf_t scratch_2, scratch_3, scratch_4, scratch_5, scratch_8, scratch_9; \
155 0 : scratch_8 = in08; \
156 0 : in08 = GF_MUL( in08, 1 ); \
157 0 : scratch_9 = in09; \
158 0 : in09 = GF_MUL( in09, 1 ); \
159 0 : GF_MUL22( in02, in10, 1, 0, 1, 1 ); \
160 0 : GF_MUL22( in03, in11, 1, 0, 1, 1 ); \
161 0 : GF_MUL22( in04, in12, 1, 0, 1, 1 ); \
162 0 : GF_MUL22( in05, in13, 1, 0, 1, 1 ); \
163 0 : GF_MUL22( in06, in14, 1, 0, 1, 1 ); \
164 0 : GF_MUL22( in07, in15, 1, 0, 1, 1 ); \
165 0 : scratch_4 = in04; \
166 0 : in04 = GF_MUL( in04, 1 ); \
167 0 : scratch_5 = in05; \
168 0 : in05 = GF_MUL( in05, 1 ); \
169 0 : GF_MUL22( in02, in06, 1, 0, 1, 1 ); \
170 0 : GF_MUL22( in03, in07, 1, 0, 1, 1 ); \
171 0 : scratch_2 = in02; \
172 0 : in02 = GF_MUL( in02, 1 ); \
173 0 : scratch_3 = in03; \
174 0 : in03 = GF_MUL( in03, 1 ); \
175 0 : GF_MUL22( in00, in01, 1, 0, 1, 1 ); \
176 0 : in02 = GF_ADD( GF_MUL( in00, 1 ), in02 ); \
177 0 : in03 = GF_ADD( GF_MUL( in01, 1 ), in03 ); \
178 0 : GF_MUL22( in02, in03, 1, 2, 1, 3 ); \
179 0 : in00 = GF_MUL( in00, 1 ); \
180 0 : in00 = GF_ADD( GF_MUL( scratch_2, 0 ), in00 ); \
181 0 : in01 = GF_MUL( in01, 1 ); \
182 0 : in01 = GF_ADD( GF_MUL( scratch_3, 0 ), in01 ); \
183 0 : in04 = GF_ADD( GF_MUL( in00, 1 ), in04 ); \
184 0 : in05 = GF_ADD( GF_MUL( in01, 1 ), in05 ); \
185 0 : FD_REEDSOL_GENERATE_FFT( 4, 4, in04, in05, in06, in07 ); \
186 0 : in00 = GF_MUL( in00, 1 ); \
187 0 : in00 = GF_ADD( GF_MUL( scratch_4, 0 ), in00 ); \
188 0 : in01 = GF_MUL( in01, 1 ); \
189 0 : in01 = GF_ADD( GF_MUL( scratch_5, 0 ), in01 ); \
190 0 : in08 = GF_ADD( GF_MUL( in00, 1 ), in08 ); \
191 0 : in09 = GF_ADD( GF_MUL( in01, 1 ), in09 ); \
192 0 : FD_REEDSOL_GENERATE_FFT( 8, 8, in08, in09, in10, in11, in12, in13, in14, in15 ); \
193 0 : in00 = GF_MUL( in00, 1 ); \
194 0 : in00 = GF_ADD( GF_MUL( scratch_8, 0 ), in00 ); \
195 0 : in01 = GF_MUL( in01, 1 ); \
196 0 : in01 = GF_ADD( GF_MUL( scratch_9, 0 ), in01 ); \
197 0 : } while( 0 )
198 :
199 : #define FD_REEDSOL_PPT_IMPL_16_3( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, \
200 : in11, in12, in13, in14, in15) \
201 0 : do { \
202 0 : gf_t scratch_10, scratch_3, scratch_4, scratch_5, scratch_6, scratch_8, scratch_9; \
203 0 : scratch_8 = in08; \
204 0 : in08 = GF_MUL( in08, 1 ); \
205 0 : scratch_9 = in09; \
206 0 : in09 = GF_MUL( in09, 1 ); \
207 0 : scratch_10 = in10; \
208 0 : in10 = GF_MUL( in10, 1 ); \
209 0 : GF_MUL22( in03, in11, 1, 0, 1, 1 ); \
210 0 : GF_MUL22( in04, in12, 1, 0, 1, 1 ); \
211 0 : GF_MUL22( in05, in13, 1, 0, 1, 1 ); \
212 0 : GF_MUL22( in06, in14, 1, 0, 1, 1 ); \
213 0 : GF_MUL22( in07, in15, 1, 0, 1, 1 ); \
214 0 : scratch_4 = in04; \
215 0 : in04 = GF_MUL( in04, 1 ); \
216 0 : scratch_5 = in05; \
217 0 : in05 = GF_MUL( in05, 1 ); \
218 0 : scratch_6 = in06; \
219 0 : in06 = GF_MUL( in06, 1 ); \
220 0 : GF_MUL22( in03, in07, 1, 0, 1, 1 ); \
221 0 : scratch_3 = in03; \
222 0 : in03 = GF_MUL( in03, 1 ); \
223 0 : GF_MUL22( in00, in01, 1, 0, 1, 1 ); \
224 0 : in03 = GF_ADD( GF_MUL( in01, 1 ), in03 ); \
225 0 : GF_MUL22( in02, in03, 1, 2, 1, 1 ); \
226 0 : GF_MUL22( in00, in02, 1, 0, 1, 1 ); \
227 0 : in01 = GF_MUL( in01, 1 ); \
228 0 : in01 = GF_ADD( GF_MUL( scratch_3, 0 ), in01 ); \
229 0 : in04 = GF_ADD( GF_MUL( in00, 1 ), in04 ); \
230 0 : in05 = GF_ADD( GF_MUL( in01, 1 ), in05 ); \
231 0 : in06 = GF_ADD( GF_MUL( in02, 1 ), in06 ); \
232 0 : FD_REEDSOL_GENERATE_FFT( 4, 4, in04, in05, in06, in07 ); \
233 0 : in00 = GF_MUL( in00, 1 ); \
234 0 : in00 = GF_ADD( GF_MUL( scratch_4, 0 ), in00 ); \
235 0 : in01 = GF_MUL( in01, 1 ); \
236 0 : in01 = GF_ADD( GF_MUL( scratch_5, 0 ), in01 ); \
237 0 : in02 = GF_MUL( in02, 1 ); \
238 0 : in02 = GF_ADD( GF_MUL( scratch_6, 0 ), in02 ); \
239 0 : in08 = GF_ADD( GF_MUL( in00, 1 ), in08 ); \
240 0 : in09 = GF_ADD( GF_MUL( in01, 1 ), in09 ); \
241 0 : in10 = GF_ADD( GF_MUL( in02, 1 ), in10 ); \
242 0 : FD_REEDSOL_GENERATE_FFT( 8, 8, in08, in09, in10, in11, in12, in13, in14, in15 ); \
243 0 : in00 = GF_MUL( in00, 1 ); \
244 0 : in00 = GF_ADD( GF_MUL( scratch_8, 0 ), in00 ); \
245 0 : in01 = GF_MUL( in01, 1 ); \
246 0 : in01 = GF_ADD( GF_MUL( scratch_9, 0 ), in01 ); \
247 0 : in02 = GF_MUL( in02, 1 ); \
248 0 : in02 = GF_ADD( GF_MUL( scratch_10, 0 ), in02 ); \
249 0 : } while( 0 )
250 :
251 : #define FD_REEDSOL_PPT_IMPL_16_4( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, \
252 : in13, in14, in15) \
253 0 : do { \
254 0 : gf_t scratch_10, scratch_11, scratch_4, scratch_5, scratch_6, scratch_7, scratch_8, scratch_9; \
255 0 : scratch_8 = in08; \
256 0 : in08 = GF_MUL( in08, 1 ); \
257 0 : scratch_9 = in09; \
258 0 : in09 = GF_MUL( in09, 1 ); \
259 0 : scratch_10 = in10; \
260 0 : in10 = GF_MUL( in10, 1 ); \
261 0 : scratch_11 = in11; \
262 0 : in11 = GF_MUL( in11, 1 ); \
263 0 : GF_MUL22( in04, in12, 1, 0, 1, 1 ); \
264 0 : GF_MUL22( in05, in13, 1, 0, 1, 1 ); \
265 0 : GF_MUL22( in06, in14, 1, 0, 1, 1 ); \
266 0 : GF_MUL22( in07, in15, 1, 0, 1, 1 ); \
267 0 : scratch_4 = in04; \
268 0 : in04 = GF_MUL( in04, 1 ); \
269 0 : scratch_5 = in05; \
270 0 : in05 = GF_MUL( in05, 1 ); \
271 0 : scratch_6 = in06; \
272 0 : in06 = GF_MUL( in06, 1 ); \
273 0 : scratch_7 = in07; \
274 0 : in07 = GF_MUL( in07, 1 ); \
275 0 : FD_REEDSOL_GENERATE_IFFT( 4, 0, in00, in01, in02, in03 ); \
276 0 : in04 = GF_ADD( GF_MUL( in00, 1 ), in04 ); \
277 0 : in05 = GF_ADD( GF_MUL( in01, 1 ), in05 ); \
278 0 : in06 = GF_ADD( GF_MUL( in02, 1 ), in06 ); \
279 0 : in07 = GF_ADD( GF_MUL( in03, 1 ), in07 ); \
280 0 : FD_REEDSOL_GENERATE_FFT( 4, 4, in04, in05, in06, in07 ); \
281 0 : in00 = GF_MUL( in00, 1 ); \
282 0 : in00 = GF_ADD( GF_MUL( scratch_4, 0 ), in00 ); \
283 0 : in01 = GF_MUL( in01, 1 ); \
284 0 : in01 = GF_ADD( GF_MUL( scratch_5, 0 ), in01 ); \
285 0 : in02 = GF_MUL( in02, 1 ); \
286 0 : in02 = GF_ADD( GF_MUL( scratch_6, 0 ), in02 ); \
287 0 : in03 = GF_MUL( in03, 1 ); \
288 0 : in03 = GF_ADD( GF_MUL( scratch_7, 0 ), in03 ); \
289 0 : in08 = GF_ADD( GF_MUL( in00, 1 ), in08 ); \
290 0 : in09 = GF_ADD( GF_MUL( in01, 1 ), in09 ); \
291 0 : in10 = GF_ADD( GF_MUL( in02, 1 ), in10 ); \
292 0 : in11 = GF_ADD( GF_MUL( in03, 1 ), in11 ); \
293 0 : FD_REEDSOL_GENERATE_FFT( 8, 8, in08, in09, in10, in11, in12, in13, in14, in15 ); \
294 0 : in00 = GF_MUL( in00, 1 ); \
295 0 : in00 = GF_ADD( GF_MUL( scratch_8, 0 ), in00 ); \
296 0 : in01 = GF_MUL( in01, 1 ); \
297 0 : in01 = GF_ADD( GF_MUL( scratch_9, 0 ), in01 ); \
298 0 : in02 = GF_MUL( in02, 1 ); \
299 0 : in02 = GF_ADD( GF_MUL( scratch_10, 0 ), in02 ); \
300 0 : in03 = GF_MUL( in03, 1 ); \
301 0 : in03 = GF_ADD( GF_MUL( scratch_11, 0 ), in03 ); \
302 0 : } while( 0 )
303 :
304 : #define FD_REEDSOL_PPT_IMPL_16_5( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, \
305 : in15) \
306 0 : do { \
307 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_2, scratch_5, scratch_6, scratch_7, scratch_8, scratch_9; \
308 0 : scratch_8 = in08; \
309 0 : in08 = GF_MUL( in08, 1 ); \
310 0 : scratch_9 = in09; \
311 0 : in09 = GF_MUL( in09, 1 ); \
312 0 : scratch_10 = in10; \
313 0 : in10 = GF_MUL( in10, 1 ); \
314 0 : scratch_11 = in11; \
315 0 : in11 = GF_MUL( in11, 1 ); \
316 0 : scratch_12 = in12; \
317 0 : in12 = GF_MUL( in12, 1 ); \
318 0 : GF_MUL22( in05, in13, 1, 0, 1, 1 ); \
319 0 : GF_MUL22( in06, in14, 1, 0, 1, 1 ); \
320 0 : GF_MUL22( in07, in15, 1, 0, 1, 1 ); \
321 0 : scratch_5 = in05; \
322 0 : in05 = GF_MUL( in05, 1 ); \
323 0 : scratch_6 = in06; \
324 0 : in06 = GF_MUL( in06, 1 ); \
325 0 : scratch_7 = in07; \
326 0 : in07 = GF_MUL( in07, 1 ); \
327 0 : FD_REEDSOL_GENERATE_IFFT( 4, 0, in00, in01, in02, in03 ); \
328 0 : in05 = GF_ADD( GF_MUL( in01, 1 ), in05 ); \
329 0 : in06 = GF_ADD( GF_MUL( in02, 1 ), in06 ); \
330 0 : in07 = GF_ADD( GF_MUL( in03, 1 ), in07 ); \
331 0 : scratch_2 = in06; \
332 0 : in06 = GF_MUL( in06, 1 ); \
333 0 : GF_MUL22( in05, in07, 1, 6, 1, 7 ); \
334 0 : GF_MUL22( in04, in05, 1, 4, 1, 1 ); \
335 0 : in06 = GF_ADD( GF_MUL( in04, 1 ), in06 ); \
336 0 : GF_MUL22( in06, in07, 1, 6, 1, 7 ); \
337 0 : in04 = GF_MUL( in04, 1 ); \
338 0 : in04 = GF_ADD( GF_MUL( scratch_2, 6 ), in04 ); \
339 0 : GF_MUL22( in00, in04, 1, 0, 1, 1 ); \
340 0 : in01 = GF_MUL( in01, 1 ); \
341 0 : in01 = GF_ADD( GF_MUL( scratch_5, 0 ), in01 ); \
342 0 : in02 = GF_MUL( in02, 1 ); \
343 0 : in02 = GF_ADD( GF_MUL( scratch_6, 0 ), in02 ); \
344 0 : in03 = GF_MUL( in03, 1 ); \
345 0 : in03 = GF_ADD( GF_MUL( scratch_7, 0 ), in03 ); \
346 0 : in08 = GF_ADD( GF_MUL( in00, 1 ), in08 ); \
347 0 : in09 = GF_ADD( GF_MUL( in01, 1 ), in09 ); \
348 0 : in10 = GF_ADD( GF_MUL( in02, 1 ), in10 ); \
349 0 : in11 = GF_ADD( GF_MUL( in03, 1 ), in11 ); \
350 0 : in12 = GF_ADD( GF_MUL( in04, 1 ), in12 ); \
351 0 : FD_REEDSOL_GENERATE_FFT( 8, 8, in08, in09, in10, in11, in12, in13, in14, in15 ); \
352 0 : in00 = GF_MUL( in00, 1 ); \
353 0 : in00 = GF_ADD( GF_MUL( scratch_8, 0 ), in00 ); \
354 0 : in01 = GF_MUL( in01, 1 ); \
355 0 : in01 = GF_ADD( GF_MUL( scratch_9, 0 ), in01 ); \
356 0 : in02 = GF_MUL( in02, 1 ); \
357 0 : in02 = GF_ADD( GF_MUL( scratch_10, 0 ), in02 ); \
358 0 : in03 = GF_MUL( in03, 1 ); \
359 0 : in03 = GF_ADD( GF_MUL( scratch_11, 0 ), in03 ); \
360 0 : in04 = GF_MUL( in04, 1 ); \
361 0 : in04 = GF_ADD( GF_MUL( scratch_12, 0 ), in04 ); \
362 0 : } while( 0 )
363 :
364 : #define FD_REEDSOL_PPT_IMPL_16_6( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15) \
365 0 : do { \
366 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_2, scratch_3, scratch_6, scratch_7, scratch_8, scratch_9; \
367 0 : scratch_8 = in08; \
368 0 : in08 = GF_MUL( in08, 1 ); \
369 0 : scratch_9 = in09; \
370 0 : in09 = GF_MUL( in09, 1 ); \
371 0 : scratch_10 = in10; \
372 0 : in10 = GF_MUL( in10, 1 ); \
373 0 : scratch_11 = in11; \
374 0 : in11 = GF_MUL( in11, 1 ); \
375 0 : scratch_12 = in12; \
376 0 : in12 = GF_MUL( in12, 1 ); \
377 0 : scratch_13 = in13; \
378 0 : in13 = GF_MUL( in13, 1 ); \
379 0 : GF_MUL22( in06, in14, 1, 0, 1, 1 ); \
380 0 : GF_MUL22( in07, in15, 1, 0, 1, 1 ); \
381 0 : scratch_6 = in06; \
382 0 : in06 = GF_MUL( in06, 1 ); \
383 0 : scratch_7 = in07; \
384 0 : in07 = GF_MUL( in07, 1 ); \
385 0 : FD_REEDSOL_GENERATE_IFFT( 4, 0, in00, in01, in02, in03 ); \
386 0 : in06 = GF_ADD( GF_MUL( in02, 1 ), in06 ); \
387 0 : in07 = GF_ADD( GF_MUL( in03, 1 ), in07 ); \
388 0 : scratch_2 = in06; \
389 0 : in06 = GF_MUL( in06, 1 ); \
390 0 : scratch_3 = in07; \
391 0 : in07 = GF_MUL( in07, 1 ); \
392 0 : GF_MUL22( in04, in05, 5, 4, 1, 1 ); \
393 0 : in06 = GF_ADD( GF_MUL( in04, 1 ), in06 ); \
394 0 : in07 = GF_ADD( GF_MUL( in05, 1 ), in07 ); \
395 0 : GF_MUL22( in06, in07, 1, 6, 1, 7 ); \
396 0 : in04 = GF_MUL( in04, 1 ); \
397 0 : in04 = GF_ADD( GF_MUL( scratch_2, 6 ), in04 ); \
398 0 : in05 = GF_MUL( in05, 1 ); \
399 0 : in05 = GF_ADD( GF_MUL( scratch_3, 6 ), in05 ); \
400 0 : GF_MUL22( in00, in04, 1, 0, 1, 1 ); \
401 0 : GF_MUL22( in01, in05, 1, 0, 1, 1 ); \
402 0 : in02 = GF_MUL( in02, 1 ); \
403 0 : in02 = GF_ADD( GF_MUL( scratch_6, 0 ), in02 ); \
404 0 : in03 = GF_MUL( in03, 1 ); \
405 0 : in03 = GF_ADD( GF_MUL( scratch_7, 0 ), in03 ); \
406 0 : in08 = GF_ADD( GF_MUL( in00, 1 ), in08 ); \
407 0 : in09 = GF_ADD( GF_MUL( in01, 1 ), in09 ); \
408 0 : in10 = GF_ADD( GF_MUL( in02, 1 ), in10 ); \
409 0 : in11 = GF_ADD( GF_MUL( in03, 1 ), in11 ); \
410 0 : in12 = GF_ADD( GF_MUL( in04, 1 ), in12 ); \
411 0 : in13 = GF_ADD( GF_MUL( in05, 1 ), in13 ); \
412 0 : FD_REEDSOL_GENERATE_FFT( 8, 8, in08, in09, in10, in11, in12, in13, in14, in15 ); \
413 0 : in00 = GF_MUL( in00, 1 ); \
414 0 : in00 = GF_ADD( GF_MUL( scratch_8, 0 ), in00 ); \
415 0 : in01 = GF_MUL( in01, 1 ); \
416 0 : in01 = GF_ADD( GF_MUL( scratch_9, 0 ), in01 ); \
417 0 : in02 = GF_MUL( in02, 1 ); \
418 0 : in02 = GF_ADD( GF_MUL( scratch_10, 0 ), in02 ); \
419 0 : in03 = GF_MUL( in03, 1 ); \
420 0 : in03 = GF_ADD( GF_MUL( scratch_11, 0 ), in03 ); \
421 0 : in04 = GF_MUL( in04, 1 ); \
422 0 : in04 = GF_ADD( GF_MUL( scratch_12, 0 ), in04 ); \
423 0 : in05 = GF_MUL( in05, 1 ); \
424 0 : in05 = GF_ADD( GF_MUL( scratch_13, 0 ), in05 ); \
425 0 : } while( 0 )
426 :
427 : #define FD_REEDSOL_PPT_IMPL_16_7( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14 , \
428 : in15) \
429 0 : do { \
430 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_3, scratch_7, scratch_8, scratch_9; \
431 0 : scratch_8 = in08; \
432 0 : in08 = GF_MUL( in08, 1 ); \
433 0 : scratch_9 = in09; \
434 0 : in09 = GF_MUL( in09, 1 ); \
435 0 : scratch_10 = in10; \
436 0 : in10 = GF_MUL( in10, 1 ); \
437 0 : scratch_11 = in11; \
438 0 : in11 = GF_MUL( in11, 1 ); \
439 0 : scratch_12 = in12; \
440 0 : in12 = GF_MUL( in12, 1 ); \
441 0 : scratch_13 = in13; \
442 0 : in13 = GF_MUL( in13, 1 ); \
443 0 : scratch_14 = in14; \
444 0 : in14 = GF_MUL( in14, 1 ); \
445 0 : GF_MUL22( in07, in15, 1, 0, 1, 1 ); \
446 0 : scratch_7 = in07; \
447 0 : in07 = GF_MUL( in07, 1 ); \
448 0 : FD_REEDSOL_GENERATE_IFFT( 4, 0, in00, in01, in02, in03 ); \
449 0 : in07 = GF_ADD( GF_MUL( in03, 1 ), in07 ); \
450 0 : scratch_3 = in07; \
451 0 : in07 = GF_MUL( in07, 1 ); \
452 0 : GF_MUL22( in04, in05, 5, 4, 1, 1 ); \
453 0 : in07 = GF_ADD( GF_MUL( in05, 1 ), in07 ); \
454 0 : GF_MUL22( in06, in07, 1, 6, 1, 1 ); \
455 0 : GF_MUL22( in04, in06, 7, 6, 1, 1 ); \
456 0 : in05 = GF_MUL( in05, 1 ); \
457 0 : in05 = GF_ADD( GF_MUL( scratch_3, 6 ), in05 ); \
458 0 : GF_MUL22( in00, in04, 1, 0, 1, 1 ); \
459 0 : GF_MUL22( in01, in05, 1, 0, 1, 1 ); \
460 0 : GF_MUL22( in02, in06, 1, 0, 1, 1 ); \
461 0 : in03 = GF_MUL( in03, 1 ); \
462 0 : in03 = GF_ADD( GF_MUL( scratch_7, 0 ), in03 ); \
463 0 : in08 = GF_ADD( GF_MUL( in00, 1 ), in08 ); \
464 0 : in09 = GF_ADD( GF_MUL( in01, 1 ), in09 ); \
465 0 : in10 = GF_ADD( GF_MUL( in02, 1 ), in10 ); \
466 0 : in11 = GF_ADD( GF_MUL( in03, 1 ), in11 ); \
467 0 : in12 = GF_ADD( GF_MUL( in04, 1 ), in12 ); \
468 0 : in13 = GF_ADD( GF_MUL( in05, 1 ), in13 ); \
469 0 : in14 = GF_ADD( GF_MUL( in06, 1 ), in14 ); \
470 0 : FD_REEDSOL_GENERATE_FFT( 8, 8, in08, in09, in10, in11, in12, in13, in14, in15 ); \
471 0 : in00 = GF_MUL( in00, 1 ); \
472 0 : in00 = GF_ADD( GF_MUL( scratch_8, 0 ), in00 ); \
473 0 : in01 = GF_MUL( in01, 1 ); \
474 0 : in01 = GF_ADD( GF_MUL( scratch_9, 0 ), in01 ); \
475 0 : in02 = GF_MUL( in02, 1 ); \
476 0 : in02 = GF_ADD( GF_MUL( scratch_10, 0 ), in02 ); \
477 0 : in03 = GF_MUL( in03, 1 ); \
478 0 : in03 = GF_ADD( GF_MUL( scratch_11, 0 ), in03 ); \
479 0 : in04 = GF_MUL( in04, 1 ); \
480 0 : in04 = GF_ADD( GF_MUL( scratch_12, 0 ), in04 ); \
481 0 : in05 = GF_MUL( in05, 1 ); \
482 0 : in05 = GF_ADD( GF_MUL( scratch_13, 0 ), in05 ); \
483 0 : in06 = GF_MUL( in06, 1 ); \
484 0 : in06 = GF_ADD( GF_MUL( scratch_14, 0 ), in06 ); \
485 0 : } while( 0 )
486 :
487 : #define FD_REEDSOL_PPT_IMPL_16_8( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12 , \
488 : in13, in14, in15) \
489 0 : do { \
490 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_8, scratch_9; \
491 0 : scratch_8 = in08; \
492 0 : in08 = GF_MUL( in08, 1 ); \
493 0 : scratch_9 = in09; \
494 0 : in09 = GF_MUL( in09, 1 ); \
495 0 : scratch_10 = in10; \
496 0 : in10 = GF_MUL( in10, 1 ); \
497 0 : scratch_11 = in11; \
498 0 : in11 = GF_MUL( in11, 1 ); \
499 0 : scratch_12 = in12; \
500 0 : in12 = GF_MUL( in12, 1 ); \
501 0 : scratch_13 = in13; \
502 0 : in13 = GF_MUL( in13, 1 ); \
503 0 : scratch_14 = in14; \
504 0 : in14 = GF_MUL( in14, 1 ); \
505 0 : scratch_15 = in15; \
506 0 : in15 = GF_MUL( in15, 1 ); \
507 0 : FD_REEDSOL_GENERATE_IFFT( 8, 0, in00, in01, in02, in03, in04, in05, in06, in07 ); \
508 0 : in08 = GF_ADD( GF_MUL( in00, 1 ), in08 ); \
509 0 : in09 = GF_ADD( GF_MUL( in01, 1 ), in09 ); \
510 0 : in10 = GF_ADD( GF_MUL( in02, 1 ), in10 ); \
511 0 : in11 = GF_ADD( GF_MUL( in03, 1 ), in11 ); \
512 0 : in12 = GF_ADD( GF_MUL( in04, 1 ), in12 ); \
513 0 : in13 = GF_ADD( GF_MUL( in05, 1 ), in13 ); \
514 0 : in14 = GF_ADD( GF_MUL( in06, 1 ), in14 ); \
515 0 : in15 = GF_ADD( GF_MUL( in07, 1 ), in15 ); \
516 0 : FD_REEDSOL_GENERATE_FFT( 8, 8, in08, in09, in10, in11, in12, in13, in14, in15 ); \
517 0 : in00 = GF_MUL( in00, 1 ); \
518 0 : in00 = GF_ADD( GF_MUL( scratch_8, 0 ), in00 ); \
519 0 : in01 = GF_MUL( in01, 1 ); \
520 0 : in01 = GF_ADD( GF_MUL( scratch_9, 0 ), in01 ); \
521 0 : in02 = GF_MUL( in02, 1 ); \
522 0 : in02 = GF_ADD( GF_MUL( scratch_10, 0 ), in02 ); \
523 0 : in03 = GF_MUL( in03, 1 ); \
524 0 : in03 = GF_ADD( GF_MUL( scratch_11, 0 ), in03 ); \
525 0 : in04 = GF_MUL( in04, 1 ); \
526 0 : in04 = GF_ADD( GF_MUL( scratch_12, 0 ), in04 ); \
527 0 : in05 = GF_MUL( in05, 1 ); \
528 0 : in05 = GF_ADD( GF_MUL( scratch_13, 0 ), in05 ); \
529 0 : in06 = GF_MUL( in06, 1 ); \
530 0 : in06 = GF_ADD( GF_MUL( scratch_14, 0 ), in06 ); \
531 0 : in07 = GF_MUL( in07, 1 ); \
532 0 : in07 = GF_ADD( GF_MUL( scratch_15, 0 ), in07 ); \
533 0 : } while( 0 )
534 :
535 : #define FD_REEDSOL_PPT_IMPL_16_9( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14 , \
536 : in15) \
537 0 : do { \
538 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_2, scratch_4, scratch_9; \
539 0 : scratch_9 = in09; \
540 0 : in09 = GF_MUL( in09, 1 ); \
541 0 : scratch_10 = in10; \
542 0 : in10 = GF_MUL( in10, 1 ); \
543 0 : scratch_11 = in11; \
544 0 : in11 = GF_MUL( in11, 1 ); \
545 0 : scratch_12 = in12; \
546 0 : in12 = GF_MUL( in12, 1 ); \
547 0 : scratch_13 = in13; \
548 0 : in13 = GF_MUL( in13, 1 ); \
549 0 : scratch_14 = in14; \
550 0 : in14 = GF_MUL( in14, 1 ); \
551 0 : scratch_15 = in15; \
552 0 : in15 = GF_MUL( in15, 1 ); \
553 0 : FD_REEDSOL_GENERATE_IFFT( 8, 0, in00, in01, in02, in03, in04, in05, in06, in07 ); \
554 0 : in09 = GF_ADD( GF_MUL( in01, 1 ), in09 ); \
555 0 : in10 = GF_ADD( GF_MUL( in02, 1 ), in10 ); \
556 0 : in11 = GF_ADD( GF_MUL( in03, 1 ), in11 ); \
557 0 : in12 = GF_ADD( GF_MUL( in04, 1 ), in12 ); \
558 0 : in13 = GF_ADD( GF_MUL( in05, 1 ), in13 ); \
559 0 : in14 = GF_ADD( GF_MUL( in06, 1 ), in14 ); \
560 0 : in15 = GF_ADD( GF_MUL( in07, 1 ), in15 ); \
561 0 : scratch_4 = in12; \
562 0 : in12 = GF_MUL( in12, 1 ); \
563 0 : GF_MUL22( in09, in13, 1, 22, 1, 23 ); \
564 0 : GF_MUL22( in10, in14, 1, 22, 1, 23 ); \
565 0 : GF_MUL22( in11, in15, 1, 22, 1, 23 ); \
566 0 : scratch_2 = in10; \
567 0 : in10 = GF_MUL( in10, 1 ); \
568 0 : GF_MUL22( in09, in11, 1, 28, 1, 29 ); \
569 0 : GF_MUL22( in08, in09, 1, 8, 1, 1 ); \
570 0 : in10 = GF_ADD( GF_MUL( in08, 1 ), in10 ); \
571 0 : GF_MUL22( in10, in11, 1, 10, 1, 11 ); \
572 0 : in08 = GF_MUL( in08, 1 ); \
573 0 : in08 = GF_ADD( GF_MUL( scratch_2, 28 ), in08 ); \
574 0 : in12 = GF_ADD( GF_MUL( in08, 1 ), in12 ); \
575 0 : FD_REEDSOL_GENERATE_FFT( 4, 12, in12, in13, in14, in15 ); \
576 0 : in08 = GF_MUL( in08, 1 ); \
577 0 : in08 = GF_ADD( GF_MUL( scratch_4, 22 ), in08 ); \
578 0 : GF_MUL22( in00, in08, 1, 0, 1, 1 ); \
579 0 : in01 = GF_MUL( in01, 1 ); \
580 0 : in01 = GF_ADD( GF_MUL( scratch_9, 0 ), in01 ); \
581 0 : in02 = GF_MUL( in02, 1 ); \
582 0 : in02 = GF_ADD( GF_MUL( scratch_10, 0 ), in02 ); \
583 0 : in03 = GF_MUL( in03, 1 ); \
584 0 : in03 = GF_ADD( GF_MUL( scratch_11, 0 ), in03 ); \
585 0 : in04 = GF_MUL( in04, 1 ); \
586 0 : in04 = GF_ADD( GF_MUL( scratch_12, 0 ), in04 ); \
587 0 : in05 = GF_MUL( in05, 1 ); \
588 0 : in05 = GF_ADD( GF_MUL( scratch_13, 0 ), in05 ); \
589 0 : in06 = GF_MUL( in06, 1 ); \
590 0 : in06 = GF_ADD( GF_MUL( scratch_14, 0 ), in06 ); \
591 0 : in07 = GF_MUL( in07, 1 ); \
592 0 : in07 = GF_ADD( GF_MUL( scratch_15, 0 ), in07 ); \
593 0 : } while( 0 )
594 :
595 : #define FD_REEDSOL_PPT_IMPL_16_10( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15) \
596 0 : do { \
597 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_2, scratch_3, scratch_4, scratch_5; \
598 0 : scratch_10 = in10; \
599 0 : in10 = GF_MUL( in10, 1 ); \
600 0 : scratch_11 = in11; \
601 0 : in11 = GF_MUL( in11, 1 ); \
602 0 : scratch_12 = in12; \
603 0 : in12 = GF_MUL( in12, 1 ); \
604 0 : scratch_13 = in13; \
605 0 : in13 = GF_MUL( in13, 1 ); \
606 0 : scratch_14 = in14; \
607 0 : in14 = GF_MUL( in14, 1 ); \
608 0 : scratch_15 = in15; \
609 0 : in15 = GF_MUL( in15, 1 ); \
610 0 : FD_REEDSOL_GENERATE_IFFT( 8, 0, in00, in01, in02, in03, in04, in05, in06, in07 ); \
611 0 : in10 = GF_ADD( GF_MUL( in02, 1 ), in10 ); \
612 0 : in11 = GF_ADD( GF_MUL( in03, 1 ), in11 ); \
613 0 : in12 = GF_ADD( GF_MUL( in04, 1 ), in12 ); \
614 0 : in13 = GF_ADD( GF_MUL( in05, 1 ), in13 ); \
615 0 : in14 = GF_ADD( GF_MUL( in06, 1 ), in14 ); \
616 0 : in15 = GF_ADD( GF_MUL( in07, 1 ), in15 ); \
617 0 : scratch_4 = in12; \
618 0 : in12 = GF_MUL( in12, 1 ); \
619 0 : scratch_5 = in13; \
620 0 : in13 = GF_MUL( in13, 1 ); \
621 0 : GF_MUL22( in10, in14, 1, 22, 1, 23 ); \
622 0 : GF_MUL22( in11, in15, 1, 22, 1, 23 ); \
623 0 : scratch_2 = in10; \
624 0 : in10 = GF_MUL( in10, 1 ); \
625 0 : scratch_3 = in11; \
626 0 : in11 = GF_MUL( in11, 1 ); \
627 0 : GF_MUL22( in08, in09, 9, 8, 1, 1 ); \
628 0 : in10 = GF_ADD( GF_MUL( in08, 1 ), in10 ); \
629 0 : in11 = GF_ADD( GF_MUL( in09, 1 ), in11 ); \
630 0 : GF_MUL22( in10, in11, 1, 10, 1, 11 ); \
631 0 : in08 = GF_MUL( in08, 1 ); \
632 0 : in08 = GF_ADD( GF_MUL( scratch_2, 28 ), in08 ); \
633 0 : in09 = GF_MUL( in09, 1 ); \
634 0 : in09 = GF_ADD( GF_MUL( scratch_3, 28 ), in09 ); \
635 0 : in12 = GF_ADD( GF_MUL( in08, 1 ), in12 ); \
636 0 : in13 = GF_ADD( GF_MUL( in09, 1 ), in13 ); \
637 0 : FD_REEDSOL_GENERATE_FFT( 4, 12, in12, in13, in14, in15 ); \
638 0 : in08 = GF_MUL( in08, 1 ); \
639 0 : in08 = GF_ADD( GF_MUL( scratch_4, 22 ), in08 ); \
640 0 : in09 = GF_MUL( in09, 1 ); \
641 0 : in09 = GF_ADD( GF_MUL( scratch_5, 22 ), in09 ); \
642 0 : GF_MUL22( in00, in08, 1, 0, 1, 1 ); \
643 0 : GF_MUL22( in01, in09, 1, 0, 1, 1 ); \
644 0 : in02 = GF_MUL( in02, 1 ); \
645 0 : in02 = GF_ADD( GF_MUL( scratch_10, 0 ), in02 ); \
646 0 : in03 = GF_MUL( in03, 1 ); \
647 0 : in03 = GF_ADD( GF_MUL( scratch_11, 0 ), in03 ); \
648 0 : in04 = GF_MUL( in04, 1 ); \
649 0 : in04 = GF_ADD( GF_MUL( scratch_12, 0 ), in04 ); \
650 0 : in05 = GF_MUL( in05, 1 ); \
651 0 : in05 = GF_ADD( GF_MUL( scratch_13, 0 ), in05 ); \
652 0 : in06 = GF_MUL( in06, 1 ); \
653 0 : in06 = GF_ADD( GF_MUL( scratch_14, 0 ), in06 ); \
654 0 : in07 = GF_MUL( in07, 1 ); \
655 0 : in07 = GF_ADD( GF_MUL( scratch_15, 0 ), in07 ); \
656 0 : } while( 0 )
657 :
658 : #define FD_REEDSOL_PPT_IMPL_16_11( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, \
659 : in15) \
660 0 : do { \
661 0 : gf_t scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_3, scratch_4, scratch_5, scratch_6; \
662 0 : scratch_11 = in11; \
663 0 : in11 = GF_MUL( in11, 1 ); \
664 0 : scratch_12 = in12; \
665 0 : in12 = GF_MUL( in12, 1 ); \
666 0 : scratch_13 = in13; \
667 0 : in13 = GF_MUL( in13, 1 ); \
668 0 : scratch_14 = in14; \
669 0 : in14 = GF_MUL( in14, 1 ); \
670 0 : scratch_15 = in15; \
671 0 : in15 = GF_MUL( in15, 1 ); \
672 0 : FD_REEDSOL_GENERATE_IFFT( 8, 0, in00, in01, in02, in03, in04, in05, in06, in07 ); \
673 0 : in11 = GF_ADD( GF_MUL( in03, 1 ), in11 ); \
674 0 : in12 = GF_ADD( GF_MUL( in04, 1 ), in12 ); \
675 0 : in13 = GF_ADD( GF_MUL( in05, 1 ), in13 ); \
676 0 : in14 = GF_ADD( GF_MUL( in06, 1 ), in14 ); \
677 0 : in15 = GF_ADD( GF_MUL( in07, 1 ), in15 ); \
678 0 : scratch_4 = in12; \
679 0 : in12 = GF_MUL( in12, 1 ); \
680 0 : scratch_5 = in13; \
681 0 : in13 = GF_MUL( in13, 1 ); \
682 0 : scratch_6 = in14; \
683 0 : in14 = GF_MUL( in14, 1 ); \
684 0 : GF_MUL22( in11, in15, 1, 22, 1, 23 ); \
685 0 : scratch_3 = in11; \
686 0 : in11 = GF_MUL( in11, 1 ); \
687 0 : GF_MUL22( in08, in09, 9, 8, 1, 1 ); \
688 0 : in11 = GF_ADD( GF_MUL( in09, 1 ), in11 ); \
689 0 : GF_MUL22( in10, in11, 1, 10, 1, 1 ); \
690 0 : GF_MUL22( in08, in10, 29, 28, 1, 1 ); \
691 0 : in09 = GF_MUL( in09, 1 ); \
692 0 : in09 = GF_ADD( GF_MUL( scratch_3, 28 ), in09 ); \
693 0 : in12 = GF_ADD( GF_MUL( in08, 1 ), in12 ); \
694 0 : in13 = GF_ADD( GF_MUL( in09, 1 ), in13 ); \
695 0 : in14 = GF_ADD( GF_MUL( in10, 1 ), in14 ); \
696 0 : FD_REEDSOL_GENERATE_FFT( 4, 12, in12, in13, in14, in15 ); \
697 0 : in08 = GF_MUL( in08, 1 ); \
698 0 : in08 = GF_ADD( GF_MUL( scratch_4, 22 ), in08 ); \
699 0 : in09 = GF_MUL( in09, 1 ); \
700 0 : in09 = GF_ADD( GF_MUL( scratch_5, 22 ), in09 ); \
701 0 : in10 = GF_MUL( in10, 1 ); \
702 0 : in10 = GF_ADD( GF_MUL( scratch_6, 22 ), in10 ); \
703 0 : GF_MUL22( in00, in08, 1, 0, 1, 1 ); \
704 0 : GF_MUL22( in01, in09, 1, 0, 1, 1 ); \
705 0 : GF_MUL22( in02, in10, 1, 0, 1, 1 ); \
706 0 : in03 = GF_MUL( in03, 1 ); \
707 0 : in03 = GF_ADD( GF_MUL( scratch_11, 0 ), in03 ); \
708 0 : in04 = GF_MUL( in04, 1 ); \
709 0 : in04 = GF_ADD( GF_MUL( scratch_12, 0 ), in04 ); \
710 0 : in05 = GF_MUL( in05, 1 ); \
711 0 : in05 = GF_ADD( GF_MUL( scratch_13, 0 ), in05 ); \
712 0 : in06 = GF_MUL( in06, 1 ); \
713 0 : in06 = GF_ADD( GF_MUL( scratch_14, 0 ), in06 ); \
714 0 : in07 = GF_MUL( in07, 1 ); \
715 0 : in07 = GF_ADD( GF_MUL( scratch_15, 0 ), in07 ); \
716 0 : } while( 0 )
717 :
718 : #define FD_REEDSOL_PPT_IMPL_16_12( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, \
719 : in13, in14, in15) \
720 0 : do { \
721 0 : gf_t scratch_12, scratch_13, scratch_14, scratch_15, scratch_4, scratch_5, scratch_6, scratch_7; \
722 0 : scratch_12 = in12; \
723 0 : in12 = GF_MUL( in12, 1 ); \
724 0 : scratch_13 = in13; \
725 0 : in13 = GF_MUL( in13, 1 ); \
726 0 : scratch_14 = in14; \
727 0 : in14 = GF_MUL( in14, 1 ); \
728 0 : scratch_15 = in15; \
729 0 : in15 = GF_MUL( in15, 1 ); \
730 0 : FD_REEDSOL_GENERATE_IFFT( 8, 0, in00, in01, in02, in03, in04, in05, in06, in07 ); \
731 0 : in12 = GF_ADD( GF_MUL( in04, 1 ), in12 ); \
732 0 : in13 = GF_ADD( GF_MUL( in05, 1 ), in13 ); \
733 0 : in14 = GF_ADD( GF_MUL( in06, 1 ), in14 ); \
734 0 : in15 = GF_ADD( GF_MUL( in07, 1 ), in15 ); \
735 0 : scratch_4 = in12; \
736 0 : in12 = GF_MUL( in12, 1 ); \
737 0 : scratch_5 = in13; \
738 0 : in13 = GF_MUL( in13, 1 ); \
739 0 : scratch_6 = in14; \
740 0 : in14 = GF_MUL( in14, 1 ); \
741 0 : scratch_7 = in15; \
742 0 : in15 = GF_MUL( in15, 1 ); \
743 0 : FD_REEDSOL_GENERATE_IFFT( 4, 8, in08, in09, in10, in11 ); \
744 0 : in12 = GF_ADD( GF_MUL( in08, 1 ), in12 ); \
745 0 : in13 = GF_ADD( GF_MUL( in09, 1 ), in13 ); \
746 0 : in14 = GF_ADD( GF_MUL( in10, 1 ), in14 ); \
747 0 : in15 = GF_ADD( GF_MUL( in11, 1 ), in15 ); \
748 0 : FD_REEDSOL_GENERATE_FFT( 4, 12, in12, in13, in14, in15 ); \
749 0 : in08 = GF_MUL( in08, 1 ); \
750 0 : in08 = GF_ADD( GF_MUL( scratch_4, 22 ), in08 ); \
751 0 : in09 = GF_MUL( in09, 1 ); \
752 0 : in09 = GF_ADD( GF_MUL( scratch_5, 22 ), in09 ); \
753 0 : in10 = GF_MUL( in10, 1 ); \
754 0 : in10 = GF_ADD( GF_MUL( scratch_6, 22 ), in10 ); \
755 0 : in11 = GF_MUL( in11, 1 ); \
756 0 : in11 = GF_ADD( GF_MUL( scratch_7, 22 ), in11 ); \
757 0 : GF_MUL22( in00, in08, 1, 0, 1, 1 ); \
758 0 : GF_MUL22( in01, in09, 1, 0, 1, 1 ); \
759 0 : GF_MUL22( in02, in10, 1, 0, 1, 1 ); \
760 0 : GF_MUL22( in03, in11, 1, 0, 1, 1 ); \
761 0 : in04 = GF_MUL( in04, 1 ); \
762 0 : in04 = GF_ADD( GF_MUL( scratch_12, 0 ), in04 ); \
763 0 : in05 = GF_MUL( in05, 1 ); \
764 0 : in05 = GF_ADD( GF_MUL( scratch_13, 0 ), in05 ); \
765 0 : in06 = GF_MUL( in06, 1 ); \
766 0 : in06 = GF_ADD( GF_MUL( scratch_14, 0 ), in06 ); \
767 0 : in07 = GF_MUL( in07, 1 ); \
768 0 : in07 = GF_ADD( GF_MUL( scratch_15, 0 ), in07 ); \
769 0 : } while( 0 )
770 :
771 : #define FD_REEDSOL_PPT_IMPL_16_13( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, \
772 : in11, in12, in13, in14, in15) \
773 0 : do { \
774 0 : gf_t scratch_13, scratch_14, scratch_15, scratch_2, scratch_5, scratch_6, scratch_7; \
775 0 : scratch_13 = in13; \
776 0 : in13 = GF_MUL( in13, 1 ); \
777 0 : scratch_14 = in14; \
778 0 : in14 = GF_MUL( in14, 1 ); \
779 0 : scratch_15 = in15; \
780 0 : in15 = GF_MUL( in15, 1 ); \
781 0 : FD_REEDSOL_GENERATE_IFFT( 8, 0, in00, in01, in02, in03, in04, in05, in06, in07 ); \
782 0 : in13 = GF_ADD( GF_MUL( in05, 1 ), in13 ); \
783 0 : in14 = GF_ADD( GF_MUL( in06, 1 ), in14 ); \
784 0 : in15 = GF_ADD( GF_MUL( in07, 1 ), in15 ); \
785 0 : scratch_5 = in13; \
786 0 : in13 = GF_MUL( in13, 1 ); \
787 0 : scratch_6 = in14; \
788 0 : in14 = GF_MUL( in14, 1 ); \
789 0 : scratch_7 = in15; \
790 0 : in15 = GF_MUL( in15, 1 ); \
791 0 : FD_REEDSOL_GENERATE_IFFT( 4, 8, in08, in09, in10, in11 ); \
792 0 : in13 = GF_ADD( GF_MUL( in09, 1 ), in13 ); \
793 0 : in14 = GF_ADD( GF_MUL( in10, 1 ), in14 ); \
794 0 : in15 = GF_ADD( GF_MUL( in11, 1 ), in15 ); \
795 0 : scratch_2 = in14; \
796 0 : in14 = GF_MUL( in14, 1 ); \
797 0 : GF_MUL22( in13, in15, 1, 26, 1, 27 ); \
798 0 : GF_MUL22( in12, in13, 1, 12, 1, 1 ); \
799 0 : in14 = GF_ADD( GF_MUL( in12, 1 ), in14 ); \
800 0 : GF_MUL22( in14, in15, 1, 14, 1, 15 ); \
801 0 : in12 = GF_MUL( in12, 1 ); \
802 0 : in12 = GF_ADD( GF_MUL( scratch_2, 26 ), in12 ); \
803 0 : GF_MUL22( in08, in12, 23, 22, 1, 1 ); \
804 0 : in09 = GF_MUL( in09, 1 ); \
805 0 : in09 = GF_ADD( GF_MUL( scratch_5, 22 ), in09 ); \
806 0 : in10 = GF_MUL( in10, 1 ); \
807 0 : in10 = GF_ADD( GF_MUL( scratch_6, 22 ), in10 ); \
808 0 : in11 = GF_MUL( in11, 1 ); \
809 0 : in11 = GF_ADD( GF_MUL( scratch_7, 22 ), in11 ); \
810 0 : GF_MUL22( in00, in08, 1, 0, 1, 1 ); \
811 0 : GF_MUL22( in01, in09, 1, 0, 1, 1 ); \
812 0 : GF_MUL22( in02, in10, 1, 0, 1, 1 ); \
813 0 : GF_MUL22( in03, in11, 1, 0, 1, 1 ); \
814 0 : GF_MUL22( in04, in12, 1, 0, 1, 1 ); \
815 0 : in05 = GF_MUL( in05, 1 ); \
816 0 : in05 = GF_ADD( GF_MUL( scratch_13, 0 ), in05 ); \
817 0 : in06 = GF_MUL( in06, 1 ); \
818 0 : in06 = GF_ADD( GF_MUL( scratch_14, 0 ), in06 ); \
819 0 : in07 = GF_MUL( in07, 1 ); \
820 0 : in07 = GF_ADD( GF_MUL( scratch_15, 0 ), in07 ); \
821 0 : } while( 0 )
822 :
823 : #define FD_REEDSOL_PPT_IMPL_16_14( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09 , \
824 : in10, in11, in12, in13, in14, in15) \
825 0 : do { \
826 0 : gf_t scratch_14, scratch_15, scratch_2, scratch_3, scratch_6, scratch_7; \
827 0 : scratch_14 = in14; \
828 0 : in14 = GF_MUL( in14, 1 ); \
829 0 : scratch_15 = in15; \
830 0 : in15 = GF_MUL( in15, 1 ); \
831 0 : FD_REEDSOL_GENERATE_IFFT( 8, 0, in00, in01, in02, in03, in04, in05, in06, in07 ); \
832 0 : in14 = GF_ADD( GF_MUL( in06, 1 ), in14 ); \
833 0 : in15 = GF_ADD( GF_MUL( in07, 1 ), in15 ); \
834 0 : scratch_6 = in14; \
835 0 : in14 = GF_MUL( in14, 1 ); \
836 0 : scratch_7 = in15; \
837 0 : in15 = GF_MUL( in15, 1 ); \
838 0 : FD_REEDSOL_GENERATE_IFFT( 4, 8, in08, in09, in10, in11 ); \
839 0 : in14 = GF_ADD( GF_MUL( in10, 1 ), in14 ); \
840 0 : in15 = GF_ADD( GF_MUL( in11, 1 ), in15 ); \
841 0 : scratch_2 = in14; \
842 0 : in14 = GF_MUL( in14, 1 ); \
843 0 : scratch_3 = in15; \
844 0 : in15 = GF_MUL( in15, 1 ); \
845 0 : GF_MUL22( in12, in13, 13, 12, 1, 1 ); \
846 0 : in14 = GF_ADD( GF_MUL( in12, 1 ), in14 ); \
847 0 : in15 = GF_ADD( GF_MUL( in13, 1 ), in15 ); \
848 0 : GF_MUL22( in14, in15, 1, 14, 1, 15 ); \
849 0 : in12 = GF_MUL( in12, 1 ); \
850 0 : in12 = GF_ADD( GF_MUL( scratch_2, 26 ), in12 ); \
851 0 : in13 = GF_MUL( in13, 1 ); \
852 0 : in13 = GF_ADD( GF_MUL( scratch_3, 26 ), in13 ); \
853 0 : GF_MUL22( in08, in12, 23, 22, 1, 1 ); \
854 0 : GF_MUL22( in09, in13, 23, 22, 1, 1 ); \
855 0 : in10 = GF_MUL( in10, 1 ); \
856 0 : in10 = GF_ADD( GF_MUL( scratch_6, 22 ), in10 ); \
857 0 : in11 = GF_MUL( in11, 1 ); \
858 0 : in11 = GF_ADD( GF_MUL( scratch_7, 22 ), in11 ); \
859 0 : GF_MUL22( in00, in08, 1, 0, 1, 1 ); \
860 0 : GF_MUL22( in01, in09, 1, 0, 1, 1 ); \
861 0 : GF_MUL22( in02, in10, 1, 0, 1, 1 ); \
862 0 : GF_MUL22( in03, in11, 1, 0, 1, 1 ); \
863 0 : GF_MUL22( in04, in12, 1, 0, 1, 1 ); \
864 0 : GF_MUL22( in05, in13, 1, 0, 1, 1 ); \
865 0 : in06 = GF_MUL( in06, 1 ); \
866 0 : in06 = GF_ADD( GF_MUL( scratch_14, 0 ), in06 ); \
867 0 : in07 = GF_MUL( in07, 1 ); \
868 0 : in07 = GF_ADD( GF_MUL( scratch_15, 0 ), in07 ); \
869 0 : } while( 0 )
870 :
871 : #define FD_REEDSOL_PPT_IMPL_16_15( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09 , \
872 : in10, in11, in12, in13, in14, in15) \
873 0 : do { \
874 0 : gf_t scratch_15, scratch_3, scratch_7; \
875 0 : scratch_15 = in15; \
876 0 : in15 = GF_MUL( in15, 1 ); \
877 0 : FD_REEDSOL_GENERATE_IFFT( 8, 0, in00, in01, in02, in03, in04, in05, in06, in07 ); \
878 0 : in15 = GF_ADD( GF_MUL( in07, 1 ), in15 ); \
879 0 : scratch_7 = in15; \
880 0 : in15 = GF_MUL( in15, 1 ); \
881 0 : FD_REEDSOL_GENERATE_IFFT( 4, 8, in08, in09, in10, in11 ); \
882 0 : in15 = GF_ADD( GF_MUL( in11, 1 ), in15 ); \
883 0 : scratch_3 = in15; \
884 0 : in15 = GF_MUL( in15, 1 ); \
885 0 : GF_MUL22( in12, in13, 13, 12, 1, 1 ); \
886 0 : in15 = GF_ADD( GF_MUL( in13, 1 ), in15 ); \
887 0 : GF_MUL22( in14, in15, 1, 14, 1, 1 ); \
888 0 : GF_MUL22( in12, in14, 27, 26, 1, 1 ); \
889 0 : in13 = GF_MUL( in13, 1 ); \
890 0 : in13 = GF_ADD( GF_MUL( scratch_3, 26 ), in13 ); \
891 0 : GF_MUL22( in08, in12, 23, 22, 1, 1 ); \
892 0 : GF_MUL22( in09, in13, 23, 22, 1, 1 ); \
893 0 : GF_MUL22( in10, in14, 23, 22, 1, 1 ); \
894 0 : in11 = GF_MUL( in11, 1 ); \
895 0 : in11 = GF_ADD( GF_MUL( scratch_7, 22 ), in11 ); \
896 0 : GF_MUL22( in00, in08, 1, 0, 1, 1 ); \
897 0 : GF_MUL22( in01, in09, 1, 0, 1, 1 ); \
898 0 : GF_MUL22( in02, in10, 1, 0, 1, 1 ); \
899 0 : GF_MUL22( in03, in11, 1, 0, 1, 1 ); \
900 0 : GF_MUL22( in04, in12, 1, 0, 1, 1 ); \
901 0 : GF_MUL22( in05, in13, 1, 0, 1, 1 ); \
902 0 : GF_MUL22( in06, in14, 1, 0, 1, 1 ); \
903 0 : in07 = GF_MUL( in07, 1 ); \
904 0 : in07 = GF_ADD( GF_MUL( scratch_15, 0 ), in07 ); \
905 0 : } while( 0 )
906 :
907 : void fd_reedsol_ppt_32_17( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
908 : #define FD_REEDSOL_PPT_IMPL_32_17( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
909 : in29, in30, in31) \
910 0 : do { \
911 0 : gf_t scratch_17, scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31; \
912 0 : gf_t scratch_4, scratch_8; \
913 0 : scratch_17 = in17; \
914 0 : in17 = GF_MUL( in17, 1 ); \
915 0 : scratch_18 = in18; \
916 0 : in18 = GF_MUL( in18, 1 ); \
917 0 : scratch_19 = in19; \
918 0 : in19 = GF_MUL( in19, 1 ); \
919 0 : scratch_20 = in20; \
920 0 : in20 = GF_MUL( in20, 1 ); \
921 0 : scratch_21 = in21; \
922 0 : in21 = GF_MUL( in21, 1 ); \
923 0 : scratch_22 = in22; \
924 0 : in22 = GF_MUL( in22, 1 ); \
925 0 : scratch_23 = in23; \
926 0 : in23 = GF_MUL( in23, 1 ); \
927 0 : scratch_24 = in24; \
928 0 : in24 = GF_MUL( in24, 1 ); \
929 0 : scratch_25 = in25; \
930 0 : in25 = GF_MUL( in25, 1 ); \
931 0 : scratch_26 = in26; \
932 0 : in26 = GF_MUL( in26, 1 ); \
933 0 : scratch_27 = in27; \
934 0 : in27 = GF_MUL( in27, 1 ); \
935 0 : scratch_28 = in28; \
936 0 : in28 = GF_MUL( in28, 1 ); \
937 0 : scratch_29 = in29; \
938 0 : in29 = GF_MUL( in29, 1 ); \
939 0 : scratch_30 = in30; \
940 0 : in30 = GF_MUL( in30, 1 ); \
941 0 : scratch_31 = in31; \
942 0 : in31 = GF_MUL( in31, 1 ); \
943 0 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
944 0 : in17 = GF_ADD( GF_MUL( in01, 1 ), in17 ); \
945 0 : in18 = GF_ADD( GF_MUL( in02, 1 ), in18 ); \
946 0 : in19 = GF_ADD( GF_MUL( in03, 1 ), in19 ); \
947 0 : in20 = GF_ADD( GF_MUL( in04, 1 ), in20 ); \
948 0 : in21 = GF_ADD( GF_MUL( in05, 1 ), in21 ); \
949 0 : in22 = GF_ADD( GF_MUL( in06, 1 ), in22 ); \
950 0 : in23 = GF_ADD( GF_MUL( in07, 1 ), in23 ); \
951 0 : in24 = GF_ADD( GF_MUL( in08, 1 ), in24 ); \
952 0 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
953 0 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
954 0 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
955 0 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
956 0 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
957 0 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
958 0 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
959 0 : scratch_8 = in24; \
960 0 : in24 = GF_MUL( in24, 1 ); \
961 0 : GF_MUL22( in17, in25, 1, 11, 1, 10 ); \
962 0 : GF_MUL22( in18, in26, 1, 11, 1, 10 ); \
963 0 : GF_MUL22( in19, in27, 1, 11, 1, 10 ); \
964 0 : GF_MUL22( in20, in28, 1, 11, 1, 10 ); \
965 0 : GF_MUL22( in21, in29, 1, 11, 1, 10 ); \
966 0 : GF_MUL22( in22, in30, 1, 11, 1, 10 ); \
967 0 : GF_MUL22( in23, in31, 1, 11, 1, 10 ); \
968 0 : scratch_4 = in20; \
969 0 : in20 = GF_MUL( in20, 1 ); \
970 0 : GF_MUL22( in17, in21, 1, 97, 1, 96 ); \
971 0 : GF_MUL22( in18, in22, 1, 97, 1, 96 ); \
972 0 : GF_MUL22( in19, in23, 1, 97, 1, 96 ); \
973 0 : scratch_2 = in18; \
974 0 : in18 = GF_MUL( in18, 1 ); \
975 0 : GF_MUL22( in17, in19, 1, 120, 1, 121 ); \
976 0 : GF_MUL22( in16, in17, 1, 16, 1, 1 ); \
977 0 : in18 = GF_ADD( GF_MUL( in16, 1 ), in18 ); \
978 0 : GF_MUL22( in18, in19, 1, 18, 1, 19 ); \
979 0 : in16 = GF_MUL( in16, 1 ); \
980 0 : in16 = GF_ADD( GF_MUL( scratch_2, 120 ), in16 ); \
981 0 : in20 = GF_ADD( GF_MUL( in16, 1 ), in20 ); \
982 0 : FD_REEDSOL_GENERATE_FFT( 4, 20, in20, in21, in22, in23 ); \
983 0 : in16 = GF_MUL( in16, 1 ); \
984 0 : in16 = GF_ADD( GF_MUL( scratch_4, 97 ), in16 ); \
985 0 : in24 = GF_ADD( GF_MUL( in16, 1 ), in24 ); \
986 0 : FD_REEDSOL_GENERATE_FFT( 8, 24, in24, in25, in26, in27, in28, in29, in30, in31 ); \
987 0 : in16 = GF_MUL( in16, 1 ); \
988 0 : in16 = GF_ADD( GF_MUL( scratch_8, 11 ), in16 ); \
989 0 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
990 0 : in01 = GF_MUL( in01, 1 ); \
991 0 : in01 = GF_ADD( GF_MUL( scratch_17, 0 ), in01 ); \
992 0 : in02 = GF_MUL( in02, 1 ); \
993 0 : in02 = GF_ADD( GF_MUL( scratch_18, 0 ), in02 ); \
994 0 : in03 = GF_MUL( in03, 1 ); \
995 0 : in03 = GF_ADD( GF_MUL( scratch_19, 0 ), in03 ); \
996 0 : in04 = GF_MUL( in04, 1 ); \
997 0 : in04 = GF_ADD( GF_MUL( scratch_20, 0 ), in04 ); \
998 0 : in05 = GF_MUL( in05, 1 ); \
999 0 : in05 = GF_ADD( GF_MUL( scratch_21, 0 ), in05 ); \
1000 0 : in06 = GF_MUL( in06, 1 ); \
1001 0 : in06 = GF_ADD( GF_MUL( scratch_22, 0 ), in06 ); \
1002 0 : in07 = GF_MUL( in07, 1 ); \
1003 0 : in07 = GF_ADD( GF_MUL( scratch_23, 0 ), in07 ); \
1004 0 : in08 = GF_MUL( in08, 1 ); \
1005 0 : in08 = GF_ADD( GF_MUL( scratch_24, 0 ), in08 ); \
1006 0 : in09 = GF_MUL( in09, 1 ); \
1007 0 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1008 0 : in10 = GF_MUL( in10, 1 ); \
1009 0 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1010 0 : in11 = GF_MUL( in11, 1 ); \
1011 0 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1012 0 : in12 = GF_MUL( in12, 1 ); \
1013 0 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1014 0 : in13 = GF_MUL( in13, 1 ); \
1015 0 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1016 0 : in14 = GF_MUL( in14, 1 ); \
1017 0 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1018 0 : in15 = GF_MUL( in15, 1 ); \
1019 0 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1020 0 : } while( 0 )
1021 :
1022 : void fd_reedsol_ppt_32_18( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1023 : #define FD_REEDSOL_PPT_IMPL_32_18( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
1024 : in29, in30, in31) \
1025 0 : do { \
1026 0 : gf_t scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31; \
1027 0 : gf_t scratch_4, scratch_5, scratch_8, scratch_9; \
1028 0 : scratch_18 = in18; \
1029 0 : in18 = GF_MUL( in18, 1 ); \
1030 0 : scratch_19 = in19; \
1031 0 : in19 = GF_MUL( in19, 1 ); \
1032 0 : scratch_20 = in20; \
1033 0 : in20 = GF_MUL( in20, 1 ); \
1034 0 : scratch_21 = in21; \
1035 0 : in21 = GF_MUL( in21, 1 ); \
1036 0 : scratch_22 = in22; \
1037 0 : in22 = GF_MUL( in22, 1 ); \
1038 0 : scratch_23 = in23; \
1039 0 : in23 = GF_MUL( in23, 1 ); \
1040 0 : scratch_24 = in24; \
1041 0 : in24 = GF_MUL( in24, 1 ); \
1042 0 : scratch_25 = in25; \
1043 0 : in25 = GF_MUL( in25, 1 ); \
1044 0 : scratch_26 = in26; \
1045 0 : in26 = GF_MUL( in26, 1 ); \
1046 0 : scratch_27 = in27; \
1047 0 : in27 = GF_MUL( in27, 1 ); \
1048 0 : scratch_28 = in28; \
1049 0 : in28 = GF_MUL( in28, 1 ); \
1050 0 : scratch_29 = in29; \
1051 0 : in29 = GF_MUL( in29, 1 ); \
1052 0 : scratch_30 = in30; \
1053 0 : in30 = GF_MUL( in30, 1 ); \
1054 0 : scratch_31 = in31; \
1055 0 : in31 = GF_MUL( in31, 1 ); \
1056 0 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1057 0 : in18 = GF_ADD( GF_MUL( in02, 1 ), in18 ); \
1058 0 : in19 = GF_ADD( GF_MUL( in03, 1 ), in19 ); \
1059 0 : in20 = GF_ADD( GF_MUL( in04, 1 ), in20 ); \
1060 0 : in21 = GF_ADD( GF_MUL( in05, 1 ), in21 ); \
1061 0 : in22 = GF_ADD( GF_MUL( in06, 1 ), in22 ); \
1062 0 : in23 = GF_ADD( GF_MUL( in07, 1 ), in23 ); \
1063 0 : in24 = GF_ADD( GF_MUL( in08, 1 ), in24 ); \
1064 0 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
1065 0 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1066 0 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1067 0 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1068 0 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1069 0 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1070 0 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1071 0 : scratch_8 = in24; \
1072 0 : in24 = GF_MUL( in24, 1 ); \
1073 0 : scratch_9 = in25; \
1074 0 : in25 = GF_MUL( in25, 1 ); \
1075 0 : GF_MUL22( in18, in26, 1, 11, 1, 10 ); \
1076 0 : GF_MUL22( in19, in27, 1, 11, 1, 10 ); \
1077 0 : GF_MUL22( in20, in28, 1, 11, 1, 10 ); \
1078 0 : GF_MUL22( in21, in29, 1, 11, 1, 10 ); \
1079 0 : GF_MUL22( in22, in30, 1, 11, 1, 10 ); \
1080 0 : GF_MUL22( in23, in31, 1, 11, 1, 10 ); \
1081 0 : scratch_4 = in20; \
1082 0 : in20 = GF_MUL( in20, 1 ); \
1083 0 : scratch_5 = in21; \
1084 0 : in21 = GF_MUL( in21, 1 ); \
1085 0 : GF_MUL22( in18, in22, 1, 97, 1, 96 ); \
1086 0 : GF_MUL22( in19, in23, 1, 97, 1, 96 ); \
1087 0 : scratch_2 = in18; \
1088 0 : in18 = GF_MUL( in18, 1 ); \
1089 0 : scratch_3 = in19; \
1090 0 : in19 = GF_MUL( in19, 1 ); \
1091 0 : GF_MUL22( in16, in17, 17, 16, 1, 1 ); \
1092 0 : in18 = GF_ADD( GF_MUL( in16, 1 ), in18 ); \
1093 0 : in19 = GF_ADD( GF_MUL( in17, 1 ), in19 ); \
1094 0 : GF_MUL22( in18, in19, 1, 18, 1, 19 ); \
1095 0 : in16 = GF_MUL( in16, 1 ); \
1096 0 : in16 = GF_ADD( GF_MUL( scratch_2, 120 ), in16 ); \
1097 0 : in17 = GF_MUL( in17, 1 ); \
1098 0 : in17 = GF_ADD( GF_MUL( scratch_3, 120 ), in17 ); \
1099 0 : in20 = GF_ADD( GF_MUL( in16, 1 ), in20 ); \
1100 0 : in21 = GF_ADD( GF_MUL( in17, 1 ), in21 ); \
1101 0 : FD_REEDSOL_GENERATE_FFT( 4, 20, in20, in21, in22, in23 ); \
1102 0 : in16 = GF_MUL( in16, 1 ); \
1103 0 : in16 = GF_ADD( GF_MUL( scratch_4, 97 ), in16 ); \
1104 0 : in17 = GF_MUL( in17, 1 ); \
1105 0 : in17 = GF_ADD( GF_MUL( scratch_5, 97 ), in17 ); \
1106 0 : in24 = GF_ADD( GF_MUL( in16, 1 ), in24 ); \
1107 0 : in25 = GF_ADD( GF_MUL( in17, 1 ), in25 ); \
1108 0 : FD_REEDSOL_GENERATE_FFT( 8, 24, in24, in25, in26, in27, in28, in29, in30, in31 ); \
1109 0 : in16 = GF_MUL( in16, 1 ); \
1110 0 : in16 = GF_ADD( GF_MUL( scratch_8, 11 ), in16 ); \
1111 0 : in17 = GF_MUL( in17, 1 ); \
1112 0 : in17 = GF_ADD( GF_MUL( scratch_9, 11 ), in17 ); \
1113 0 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
1114 0 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
1115 0 : in02 = GF_MUL( in02, 1 ); \
1116 0 : in02 = GF_ADD( GF_MUL( scratch_18, 0 ), in02 ); \
1117 0 : in03 = GF_MUL( in03, 1 ); \
1118 0 : in03 = GF_ADD( GF_MUL( scratch_19, 0 ), in03 ); \
1119 0 : in04 = GF_MUL( in04, 1 ); \
1120 0 : in04 = GF_ADD( GF_MUL( scratch_20, 0 ), in04 ); \
1121 0 : in05 = GF_MUL( in05, 1 ); \
1122 0 : in05 = GF_ADD( GF_MUL( scratch_21, 0 ), in05 ); \
1123 0 : in06 = GF_MUL( in06, 1 ); \
1124 0 : in06 = GF_ADD( GF_MUL( scratch_22, 0 ), in06 ); \
1125 0 : in07 = GF_MUL( in07, 1 ); \
1126 0 : in07 = GF_ADD( GF_MUL( scratch_23, 0 ), in07 ); \
1127 0 : in08 = GF_MUL( in08, 1 ); \
1128 0 : in08 = GF_ADD( GF_MUL( scratch_24, 0 ), in08 ); \
1129 0 : in09 = GF_MUL( in09, 1 ); \
1130 0 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1131 0 : in10 = GF_MUL( in10, 1 ); \
1132 0 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1133 0 : in11 = GF_MUL( in11, 1 ); \
1134 0 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1135 0 : in12 = GF_MUL( in12, 1 ); \
1136 0 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1137 0 : in13 = GF_MUL( in13, 1 ); \
1138 0 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1139 0 : in14 = GF_MUL( in14, 1 ); \
1140 0 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1141 0 : in15 = GF_MUL( in15, 1 ); \
1142 0 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1143 0 : } while( 0 )
1144 :
1145 : void fd_reedsol_ppt_32_19( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1146 : #define FD_REEDSOL_PPT_IMPL_32_19( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
1147 : in29, in30, in31) \
1148 0 : do { \
1149 0 : gf_t scratch_10, scratch_19, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31, scratch_4; \
1150 0 : gf_t scratch_5, scratch_6, scratch_8, scratch_9; \
1151 0 : scratch_19 = in19; \
1152 0 : in19 = GF_MUL( in19, 1 ); \
1153 0 : scratch_20 = in20; \
1154 0 : in20 = GF_MUL( in20, 1 ); \
1155 0 : scratch_21 = in21; \
1156 0 : in21 = GF_MUL( in21, 1 ); \
1157 0 : scratch_22 = in22; \
1158 0 : in22 = GF_MUL( in22, 1 ); \
1159 0 : scratch_23 = in23; \
1160 0 : in23 = GF_MUL( in23, 1 ); \
1161 0 : scratch_24 = in24; \
1162 0 : in24 = GF_MUL( in24, 1 ); \
1163 0 : scratch_25 = in25; \
1164 0 : in25 = GF_MUL( in25, 1 ); \
1165 0 : scratch_26 = in26; \
1166 0 : in26 = GF_MUL( in26, 1 ); \
1167 0 : scratch_27 = in27; \
1168 0 : in27 = GF_MUL( in27, 1 ); \
1169 0 : scratch_28 = in28; \
1170 0 : in28 = GF_MUL( in28, 1 ); \
1171 0 : scratch_29 = in29; \
1172 0 : in29 = GF_MUL( in29, 1 ); \
1173 0 : scratch_30 = in30; \
1174 0 : in30 = GF_MUL( in30, 1 ); \
1175 0 : scratch_31 = in31; \
1176 0 : in31 = GF_MUL( in31, 1 ); \
1177 0 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1178 0 : in19 = GF_ADD( GF_MUL( in03, 1 ), in19 ); \
1179 0 : in20 = GF_ADD( GF_MUL( in04, 1 ), in20 ); \
1180 0 : in21 = GF_ADD( GF_MUL( in05, 1 ), in21 ); \
1181 0 : in22 = GF_ADD( GF_MUL( in06, 1 ), in22 ); \
1182 0 : in23 = GF_ADD( GF_MUL( in07, 1 ), in23 ); \
1183 0 : in24 = GF_ADD( GF_MUL( in08, 1 ), in24 ); \
1184 0 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
1185 0 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1186 0 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1187 0 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1188 0 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1189 0 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1190 0 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1191 0 : scratch_8 = in24; \
1192 0 : in24 = GF_MUL( in24, 1 ); \
1193 0 : scratch_9 = in25; \
1194 0 : in25 = GF_MUL( in25, 1 ); \
1195 0 : scratch_10 = in26; \
1196 0 : in26 = GF_MUL( in26, 1 ); \
1197 0 : GF_MUL22( in19, in27, 1, 11, 1, 10 ); \
1198 0 : GF_MUL22( in20, in28, 1, 11, 1, 10 ); \
1199 0 : GF_MUL22( in21, in29, 1, 11, 1, 10 ); \
1200 0 : GF_MUL22( in22, in30, 1, 11, 1, 10 ); \
1201 0 : GF_MUL22( in23, in31, 1, 11, 1, 10 ); \
1202 0 : scratch_4 = in20; \
1203 0 : in20 = GF_MUL( in20, 1 ); \
1204 0 : scratch_5 = in21; \
1205 0 : in21 = GF_MUL( in21, 1 ); \
1206 0 : scratch_6 = in22; \
1207 0 : in22 = GF_MUL( in22, 1 ); \
1208 0 : GF_MUL22( in19, in23, 1, 97, 1, 96 ); \
1209 0 : scratch_3 = in19; \
1210 0 : in19 = GF_MUL( in19, 1 ); \
1211 0 : GF_MUL22( in16, in17, 17, 16, 1, 1 ); \
1212 0 : in19 = GF_ADD( GF_MUL( in17, 1 ), in19 ); \
1213 0 : GF_MUL22( in18, in19, 1, 18, 1, 1 ); \
1214 0 : GF_MUL22( in16, in18, 121, 120, 1, 1 ); \
1215 0 : in17 = GF_MUL( in17, 1 ); \
1216 0 : in17 = GF_ADD( GF_MUL( scratch_3, 120 ), in17 ); \
1217 0 : in20 = GF_ADD( GF_MUL( in16, 1 ), in20 ); \
1218 0 : in21 = GF_ADD( GF_MUL( in17, 1 ), in21 ); \
1219 0 : in22 = GF_ADD( GF_MUL( in18, 1 ), in22 ); \
1220 0 : FD_REEDSOL_GENERATE_FFT( 4, 20, in20, in21, in22, in23 ); \
1221 0 : in16 = GF_MUL( in16, 1 ); \
1222 0 : in16 = GF_ADD( GF_MUL( scratch_4, 97 ), in16 ); \
1223 0 : in17 = GF_MUL( in17, 1 ); \
1224 0 : in17 = GF_ADD( GF_MUL( scratch_5, 97 ), in17 ); \
1225 0 : in18 = GF_MUL( in18, 1 ); \
1226 0 : in18 = GF_ADD( GF_MUL( scratch_6, 97 ), in18 ); \
1227 0 : in24 = GF_ADD( GF_MUL( in16, 1 ), in24 ); \
1228 0 : in25 = GF_ADD( GF_MUL( in17, 1 ), in25 ); \
1229 0 : in26 = GF_ADD( GF_MUL( in18, 1 ), in26 ); \
1230 0 : FD_REEDSOL_GENERATE_FFT( 8, 24, in24, in25, in26, in27, in28, in29, in30, in31 ); \
1231 0 : in16 = GF_MUL( in16, 1 ); \
1232 0 : in16 = GF_ADD( GF_MUL( scratch_8, 11 ), in16 ); \
1233 0 : in17 = GF_MUL( in17, 1 ); \
1234 0 : in17 = GF_ADD( GF_MUL( scratch_9, 11 ), in17 ); \
1235 0 : in18 = GF_MUL( in18, 1 ); \
1236 0 : in18 = GF_ADD( GF_MUL( scratch_10, 11 ), in18 ); \
1237 0 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
1238 0 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
1239 0 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
1240 0 : in03 = GF_MUL( in03, 1 ); \
1241 0 : in03 = GF_ADD( GF_MUL( scratch_19, 0 ), in03 ); \
1242 0 : in04 = GF_MUL( in04, 1 ); \
1243 0 : in04 = GF_ADD( GF_MUL( scratch_20, 0 ), in04 ); \
1244 0 : in05 = GF_MUL( in05, 1 ); \
1245 0 : in05 = GF_ADD( GF_MUL( scratch_21, 0 ), in05 ); \
1246 0 : in06 = GF_MUL( in06, 1 ); \
1247 0 : in06 = GF_ADD( GF_MUL( scratch_22, 0 ), in06 ); \
1248 0 : in07 = GF_MUL( in07, 1 ); \
1249 0 : in07 = GF_ADD( GF_MUL( scratch_23, 0 ), in07 ); \
1250 0 : in08 = GF_MUL( in08, 1 ); \
1251 0 : in08 = GF_ADD( GF_MUL( scratch_24, 0 ), in08 ); \
1252 0 : in09 = GF_MUL( in09, 1 ); \
1253 0 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1254 0 : in10 = GF_MUL( in10, 1 ); \
1255 0 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1256 0 : in11 = GF_MUL( in11, 1 ); \
1257 0 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1258 0 : in12 = GF_MUL( in12, 1 ); \
1259 0 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1260 0 : in13 = GF_MUL( in13, 1 ); \
1261 0 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1262 0 : in14 = GF_MUL( in14, 1 ); \
1263 0 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1264 0 : in15 = GF_MUL( in15, 1 ); \
1265 0 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1266 0 : } while( 0 )
1267 :
1268 : void fd_reedsol_ppt_32_20( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1269 : #define FD_REEDSOL_PPT_IMPL_32_20( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
1270 : in29, in30, in31) \
1271 0 : do { \
1272 0 : gf_t scratch_10, scratch_11, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31, scratch_4, scratch_5; \
1273 0 : gf_t scratch_6, scratch_7, scratch_8, scratch_9; \
1274 0 : scratch_20 = in20; \
1275 0 : in20 = GF_MUL( in20, 1 ); \
1276 0 : scratch_21 = in21; \
1277 0 : in21 = GF_MUL( in21, 1 ); \
1278 0 : scratch_22 = in22; \
1279 0 : in22 = GF_MUL( in22, 1 ); \
1280 0 : scratch_23 = in23; \
1281 0 : in23 = GF_MUL( in23, 1 ); \
1282 0 : scratch_24 = in24; \
1283 0 : in24 = GF_MUL( in24, 1 ); \
1284 0 : scratch_25 = in25; \
1285 0 : in25 = GF_MUL( in25, 1 ); \
1286 0 : scratch_26 = in26; \
1287 0 : in26 = GF_MUL( in26, 1 ); \
1288 0 : scratch_27 = in27; \
1289 0 : in27 = GF_MUL( in27, 1 ); \
1290 0 : scratch_28 = in28; \
1291 0 : in28 = GF_MUL( in28, 1 ); \
1292 0 : scratch_29 = in29; \
1293 0 : in29 = GF_MUL( in29, 1 ); \
1294 0 : scratch_30 = in30; \
1295 0 : in30 = GF_MUL( in30, 1 ); \
1296 0 : scratch_31 = in31; \
1297 0 : in31 = GF_MUL( in31, 1 ); \
1298 0 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1299 0 : in20 = GF_ADD( GF_MUL( in04, 1 ), in20 ); \
1300 0 : in21 = GF_ADD( GF_MUL( in05, 1 ), in21 ); \
1301 0 : in22 = GF_ADD( GF_MUL( in06, 1 ), in22 ); \
1302 0 : in23 = GF_ADD( GF_MUL( in07, 1 ), in23 ); \
1303 0 : in24 = GF_ADD( GF_MUL( in08, 1 ), in24 ); \
1304 0 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
1305 0 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1306 0 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1307 0 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1308 0 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1309 0 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1310 0 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1311 0 : scratch_8 = in24; \
1312 0 : in24 = GF_MUL( in24, 1 ); \
1313 0 : scratch_9 = in25; \
1314 0 : in25 = GF_MUL( in25, 1 ); \
1315 0 : scratch_10 = in26; \
1316 0 : in26 = GF_MUL( in26, 1 ); \
1317 0 : scratch_11 = in27; \
1318 0 : in27 = GF_MUL( in27, 1 ); \
1319 0 : GF_MUL22( in20, in28, 1, 11, 1, 10 ); \
1320 0 : GF_MUL22( in21, in29, 1, 11, 1, 10 ); \
1321 0 : GF_MUL22( in22, in30, 1, 11, 1, 10 ); \
1322 0 : GF_MUL22( in23, in31, 1, 11, 1, 10 ); \
1323 0 : scratch_4 = in20; \
1324 0 : in20 = GF_MUL( in20, 1 ); \
1325 0 : scratch_5 = in21; \
1326 0 : in21 = GF_MUL( in21, 1 ); \
1327 0 : scratch_6 = in22; \
1328 0 : in22 = GF_MUL( in22, 1 ); \
1329 0 : scratch_7 = in23; \
1330 0 : in23 = GF_MUL( in23, 1 ); \
1331 0 : FD_REEDSOL_GENERATE_IFFT( 4, 16, in16, in17, in18, in19 ); \
1332 0 : in20 = GF_ADD( GF_MUL( in16, 1 ), in20 ); \
1333 0 : in21 = GF_ADD( GF_MUL( in17, 1 ), in21 ); \
1334 0 : in22 = GF_ADD( GF_MUL( in18, 1 ), in22 ); \
1335 0 : in23 = GF_ADD( GF_MUL( in19, 1 ), in23 ); \
1336 0 : FD_REEDSOL_GENERATE_FFT( 4, 20, in20, in21, in22, in23 ); \
1337 0 : in16 = GF_MUL( in16, 1 ); \
1338 0 : in16 = GF_ADD( GF_MUL( scratch_4, 97 ), in16 ); \
1339 0 : in17 = GF_MUL( in17, 1 ); \
1340 0 : in17 = GF_ADD( GF_MUL( scratch_5, 97 ), in17 ); \
1341 0 : in18 = GF_MUL( in18, 1 ); \
1342 0 : in18 = GF_ADD( GF_MUL( scratch_6, 97 ), in18 ); \
1343 0 : in19 = GF_MUL( in19, 1 ); \
1344 0 : in19 = GF_ADD( GF_MUL( scratch_7, 97 ), in19 ); \
1345 0 : in24 = GF_ADD( GF_MUL( in16, 1 ), in24 ); \
1346 0 : in25 = GF_ADD( GF_MUL( in17, 1 ), in25 ); \
1347 0 : in26 = GF_ADD( GF_MUL( in18, 1 ), in26 ); \
1348 0 : in27 = GF_ADD( GF_MUL( in19, 1 ), in27 ); \
1349 0 : FD_REEDSOL_GENERATE_FFT( 8, 24, in24, in25, in26, in27, in28, in29, in30, in31 ); \
1350 0 : in16 = GF_MUL( in16, 1 ); \
1351 0 : in16 = GF_ADD( GF_MUL( scratch_8, 11 ), in16 ); \
1352 0 : in17 = GF_MUL( in17, 1 ); \
1353 0 : in17 = GF_ADD( GF_MUL( scratch_9, 11 ), in17 ); \
1354 0 : in18 = GF_MUL( in18, 1 ); \
1355 0 : in18 = GF_ADD( GF_MUL( scratch_10, 11 ), in18 ); \
1356 0 : in19 = GF_MUL( in19, 1 ); \
1357 0 : in19 = GF_ADD( GF_MUL( scratch_11, 11 ), in19 ); \
1358 0 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
1359 0 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
1360 0 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
1361 0 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
1362 0 : in04 = GF_MUL( in04, 1 ); \
1363 0 : in04 = GF_ADD( GF_MUL( scratch_20, 0 ), in04 ); \
1364 0 : in05 = GF_MUL( in05, 1 ); \
1365 0 : in05 = GF_ADD( GF_MUL( scratch_21, 0 ), in05 ); \
1366 0 : in06 = GF_MUL( in06, 1 ); \
1367 0 : in06 = GF_ADD( GF_MUL( scratch_22, 0 ), in06 ); \
1368 0 : in07 = GF_MUL( in07, 1 ); \
1369 0 : in07 = GF_ADD( GF_MUL( scratch_23, 0 ), in07 ); \
1370 0 : in08 = GF_MUL( in08, 1 ); \
1371 0 : in08 = GF_ADD( GF_MUL( scratch_24, 0 ), in08 ); \
1372 0 : in09 = GF_MUL( in09, 1 ); \
1373 0 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1374 0 : in10 = GF_MUL( in10, 1 ); \
1375 0 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1376 0 : in11 = GF_MUL( in11, 1 ); \
1377 0 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1378 0 : in12 = GF_MUL( in12, 1 ); \
1379 0 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1380 0 : in13 = GF_MUL( in13, 1 ); \
1381 0 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1382 0 : in14 = GF_MUL( in14, 1 ); \
1383 0 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1384 0 : in15 = GF_MUL( in15, 1 ); \
1385 0 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1386 0 : } while( 0 )
1387 :
1388 : void fd_reedsol_ppt_32_21( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1389 : #define FD_REEDSOL_PPT_IMPL_32_21( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
1390 : in29, in30, in31) \
1391 0 : do { \
1392 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_2, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31, scratch_5; \
1393 0 : gf_t scratch_6, scratch_7, scratch_8, scratch_9; \
1394 0 : scratch_21 = in21; \
1395 0 : in21 = GF_MUL( in21, 1 ); \
1396 0 : scratch_22 = in22; \
1397 0 : in22 = GF_MUL( in22, 1 ); \
1398 0 : scratch_23 = in23; \
1399 0 : in23 = GF_MUL( in23, 1 ); \
1400 0 : scratch_24 = in24; \
1401 0 : in24 = GF_MUL( in24, 1 ); \
1402 0 : scratch_25 = in25; \
1403 0 : in25 = GF_MUL( in25, 1 ); \
1404 0 : scratch_26 = in26; \
1405 0 : in26 = GF_MUL( in26, 1 ); \
1406 0 : scratch_27 = in27; \
1407 0 : in27 = GF_MUL( in27, 1 ); \
1408 0 : scratch_28 = in28; \
1409 0 : in28 = GF_MUL( in28, 1 ); \
1410 0 : scratch_29 = in29; \
1411 0 : in29 = GF_MUL( in29, 1 ); \
1412 0 : scratch_30 = in30; \
1413 0 : in30 = GF_MUL( in30, 1 ); \
1414 0 : scratch_31 = in31; \
1415 0 : in31 = GF_MUL( in31, 1 ); \
1416 0 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1417 0 : in21 = GF_ADD( GF_MUL( in05, 1 ), in21 ); \
1418 0 : in22 = GF_ADD( GF_MUL( in06, 1 ), in22 ); \
1419 0 : in23 = GF_ADD( GF_MUL( in07, 1 ), in23 ); \
1420 0 : in24 = GF_ADD( GF_MUL( in08, 1 ), in24 ); \
1421 0 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
1422 0 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1423 0 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1424 0 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1425 0 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1426 0 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1427 0 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1428 0 : scratch_8 = in24; \
1429 0 : in24 = GF_MUL( in24, 1 ); \
1430 0 : scratch_9 = in25; \
1431 0 : in25 = GF_MUL( in25, 1 ); \
1432 0 : scratch_10 = in26; \
1433 0 : in26 = GF_MUL( in26, 1 ); \
1434 0 : scratch_11 = in27; \
1435 0 : in27 = GF_MUL( in27, 1 ); \
1436 0 : scratch_12 = in28; \
1437 0 : in28 = GF_MUL( in28, 1 ); \
1438 0 : GF_MUL22( in21, in29, 1, 11, 1, 10 ); \
1439 0 : GF_MUL22( in22, in30, 1, 11, 1, 10 ); \
1440 0 : GF_MUL22( in23, in31, 1, 11, 1, 10 ); \
1441 0 : scratch_5 = in21; \
1442 0 : in21 = GF_MUL( in21, 1 ); \
1443 0 : scratch_6 = in22; \
1444 0 : in22 = GF_MUL( in22, 1 ); \
1445 0 : scratch_7 = in23; \
1446 0 : in23 = GF_MUL( in23, 1 ); \
1447 0 : FD_REEDSOL_GENERATE_IFFT( 4, 16, in16, in17, in18, in19 ); \
1448 0 : in21 = GF_ADD( GF_MUL( in17, 1 ), in21 ); \
1449 0 : in22 = GF_ADD( GF_MUL( in18, 1 ), in22 ); \
1450 0 : in23 = GF_ADD( GF_MUL( in19, 1 ), in23 ); \
1451 0 : scratch_2 = in22; \
1452 0 : in22 = GF_MUL( in22, 1 ); \
1453 0 : GF_MUL22( in21, in23, 1, 126, 1, 127 ); \
1454 0 : GF_MUL22( in20, in21, 1, 20, 1, 1 ); \
1455 0 : in22 = GF_ADD( GF_MUL( in20, 1 ), in22 ); \
1456 0 : GF_MUL22( in22, in23, 1, 22, 1, 23 ); \
1457 0 : in20 = GF_MUL( in20, 1 ); \
1458 0 : in20 = GF_ADD( GF_MUL( scratch_2, 126 ), in20 ); \
1459 0 : GF_MUL22( in16, in20, 96, 97, 1, 1 ); \
1460 0 : in17 = GF_MUL( in17, 1 ); \
1461 0 : in17 = GF_ADD( GF_MUL( scratch_5, 97 ), in17 ); \
1462 0 : in18 = GF_MUL( in18, 1 ); \
1463 0 : in18 = GF_ADD( GF_MUL( scratch_6, 97 ), in18 ); \
1464 0 : in19 = GF_MUL( in19, 1 ); \
1465 0 : in19 = GF_ADD( GF_MUL( scratch_7, 97 ), in19 ); \
1466 0 : in24 = GF_ADD( GF_MUL( in16, 1 ), in24 ); \
1467 0 : in25 = GF_ADD( GF_MUL( in17, 1 ), in25 ); \
1468 0 : in26 = GF_ADD( GF_MUL( in18, 1 ), in26 ); \
1469 0 : in27 = GF_ADD( GF_MUL( in19, 1 ), in27 ); \
1470 0 : in28 = GF_ADD( GF_MUL( in20, 1 ), in28 ); \
1471 0 : FD_REEDSOL_GENERATE_FFT( 8, 24, in24, in25, in26, in27, in28, in29, in30, in31 ); \
1472 0 : in16 = GF_MUL( in16, 1 ); \
1473 0 : in16 = GF_ADD( GF_MUL( scratch_8, 11 ), in16 ); \
1474 0 : in17 = GF_MUL( in17, 1 ); \
1475 0 : in17 = GF_ADD( GF_MUL( scratch_9, 11 ), in17 ); \
1476 0 : in18 = GF_MUL( in18, 1 ); \
1477 0 : in18 = GF_ADD( GF_MUL( scratch_10, 11 ), in18 ); \
1478 0 : in19 = GF_MUL( in19, 1 ); \
1479 0 : in19 = GF_ADD( GF_MUL( scratch_11, 11 ), in19 ); \
1480 0 : in20 = GF_MUL( in20, 1 ); \
1481 0 : in20 = GF_ADD( GF_MUL( scratch_12, 11 ), in20 ); \
1482 0 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
1483 0 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
1484 0 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
1485 0 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
1486 0 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
1487 0 : in05 = GF_MUL( in05, 1 ); \
1488 0 : in05 = GF_ADD( GF_MUL( scratch_21, 0 ), in05 ); \
1489 0 : in06 = GF_MUL( in06, 1 ); \
1490 0 : in06 = GF_ADD( GF_MUL( scratch_22, 0 ), in06 ); \
1491 0 : in07 = GF_MUL( in07, 1 ); \
1492 0 : in07 = GF_ADD( GF_MUL( scratch_23, 0 ), in07 ); \
1493 0 : in08 = GF_MUL( in08, 1 ); \
1494 0 : in08 = GF_ADD( GF_MUL( scratch_24, 0 ), in08 ); \
1495 0 : in09 = GF_MUL( in09, 1 ); \
1496 0 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1497 0 : in10 = GF_MUL( in10, 1 ); \
1498 0 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1499 0 : in11 = GF_MUL( in11, 1 ); \
1500 0 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1501 0 : in12 = GF_MUL( in12, 1 ); \
1502 0 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1503 0 : in13 = GF_MUL( in13, 1 ); \
1504 0 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1505 0 : in14 = GF_MUL( in14, 1 ); \
1506 0 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1507 0 : in15 = GF_MUL( in15, 1 ); \
1508 0 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1509 0 : } while( 0 )
1510 :
1511 : void fd_reedsol_ppt_32_22( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1512 : #define FD_REEDSOL_PPT_IMPL_32_22( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
1513 : in29, in30, in31) \
1514 0 : do { \
1515 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_2, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31; \
1516 0 : gf_t scratch_6, scratch_7, scratch_8, scratch_9; \
1517 0 : scratch_22 = in22; \
1518 0 : in22 = GF_MUL( in22, 1 ); \
1519 0 : scratch_23 = in23; \
1520 0 : in23 = GF_MUL( in23, 1 ); \
1521 0 : scratch_24 = in24; \
1522 0 : in24 = GF_MUL( in24, 1 ); \
1523 0 : scratch_25 = in25; \
1524 0 : in25 = GF_MUL( in25, 1 ); \
1525 0 : scratch_26 = in26; \
1526 0 : in26 = GF_MUL( in26, 1 ); \
1527 0 : scratch_27 = in27; \
1528 0 : in27 = GF_MUL( in27, 1 ); \
1529 0 : scratch_28 = in28; \
1530 0 : in28 = GF_MUL( in28, 1 ); \
1531 0 : scratch_29 = in29; \
1532 0 : in29 = GF_MUL( in29, 1 ); \
1533 0 : scratch_30 = in30; \
1534 0 : in30 = GF_MUL( in30, 1 ); \
1535 0 : scratch_31 = in31; \
1536 0 : in31 = GF_MUL( in31, 1 ); \
1537 0 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1538 0 : in22 = GF_ADD( GF_MUL( in06, 1 ), in22 ); \
1539 0 : in23 = GF_ADD( GF_MUL( in07, 1 ), in23 ); \
1540 0 : in24 = GF_ADD( GF_MUL( in08, 1 ), in24 ); \
1541 0 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
1542 0 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1543 0 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1544 0 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1545 0 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1546 0 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1547 0 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1548 0 : scratch_8 = in24; \
1549 0 : in24 = GF_MUL( in24, 1 ); \
1550 0 : scratch_9 = in25; \
1551 0 : in25 = GF_MUL( in25, 1 ); \
1552 0 : scratch_10 = in26; \
1553 0 : in26 = GF_MUL( in26, 1 ); \
1554 0 : scratch_11 = in27; \
1555 0 : in27 = GF_MUL( in27, 1 ); \
1556 0 : scratch_12 = in28; \
1557 0 : in28 = GF_MUL( in28, 1 ); \
1558 0 : scratch_13 = in29; \
1559 0 : in29 = GF_MUL( in29, 1 ); \
1560 0 : GF_MUL22( in22, in30, 1, 11, 1, 10 ); \
1561 0 : GF_MUL22( in23, in31, 1, 11, 1, 10 ); \
1562 0 : scratch_6 = in22; \
1563 0 : in22 = GF_MUL( in22, 1 ); \
1564 0 : scratch_7 = in23; \
1565 0 : in23 = GF_MUL( in23, 1 ); \
1566 0 : FD_REEDSOL_GENERATE_IFFT( 4, 16, in16, in17, in18, in19 ); \
1567 0 : in22 = GF_ADD( GF_MUL( in18, 1 ), in22 ); \
1568 0 : in23 = GF_ADD( GF_MUL( in19, 1 ), in23 ); \
1569 0 : scratch_2 = in22; \
1570 0 : in22 = GF_MUL( in22, 1 ); \
1571 0 : scratch_3 = in23; \
1572 0 : in23 = GF_MUL( in23, 1 ); \
1573 0 : GF_MUL22( in20, in21, 21, 20, 1, 1 ); \
1574 0 : in22 = GF_ADD( GF_MUL( in20, 1 ), in22 ); \
1575 0 : in23 = GF_ADD( GF_MUL( in21, 1 ), in23 ); \
1576 0 : GF_MUL22( in22, in23, 1, 22, 1, 23 ); \
1577 0 : in20 = GF_MUL( in20, 1 ); \
1578 0 : in20 = GF_ADD( GF_MUL( scratch_2, 126 ), in20 ); \
1579 0 : in21 = GF_MUL( in21, 1 ); \
1580 0 : in21 = GF_ADD( GF_MUL( scratch_3, 126 ), in21 ); \
1581 0 : GF_MUL22( in16, in20, 96, 97, 1, 1 ); \
1582 0 : GF_MUL22( in17, in21, 96, 97, 1, 1 ); \
1583 0 : in18 = GF_MUL( in18, 1 ); \
1584 0 : in18 = GF_ADD( GF_MUL( scratch_6, 97 ), in18 ); \
1585 0 : in19 = GF_MUL( in19, 1 ); \
1586 0 : in19 = GF_ADD( GF_MUL( scratch_7, 97 ), in19 ); \
1587 0 : in24 = GF_ADD( GF_MUL( in16, 1 ), in24 ); \
1588 0 : in25 = GF_ADD( GF_MUL( in17, 1 ), in25 ); \
1589 0 : in26 = GF_ADD( GF_MUL( in18, 1 ), in26 ); \
1590 0 : in27 = GF_ADD( GF_MUL( in19, 1 ), in27 ); \
1591 0 : in28 = GF_ADD( GF_MUL( in20, 1 ), in28 ); \
1592 0 : in29 = GF_ADD( GF_MUL( in21, 1 ), in29 ); \
1593 0 : FD_REEDSOL_GENERATE_FFT( 8, 24, in24, in25, in26, in27, in28, in29, in30, in31 ); \
1594 0 : in16 = GF_MUL( in16, 1 ); \
1595 0 : in16 = GF_ADD( GF_MUL( scratch_8, 11 ), in16 ); \
1596 0 : in17 = GF_MUL( in17, 1 ); \
1597 0 : in17 = GF_ADD( GF_MUL( scratch_9, 11 ), in17 ); \
1598 0 : in18 = GF_MUL( in18, 1 ); \
1599 0 : in18 = GF_ADD( GF_MUL( scratch_10, 11 ), in18 ); \
1600 0 : in19 = GF_MUL( in19, 1 ); \
1601 0 : in19 = GF_ADD( GF_MUL( scratch_11, 11 ), in19 ); \
1602 0 : in20 = GF_MUL( in20, 1 ); \
1603 0 : in20 = GF_ADD( GF_MUL( scratch_12, 11 ), in20 ); \
1604 0 : in21 = GF_MUL( in21, 1 ); \
1605 0 : in21 = GF_ADD( GF_MUL( scratch_13, 11 ), in21 ); \
1606 0 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
1607 0 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
1608 0 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
1609 0 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
1610 0 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
1611 0 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
1612 0 : in06 = GF_MUL( in06, 1 ); \
1613 0 : in06 = GF_ADD( GF_MUL( scratch_22, 0 ), in06 ); \
1614 0 : in07 = GF_MUL( in07, 1 ); \
1615 0 : in07 = GF_ADD( GF_MUL( scratch_23, 0 ), in07 ); \
1616 0 : in08 = GF_MUL( in08, 1 ); \
1617 0 : in08 = GF_ADD( GF_MUL( scratch_24, 0 ), in08 ); \
1618 0 : in09 = GF_MUL( in09, 1 ); \
1619 0 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1620 0 : in10 = GF_MUL( in10, 1 ); \
1621 0 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1622 0 : in11 = GF_MUL( in11, 1 ); \
1623 0 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1624 0 : in12 = GF_MUL( in12, 1 ); \
1625 0 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1626 0 : in13 = GF_MUL( in13, 1 ); \
1627 0 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1628 0 : in14 = GF_MUL( in14, 1 ); \
1629 0 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1630 0 : in15 = GF_MUL( in15, 1 ); \
1631 0 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1632 0 : } while( 0 )
1633 :
1634 : void fd_reedsol_ppt_32_23( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1635 : #define FD_REEDSOL_PPT_IMPL_32_23( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
1636 : in29, in30, in31) \
1637 0 : do { \
1638 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31, scratch_7; \
1639 0 : gf_t scratch_8, scratch_9; \
1640 0 : scratch_23 = in23; \
1641 0 : in23 = GF_MUL( in23, 1 ); \
1642 0 : scratch_24 = in24; \
1643 0 : in24 = GF_MUL( in24, 1 ); \
1644 0 : scratch_25 = in25; \
1645 0 : in25 = GF_MUL( in25, 1 ); \
1646 0 : scratch_26 = in26; \
1647 0 : in26 = GF_MUL( in26, 1 ); \
1648 0 : scratch_27 = in27; \
1649 0 : in27 = GF_MUL( in27, 1 ); \
1650 0 : scratch_28 = in28; \
1651 0 : in28 = GF_MUL( in28, 1 ); \
1652 0 : scratch_29 = in29; \
1653 0 : in29 = GF_MUL( in29, 1 ); \
1654 0 : scratch_30 = in30; \
1655 0 : in30 = GF_MUL( in30, 1 ); \
1656 0 : scratch_31 = in31; \
1657 0 : in31 = GF_MUL( in31, 1 ); \
1658 0 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1659 0 : in23 = GF_ADD( GF_MUL( in07, 1 ), in23 ); \
1660 0 : in24 = GF_ADD( GF_MUL( in08, 1 ), in24 ); \
1661 0 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
1662 0 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1663 0 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1664 0 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1665 0 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1666 0 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1667 0 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1668 0 : scratch_8 = in24; \
1669 0 : in24 = GF_MUL( in24, 1 ); \
1670 0 : scratch_9 = in25; \
1671 0 : in25 = GF_MUL( in25, 1 ); \
1672 0 : scratch_10 = in26; \
1673 0 : in26 = GF_MUL( in26, 1 ); \
1674 0 : scratch_11 = in27; \
1675 0 : in27 = GF_MUL( in27, 1 ); \
1676 0 : scratch_12 = in28; \
1677 0 : in28 = GF_MUL( in28, 1 ); \
1678 0 : scratch_13 = in29; \
1679 0 : in29 = GF_MUL( in29, 1 ); \
1680 0 : scratch_14 = in30; \
1681 0 : in30 = GF_MUL( in30, 1 ); \
1682 0 : GF_MUL22( in23, in31, 1, 11, 1, 10 ); \
1683 0 : scratch_7 = in23; \
1684 0 : in23 = GF_MUL( in23, 1 ); \
1685 0 : FD_REEDSOL_GENERATE_IFFT( 4, 16, in16, in17, in18, in19 ); \
1686 0 : in23 = GF_ADD( GF_MUL( in19, 1 ), in23 ); \
1687 0 : scratch_3 = in23; \
1688 0 : in23 = GF_MUL( in23, 1 ); \
1689 0 : GF_MUL22( in20, in21, 21, 20, 1, 1 ); \
1690 0 : in23 = GF_ADD( GF_MUL( in21, 1 ), in23 ); \
1691 0 : GF_MUL22( in22, in23, 1, 22, 1, 1 ); \
1692 0 : GF_MUL22( in20, in22, 127, 126, 1, 1 ); \
1693 0 : in21 = GF_MUL( in21, 1 ); \
1694 0 : in21 = GF_ADD( GF_MUL( scratch_3, 126 ), in21 ); \
1695 0 : GF_MUL22( in16, in20, 96, 97, 1, 1 ); \
1696 0 : GF_MUL22( in17, in21, 96, 97, 1, 1 ); \
1697 0 : GF_MUL22( in18, in22, 96, 97, 1, 1 ); \
1698 0 : in19 = GF_MUL( in19, 1 ); \
1699 0 : in19 = GF_ADD( GF_MUL( scratch_7, 97 ), in19 ); \
1700 0 : in24 = GF_ADD( GF_MUL( in16, 1 ), in24 ); \
1701 0 : in25 = GF_ADD( GF_MUL( in17, 1 ), in25 ); \
1702 0 : in26 = GF_ADD( GF_MUL( in18, 1 ), in26 ); \
1703 0 : in27 = GF_ADD( GF_MUL( in19, 1 ), in27 ); \
1704 0 : in28 = GF_ADD( GF_MUL( in20, 1 ), in28 ); \
1705 0 : in29 = GF_ADD( GF_MUL( in21, 1 ), in29 ); \
1706 0 : in30 = GF_ADD( GF_MUL( in22, 1 ), in30 ); \
1707 0 : FD_REEDSOL_GENERATE_FFT( 8, 24, in24, in25, in26, in27, in28, in29, in30, in31 ); \
1708 0 : in16 = GF_MUL( in16, 1 ); \
1709 0 : in16 = GF_ADD( GF_MUL( scratch_8, 11 ), in16 ); \
1710 0 : in17 = GF_MUL( in17, 1 ); \
1711 0 : in17 = GF_ADD( GF_MUL( scratch_9, 11 ), in17 ); \
1712 0 : in18 = GF_MUL( in18, 1 ); \
1713 0 : in18 = GF_ADD( GF_MUL( scratch_10, 11 ), in18 ); \
1714 0 : in19 = GF_MUL( in19, 1 ); \
1715 0 : in19 = GF_ADD( GF_MUL( scratch_11, 11 ), in19 ); \
1716 0 : in20 = GF_MUL( in20, 1 ); \
1717 0 : in20 = GF_ADD( GF_MUL( scratch_12, 11 ), in20 ); \
1718 0 : in21 = GF_MUL( in21, 1 ); \
1719 0 : in21 = GF_ADD( GF_MUL( scratch_13, 11 ), in21 ); \
1720 0 : in22 = GF_MUL( in22, 1 ); \
1721 0 : in22 = GF_ADD( GF_MUL( scratch_14, 11 ), in22 ); \
1722 0 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
1723 0 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
1724 0 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
1725 0 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
1726 0 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
1727 0 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
1728 0 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
1729 0 : in07 = GF_MUL( in07, 1 ); \
1730 0 : in07 = GF_ADD( GF_MUL( scratch_23, 0 ), in07 ); \
1731 0 : in08 = GF_MUL( in08, 1 ); \
1732 0 : in08 = GF_ADD( GF_MUL( scratch_24, 0 ), in08 ); \
1733 0 : in09 = GF_MUL( in09, 1 ); \
1734 0 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1735 0 : in10 = GF_MUL( in10, 1 ); \
1736 0 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1737 0 : in11 = GF_MUL( in11, 1 ); \
1738 0 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1739 0 : in12 = GF_MUL( in12, 1 ); \
1740 0 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1741 0 : in13 = GF_MUL( in13, 1 ); \
1742 0 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1743 0 : in14 = GF_MUL( in14, 1 ); \
1744 0 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1745 0 : in15 = GF_MUL( in15, 1 ); \
1746 0 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1747 0 : } while( 0 )
1748 :
1749 : void fd_reedsol_ppt_32_24( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1750 : #define FD_REEDSOL_PPT_IMPL_32_24( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
1751 : in29, in30, in31) \
1752 0 : do { \
1753 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31, scratch_8, scratch_9; \
1754 0 : scratch_24 = in24; \
1755 0 : in24 = GF_MUL( in24, 1 ); \
1756 0 : scratch_25 = in25; \
1757 0 : in25 = GF_MUL( in25, 1 ); \
1758 0 : scratch_26 = in26; \
1759 0 : in26 = GF_MUL( in26, 1 ); \
1760 0 : scratch_27 = in27; \
1761 0 : in27 = GF_MUL( in27, 1 ); \
1762 0 : scratch_28 = in28; \
1763 0 : in28 = GF_MUL( in28, 1 ); \
1764 0 : scratch_29 = in29; \
1765 0 : in29 = GF_MUL( in29, 1 ); \
1766 0 : scratch_30 = in30; \
1767 0 : in30 = GF_MUL( in30, 1 ); \
1768 0 : scratch_31 = in31; \
1769 0 : in31 = GF_MUL( in31, 1 ); \
1770 0 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1771 0 : in24 = GF_ADD( GF_MUL( in08, 1 ), in24 ); \
1772 0 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
1773 0 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1774 0 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1775 0 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1776 0 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1777 0 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1778 0 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1779 0 : scratch_8 = in24; \
1780 0 : in24 = GF_MUL( in24, 1 ); \
1781 0 : scratch_9 = in25; \
1782 0 : in25 = GF_MUL( in25, 1 ); \
1783 0 : scratch_10 = in26; \
1784 0 : in26 = GF_MUL( in26, 1 ); \
1785 0 : scratch_11 = in27; \
1786 0 : in27 = GF_MUL( in27, 1 ); \
1787 0 : scratch_12 = in28; \
1788 0 : in28 = GF_MUL( in28, 1 ); \
1789 0 : scratch_13 = in29; \
1790 0 : in29 = GF_MUL( in29, 1 ); \
1791 0 : scratch_14 = in30; \
1792 0 : in30 = GF_MUL( in30, 1 ); \
1793 0 : scratch_15 = in31; \
1794 0 : in31 = GF_MUL( in31, 1 ); \
1795 0 : FD_REEDSOL_GENERATE_IFFT( 8, 16, in16, in17, in18, in19, in20, in21, in22, in23 ); \
1796 0 : in24 = GF_ADD( GF_MUL( in16, 1 ), in24 ); \
1797 0 : in25 = GF_ADD( GF_MUL( in17, 1 ), in25 ); \
1798 0 : in26 = GF_ADD( GF_MUL( in18, 1 ), in26 ); \
1799 0 : in27 = GF_ADD( GF_MUL( in19, 1 ), in27 ); \
1800 0 : in28 = GF_ADD( GF_MUL( in20, 1 ), in28 ); \
1801 0 : in29 = GF_ADD( GF_MUL( in21, 1 ), in29 ); \
1802 0 : in30 = GF_ADD( GF_MUL( in22, 1 ), in30 ); \
1803 0 : in31 = GF_ADD( GF_MUL( in23, 1 ), in31 ); \
1804 0 : FD_REEDSOL_GENERATE_FFT( 8, 24, in24, in25, in26, in27, in28, in29, in30, in31 ); \
1805 0 : in16 = GF_MUL( in16, 1 ); \
1806 0 : in16 = GF_ADD( GF_MUL( scratch_8, 11 ), in16 ); \
1807 0 : in17 = GF_MUL( in17, 1 ); \
1808 0 : in17 = GF_ADD( GF_MUL( scratch_9, 11 ), in17 ); \
1809 0 : in18 = GF_MUL( in18, 1 ); \
1810 0 : in18 = GF_ADD( GF_MUL( scratch_10, 11 ), in18 ); \
1811 0 : in19 = GF_MUL( in19, 1 ); \
1812 0 : in19 = GF_ADD( GF_MUL( scratch_11, 11 ), in19 ); \
1813 0 : in20 = GF_MUL( in20, 1 ); \
1814 0 : in20 = GF_ADD( GF_MUL( scratch_12, 11 ), in20 ); \
1815 0 : in21 = GF_MUL( in21, 1 ); \
1816 0 : in21 = GF_ADD( GF_MUL( scratch_13, 11 ), in21 ); \
1817 0 : in22 = GF_MUL( in22, 1 ); \
1818 0 : in22 = GF_ADD( GF_MUL( scratch_14, 11 ), in22 ); \
1819 0 : in23 = GF_MUL( in23, 1 ); \
1820 0 : in23 = GF_ADD( GF_MUL( scratch_15, 11 ), in23 ); \
1821 0 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
1822 0 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
1823 0 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
1824 0 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
1825 0 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
1826 0 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
1827 0 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
1828 0 : GF_MUL22( in07, in23, 1, 0, 1, 1 ); \
1829 0 : in08 = GF_MUL( in08, 1 ); \
1830 0 : in08 = GF_ADD( GF_MUL( scratch_24, 0 ), in08 ); \
1831 0 : in09 = GF_MUL( in09, 1 ); \
1832 0 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1833 0 : in10 = GF_MUL( in10, 1 ); \
1834 0 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1835 0 : in11 = GF_MUL( in11, 1 ); \
1836 0 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1837 0 : in12 = GF_MUL( in12, 1 ); \
1838 0 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1839 0 : in13 = GF_MUL( in13, 1 ); \
1840 0 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1841 0 : in14 = GF_MUL( in14, 1 ); \
1842 0 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1843 0 : in15 = GF_MUL( in15, 1 ); \
1844 0 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1845 0 : } while( 0 )
1846 :
1847 : void fd_reedsol_ppt_32_25( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1848 : #define FD_REEDSOL_PPT_IMPL_32_25( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28 , \
1849 : in29, in30, in31) \
1850 0 : do { \
1851 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_2, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31, scratch_4, scratch_9; \
1852 0 : scratch_25 = in25; \
1853 0 : in25 = GF_MUL( in25, 1 ); \
1854 0 : scratch_26 = in26; \
1855 0 : in26 = GF_MUL( in26, 1 ); \
1856 0 : scratch_27 = in27; \
1857 0 : in27 = GF_MUL( in27, 1 ); \
1858 0 : scratch_28 = in28; \
1859 0 : in28 = GF_MUL( in28, 1 ); \
1860 0 : scratch_29 = in29; \
1861 0 : in29 = GF_MUL( in29, 1 ); \
1862 0 : scratch_30 = in30; \
1863 0 : in30 = GF_MUL( in30, 1 ); \
1864 0 : scratch_31 = in31; \
1865 0 : in31 = GF_MUL( in31, 1 ); \
1866 0 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1867 0 : in25 = GF_ADD( GF_MUL( in09, 1 ), in25 ); \
1868 0 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1869 0 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1870 0 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1871 0 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1872 0 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1873 0 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1874 0 : scratch_9 = in25; \
1875 0 : in25 = GF_MUL( in25, 1 ); \
1876 0 : scratch_10 = in26; \
1877 0 : in26 = GF_MUL( in26, 1 ); \
1878 0 : scratch_11 = in27; \
1879 0 : in27 = GF_MUL( in27, 1 ); \
1880 0 : scratch_12 = in28; \
1881 0 : in28 = GF_MUL( in28, 1 ); \
1882 0 : scratch_13 = in29; \
1883 0 : in29 = GF_MUL( in29, 1 ); \
1884 0 : scratch_14 = in30; \
1885 0 : in30 = GF_MUL( in30, 1 ); \
1886 0 : scratch_15 = in31; \
1887 0 : in31 = GF_MUL( in31, 1 ); \
1888 0 : FD_REEDSOL_GENERATE_IFFT( 8, 16, in16, in17, in18, in19, in20, in21, in22, in23 ); \
1889 0 : in25 = GF_ADD( GF_MUL( in17, 1 ), in25 ); \
1890 0 : in26 = GF_ADD( GF_MUL( in18, 1 ), in26 ); \
1891 0 : in27 = GF_ADD( GF_MUL( in19, 1 ), in27 ); \
1892 0 : in28 = GF_ADD( GF_MUL( in20, 1 ), in28 ); \
1893 0 : in29 = GF_ADD( GF_MUL( in21, 1 ), in29 ); \
1894 0 : in30 = GF_ADD( GF_MUL( in22, 1 ), in30 ); \
1895 0 : in31 = GF_ADD( GF_MUL( in23, 1 ), in31 ); \
1896 0 : scratch_4 = in28; \
1897 0 : in28 = GF_MUL( in28, 1 ); \
1898 0 : GF_MUL22( in25, in29, 1, 119, 1, 118 ); \
1899 0 : GF_MUL22( in26, in30, 1, 119, 1, 118 ); \
1900 0 : GF_MUL22( in27, in31, 1, 119, 1, 118 ); \
1901 0 : scratch_2 = in26; \
1902 0 : in26 = GF_MUL( in26, 1 ); \
1903 0 : GF_MUL22( in25, in27, 1, 100, 1, 101 ); \
1904 0 : GF_MUL22( in24, in25, 1, 24, 1, 1 ); \
1905 0 : in26 = GF_ADD( GF_MUL( in24, 1 ), in26 ); \
1906 0 : GF_MUL22( in26, in27, 1, 26, 1, 27 ); \
1907 0 : in24 = GF_MUL( in24, 1 ); \
1908 0 : in24 = GF_ADD( GF_MUL( scratch_2, 100 ), in24 ); \
1909 0 : in28 = GF_ADD( GF_MUL( in24, 1 ), in28 ); \
1910 0 : FD_REEDSOL_GENERATE_FFT( 4, 28, in28, in29, in30, in31 ); \
1911 0 : in24 = GF_MUL( in24, 1 ); \
1912 0 : in24 = GF_ADD( GF_MUL( scratch_4, 119 ), in24 ); \
1913 0 : GF_MUL22( in16, in24, 10, 11, 1, 1 ); \
1914 0 : in17 = GF_MUL( in17, 1 ); \
1915 0 : in17 = GF_ADD( GF_MUL( scratch_9, 11 ), in17 ); \
1916 0 : in18 = GF_MUL( in18, 1 ); \
1917 0 : in18 = GF_ADD( GF_MUL( scratch_10, 11 ), in18 ); \
1918 0 : in19 = GF_MUL( in19, 1 ); \
1919 0 : in19 = GF_ADD( GF_MUL( scratch_11, 11 ), in19 ); \
1920 0 : in20 = GF_MUL( in20, 1 ); \
1921 0 : in20 = GF_ADD( GF_MUL( scratch_12, 11 ), in20 ); \
1922 0 : in21 = GF_MUL( in21, 1 ); \
1923 0 : in21 = GF_ADD( GF_MUL( scratch_13, 11 ), in21 ); \
1924 0 : in22 = GF_MUL( in22, 1 ); \
1925 0 : in22 = GF_ADD( GF_MUL( scratch_14, 11 ), in22 ); \
1926 0 : in23 = GF_MUL( in23, 1 ); \
1927 0 : in23 = GF_ADD( GF_MUL( scratch_15, 11 ), in23 ); \
1928 0 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
1929 0 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
1930 0 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
1931 0 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
1932 0 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
1933 0 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
1934 0 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
1935 0 : GF_MUL22( in07, in23, 1, 0, 1, 1 ); \
1936 0 : GF_MUL22( in08, in24, 1, 0, 1, 1 ); \
1937 0 : in09 = GF_MUL( in09, 1 ); \
1938 0 : in09 = GF_ADD( GF_MUL( scratch_25, 0 ), in09 ); \
1939 0 : in10 = GF_MUL( in10, 1 ); \
1940 0 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
1941 0 : in11 = GF_MUL( in11, 1 ); \
1942 0 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
1943 0 : in12 = GF_MUL( in12, 1 ); \
1944 0 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
1945 0 : in13 = GF_MUL( in13, 1 ); \
1946 0 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
1947 0 : in14 = GF_MUL( in14, 1 ); \
1948 0 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
1949 0 : in15 = GF_MUL( in15, 1 ); \
1950 0 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
1951 0 : } while( 0 )
1952 :
1953 : void fd_reedsol_ppt_32_26( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
1954 : #define FD_REEDSOL_PPT_IMPL_32_26( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, \
1955 : in29, in30, in31) \
1956 0 : do { \
1957 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_2, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31, scratch_4, scratch_5; \
1958 0 : scratch_26 = in26; \
1959 0 : in26 = GF_MUL( in26, 1 ); \
1960 0 : scratch_27 = in27; \
1961 0 : in27 = GF_MUL( in27, 1 ); \
1962 0 : scratch_28 = in28; \
1963 0 : in28 = GF_MUL( in28, 1 ); \
1964 0 : scratch_29 = in29; \
1965 0 : in29 = GF_MUL( in29, 1 ); \
1966 0 : scratch_30 = in30; \
1967 0 : in30 = GF_MUL( in30, 1 ); \
1968 0 : scratch_31 = in31; \
1969 0 : in31 = GF_MUL( in31, 1 ); \
1970 0 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
1971 0 : in26 = GF_ADD( GF_MUL( in10, 1 ), in26 ); \
1972 0 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
1973 0 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
1974 0 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
1975 0 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
1976 0 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
1977 0 : scratch_10 = in26; \
1978 0 : in26 = GF_MUL( in26, 1 ); \
1979 0 : scratch_11 = in27; \
1980 0 : in27 = GF_MUL( in27, 1 ); \
1981 0 : scratch_12 = in28; \
1982 0 : in28 = GF_MUL( in28, 1 ); \
1983 0 : scratch_13 = in29; \
1984 0 : in29 = GF_MUL( in29, 1 ); \
1985 0 : scratch_14 = in30; \
1986 0 : in30 = GF_MUL( in30, 1 ); \
1987 0 : scratch_15 = in31; \
1988 0 : in31 = GF_MUL( in31, 1 ); \
1989 0 : FD_REEDSOL_GENERATE_IFFT( 8, 16, in16, in17, in18, in19, in20, in21, in22, in23 ); \
1990 0 : in26 = GF_ADD( GF_MUL( in18, 1 ), in26 ); \
1991 0 : in27 = GF_ADD( GF_MUL( in19, 1 ), in27 ); \
1992 0 : in28 = GF_ADD( GF_MUL( in20, 1 ), in28 ); \
1993 0 : in29 = GF_ADD( GF_MUL( in21, 1 ), in29 ); \
1994 0 : in30 = GF_ADD( GF_MUL( in22, 1 ), in30 ); \
1995 0 : in31 = GF_ADD( GF_MUL( in23, 1 ), in31 ); \
1996 0 : scratch_4 = in28; \
1997 0 : in28 = GF_MUL( in28, 1 ); \
1998 0 : scratch_5 = in29; \
1999 0 : in29 = GF_MUL( in29, 1 ); \
2000 0 : GF_MUL22( in26, in30, 1, 119, 1, 118 ); \
2001 0 : GF_MUL22( in27, in31, 1, 119, 1, 118 ); \
2002 0 : scratch_2 = in26; \
2003 0 : in26 = GF_MUL( in26, 1 ); \
2004 0 : scratch_3 = in27; \
2005 0 : in27 = GF_MUL( in27, 1 ); \
2006 0 : GF_MUL22( in24, in25, 25, 24, 1, 1 ); \
2007 0 : in26 = GF_ADD( GF_MUL( in24, 1 ), in26 ); \
2008 0 : in27 = GF_ADD( GF_MUL( in25, 1 ), in27 ); \
2009 0 : GF_MUL22( in26, in27, 1, 26, 1, 27 ); \
2010 0 : in24 = GF_MUL( in24, 1 ); \
2011 0 : in24 = GF_ADD( GF_MUL( scratch_2, 100 ), in24 ); \
2012 0 : in25 = GF_MUL( in25, 1 ); \
2013 0 : in25 = GF_ADD( GF_MUL( scratch_3, 100 ), in25 ); \
2014 0 : in28 = GF_ADD( GF_MUL( in24, 1 ), in28 ); \
2015 0 : in29 = GF_ADD( GF_MUL( in25, 1 ), in29 ); \
2016 0 : FD_REEDSOL_GENERATE_FFT( 4, 28, in28, in29, in30, in31 ); \
2017 0 : in24 = GF_MUL( in24, 1 ); \
2018 0 : in24 = GF_ADD( GF_MUL( scratch_4, 119 ), in24 ); \
2019 0 : in25 = GF_MUL( in25, 1 ); \
2020 0 : in25 = GF_ADD( GF_MUL( scratch_5, 119 ), in25 ); \
2021 0 : GF_MUL22( in16, in24, 10, 11, 1, 1 ); \
2022 0 : GF_MUL22( in17, in25, 10, 11, 1, 1 ); \
2023 0 : in18 = GF_MUL( in18, 1 ); \
2024 0 : in18 = GF_ADD( GF_MUL( scratch_10, 11 ), in18 ); \
2025 0 : in19 = GF_MUL( in19, 1 ); \
2026 0 : in19 = GF_ADD( GF_MUL( scratch_11, 11 ), in19 ); \
2027 0 : in20 = GF_MUL( in20, 1 ); \
2028 0 : in20 = GF_ADD( GF_MUL( scratch_12, 11 ), in20 ); \
2029 0 : in21 = GF_MUL( in21, 1 ); \
2030 0 : in21 = GF_ADD( GF_MUL( scratch_13, 11 ), in21 ); \
2031 0 : in22 = GF_MUL( in22, 1 ); \
2032 0 : in22 = GF_ADD( GF_MUL( scratch_14, 11 ), in22 ); \
2033 0 : in23 = GF_MUL( in23, 1 ); \
2034 0 : in23 = GF_ADD( GF_MUL( scratch_15, 11 ), in23 ); \
2035 0 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
2036 0 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
2037 0 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
2038 0 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
2039 0 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
2040 0 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
2041 0 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
2042 0 : GF_MUL22( in07, in23, 1, 0, 1, 1 ); \
2043 0 : GF_MUL22( in08, in24, 1, 0, 1, 1 ); \
2044 0 : GF_MUL22( in09, in25, 1, 0, 1, 1 ); \
2045 0 : in10 = GF_MUL( in10, 1 ); \
2046 0 : in10 = GF_ADD( GF_MUL( scratch_26, 0 ), in10 ); \
2047 0 : in11 = GF_MUL( in11, 1 ); \
2048 0 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
2049 0 : in12 = GF_MUL( in12, 1 ); \
2050 0 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
2051 0 : in13 = GF_MUL( in13, 1 ); \
2052 0 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
2053 0 : in14 = GF_MUL( in14, 1 ); \
2054 0 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
2055 0 : in15 = GF_MUL( in15, 1 ); \
2056 0 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
2057 0 : } while( 0 )
2058 :
2059 : void fd_reedsol_ppt_32_27( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
2060 : #define FD_REEDSOL_PPT_IMPL_32_27( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, \
2061 : in25, in26, in27, in28, in29, in30, in31) \
2062 0 : do { \
2063 0 : gf_t scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31, scratch_4, scratch_5, scratch_6; \
2064 0 : scratch_27 = in27; \
2065 0 : in27 = GF_MUL( in27, 1 ); \
2066 0 : scratch_28 = in28; \
2067 0 : in28 = GF_MUL( in28, 1 ); \
2068 0 : scratch_29 = in29; \
2069 0 : in29 = GF_MUL( in29, 1 ); \
2070 0 : scratch_30 = in30; \
2071 0 : in30 = GF_MUL( in30, 1 ); \
2072 0 : scratch_31 = in31; \
2073 0 : in31 = GF_MUL( in31, 1 ); \
2074 0 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
2075 0 : in27 = GF_ADD( GF_MUL( in11, 1 ), in27 ); \
2076 0 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
2077 0 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
2078 0 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
2079 0 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
2080 0 : scratch_11 = in27; \
2081 0 : in27 = GF_MUL( in27, 1 ); \
2082 0 : scratch_12 = in28; \
2083 0 : in28 = GF_MUL( in28, 1 ); \
2084 0 : scratch_13 = in29; \
2085 0 : in29 = GF_MUL( in29, 1 ); \
2086 0 : scratch_14 = in30; \
2087 0 : in30 = GF_MUL( in30, 1 ); \
2088 0 : scratch_15 = in31; \
2089 0 : in31 = GF_MUL( in31, 1 ); \
2090 0 : FD_REEDSOL_GENERATE_IFFT( 8, 16, in16, in17, in18, in19, in20, in21, in22, in23 ); \
2091 0 : in27 = GF_ADD( GF_MUL( in19, 1 ), in27 ); \
2092 0 : in28 = GF_ADD( GF_MUL( in20, 1 ), in28 ); \
2093 0 : in29 = GF_ADD( GF_MUL( in21, 1 ), in29 ); \
2094 0 : in30 = GF_ADD( GF_MUL( in22, 1 ), in30 ); \
2095 0 : in31 = GF_ADD( GF_MUL( in23, 1 ), in31 ); \
2096 0 : scratch_4 = in28; \
2097 0 : in28 = GF_MUL( in28, 1 ); \
2098 0 : scratch_5 = in29; \
2099 0 : in29 = GF_MUL( in29, 1 ); \
2100 0 : scratch_6 = in30; \
2101 0 : in30 = GF_MUL( in30, 1 ); \
2102 0 : GF_MUL22( in27, in31, 1, 119, 1, 118 ); \
2103 0 : scratch_3 = in27; \
2104 0 : in27 = GF_MUL( in27, 1 ); \
2105 0 : GF_MUL22( in24, in25, 25, 24, 1, 1 ); \
2106 0 : in27 = GF_ADD( GF_MUL( in25, 1 ), in27 ); \
2107 0 : GF_MUL22( in26, in27, 1, 26, 1, 1 ); \
2108 0 : GF_MUL22( in24, in26, 101, 100, 1, 1 ); \
2109 0 : in25 = GF_MUL( in25, 1 ); \
2110 0 : in25 = GF_ADD( GF_MUL( scratch_3, 100 ), in25 ); \
2111 0 : in28 = GF_ADD( GF_MUL( in24, 1 ), in28 ); \
2112 0 : in29 = GF_ADD( GF_MUL( in25, 1 ), in29 ); \
2113 0 : in30 = GF_ADD( GF_MUL( in26, 1 ), in30 ); \
2114 0 : FD_REEDSOL_GENERATE_FFT( 4, 28, in28, in29, in30, in31 ); \
2115 0 : in24 = GF_MUL( in24, 1 ); \
2116 0 : in24 = GF_ADD( GF_MUL( scratch_4, 119 ), in24 ); \
2117 0 : in25 = GF_MUL( in25, 1 ); \
2118 0 : in25 = GF_ADD( GF_MUL( scratch_5, 119 ), in25 ); \
2119 0 : in26 = GF_MUL( in26, 1 ); \
2120 0 : in26 = GF_ADD( GF_MUL( scratch_6, 119 ), in26 ); \
2121 0 : GF_MUL22( in16, in24, 10, 11, 1, 1 ); \
2122 0 : GF_MUL22( in17, in25, 10, 11, 1, 1 ); \
2123 0 : GF_MUL22( in18, in26, 10, 11, 1, 1 ); \
2124 0 : in19 = GF_MUL( in19, 1 ); \
2125 0 : in19 = GF_ADD( GF_MUL( scratch_11, 11 ), in19 ); \
2126 0 : in20 = GF_MUL( in20, 1 ); \
2127 0 : in20 = GF_ADD( GF_MUL( scratch_12, 11 ), in20 ); \
2128 0 : in21 = GF_MUL( in21, 1 ); \
2129 0 : in21 = GF_ADD( GF_MUL( scratch_13, 11 ), in21 ); \
2130 0 : in22 = GF_MUL( in22, 1 ); \
2131 0 : in22 = GF_ADD( GF_MUL( scratch_14, 11 ), in22 ); \
2132 0 : in23 = GF_MUL( in23, 1 ); \
2133 0 : in23 = GF_ADD( GF_MUL( scratch_15, 11 ), in23 ); \
2134 0 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
2135 0 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
2136 0 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
2137 0 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
2138 0 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
2139 0 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
2140 0 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
2141 0 : GF_MUL22( in07, in23, 1, 0, 1, 1 ); \
2142 0 : GF_MUL22( in08, in24, 1, 0, 1, 1 ); \
2143 0 : GF_MUL22( in09, in25, 1, 0, 1, 1 ); \
2144 0 : GF_MUL22( in10, in26, 1, 0, 1, 1 ); \
2145 0 : in11 = GF_MUL( in11, 1 ); \
2146 0 : in11 = GF_ADD( GF_MUL( scratch_27, 0 ), in11 ); \
2147 0 : in12 = GF_MUL( in12, 1 ); \
2148 0 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
2149 0 : in13 = GF_MUL( in13, 1 ); \
2150 0 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
2151 0 : in14 = GF_MUL( in14, 1 ); \
2152 0 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
2153 0 : in15 = GF_MUL( in15, 1 ); \
2154 0 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
2155 0 : } while( 0 )
2156 :
2157 : void fd_reedsol_ppt_32_28( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
2158 : #define FD_REEDSOL_PPT_IMPL_32_28( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, \
2159 : in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31) \
2160 0 : do { \
2161 0 : gf_t scratch_12, scratch_13, scratch_14, scratch_15, scratch_28, scratch_29, scratch_30, scratch_31, scratch_4, scratch_5, scratch_6, scratch_7; \
2162 0 : scratch_28 = in28; \
2163 0 : in28 = GF_MUL( in28, 1 ); \
2164 0 : scratch_29 = in29; \
2165 0 : in29 = GF_MUL( in29, 1 ); \
2166 0 : scratch_30 = in30; \
2167 0 : in30 = GF_MUL( in30, 1 ); \
2168 0 : scratch_31 = in31; \
2169 0 : in31 = GF_MUL( in31, 1 ); \
2170 0 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
2171 0 : in28 = GF_ADD( GF_MUL( in12, 1 ), in28 ); \
2172 0 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
2173 0 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
2174 0 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
2175 0 : scratch_12 = in28; \
2176 0 : in28 = GF_MUL( in28, 1 ); \
2177 0 : scratch_13 = in29; \
2178 0 : in29 = GF_MUL( in29, 1 ); \
2179 0 : scratch_14 = in30; \
2180 0 : in30 = GF_MUL( in30, 1 ); \
2181 0 : scratch_15 = in31; \
2182 0 : in31 = GF_MUL( in31, 1 ); \
2183 0 : FD_REEDSOL_GENERATE_IFFT( 8, 16, in16, in17, in18, in19, in20, in21, in22, in23 ); \
2184 0 : in28 = GF_ADD( GF_MUL( in20, 1 ), in28 ); \
2185 0 : in29 = GF_ADD( GF_MUL( in21, 1 ), in29 ); \
2186 0 : in30 = GF_ADD( GF_MUL( in22, 1 ), in30 ); \
2187 0 : in31 = GF_ADD( GF_MUL( in23, 1 ), in31 ); \
2188 0 : scratch_4 = in28; \
2189 0 : in28 = GF_MUL( in28, 1 ); \
2190 0 : scratch_5 = in29; \
2191 0 : in29 = GF_MUL( in29, 1 ); \
2192 0 : scratch_6 = in30; \
2193 0 : in30 = GF_MUL( in30, 1 ); \
2194 0 : scratch_7 = in31; \
2195 0 : in31 = GF_MUL( in31, 1 ); \
2196 0 : FD_REEDSOL_GENERATE_IFFT( 4, 24, in24, in25, in26, in27 ); \
2197 0 : in28 = GF_ADD( GF_MUL( in24, 1 ), in28 ); \
2198 0 : in29 = GF_ADD( GF_MUL( in25, 1 ), in29 ); \
2199 0 : in30 = GF_ADD( GF_MUL( in26, 1 ), in30 ); \
2200 0 : in31 = GF_ADD( GF_MUL( in27, 1 ), in31 ); \
2201 0 : FD_REEDSOL_GENERATE_FFT( 4, 28, in28, in29, in30, in31 ); \
2202 0 : in24 = GF_MUL( in24, 1 ); \
2203 0 : in24 = GF_ADD( GF_MUL( scratch_4, 119 ), in24 ); \
2204 0 : in25 = GF_MUL( in25, 1 ); \
2205 0 : in25 = GF_ADD( GF_MUL( scratch_5, 119 ), in25 ); \
2206 0 : in26 = GF_MUL( in26, 1 ); \
2207 0 : in26 = GF_ADD( GF_MUL( scratch_6, 119 ), in26 ); \
2208 0 : in27 = GF_MUL( in27, 1 ); \
2209 0 : in27 = GF_ADD( GF_MUL( scratch_7, 119 ), in27 ); \
2210 0 : GF_MUL22( in16, in24, 10, 11, 1, 1 ); \
2211 0 : GF_MUL22( in17, in25, 10, 11, 1, 1 ); \
2212 0 : GF_MUL22( in18, in26, 10, 11, 1, 1 ); \
2213 0 : GF_MUL22( in19, in27, 10, 11, 1, 1 ); \
2214 0 : in20 = GF_MUL( in20, 1 ); \
2215 0 : in20 = GF_ADD( GF_MUL( scratch_12, 11 ), in20 ); \
2216 0 : in21 = GF_MUL( in21, 1 ); \
2217 0 : in21 = GF_ADD( GF_MUL( scratch_13, 11 ), in21 ); \
2218 0 : in22 = GF_MUL( in22, 1 ); \
2219 0 : in22 = GF_ADD( GF_MUL( scratch_14, 11 ), in22 ); \
2220 0 : in23 = GF_MUL( in23, 1 ); \
2221 0 : in23 = GF_ADD( GF_MUL( scratch_15, 11 ), in23 ); \
2222 0 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
2223 0 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
2224 0 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
2225 0 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
2226 0 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
2227 0 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
2228 0 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
2229 0 : GF_MUL22( in07, in23, 1, 0, 1, 1 ); \
2230 0 : GF_MUL22( in08, in24, 1, 0, 1, 1 ); \
2231 0 : GF_MUL22( in09, in25, 1, 0, 1, 1 ); \
2232 0 : GF_MUL22( in10, in26, 1, 0, 1, 1 ); \
2233 0 : GF_MUL22( in11, in27, 1, 0, 1, 1 ); \
2234 0 : in12 = GF_MUL( in12, 1 ); \
2235 0 : in12 = GF_ADD( GF_MUL( scratch_28, 0 ), in12 ); \
2236 0 : in13 = GF_MUL( in13, 1 ); \
2237 0 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
2238 0 : in14 = GF_MUL( in14, 1 ); \
2239 0 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
2240 0 : in15 = GF_MUL( in15, 1 ); \
2241 0 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
2242 0 : } while( 0 )
2243 :
2244 : void fd_reedsol_ppt_32_29( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
2245 : #define FD_REEDSOL_PPT_IMPL_32_29( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17 , \
2246 : in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31) \
2247 0 : do { \
2248 0 : gf_t scratch_13, scratch_14, scratch_15, scratch_2, scratch_29, scratch_30, scratch_31, scratch_5, scratch_6, scratch_7; \
2249 0 : scratch_29 = in29; \
2250 0 : in29 = GF_MUL( in29, 1 ); \
2251 0 : scratch_30 = in30; \
2252 0 : in30 = GF_MUL( in30, 1 ); \
2253 0 : scratch_31 = in31; \
2254 0 : in31 = GF_MUL( in31, 1 ); \
2255 0 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
2256 0 : in29 = GF_ADD( GF_MUL( in13, 1 ), in29 ); \
2257 0 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
2258 0 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
2259 0 : scratch_13 = in29; \
2260 0 : in29 = GF_MUL( in29, 1 ); \
2261 0 : scratch_14 = in30; \
2262 0 : in30 = GF_MUL( in30, 1 ); \
2263 0 : scratch_15 = in31; \
2264 0 : in31 = GF_MUL( in31, 1 ); \
2265 0 : FD_REEDSOL_GENERATE_IFFT( 8, 16, in16, in17, in18, in19, in20, in21, in22, in23 ); \
2266 0 : in29 = GF_ADD( GF_MUL( in21, 1 ), in29 ); \
2267 0 : in30 = GF_ADD( GF_MUL( in22, 1 ), in30 ); \
2268 0 : in31 = GF_ADD( GF_MUL( in23, 1 ), in31 ); \
2269 0 : scratch_5 = in29; \
2270 0 : in29 = GF_MUL( in29, 1 ); \
2271 0 : scratch_6 = in30; \
2272 0 : in30 = GF_MUL( in30, 1 ); \
2273 0 : scratch_7 = in31; \
2274 0 : in31 = GF_MUL( in31, 1 ); \
2275 0 : FD_REEDSOL_GENERATE_IFFT( 4, 24, in24, in25, in26, in27 ); \
2276 0 : in29 = GF_ADD( GF_MUL( in25, 1 ), in29 ); \
2277 0 : in30 = GF_ADD( GF_MUL( in26, 1 ), in30 ); \
2278 0 : in31 = GF_ADD( GF_MUL( in27, 1 ), in31 ); \
2279 0 : scratch_2 = in30; \
2280 0 : in30 = GF_MUL( in30, 1 ); \
2281 0 : GF_MUL22( in29, in31, 1, 98, 1, 99 ); \
2282 0 : GF_MUL22( in28, in29, 1, 28, 1, 1 ); \
2283 0 : in30 = GF_ADD( GF_MUL( in28, 1 ), in30 ); \
2284 0 : GF_MUL22( in30, in31, 1, 30, 1, 31 ); \
2285 0 : in28 = GF_MUL( in28, 1 ); \
2286 0 : in28 = GF_ADD( GF_MUL( scratch_2, 98 ), in28 ); \
2287 0 : GF_MUL22( in24, in28, 118, 119, 1, 1 ); \
2288 0 : in25 = GF_MUL( in25, 1 ); \
2289 0 : in25 = GF_ADD( GF_MUL( scratch_5, 119 ), in25 ); \
2290 0 : in26 = GF_MUL( in26, 1 ); \
2291 0 : in26 = GF_ADD( GF_MUL( scratch_6, 119 ), in26 ); \
2292 0 : in27 = GF_MUL( in27, 1 ); \
2293 0 : in27 = GF_ADD( GF_MUL( scratch_7, 119 ), in27 ); \
2294 0 : GF_MUL22( in16, in24, 10, 11, 1, 1 ); \
2295 0 : GF_MUL22( in17, in25, 10, 11, 1, 1 ); \
2296 0 : GF_MUL22( in18, in26, 10, 11, 1, 1 ); \
2297 0 : GF_MUL22( in19, in27, 10, 11, 1, 1 ); \
2298 0 : GF_MUL22( in20, in28, 10, 11, 1, 1 ); \
2299 0 : in21 = GF_MUL( in21, 1 ); \
2300 0 : in21 = GF_ADD( GF_MUL( scratch_13, 11 ), in21 ); \
2301 0 : in22 = GF_MUL( in22, 1 ); \
2302 0 : in22 = GF_ADD( GF_MUL( scratch_14, 11 ), in22 ); \
2303 0 : in23 = GF_MUL( in23, 1 ); \
2304 0 : in23 = GF_ADD( GF_MUL( scratch_15, 11 ), in23 ); \
2305 0 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
2306 0 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
2307 0 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
2308 0 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
2309 0 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
2310 0 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
2311 0 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
2312 0 : GF_MUL22( in07, in23, 1, 0, 1, 1 ); \
2313 0 : GF_MUL22( in08, in24, 1, 0, 1, 1 ); \
2314 0 : GF_MUL22( in09, in25, 1, 0, 1, 1 ); \
2315 0 : GF_MUL22( in10, in26, 1, 0, 1, 1 ); \
2316 0 : GF_MUL22( in11, in27, 1, 0, 1, 1 ); \
2317 0 : GF_MUL22( in12, in28, 1, 0, 1, 1 ); \
2318 0 : in13 = GF_MUL( in13, 1 ); \
2319 0 : in13 = GF_ADD( GF_MUL( scratch_29, 0 ), in13 ); \
2320 0 : in14 = GF_MUL( in14, 1 ); \
2321 0 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
2322 0 : in15 = GF_MUL( in15, 1 ); \
2323 0 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
2324 0 : } while( 0 )
2325 :
2326 : void fd_reedsol_ppt_32_30( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
2327 : #define FD_REEDSOL_PPT_IMPL_32_30( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17 , \
2328 : in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31) \
2329 0 : do { \
2330 0 : gf_t scratch_14, scratch_15, scratch_2, scratch_3, scratch_30, scratch_31, scratch_6, scratch_7; \
2331 0 : scratch_30 = in30; \
2332 0 : in30 = GF_MUL( in30, 1 ); \
2333 0 : scratch_31 = in31; \
2334 0 : in31 = GF_MUL( in31, 1 ); \
2335 0 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
2336 0 : in30 = GF_ADD( GF_MUL( in14, 1 ), in30 ); \
2337 0 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
2338 0 : scratch_14 = in30; \
2339 0 : in30 = GF_MUL( in30, 1 ); \
2340 0 : scratch_15 = in31; \
2341 0 : in31 = GF_MUL( in31, 1 ); \
2342 0 : FD_REEDSOL_GENERATE_IFFT( 8, 16, in16, in17, in18, in19, in20, in21, in22, in23 ); \
2343 0 : in30 = GF_ADD( GF_MUL( in22, 1 ), in30 ); \
2344 0 : in31 = GF_ADD( GF_MUL( in23, 1 ), in31 ); \
2345 0 : scratch_6 = in30; \
2346 0 : in30 = GF_MUL( in30, 1 ); \
2347 0 : scratch_7 = in31; \
2348 0 : in31 = GF_MUL( in31, 1 ); \
2349 0 : FD_REEDSOL_GENERATE_IFFT( 4, 24, in24, in25, in26, in27 ); \
2350 0 : in30 = GF_ADD( GF_MUL( in26, 1 ), in30 ); \
2351 0 : in31 = GF_ADD( GF_MUL( in27, 1 ), in31 ); \
2352 0 : scratch_2 = in30; \
2353 0 : in30 = GF_MUL( in30, 1 ); \
2354 0 : scratch_3 = in31; \
2355 0 : in31 = GF_MUL( in31, 1 ); \
2356 0 : GF_MUL22( in28, in29, 29, 28, 1, 1 ); \
2357 0 : in30 = GF_ADD( GF_MUL( in28, 1 ), in30 ); \
2358 0 : in31 = GF_ADD( GF_MUL( in29, 1 ), in31 ); \
2359 0 : GF_MUL22( in30, in31, 1, 30, 1, 31 ); \
2360 0 : in28 = GF_MUL( in28, 1 ); \
2361 0 : in28 = GF_ADD( GF_MUL( scratch_2, 98 ), in28 ); \
2362 0 : in29 = GF_MUL( in29, 1 ); \
2363 0 : in29 = GF_ADD( GF_MUL( scratch_3, 98 ), in29 ); \
2364 0 : GF_MUL22( in24, in28, 118, 119, 1, 1 ); \
2365 0 : GF_MUL22( in25, in29, 118, 119, 1, 1 ); \
2366 0 : in26 = GF_MUL( in26, 1 ); \
2367 0 : in26 = GF_ADD( GF_MUL( scratch_6, 119 ), in26 ); \
2368 0 : in27 = GF_MUL( in27, 1 ); \
2369 0 : in27 = GF_ADD( GF_MUL( scratch_7, 119 ), in27 ); \
2370 0 : GF_MUL22( in16, in24, 10, 11, 1, 1 ); \
2371 0 : GF_MUL22( in17, in25, 10, 11, 1, 1 ); \
2372 0 : GF_MUL22( in18, in26, 10, 11, 1, 1 ); \
2373 0 : GF_MUL22( in19, in27, 10, 11, 1, 1 ); \
2374 0 : GF_MUL22( in20, in28, 10, 11, 1, 1 ); \
2375 0 : GF_MUL22( in21, in29, 10, 11, 1, 1 ); \
2376 0 : in22 = GF_MUL( in22, 1 ); \
2377 0 : in22 = GF_ADD( GF_MUL( scratch_14, 11 ), in22 ); \
2378 0 : in23 = GF_MUL( in23, 1 ); \
2379 0 : in23 = GF_ADD( GF_MUL( scratch_15, 11 ), in23 ); \
2380 0 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
2381 0 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
2382 0 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
2383 0 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
2384 0 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
2385 0 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
2386 0 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
2387 0 : GF_MUL22( in07, in23, 1, 0, 1, 1 ); \
2388 0 : GF_MUL22( in08, in24, 1, 0, 1, 1 ); \
2389 0 : GF_MUL22( in09, in25, 1, 0, 1, 1 ); \
2390 0 : GF_MUL22( in10, in26, 1, 0, 1, 1 ); \
2391 0 : GF_MUL22( in11, in27, 1, 0, 1, 1 ); \
2392 0 : GF_MUL22( in12, in28, 1, 0, 1, 1 ); \
2393 0 : GF_MUL22( in13, in29, 1, 0, 1, 1 ); \
2394 0 : in14 = GF_MUL( in14, 1 ); \
2395 0 : in14 = GF_ADD( GF_MUL( scratch_30, 0 ), in14 ); \
2396 0 : in15 = GF_MUL( in15, 1 ); \
2397 0 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
2398 0 : } while( 0 )
2399 :
2400 : void fd_reedsol_ppt_32_31( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
2401 : #define FD_REEDSOL_PPT_IMPL_32_31( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17 , \
2402 : in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31) \
2403 0 : do { \
2404 0 : gf_t scratch_15, scratch_3, scratch_31, scratch_7; \
2405 0 : scratch_31 = in31; \
2406 0 : in31 = GF_MUL( in31, 1 ); \
2407 0 : FD_REEDSOL_GENERATE_IFFT( 16, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15 ); \
2408 0 : in31 = GF_ADD( GF_MUL( in15, 1 ), in31 ); \
2409 0 : scratch_15 = in31; \
2410 0 : in31 = GF_MUL( in31, 1 ); \
2411 0 : FD_REEDSOL_GENERATE_IFFT( 8, 16, in16, in17, in18, in19, in20, in21, in22, in23 ); \
2412 0 : in31 = GF_ADD( GF_MUL( in23, 1 ), in31 ); \
2413 0 : scratch_7 = in31; \
2414 0 : in31 = GF_MUL( in31, 1 ); \
2415 0 : FD_REEDSOL_GENERATE_IFFT( 4, 24, in24, in25, in26, in27 ); \
2416 0 : in31 = GF_ADD( GF_MUL( in27, 1 ), in31 ); \
2417 0 : scratch_3 = in31; \
2418 0 : in31 = GF_MUL( in31, 1 ); \
2419 0 : GF_MUL22( in28, in29, 29, 28, 1, 1 ); \
2420 0 : in31 = GF_ADD( GF_MUL( in29, 1 ), in31 ); \
2421 0 : GF_MUL22( in30, in31, 1, 30, 1, 1 ); \
2422 0 : GF_MUL22( in28, in30, 99, 98, 1, 1 ); \
2423 0 : in29 = GF_MUL( in29, 1 ); \
2424 0 : in29 = GF_ADD( GF_MUL( scratch_3, 98 ), in29 ); \
2425 0 : GF_MUL22( in24, in28, 118, 119, 1, 1 ); \
2426 0 : GF_MUL22( in25, in29, 118, 119, 1, 1 ); \
2427 0 : GF_MUL22( in26, in30, 118, 119, 1, 1 ); \
2428 0 : in27 = GF_MUL( in27, 1 ); \
2429 0 : in27 = GF_ADD( GF_MUL( scratch_7, 119 ), in27 ); \
2430 0 : GF_MUL22( in16, in24, 10, 11, 1, 1 ); \
2431 0 : GF_MUL22( in17, in25, 10, 11, 1, 1 ); \
2432 0 : GF_MUL22( in18, in26, 10, 11, 1, 1 ); \
2433 0 : GF_MUL22( in19, in27, 10, 11, 1, 1 ); \
2434 0 : GF_MUL22( in20, in28, 10, 11, 1, 1 ); \
2435 0 : GF_MUL22( in21, in29, 10, 11, 1, 1 ); \
2436 0 : GF_MUL22( in22, in30, 10, 11, 1, 1 ); \
2437 0 : in23 = GF_MUL( in23, 1 ); \
2438 0 : in23 = GF_ADD( GF_MUL( scratch_15, 11 ), in23 ); \
2439 0 : GF_MUL22( in00, in16, 1, 0, 1, 1 ); \
2440 0 : GF_MUL22( in01, in17, 1, 0, 1, 1 ); \
2441 0 : GF_MUL22( in02, in18, 1, 0, 1, 1 ); \
2442 0 : GF_MUL22( in03, in19, 1, 0, 1, 1 ); \
2443 0 : GF_MUL22( in04, in20, 1, 0, 1, 1 ); \
2444 0 : GF_MUL22( in05, in21, 1, 0, 1, 1 ); \
2445 0 : GF_MUL22( in06, in22, 1, 0, 1, 1 ); \
2446 0 : GF_MUL22( in07, in23, 1, 0, 1, 1 ); \
2447 0 : GF_MUL22( in08, in24, 1, 0, 1, 1 ); \
2448 0 : GF_MUL22( in09, in25, 1, 0, 1, 1 ); \
2449 0 : GF_MUL22( in10, in26, 1, 0, 1, 1 ); \
2450 0 : GF_MUL22( in11, in27, 1, 0, 1, 1 ); \
2451 0 : GF_MUL22( in12, in28, 1, 0, 1, 1 ); \
2452 0 : GF_MUL22( in13, in29, 1, 0, 1, 1 ); \
2453 0 : GF_MUL22( in14, in30, 1, 0, 1, 1 ); \
2454 0 : in15 = GF_MUL( in15, 1 ); \
2455 0 : in15 = GF_ADD( GF_MUL( scratch_31, 0 ), in15 ); \
2456 0 : } while( 0 )
2457 :
2458 : void fd_reedsol_ppt_64_33( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
2459 : #define FD_REEDSOL_PPT_IMPL_64_33( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
2460 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
2461 0 : do { \
2462 0 : gf_t scratch_16, scratch_2, scratch_33, scratch_34, scratch_35, scratch_36, scratch_37, scratch_38, scratch_39, scratch_4, scratch_40, scratch_41, scratch_42, scratch_43, scratch_44, scratch_45; \
2463 0 : gf_t scratch_46, scratch_47, scratch_48, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_60, scratch_61; \
2464 0 : gf_t scratch_62, scratch_63, scratch_8; \
2465 0 : scratch_33 = in33; \
2466 0 : in33 = GF_MUL( in33, 1 ); \
2467 0 : scratch_34 = in34; \
2468 0 : in34 = GF_MUL( in34, 1 ); \
2469 0 : scratch_35 = in35; \
2470 0 : in35 = GF_MUL( in35, 1 ); \
2471 0 : scratch_36 = in36; \
2472 0 : in36 = GF_MUL( in36, 1 ); \
2473 0 : scratch_37 = in37; \
2474 0 : in37 = GF_MUL( in37, 1 ); \
2475 0 : scratch_38 = in38; \
2476 0 : in38 = GF_MUL( in38, 1 ); \
2477 0 : scratch_39 = in39; \
2478 0 : in39 = GF_MUL( in39, 1 ); \
2479 0 : scratch_40 = in40; \
2480 0 : in40 = GF_MUL( in40, 1 ); \
2481 0 : scratch_41 = in41; \
2482 0 : in41 = GF_MUL( in41, 1 ); \
2483 0 : scratch_42 = in42; \
2484 0 : in42 = GF_MUL( in42, 1 ); \
2485 0 : scratch_43 = in43; \
2486 0 : in43 = GF_MUL( in43, 1 ); \
2487 0 : scratch_44 = in44; \
2488 0 : in44 = GF_MUL( in44, 1 ); \
2489 0 : scratch_45 = in45; \
2490 0 : in45 = GF_MUL( in45, 1 ); \
2491 0 : scratch_46 = in46; \
2492 0 : in46 = GF_MUL( in46, 1 ); \
2493 0 : scratch_47 = in47; \
2494 0 : in47 = GF_MUL( in47, 1 ); \
2495 0 : scratch_48 = in48; \
2496 0 : in48 = GF_MUL( in48, 1 ); \
2497 0 : scratch_49 = in49; \
2498 0 : in49 = GF_MUL( in49, 1 ); \
2499 0 : scratch_50 = in50; \
2500 0 : in50 = GF_MUL( in50, 1 ); \
2501 0 : scratch_51 = in51; \
2502 0 : in51 = GF_MUL( in51, 1 ); \
2503 0 : scratch_52 = in52; \
2504 0 : in52 = GF_MUL( in52, 1 ); \
2505 0 : scratch_53 = in53; \
2506 0 : in53 = GF_MUL( in53, 1 ); \
2507 0 : scratch_54 = in54; \
2508 0 : in54 = GF_MUL( in54, 1 ); \
2509 0 : scratch_55 = in55; \
2510 0 : in55 = GF_MUL( in55, 1 ); \
2511 0 : scratch_56 = in56; \
2512 0 : in56 = GF_MUL( in56, 1 ); \
2513 0 : scratch_57 = in57; \
2514 0 : in57 = GF_MUL( in57, 1 ); \
2515 0 : scratch_58 = in58; \
2516 0 : in58 = GF_MUL( in58, 1 ); \
2517 0 : scratch_59 = in59; \
2518 0 : in59 = GF_MUL( in59, 1 ); \
2519 0 : scratch_60 = in60; \
2520 0 : in60 = GF_MUL( in60, 1 ); \
2521 0 : scratch_61 = in61; \
2522 0 : in61 = GF_MUL( in61, 1 ); \
2523 0 : scratch_62 = in62; \
2524 0 : in62 = GF_MUL( in62, 1 ); \
2525 0 : scratch_63 = in63; \
2526 0 : in63 = GF_MUL( in63, 1 ); \
2527 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
2528 0 : in33 = GF_ADD( GF_MUL( in01, 1 ), in33 ); \
2529 0 : in34 = GF_ADD( GF_MUL( in02, 1 ), in34 ); \
2530 0 : in35 = GF_ADD( GF_MUL( in03, 1 ), in35 ); \
2531 0 : in36 = GF_ADD( GF_MUL( in04, 1 ), in36 ); \
2532 0 : in37 = GF_ADD( GF_MUL( in05, 1 ), in37 ); \
2533 0 : in38 = GF_ADD( GF_MUL( in06, 1 ), in38 ); \
2534 0 : in39 = GF_ADD( GF_MUL( in07, 1 ), in39 ); \
2535 0 : in40 = GF_ADD( GF_MUL( in08, 1 ), in40 ); \
2536 0 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
2537 0 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
2538 0 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
2539 0 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
2540 0 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
2541 0 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
2542 0 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
2543 0 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
2544 0 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
2545 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
2546 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
2547 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
2548 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
2549 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
2550 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
2551 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
2552 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
2553 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
2554 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
2555 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
2556 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
2557 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
2558 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
2559 0 : scratch_16 = in48; \
2560 0 : in48 = GF_MUL( in48, 1 ); \
2561 0 : GF_MUL22( in33, in49, 1, 71, 1, 70 ); \
2562 0 : GF_MUL22( in34, in50, 1, 71, 1, 70 ); \
2563 0 : GF_MUL22( in35, in51, 1, 71, 1, 70 ); \
2564 0 : GF_MUL22( in36, in52, 1, 71, 1, 70 ); \
2565 0 : GF_MUL22( in37, in53, 1, 71, 1, 70 ); \
2566 0 : GF_MUL22( in38, in54, 1, 71, 1, 70 ); \
2567 0 : GF_MUL22( in39, in55, 1, 71, 1, 70 ); \
2568 0 : GF_MUL22( in40, in56, 1, 71, 1, 70 ); \
2569 0 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
2570 0 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
2571 0 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
2572 0 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
2573 0 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
2574 0 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
2575 0 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
2576 0 : scratch_8 = in40; \
2577 0 : in40 = GF_MUL( in40, 1 ); \
2578 0 : GF_MUL22( in33, in41, 1, 174, 1, 175 ); \
2579 0 : GF_MUL22( in34, in42, 1, 174, 1, 175 ); \
2580 0 : GF_MUL22( in35, in43, 1, 174, 1, 175 ); \
2581 0 : GF_MUL22( in36, in44, 1, 174, 1, 175 ); \
2582 0 : GF_MUL22( in37, in45, 1, 174, 1, 175 ); \
2583 0 : GF_MUL22( in38, in46, 1, 174, 1, 175 ); \
2584 0 : GF_MUL22( in39, in47, 1, 174, 1, 175 ); \
2585 0 : scratch_4 = in36; \
2586 0 : in36 = GF_MUL( in36, 1 ); \
2587 0 : GF_MUL22( in33, in37, 1, 38, 1, 39 ); \
2588 0 : GF_MUL22( in34, in38, 1, 38, 1, 39 ); \
2589 0 : GF_MUL22( in35, in39, 1, 38, 1, 39 ); \
2590 0 : scratch_2 = in34; \
2591 0 : in34 = GF_MUL( in34, 1 ); \
2592 0 : GF_MUL22( in33, in35, 1, 237, 1, 236 ); \
2593 0 : GF_MUL22( in32, in33, 1, 32, 1, 1 ); \
2594 0 : in34 = GF_ADD( GF_MUL( in32, 1 ), in34 ); \
2595 0 : GF_MUL22( in34, in35, 1, 34, 1, 35 ); \
2596 0 : in32 = GF_MUL( in32, 1 ); \
2597 0 : in32 = GF_ADD( GF_MUL( scratch_2, 237 ), in32 ); \
2598 0 : in36 = GF_ADD( GF_MUL( in32, 1 ), in36 ); \
2599 0 : FD_REEDSOL_GENERATE_FFT( 4, 36, in36, in37, in38, in39 ); \
2600 0 : in32 = GF_MUL( in32, 1 ); \
2601 0 : in32 = GF_ADD( GF_MUL( scratch_4, 38 ), in32 ); \
2602 0 : in40 = GF_ADD( GF_MUL( in32, 1 ), in40 ); \
2603 0 : FD_REEDSOL_GENERATE_FFT( 8, 40, in40, in41, in42, in43, in44, in45, in46, in47 ); \
2604 0 : in32 = GF_MUL( in32, 1 ); \
2605 0 : in32 = GF_ADD( GF_MUL( scratch_8, 174 ), in32 ); \
2606 0 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
2607 0 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
2608 0 : in32 = GF_MUL( in32, 1 ); \
2609 0 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
2610 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
2611 0 : in01 = GF_MUL( in01, 1 ); \
2612 0 : in01 = GF_ADD( GF_MUL( scratch_33, 0 ), in01 ); \
2613 0 : in02 = GF_MUL( in02, 1 ); \
2614 0 : in02 = GF_ADD( GF_MUL( scratch_34, 0 ), in02 ); \
2615 0 : in03 = GF_MUL( in03, 1 ); \
2616 0 : in03 = GF_ADD( GF_MUL( scratch_35, 0 ), in03 ); \
2617 0 : in04 = GF_MUL( in04, 1 ); \
2618 0 : in04 = GF_ADD( GF_MUL( scratch_36, 0 ), in04 ); \
2619 0 : in05 = GF_MUL( in05, 1 ); \
2620 0 : in05 = GF_ADD( GF_MUL( scratch_37, 0 ), in05 ); \
2621 0 : in06 = GF_MUL( in06, 1 ); \
2622 0 : in06 = GF_ADD( GF_MUL( scratch_38, 0 ), in06 ); \
2623 0 : in07 = GF_MUL( in07, 1 ); \
2624 0 : in07 = GF_ADD( GF_MUL( scratch_39, 0 ), in07 ); \
2625 0 : in08 = GF_MUL( in08, 1 ); \
2626 0 : in08 = GF_ADD( GF_MUL( scratch_40, 0 ), in08 ); \
2627 0 : in09 = GF_MUL( in09, 1 ); \
2628 0 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
2629 0 : in10 = GF_MUL( in10, 1 ); \
2630 0 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
2631 0 : in11 = GF_MUL( in11, 1 ); \
2632 0 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
2633 0 : in12 = GF_MUL( in12, 1 ); \
2634 0 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
2635 0 : in13 = GF_MUL( in13, 1 ); \
2636 0 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
2637 0 : in14 = GF_MUL( in14, 1 ); \
2638 0 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
2639 0 : in15 = GF_MUL( in15, 1 ); \
2640 0 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
2641 0 : in16 = GF_MUL( in16, 1 ); \
2642 0 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
2643 0 : in17 = GF_MUL( in17, 1 ); \
2644 0 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
2645 0 : in18 = GF_MUL( in18, 1 ); \
2646 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
2647 0 : in19 = GF_MUL( in19, 1 ); \
2648 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
2649 0 : in20 = GF_MUL( in20, 1 ); \
2650 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
2651 0 : in21 = GF_MUL( in21, 1 ); \
2652 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
2653 0 : in22 = GF_MUL( in22, 1 ); \
2654 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
2655 0 : in23 = GF_MUL( in23, 1 ); \
2656 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
2657 0 : in24 = GF_MUL( in24, 1 ); \
2658 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
2659 0 : in25 = GF_MUL( in25, 1 ); \
2660 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
2661 0 : in26 = GF_MUL( in26, 1 ); \
2662 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
2663 0 : in27 = GF_MUL( in27, 1 ); \
2664 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
2665 0 : in28 = GF_MUL( in28, 1 ); \
2666 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
2667 0 : in29 = GF_MUL( in29, 1 ); \
2668 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
2669 0 : in30 = GF_MUL( in30, 1 ); \
2670 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
2671 0 : in31 = GF_MUL( in31, 1 ); \
2672 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
2673 0 : } while( 0 )
2674 :
2675 : void fd_reedsol_ppt_64_34( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
2676 : #define FD_REEDSOL_PPT_IMPL_64_34( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
2677 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
2678 0 : do { \
2679 0 : gf_t scratch_16, scratch_17, scratch_2, scratch_3, scratch_34, scratch_35, scratch_36, scratch_37, scratch_38, scratch_39, scratch_4, scratch_40, scratch_41, scratch_42, scratch_43, scratch_44; \
2680 0 : gf_t scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59; \
2681 0 : gf_t scratch_60, scratch_61, scratch_62, scratch_63, scratch_8, scratch_9; \
2682 0 : scratch_34 = in34; \
2683 0 : in34 = GF_MUL( in34, 1 ); \
2684 0 : scratch_35 = in35; \
2685 0 : in35 = GF_MUL( in35, 1 ); \
2686 0 : scratch_36 = in36; \
2687 0 : in36 = GF_MUL( in36, 1 ); \
2688 0 : scratch_37 = in37; \
2689 0 : in37 = GF_MUL( in37, 1 ); \
2690 0 : scratch_38 = in38; \
2691 0 : in38 = GF_MUL( in38, 1 ); \
2692 0 : scratch_39 = in39; \
2693 0 : in39 = GF_MUL( in39, 1 ); \
2694 0 : scratch_40 = in40; \
2695 0 : in40 = GF_MUL( in40, 1 ); \
2696 0 : scratch_41 = in41; \
2697 0 : in41 = GF_MUL( in41, 1 ); \
2698 0 : scratch_42 = in42; \
2699 0 : in42 = GF_MUL( in42, 1 ); \
2700 0 : scratch_43 = in43; \
2701 0 : in43 = GF_MUL( in43, 1 ); \
2702 0 : scratch_44 = in44; \
2703 0 : in44 = GF_MUL( in44, 1 ); \
2704 0 : scratch_45 = in45; \
2705 0 : in45 = GF_MUL( in45, 1 ); \
2706 0 : scratch_46 = in46; \
2707 0 : in46 = GF_MUL( in46, 1 ); \
2708 0 : scratch_47 = in47; \
2709 0 : in47 = GF_MUL( in47, 1 ); \
2710 0 : scratch_48 = in48; \
2711 0 : in48 = GF_MUL( in48, 1 ); \
2712 0 : scratch_49 = in49; \
2713 0 : in49 = GF_MUL( in49, 1 ); \
2714 0 : scratch_50 = in50; \
2715 0 : in50 = GF_MUL( in50, 1 ); \
2716 0 : scratch_51 = in51; \
2717 0 : in51 = GF_MUL( in51, 1 ); \
2718 0 : scratch_52 = in52; \
2719 0 : in52 = GF_MUL( in52, 1 ); \
2720 0 : scratch_53 = in53; \
2721 0 : in53 = GF_MUL( in53, 1 ); \
2722 0 : scratch_54 = in54; \
2723 0 : in54 = GF_MUL( in54, 1 ); \
2724 0 : scratch_55 = in55; \
2725 0 : in55 = GF_MUL( in55, 1 ); \
2726 0 : scratch_56 = in56; \
2727 0 : in56 = GF_MUL( in56, 1 ); \
2728 0 : scratch_57 = in57; \
2729 0 : in57 = GF_MUL( in57, 1 ); \
2730 0 : scratch_58 = in58; \
2731 0 : in58 = GF_MUL( in58, 1 ); \
2732 0 : scratch_59 = in59; \
2733 0 : in59 = GF_MUL( in59, 1 ); \
2734 0 : scratch_60 = in60; \
2735 0 : in60 = GF_MUL( in60, 1 ); \
2736 0 : scratch_61 = in61; \
2737 0 : in61 = GF_MUL( in61, 1 ); \
2738 0 : scratch_62 = in62; \
2739 0 : in62 = GF_MUL( in62, 1 ); \
2740 0 : scratch_63 = in63; \
2741 0 : in63 = GF_MUL( in63, 1 ); \
2742 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
2743 0 : in34 = GF_ADD( GF_MUL( in02, 1 ), in34 ); \
2744 0 : in35 = GF_ADD( GF_MUL( in03, 1 ), in35 ); \
2745 0 : in36 = GF_ADD( GF_MUL( in04, 1 ), in36 ); \
2746 0 : in37 = GF_ADD( GF_MUL( in05, 1 ), in37 ); \
2747 0 : in38 = GF_ADD( GF_MUL( in06, 1 ), in38 ); \
2748 0 : in39 = GF_ADD( GF_MUL( in07, 1 ), in39 ); \
2749 0 : in40 = GF_ADD( GF_MUL( in08, 1 ), in40 ); \
2750 0 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
2751 0 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
2752 0 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
2753 0 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
2754 0 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
2755 0 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
2756 0 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
2757 0 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
2758 0 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
2759 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
2760 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
2761 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
2762 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
2763 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
2764 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
2765 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
2766 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
2767 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
2768 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
2769 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
2770 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
2771 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
2772 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
2773 0 : scratch_16 = in48; \
2774 0 : in48 = GF_MUL( in48, 1 ); \
2775 0 : scratch_17 = in49; \
2776 0 : in49 = GF_MUL( in49, 1 ); \
2777 0 : GF_MUL22( in34, in50, 1, 71, 1, 70 ); \
2778 0 : GF_MUL22( in35, in51, 1, 71, 1, 70 ); \
2779 0 : GF_MUL22( in36, in52, 1, 71, 1, 70 ); \
2780 0 : GF_MUL22( in37, in53, 1, 71, 1, 70 ); \
2781 0 : GF_MUL22( in38, in54, 1, 71, 1, 70 ); \
2782 0 : GF_MUL22( in39, in55, 1, 71, 1, 70 ); \
2783 0 : GF_MUL22( in40, in56, 1, 71, 1, 70 ); \
2784 0 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
2785 0 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
2786 0 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
2787 0 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
2788 0 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
2789 0 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
2790 0 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
2791 0 : scratch_8 = in40; \
2792 0 : in40 = GF_MUL( in40, 1 ); \
2793 0 : scratch_9 = in41; \
2794 0 : in41 = GF_MUL( in41, 1 ); \
2795 0 : GF_MUL22( in34, in42, 1, 174, 1, 175 ); \
2796 0 : GF_MUL22( in35, in43, 1, 174, 1, 175 ); \
2797 0 : GF_MUL22( in36, in44, 1, 174, 1, 175 ); \
2798 0 : GF_MUL22( in37, in45, 1, 174, 1, 175 ); \
2799 0 : GF_MUL22( in38, in46, 1, 174, 1, 175 ); \
2800 0 : GF_MUL22( in39, in47, 1, 174, 1, 175 ); \
2801 0 : scratch_4 = in36; \
2802 0 : in36 = GF_MUL( in36, 1 ); \
2803 0 : scratch_5 = in37; \
2804 0 : in37 = GF_MUL( in37, 1 ); \
2805 0 : GF_MUL22( in34, in38, 1, 38, 1, 39 ); \
2806 0 : GF_MUL22( in35, in39, 1, 38, 1, 39 ); \
2807 0 : scratch_2 = in34; \
2808 0 : in34 = GF_MUL( in34, 1 ); \
2809 0 : scratch_3 = in35; \
2810 0 : in35 = GF_MUL( in35, 1 ); \
2811 0 : GF_MUL22( in32, in33, 33, 32, 1, 1 ); \
2812 0 : in34 = GF_ADD( GF_MUL( in32, 1 ), in34 ); \
2813 0 : in35 = GF_ADD( GF_MUL( in33, 1 ), in35 ); \
2814 0 : GF_MUL22( in34, in35, 1, 34, 1, 35 ); \
2815 0 : in32 = GF_MUL( in32, 1 ); \
2816 0 : in32 = GF_ADD( GF_MUL( scratch_2, 237 ), in32 ); \
2817 0 : in33 = GF_MUL( in33, 1 ); \
2818 0 : in33 = GF_ADD( GF_MUL( scratch_3, 237 ), in33 ); \
2819 0 : in36 = GF_ADD( GF_MUL( in32, 1 ), in36 ); \
2820 0 : in37 = GF_ADD( GF_MUL( in33, 1 ), in37 ); \
2821 0 : FD_REEDSOL_GENERATE_FFT( 4, 36, in36, in37, in38, in39 ); \
2822 0 : in32 = GF_MUL( in32, 1 ); \
2823 0 : in32 = GF_ADD( GF_MUL( scratch_4, 38 ), in32 ); \
2824 0 : in33 = GF_MUL( in33, 1 ); \
2825 0 : in33 = GF_ADD( GF_MUL( scratch_5, 38 ), in33 ); \
2826 0 : in40 = GF_ADD( GF_MUL( in32, 1 ), in40 ); \
2827 0 : in41 = GF_ADD( GF_MUL( in33, 1 ), in41 ); \
2828 0 : FD_REEDSOL_GENERATE_FFT( 8, 40, in40, in41, in42, in43, in44, in45, in46, in47 ); \
2829 0 : in32 = GF_MUL( in32, 1 ); \
2830 0 : in32 = GF_ADD( GF_MUL( scratch_8, 174 ), in32 ); \
2831 0 : in33 = GF_MUL( in33, 1 ); \
2832 0 : in33 = GF_ADD( GF_MUL( scratch_9, 174 ), in33 ); \
2833 0 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
2834 0 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
2835 0 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
2836 0 : in32 = GF_MUL( in32, 1 ); \
2837 0 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
2838 0 : in33 = GF_MUL( in33, 1 ); \
2839 0 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
2840 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
2841 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
2842 0 : in02 = GF_MUL( in02, 1 ); \
2843 0 : in02 = GF_ADD( GF_MUL( scratch_34, 0 ), in02 ); \
2844 0 : in03 = GF_MUL( in03, 1 ); \
2845 0 : in03 = GF_ADD( GF_MUL( scratch_35, 0 ), in03 ); \
2846 0 : in04 = GF_MUL( in04, 1 ); \
2847 0 : in04 = GF_ADD( GF_MUL( scratch_36, 0 ), in04 ); \
2848 0 : in05 = GF_MUL( in05, 1 ); \
2849 0 : in05 = GF_ADD( GF_MUL( scratch_37, 0 ), in05 ); \
2850 0 : in06 = GF_MUL( in06, 1 ); \
2851 0 : in06 = GF_ADD( GF_MUL( scratch_38, 0 ), in06 ); \
2852 0 : in07 = GF_MUL( in07, 1 ); \
2853 0 : in07 = GF_ADD( GF_MUL( scratch_39, 0 ), in07 ); \
2854 0 : in08 = GF_MUL( in08, 1 ); \
2855 0 : in08 = GF_ADD( GF_MUL( scratch_40, 0 ), in08 ); \
2856 0 : in09 = GF_MUL( in09, 1 ); \
2857 0 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
2858 0 : in10 = GF_MUL( in10, 1 ); \
2859 0 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
2860 0 : in11 = GF_MUL( in11, 1 ); \
2861 0 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
2862 0 : in12 = GF_MUL( in12, 1 ); \
2863 0 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
2864 0 : in13 = GF_MUL( in13, 1 ); \
2865 0 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
2866 0 : in14 = GF_MUL( in14, 1 ); \
2867 0 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
2868 0 : in15 = GF_MUL( in15, 1 ); \
2869 0 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
2870 0 : in16 = GF_MUL( in16, 1 ); \
2871 0 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
2872 0 : in17 = GF_MUL( in17, 1 ); \
2873 0 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
2874 0 : in18 = GF_MUL( in18, 1 ); \
2875 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
2876 0 : in19 = GF_MUL( in19, 1 ); \
2877 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
2878 0 : in20 = GF_MUL( in20, 1 ); \
2879 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
2880 0 : in21 = GF_MUL( in21, 1 ); \
2881 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
2882 0 : in22 = GF_MUL( in22, 1 ); \
2883 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
2884 0 : in23 = GF_MUL( in23, 1 ); \
2885 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
2886 0 : in24 = GF_MUL( in24, 1 ); \
2887 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
2888 0 : in25 = GF_MUL( in25, 1 ); \
2889 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
2890 0 : in26 = GF_MUL( in26, 1 ); \
2891 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
2892 0 : in27 = GF_MUL( in27, 1 ); \
2893 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
2894 0 : in28 = GF_MUL( in28, 1 ); \
2895 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
2896 0 : in29 = GF_MUL( in29, 1 ); \
2897 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
2898 0 : in30 = GF_MUL( in30, 1 ); \
2899 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
2900 0 : in31 = GF_MUL( in31, 1 ); \
2901 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
2902 0 : } while( 0 )
2903 :
2904 : void fd_reedsol_ppt_64_35( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
2905 : #define FD_REEDSOL_PPT_IMPL_64_35( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
2906 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
2907 0 : do { \
2908 0 : gf_t scratch_10, scratch_16, scratch_17, scratch_18, scratch_3, scratch_35, scratch_36, scratch_37, scratch_38, scratch_39, scratch_4, scratch_40, scratch_41, scratch_42, scratch_43, scratch_44; \
2909 0 : gf_t scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59; \
2910 0 : gf_t scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_8, scratch_9; \
2911 0 : scratch_35 = in35; \
2912 0 : in35 = GF_MUL( in35, 1 ); \
2913 0 : scratch_36 = in36; \
2914 0 : in36 = GF_MUL( in36, 1 ); \
2915 0 : scratch_37 = in37; \
2916 0 : in37 = GF_MUL( in37, 1 ); \
2917 0 : scratch_38 = in38; \
2918 0 : in38 = GF_MUL( in38, 1 ); \
2919 0 : scratch_39 = in39; \
2920 0 : in39 = GF_MUL( in39, 1 ); \
2921 0 : scratch_40 = in40; \
2922 0 : in40 = GF_MUL( in40, 1 ); \
2923 0 : scratch_41 = in41; \
2924 0 : in41 = GF_MUL( in41, 1 ); \
2925 0 : scratch_42 = in42; \
2926 0 : in42 = GF_MUL( in42, 1 ); \
2927 0 : scratch_43 = in43; \
2928 0 : in43 = GF_MUL( in43, 1 ); \
2929 0 : scratch_44 = in44; \
2930 0 : in44 = GF_MUL( in44, 1 ); \
2931 0 : scratch_45 = in45; \
2932 0 : in45 = GF_MUL( in45, 1 ); \
2933 0 : scratch_46 = in46; \
2934 0 : in46 = GF_MUL( in46, 1 ); \
2935 0 : scratch_47 = in47; \
2936 0 : in47 = GF_MUL( in47, 1 ); \
2937 0 : scratch_48 = in48; \
2938 0 : in48 = GF_MUL( in48, 1 ); \
2939 0 : scratch_49 = in49; \
2940 0 : in49 = GF_MUL( in49, 1 ); \
2941 0 : scratch_50 = in50; \
2942 0 : in50 = GF_MUL( in50, 1 ); \
2943 0 : scratch_51 = in51; \
2944 0 : in51 = GF_MUL( in51, 1 ); \
2945 0 : scratch_52 = in52; \
2946 0 : in52 = GF_MUL( in52, 1 ); \
2947 0 : scratch_53 = in53; \
2948 0 : in53 = GF_MUL( in53, 1 ); \
2949 0 : scratch_54 = in54; \
2950 0 : in54 = GF_MUL( in54, 1 ); \
2951 0 : scratch_55 = in55; \
2952 0 : in55 = GF_MUL( in55, 1 ); \
2953 0 : scratch_56 = in56; \
2954 0 : in56 = GF_MUL( in56, 1 ); \
2955 0 : scratch_57 = in57; \
2956 0 : in57 = GF_MUL( in57, 1 ); \
2957 0 : scratch_58 = in58; \
2958 0 : in58 = GF_MUL( in58, 1 ); \
2959 0 : scratch_59 = in59; \
2960 0 : in59 = GF_MUL( in59, 1 ); \
2961 0 : scratch_60 = in60; \
2962 0 : in60 = GF_MUL( in60, 1 ); \
2963 0 : scratch_61 = in61; \
2964 0 : in61 = GF_MUL( in61, 1 ); \
2965 0 : scratch_62 = in62; \
2966 0 : in62 = GF_MUL( in62, 1 ); \
2967 0 : scratch_63 = in63; \
2968 0 : in63 = GF_MUL( in63, 1 ); \
2969 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
2970 0 : in35 = GF_ADD( GF_MUL( in03, 1 ), in35 ); \
2971 0 : in36 = GF_ADD( GF_MUL( in04, 1 ), in36 ); \
2972 0 : in37 = GF_ADD( GF_MUL( in05, 1 ), in37 ); \
2973 0 : in38 = GF_ADD( GF_MUL( in06, 1 ), in38 ); \
2974 0 : in39 = GF_ADD( GF_MUL( in07, 1 ), in39 ); \
2975 0 : in40 = GF_ADD( GF_MUL( in08, 1 ), in40 ); \
2976 0 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
2977 0 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
2978 0 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
2979 0 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
2980 0 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
2981 0 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
2982 0 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
2983 0 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
2984 0 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
2985 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
2986 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
2987 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
2988 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
2989 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
2990 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
2991 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
2992 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
2993 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
2994 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
2995 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
2996 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
2997 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
2998 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
2999 0 : scratch_16 = in48; \
3000 0 : in48 = GF_MUL( in48, 1 ); \
3001 0 : scratch_17 = in49; \
3002 0 : in49 = GF_MUL( in49, 1 ); \
3003 0 : scratch_18 = in50; \
3004 0 : in50 = GF_MUL( in50, 1 ); \
3005 0 : GF_MUL22( in35, in51, 1, 71, 1, 70 ); \
3006 0 : GF_MUL22( in36, in52, 1, 71, 1, 70 ); \
3007 0 : GF_MUL22( in37, in53, 1, 71, 1, 70 ); \
3008 0 : GF_MUL22( in38, in54, 1, 71, 1, 70 ); \
3009 0 : GF_MUL22( in39, in55, 1, 71, 1, 70 ); \
3010 0 : GF_MUL22( in40, in56, 1, 71, 1, 70 ); \
3011 0 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
3012 0 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
3013 0 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
3014 0 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
3015 0 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
3016 0 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
3017 0 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
3018 0 : scratch_8 = in40; \
3019 0 : in40 = GF_MUL( in40, 1 ); \
3020 0 : scratch_9 = in41; \
3021 0 : in41 = GF_MUL( in41, 1 ); \
3022 0 : scratch_10 = in42; \
3023 0 : in42 = GF_MUL( in42, 1 ); \
3024 0 : GF_MUL22( in35, in43, 1, 174, 1, 175 ); \
3025 0 : GF_MUL22( in36, in44, 1, 174, 1, 175 ); \
3026 0 : GF_MUL22( in37, in45, 1, 174, 1, 175 ); \
3027 0 : GF_MUL22( in38, in46, 1, 174, 1, 175 ); \
3028 0 : GF_MUL22( in39, in47, 1, 174, 1, 175 ); \
3029 0 : scratch_4 = in36; \
3030 0 : in36 = GF_MUL( in36, 1 ); \
3031 0 : scratch_5 = in37; \
3032 0 : in37 = GF_MUL( in37, 1 ); \
3033 0 : scratch_6 = in38; \
3034 0 : in38 = GF_MUL( in38, 1 ); \
3035 0 : GF_MUL22( in35, in39, 1, 38, 1, 39 ); \
3036 0 : scratch_3 = in35; \
3037 0 : in35 = GF_MUL( in35, 1 ); \
3038 0 : GF_MUL22( in32, in33, 33, 32, 1, 1 ); \
3039 0 : in35 = GF_ADD( GF_MUL( in33, 1 ), in35 ); \
3040 0 : GF_MUL22( in34, in35, 1, 34, 1, 1 ); \
3041 0 : GF_MUL22( in32, in34, 236, 237, 1, 1 ); \
3042 0 : in33 = GF_MUL( in33, 1 ); \
3043 0 : in33 = GF_ADD( GF_MUL( scratch_3, 237 ), in33 ); \
3044 0 : in36 = GF_ADD( GF_MUL( in32, 1 ), in36 ); \
3045 0 : in37 = GF_ADD( GF_MUL( in33, 1 ), in37 ); \
3046 0 : in38 = GF_ADD( GF_MUL( in34, 1 ), in38 ); \
3047 0 : FD_REEDSOL_GENERATE_FFT( 4, 36, in36, in37, in38, in39 ); \
3048 0 : in32 = GF_MUL( in32, 1 ); \
3049 0 : in32 = GF_ADD( GF_MUL( scratch_4, 38 ), in32 ); \
3050 0 : in33 = GF_MUL( in33, 1 ); \
3051 0 : in33 = GF_ADD( GF_MUL( scratch_5, 38 ), in33 ); \
3052 0 : in34 = GF_MUL( in34, 1 ); \
3053 0 : in34 = GF_ADD( GF_MUL( scratch_6, 38 ), in34 ); \
3054 0 : in40 = GF_ADD( GF_MUL( in32, 1 ), in40 ); \
3055 0 : in41 = GF_ADD( GF_MUL( in33, 1 ), in41 ); \
3056 0 : in42 = GF_ADD( GF_MUL( in34, 1 ), in42 ); \
3057 0 : FD_REEDSOL_GENERATE_FFT( 8, 40, in40, in41, in42, in43, in44, in45, in46, in47 ); \
3058 0 : in32 = GF_MUL( in32, 1 ); \
3059 0 : in32 = GF_ADD( GF_MUL( scratch_8, 174 ), in32 ); \
3060 0 : in33 = GF_MUL( in33, 1 ); \
3061 0 : in33 = GF_ADD( GF_MUL( scratch_9, 174 ), in33 ); \
3062 0 : in34 = GF_MUL( in34, 1 ); \
3063 0 : in34 = GF_ADD( GF_MUL( scratch_10, 174 ), in34 ); \
3064 0 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
3065 0 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
3066 0 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
3067 0 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
3068 0 : in32 = GF_MUL( in32, 1 ); \
3069 0 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
3070 0 : in33 = GF_MUL( in33, 1 ); \
3071 0 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
3072 0 : in34 = GF_MUL( in34, 1 ); \
3073 0 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
3074 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
3075 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
3076 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
3077 0 : in03 = GF_MUL( in03, 1 ); \
3078 0 : in03 = GF_ADD( GF_MUL( scratch_35, 0 ), in03 ); \
3079 0 : in04 = GF_MUL( in04, 1 ); \
3080 0 : in04 = GF_ADD( GF_MUL( scratch_36, 0 ), in04 ); \
3081 0 : in05 = GF_MUL( in05, 1 ); \
3082 0 : in05 = GF_ADD( GF_MUL( scratch_37, 0 ), in05 ); \
3083 0 : in06 = GF_MUL( in06, 1 ); \
3084 0 : in06 = GF_ADD( GF_MUL( scratch_38, 0 ), in06 ); \
3085 0 : in07 = GF_MUL( in07, 1 ); \
3086 0 : in07 = GF_ADD( GF_MUL( scratch_39, 0 ), in07 ); \
3087 0 : in08 = GF_MUL( in08, 1 ); \
3088 0 : in08 = GF_ADD( GF_MUL( scratch_40, 0 ), in08 ); \
3089 0 : in09 = GF_MUL( in09, 1 ); \
3090 0 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
3091 0 : in10 = GF_MUL( in10, 1 ); \
3092 0 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
3093 0 : in11 = GF_MUL( in11, 1 ); \
3094 0 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
3095 0 : in12 = GF_MUL( in12, 1 ); \
3096 0 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
3097 0 : in13 = GF_MUL( in13, 1 ); \
3098 0 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
3099 0 : in14 = GF_MUL( in14, 1 ); \
3100 0 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
3101 0 : in15 = GF_MUL( in15, 1 ); \
3102 0 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
3103 0 : in16 = GF_MUL( in16, 1 ); \
3104 0 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
3105 0 : in17 = GF_MUL( in17, 1 ); \
3106 0 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
3107 0 : in18 = GF_MUL( in18, 1 ); \
3108 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
3109 0 : in19 = GF_MUL( in19, 1 ); \
3110 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
3111 0 : in20 = GF_MUL( in20, 1 ); \
3112 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
3113 0 : in21 = GF_MUL( in21, 1 ); \
3114 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
3115 0 : in22 = GF_MUL( in22, 1 ); \
3116 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
3117 0 : in23 = GF_MUL( in23, 1 ); \
3118 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
3119 0 : in24 = GF_MUL( in24, 1 ); \
3120 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
3121 0 : in25 = GF_MUL( in25, 1 ); \
3122 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
3123 0 : in26 = GF_MUL( in26, 1 ); \
3124 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
3125 0 : in27 = GF_MUL( in27, 1 ); \
3126 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
3127 0 : in28 = GF_MUL( in28, 1 ); \
3128 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
3129 0 : in29 = GF_MUL( in29, 1 ); \
3130 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
3131 0 : in30 = GF_MUL( in30, 1 ); \
3132 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
3133 0 : in31 = GF_MUL( in31, 1 ); \
3134 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
3135 0 : } while( 0 )
3136 :
3137 : void fd_reedsol_ppt_64_36( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
3138 : #define FD_REEDSOL_PPT_IMPL_64_36( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
3139 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
3140 0 : do { \
3141 0 : gf_t scratch_10, scratch_11, scratch_16, scratch_17, scratch_18, scratch_19, scratch_36, scratch_37, scratch_38, scratch_39, scratch_4, scratch_40, scratch_41, scratch_42, scratch_43, scratch_44; \
3142 0 : gf_t scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59; \
3143 0 : gf_t scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7, scratch_8, scratch_9; \
3144 0 : scratch_36 = in36; \
3145 0 : in36 = GF_MUL( in36, 1 ); \
3146 0 : scratch_37 = in37; \
3147 0 : in37 = GF_MUL( in37, 1 ); \
3148 0 : scratch_38 = in38; \
3149 0 : in38 = GF_MUL( in38, 1 ); \
3150 0 : scratch_39 = in39; \
3151 0 : in39 = GF_MUL( in39, 1 ); \
3152 0 : scratch_40 = in40; \
3153 0 : in40 = GF_MUL( in40, 1 ); \
3154 0 : scratch_41 = in41; \
3155 0 : in41 = GF_MUL( in41, 1 ); \
3156 0 : scratch_42 = in42; \
3157 0 : in42 = GF_MUL( in42, 1 ); \
3158 0 : scratch_43 = in43; \
3159 0 : in43 = GF_MUL( in43, 1 ); \
3160 0 : scratch_44 = in44; \
3161 0 : in44 = GF_MUL( in44, 1 ); \
3162 0 : scratch_45 = in45; \
3163 0 : in45 = GF_MUL( in45, 1 ); \
3164 0 : scratch_46 = in46; \
3165 0 : in46 = GF_MUL( in46, 1 ); \
3166 0 : scratch_47 = in47; \
3167 0 : in47 = GF_MUL( in47, 1 ); \
3168 0 : scratch_48 = in48; \
3169 0 : in48 = GF_MUL( in48, 1 ); \
3170 0 : scratch_49 = in49; \
3171 0 : in49 = GF_MUL( in49, 1 ); \
3172 0 : scratch_50 = in50; \
3173 0 : in50 = GF_MUL( in50, 1 ); \
3174 0 : scratch_51 = in51; \
3175 0 : in51 = GF_MUL( in51, 1 ); \
3176 0 : scratch_52 = in52; \
3177 0 : in52 = GF_MUL( in52, 1 ); \
3178 0 : scratch_53 = in53; \
3179 0 : in53 = GF_MUL( in53, 1 ); \
3180 0 : scratch_54 = in54; \
3181 0 : in54 = GF_MUL( in54, 1 ); \
3182 0 : scratch_55 = in55; \
3183 0 : in55 = GF_MUL( in55, 1 ); \
3184 0 : scratch_56 = in56; \
3185 0 : in56 = GF_MUL( in56, 1 ); \
3186 0 : scratch_57 = in57; \
3187 0 : in57 = GF_MUL( in57, 1 ); \
3188 0 : scratch_58 = in58; \
3189 0 : in58 = GF_MUL( in58, 1 ); \
3190 0 : scratch_59 = in59; \
3191 0 : in59 = GF_MUL( in59, 1 ); \
3192 0 : scratch_60 = in60; \
3193 0 : in60 = GF_MUL( in60, 1 ); \
3194 0 : scratch_61 = in61; \
3195 0 : in61 = GF_MUL( in61, 1 ); \
3196 0 : scratch_62 = in62; \
3197 0 : in62 = GF_MUL( in62, 1 ); \
3198 0 : scratch_63 = in63; \
3199 0 : in63 = GF_MUL( in63, 1 ); \
3200 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
3201 0 : in36 = GF_ADD( GF_MUL( in04, 1 ), in36 ); \
3202 0 : in37 = GF_ADD( GF_MUL( in05, 1 ), in37 ); \
3203 0 : in38 = GF_ADD( GF_MUL( in06, 1 ), in38 ); \
3204 0 : in39 = GF_ADD( GF_MUL( in07, 1 ), in39 ); \
3205 0 : in40 = GF_ADD( GF_MUL( in08, 1 ), in40 ); \
3206 0 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
3207 0 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
3208 0 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
3209 0 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
3210 0 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
3211 0 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
3212 0 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
3213 0 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
3214 0 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
3215 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
3216 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
3217 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
3218 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
3219 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
3220 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
3221 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
3222 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
3223 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
3224 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
3225 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
3226 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
3227 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
3228 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
3229 0 : scratch_16 = in48; \
3230 0 : in48 = GF_MUL( in48, 1 ); \
3231 0 : scratch_17 = in49; \
3232 0 : in49 = GF_MUL( in49, 1 ); \
3233 0 : scratch_18 = in50; \
3234 0 : in50 = GF_MUL( in50, 1 ); \
3235 0 : scratch_19 = in51; \
3236 0 : in51 = GF_MUL( in51, 1 ); \
3237 0 : GF_MUL22( in36, in52, 1, 71, 1, 70 ); \
3238 0 : GF_MUL22( in37, in53, 1, 71, 1, 70 ); \
3239 0 : GF_MUL22( in38, in54, 1, 71, 1, 70 ); \
3240 0 : GF_MUL22( in39, in55, 1, 71, 1, 70 ); \
3241 0 : GF_MUL22( in40, in56, 1, 71, 1, 70 ); \
3242 0 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
3243 0 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
3244 0 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
3245 0 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
3246 0 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
3247 0 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
3248 0 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
3249 0 : scratch_8 = in40; \
3250 0 : in40 = GF_MUL( in40, 1 ); \
3251 0 : scratch_9 = in41; \
3252 0 : in41 = GF_MUL( in41, 1 ); \
3253 0 : scratch_10 = in42; \
3254 0 : in42 = GF_MUL( in42, 1 ); \
3255 0 : scratch_11 = in43; \
3256 0 : in43 = GF_MUL( in43, 1 ); \
3257 0 : GF_MUL22( in36, in44, 1, 174, 1, 175 ); \
3258 0 : GF_MUL22( in37, in45, 1, 174, 1, 175 ); \
3259 0 : GF_MUL22( in38, in46, 1, 174, 1, 175 ); \
3260 0 : GF_MUL22( in39, in47, 1, 174, 1, 175 ); \
3261 0 : scratch_4 = in36; \
3262 0 : in36 = GF_MUL( in36, 1 ); \
3263 0 : scratch_5 = in37; \
3264 0 : in37 = GF_MUL( in37, 1 ); \
3265 0 : scratch_6 = in38; \
3266 0 : in38 = GF_MUL( in38, 1 ); \
3267 0 : scratch_7 = in39; \
3268 0 : in39 = GF_MUL( in39, 1 ); \
3269 0 : FD_REEDSOL_GENERATE_IFFT( 4, 32, in32, in33, in34, in35 ); \
3270 0 : in36 = GF_ADD( GF_MUL( in32, 1 ), in36 ); \
3271 0 : in37 = GF_ADD( GF_MUL( in33, 1 ), in37 ); \
3272 0 : in38 = GF_ADD( GF_MUL( in34, 1 ), in38 ); \
3273 0 : in39 = GF_ADD( GF_MUL( in35, 1 ), in39 ); \
3274 0 : FD_REEDSOL_GENERATE_FFT( 4, 36, in36, in37, in38, in39 ); \
3275 0 : in32 = GF_MUL( in32, 1 ); \
3276 0 : in32 = GF_ADD( GF_MUL( scratch_4, 38 ), in32 ); \
3277 0 : in33 = GF_MUL( in33, 1 ); \
3278 0 : in33 = GF_ADD( GF_MUL( scratch_5, 38 ), in33 ); \
3279 0 : in34 = GF_MUL( in34, 1 ); \
3280 0 : in34 = GF_ADD( GF_MUL( scratch_6, 38 ), in34 ); \
3281 0 : in35 = GF_MUL( in35, 1 ); \
3282 0 : in35 = GF_ADD( GF_MUL( scratch_7, 38 ), in35 ); \
3283 0 : in40 = GF_ADD( GF_MUL( in32, 1 ), in40 ); \
3284 0 : in41 = GF_ADD( GF_MUL( in33, 1 ), in41 ); \
3285 0 : in42 = GF_ADD( GF_MUL( in34, 1 ), in42 ); \
3286 0 : in43 = GF_ADD( GF_MUL( in35, 1 ), in43 ); \
3287 0 : FD_REEDSOL_GENERATE_FFT( 8, 40, in40, in41, in42, in43, in44, in45, in46, in47 ); \
3288 0 : in32 = GF_MUL( in32, 1 ); \
3289 0 : in32 = GF_ADD( GF_MUL( scratch_8, 174 ), in32 ); \
3290 0 : in33 = GF_MUL( in33, 1 ); \
3291 0 : in33 = GF_ADD( GF_MUL( scratch_9, 174 ), in33 ); \
3292 0 : in34 = GF_MUL( in34, 1 ); \
3293 0 : in34 = GF_ADD( GF_MUL( scratch_10, 174 ), in34 ); \
3294 0 : in35 = GF_MUL( in35, 1 ); \
3295 0 : in35 = GF_ADD( GF_MUL( scratch_11, 174 ), in35 ); \
3296 0 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
3297 0 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
3298 0 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
3299 0 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
3300 0 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
3301 0 : in32 = GF_MUL( in32, 1 ); \
3302 0 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
3303 0 : in33 = GF_MUL( in33, 1 ); \
3304 0 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
3305 0 : in34 = GF_MUL( in34, 1 ); \
3306 0 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
3307 0 : in35 = GF_MUL( in35, 1 ); \
3308 0 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
3309 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
3310 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
3311 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
3312 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
3313 0 : in04 = GF_MUL( in04, 1 ); \
3314 0 : in04 = GF_ADD( GF_MUL( scratch_36, 0 ), in04 ); \
3315 0 : in05 = GF_MUL( in05, 1 ); \
3316 0 : in05 = GF_ADD( GF_MUL( scratch_37, 0 ), in05 ); \
3317 0 : in06 = GF_MUL( in06, 1 ); \
3318 0 : in06 = GF_ADD( GF_MUL( scratch_38, 0 ), in06 ); \
3319 0 : in07 = GF_MUL( in07, 1 ); \
3320 0 : in07 = GF_ADD( GF_MUL( scratch_39, 0 ), in07 ); \
3321 0 : in08 = GF_MUL( in08, 1 ); \
3322 0 : in08 = GF_ADD( GF_MUL( scratch_40, 0 ), in08 ); \
3323 0 : in09 = GF_MUL( in09, 1 ); \
3324 0 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
3325 0 : in10 = GF_MUL( in10, 1 ); \
3326 0 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
3327 0 : in11 = GF_MUL( in11, 1 ); \
3328 0 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
3329 0 : in12 = GF_MUL( in12, 1 ); \
3330 0 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
3331 0 : in13 = GF_MUL( in13, 1 ); \
3332 0 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
3333 0 : in14 = GF_MUL( in14, 1 ); \
3334 0 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
3335 0 : in15 = GF_MUL( in15, 1 ); \
3336 0 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
3337 0 : in16 = GF_MUL( in16, 1 ); \
3338 0 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
3339 0 : in17 = GF_MUL( in17, 1 ); \
3340 0 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
3341 0 : in18 = GF_MUL( in18, 1 ); \
3342 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
3343 0 : in19 = GF_MUL( in19, 1 ); \
3344 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
3345 0 : in20 = GF_MUL( in20, 1 ); \
3346 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
3347 0 : in21 = GF_MUL( in21, 1 ); \
3348 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
3349 0 : in22 = GF_MUL( in22, 1 ); \
3350 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
3351 0 : in23 = GF_MUL( in23, 1 ); \
3352 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
3353 0 : in24 = GF_MUL( in24, 1 ); \
3354 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
3355 0 : in25 = GF_MUL( in25, 1 ); \
3356 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
3357 0 : in26 = GF_MUL( in26, 1 ); \
3358 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
3359 0 : in27 = GF_MUL( in27, 1 ); \
3360 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
3361 0 : in28 = GF_MUL( in28, 1 ); \
3362 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
3363 0 : in29 = GF_MUL( in29, 1 ); \
3364 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
3365 0 : in30 = GF_MUL( in30, 1 ); \
3366 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
3367 0 : in31 = GF_MUL( in31, 1 ); \
3368 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
3369 0 : } while( 0 )
3370 :
3371 : void fd_reedsol_ppt_64_37( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
3372 : #define FD_REEDSOL_PPT_IMPL_64_37( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
3373 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
3374 0 : do { \
3375 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_16, scratch_17, scratch_18, scratch_19, scratch_2, scratch_20, scratch_37, scratch_38, scratch_39, scratch_40, scratch_41, scratch_42, scratch_43; \
3376 0 : gf_t scratch_44, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58; \
3377 0 : gf_t scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7, scratch_8, scratch_9; \
3378 0 : scratch_37 = in37; \
3379 0 : in37 = GF_MUL( in37, 1 ); \
3380 0 : scratch_38 = in38; \
3381 0 : in38 = GF_MUL( in38, 1 ); \
3382 0 : scratch_39 = in39; \
3383 0 : in39 = GF_MUL( in39, 1 ); \
3384 0 : scratch_40 = in40; \
3385 0 : in40 = GF_MUL( in40, 1 ); \
3386 0 : scratch_41 = in41; \
3387 0 : in41 = GF_MUL( in41, 1 ); \
3388 0 : scratch_42 = in42; \
3389 0 : in42 = GF_MUL( in42, 1 ); \
3390 0 : scratch_43 = in43; \
3391 0 : in43 = GF_MUL( in43, 1 ); \
3392 0 : scratch_44 = in44; \
3393 0 : in44 = GF_MUL( in44, 1 ); \
3394 0 : scratch_45 = in45; \
3395 0 : in45 = GF_MUL( in45, 1 ); \
3396 0 : scratch_46 = in46; \
3397 0 : in46 = GF_MUL( in46, 1 ); \
3398 0 : scratch_47 = in47; \
3399 0 : in47 = GF_MUL( in47, 1 ); \
3400 0 : scratch_48 = in48; \
3401 0 : in48 = GF_MUL( in48, 1 ); \
3402 0 : scratch_49 = in49; \
3403 0 : in49 = GF_MUL( in49, 1 ); \
3404 0 : scratch_50 = in50; \
3405 0 : in50 = GF_MUL( in50, 1 ); \
3406 0 : scratch_51 = in51; \
3407 0 : in51 = GF_MUL( in51, 1 ); \
3408 0 : scratch_52 = in52; \
3409 0 : in52 = GF_MUL( in52, 1 ); \
3410 0 : scratch_53 = in53; \
3411 0 : in53 = GF_MUL( in53, 1 ); \
3412 0 : scratch_54 = in54; \
3413 0 : in54 = GF_MUL( in54, 1 ); \
3414 0 : scratch_55 = in55; \
3415 0 : in55 = GF_MUL( in55, 1 ); \
3416 0 : scratch_56 = in56; \
3417 0 : in56 = GF_MUL( in56, 1 ); \
3418 0 : scratch_57 = in57; \
3419 0 : in57 = GF_MUL( in57, 1 ); \
3420 0 : scratch_58 = in58; \
3421 0 : in58 = GF_MUL( in58, 1 ); \
3422 0 : scratch_59 = in59; \
3423 0 : in59 = GF_MUL( in59, 1 ); \
3424 0 : scratch_60 = in60; \
3425 0 : in60 = GF_MUL( in60, 1 ); \
3426 0 : scratch_61 = in61; \
3427 0 : in61 = GF_MUL( in61, 1 ); \
3428 0 : scratch_62 = in62; \
3429 0 : in62 = GF_MUL( in62, 1 ); \
3430 0 : scratch_63 = in63; \
3431 0 : in63 = GF_MUL( in63, 1 ); \
3432 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
3433 0 : in37 = GF_ADD( GF_MUL( in05, 1 ), in37 ); \
3434 0 : in38 = GF_ADD( GF_MUL( in06, 1 ), in38 ); \
3435 0 : in39 = GF_ADD( GF_MUL( in07, 1 ), in39 ); \
3436 0 : in40 = GF_ADD( GF_MUL( in08, 1 ), in40 ); \
3437 0 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
3438 0 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
3439 0 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
3440 0 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
3441 0 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
3442 0 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
3443 0 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
3444 0 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
3445 0 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
3446 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
3447 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
3448 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
3449 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
3450 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
3451 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
3452 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
3453 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
3454 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
3455 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
3456 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
3457 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
3458 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
3459 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
3460 0 : scratch_16 = in48; \
3461 0 : in48 = GF_MUL( in48, 1 ); \
3462 0 : scratch_17 = in49; \
3463 0 : in49 = GF_MUL( in49, 1 ); \
3464 0 : scratch_18 = in50; \
3465 0 : in50 = GF_MUL( in50, 1 ); \
3466 0 : scratch_19 = in51; \
3467 0 : in51 = GF_MUL( in51, 1 ); \
3468 0 : scratch_20 = in52; \
3469 0 : in52 = GF_MUL( in52, 1 ); \
3470 0 : GF_MUL22( in37, in53, 1, 71, 1, 70 ); \
3471 0 : GF_MUL22( in38, in54, 1, 71, 1, 70 ); \
3472 0 : GF_MUL22( in39, in55, 1, 71, 1, 70 ); \
3473 0 : GF_MUL22( in40, in56, 1, 71, 1, 70 ); \
3474 0 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
3475 0 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
3476 0 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
3477 0 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
3478 0 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
3479 0 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
3480 0 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
3481 0 : scratch_8 = in40; \
3482 0 : in40 = GF_MUL( in40, 1 ); \
3483 0 : scratch_9 = in41; \
3484 0 : in41 = GF_MUL( in41, 1 ); \
3485 0 : scratch_10 = in42; \
3486 0 : in42 = GF_MUL( in42, 1 ); \
3487 0 : scratch_11 = in43; \
3488 0 : in43 = GF_MUL( in43, 1 ); \
3489 0 : scratch_12 = in44; \
3490 0 : in44 = GF_MUL( in44, 1 ); \
3491 0 : GF_MUL22( in37, in45, 1, 174, 1, 175 ); \
3492 0 : GF_MUL22( in38, in46, 1, 174, 1, 175 ); \
3493 0 : GF_MUL22( in39, in47, 1, 174, 1, 175 ); \
3494 0 : scratch_5 = in37; \
3495 0 : in37 = GF_MUL( in37, 1 ); \
3496 0 : scratch_6 = in38; \
3497 0 : in38 = GF_MUL( in38, 1 ); \
3498 0 : scratch_7 = in39; \
3499 0 : in39 = GF_MUL( in39, 1 ); \
3500 0 : FD_REEDSOL_GENERATE_IFFT( 4, 32, in32, in33, in34, in35 ); \
3501 0 : in37 = GF_ADD( GF_MUL( in33, 1 ), in37 ); \
3502 0 : in38 = GF_ADD( GF_MUL( in34, 1 ), in38 ); \
3503 0 : in39 = GF_ADD( GF_MUL( in35, 1 ), in39 ); \
3504 0 : scratch_2 = in38; \
3505 0 : in38 = GF_MUL( in38, 1 ); \
3506 0 : GF_MUL22( in37, in39, 1, 235, 1, 234 ); \
3507 0 : GF_MUL22( in36, in37, 1, 36, 1, 1 ); \
3508 0 : in38 = GF_ADD( GF_MUL( in36, 1 ), in38 ); \
3509 0 : GF_MUL22( in38, in39, 1, 38, 1, 39 ); \
3510 0 : in36 = GF_MUL( in36, 1 ); \
3511 0 : in36 = GF_ADD( GF_MUL( scratch_2, 235 ), in36 ); \
3512 0 : GF_MUL22( in32, in36, 39, 38, 1, 1 ); \
3513 0 : in33 = GF_MUL( in33, 1 ); \
3514 0 : in33 = GF_ADD( GF_MUL( scratch_5, 38 ), in33 ); \
3515 0 : in34 = GF_MUL( in34, 1 ); \
3516 0 : in34 = GF_ADD( GF_MUL( scratch_6, 38 ), in34 ); \
3517 0 : in35 = GF_MUL( in35, 1 ); \
3518 0 : in35 = GF_ADD( GF_MUL( scratch_7, 38 ), in35 ); \
3519 0 : in40 = GF_ADD( GF_MUL( in32, 1 ), in40 ); \
3520 0 : in41 = GF_ADD( GF_MUL( in33, 1 ), in41 ); \
3521 0 : in42 = GF_ADD( GF_MUL( in34, 1 ), in42 ); \
3522 0 : in43 = GF_ADD( GF_MUL( in35, 1 ), in43 ); \
3523 0 : in44 = GF_ADD( GF_MUL( in36, 1 ), in44 ); \
3524 0 : FD_REEDSOL_GENERATE_FFT( 8, 40, in40, in41, in42, in43, in44, in45, in46, in47 ); \
3525 0 : in32 = GF_MUL( in32, 1 ); \
3526 0 : in32 = GF_ADD( GF_MUL( scratch_8, 174 ), in32 ); \
3527 0 : in33 = GF_MUL( in33, 1 ); \
3528 0 : in33 = GF_ADD( GF_MUL( scratch_9, 174 ), in33 ); \
3529 0 : in34 = GF_MUL( in34, 1 ); \
3530 0 : in34 = GF_ADD( GF_MUL( scratch_10, 174 ), in34 ); \
3531 0 : in35 = GF_MUL( in35, 1 ); \
3532 0 : in35 = GF_ADD( GF_MUL( scratch_11, 174 ), in35 ); \
3533 0 : in36 = GF_MUL( in36, 1 ); \
3534 0 : in36 = GF_ADD( GF_MUL( scratch_12, 174 ), in36 ); \
3535 0 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
3536 0 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
3537 0 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
3538 0 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
3539 0 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
3540 0 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
3541 0 : in32 = GF_MUL( in32, 1 ); \
3542 0 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
3543 0 : in33 = GF_MUL( in33, 1 ); \
3544 0 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
3545 0 : in34 = GF_MUL( in34, 1 ); \
3546 0 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
3547 0 : in35 = GF_MUL( in35, 1 ); \
3548 0 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
3549 0 : in36 = GF_MUL( in36, 1 ); \
3550 0 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
3551 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
3552 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
3553 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
3554 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
3555 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
3556 0 : in05 = GF_MUL( in05, 1 ); \
3557 0 : in05 = GF_ADD( GF_MUL( scratch_37, 0 ), in05 ); \
3558 0 : in06 = GF_MUL( in06, 1 ); \
3559 0 : in06 = GF_ADD( GF_MUL( scratch_38, 0 ), in06 ); \
3560 0 : in07 = GF_MUL( in07, 1 ); \
3561 0 : in07 = GF_ADD( GF_MUL( scratch_39, 0 ), in07 ); \
3562 0 : in08 = GF_MUL( in08, 1 ); \
3563 0 : in08 = GF_ADD( GF_MUL( scratch_40, 0 ), in08 ); \
3564 0 : in09 = GF_MUL( in09, 1 ); \
3565 0 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
3566 0 : in10 = GF_MUL( in10, 1 ); \
3567 0 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
3568 0 : in11 = GF_MUL( in11, 1 ); \
3569 0 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
3570 0 : in12 = GF_MUL( in12, 1 ); \
3571 0 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
3572 0 : in13 = GF_MUL( in13, 1 ); \
3573 0 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
3574 0 : in14 = GF_MUL( in14, 1 ); \
3575 0 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
3576 0 : in15 = GF_MUL( in15, 1 ); \
3577 0 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
3578 0 : in16 = GF_MUL( in16, 1 ); \
3579 0 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
3580 0 : in17 = GF_MUL( in17, 1 ); \
3581 0 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
3582 0 : in18 = GF_MUL( in18, 1 ); \
3583 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
3584 0 : in19 = GF_MUL( in19, 1 ); \
3585 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
3586 0 : in20 = GF_MUL( in20, 1 ); \
3587 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
3588 0 : in21 = GF_MUL( in21, 1 ); \
3589 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
3590 0 : in22 = GF_MUL( in22, 1 ); \
3591 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
3592 0 : in23 = GF_MUL( in23, 1 ); \
3593 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
3594 0 : in24 = GF_MUL( in24, 1 ); \
3595 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
3596 0 : in25 = GF_MUL( in25, 1 ); \
3597 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
3598 0 : in26 = GF_MUL( in26, 1 ); \
3599 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
3600 0 : in27 = GF_MUL( in27, 1 ); \
3601 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
3602 0 : in28 = GF_MUL( in28, 1 ); \
3603 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
3604 0 : in29 = GF_MUL( in29, 1 ); \
3605 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
3606 0 : in30 = GF_MUL( in30, 1 ); \
3607 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
3608 0 : in31 = GF_MUL( in31, 1 ); \
3609 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
3610 0 : } while( 0 )
3611 :
3612 : void fd_reedsol_ppt_64_38( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
3613 : #define FD_REEDSOL_PPT_IMPL_64_38( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
3614 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
3615 0 : do { \
3616 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_16, scratch_17, scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_3, scratch_38, scratch_39, scratch_40, scratch_41; \
3617 0 : gf_t scratch_42, scratch_43, scratch_44, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57; \
3618 0 : gf_t scratch_58, scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7, scratch_8, scratch_9; \
3619 0 : scratch_38 = in38; \
3620 0 : in38 = GF_MUL( in38, 1 ); \
3621 0 : scratch_39 = in39; \
3622 0 : in39 = GF_MUL( in39, 1 ); \
3623 0 : scratch_40 = in40; \
3624 0 : in40 = GF_MUL( in40, 1 ); \
3625 0 : scratch_41 = in41; \
3626 0 : in41 = GF_MUL( in41, 1 ); \
3627 0 : scratch_42 = in42; \
3628 0 : in42 = GF_MUL( in42, 1 ); \
3629 0 : scratch_43 = in43; \
3630 0 : in43 = GF_MUL( in43, 1 ); \
3631 0 : scratch_44 = in44; \
3632 0 : in44 = GF_MUL( in44, 1 ); \
3633 0 : scratch_45 = in45; \
3634 0 : in45 = GF_MUL( in45, 1 ); \
3635 0 : scratch_46 = in46; \
3636 0 : in46 = GF_MUL( in46, 1 ); \
3637 0 : scratch_47 = in47; \
3638 0 : in47 = GF_MUL( in47, 1 ); \
3639 0 : scratch_48 = in48; \
3640 0 : in48 = GF_MUL( in48, 1 ); \
3641 0 : scratch_49 = in49; \
3642 0 : in49 = GF_MUL( in49, 1 ); \
3643 0 : scratch_50 = in50; \
3644 0 : in50 = GF_MUL( in50, 1 ); \
3645 0 : scratch_51 = in51; \
3646 0 : in51 = GF_MUL( in51, 1 ); \
3647 0 : scratch_52 = in52; \
3648 0 : in52 = GF_MUL( in52, 1 ); \
3649 0 : scratch_53 = in53; \
3650 0 : in53 = GF_MUL( in53, 1 ); \
3651 0 : scratch_54 = in54; \
3652 0 : in54 = GF_MUL( in54, 1 ); \
3653 0 : scratch_55 = in55; \
3654 0 : in55 = GF_MUL( in55, 1 ); \
3655 0 : scratch_56 = in56; \
3656 0 : in56 = GF_MUL( in56, 1 ); \
3657 0 : scratch_57 = in57; \
3658 0 : in57 = GF_MUL( in57, 1 ); \
3659 0 : scratch_58 = in58; \
3660 0 : in58 = GF_MUL( in58, 1 ); \
3661 0 : scratch_59 = in59; \
3662 0 : in59 = GF_MUL( in59, 1 ); \
3663 0 : scratch_60 = in60; \
3664 0 : in60 = GF_MUL( in60, 1 ); \
3665 0 : scratch_61 = in61; \
3666 0 : in61 = GF_MUL( in61, 1 ); \
3667 0 : scratch_62 = in62; \
3668 0 : in62 = GF_MUL( in62, 1 ); \
3669 0 : scratch_63 = in63; \
3670 0 : in63 = GF_MUL( in63, 1 ); \
3671 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
3672 0 : in38 = GF_ADD( GF_MUL( in06, 1 ), in38 ); \
3673 0 : in39 = GF_ADD( GF_MUL( in07, 1 ), in39 ); \
3674 0 : in40 = GF_ADD( GF_MUL( in08, 1 ), in40 ); \
3675 0 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
3676 0 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
3677 0 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
3678 0 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
3679 0 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
3680 0 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
3681 0 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
3682 0 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
3683 0 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
3684 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
3685 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
3686 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
3687 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
3688 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
3689 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
3690 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
3691 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
3692 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
3693 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
3694 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
3695 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
3696 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
3697 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
3698 0 : scratch_16 = in48; \
3699 0 : in48 = GF_MUL( in48, 1 ); \
3700 0 : scratch_17 = in49; \
3701 0 : in49 = GF_MUL( in49, 1 ); \
3702 0 : scratch_18 = in50; \
3703 0 : in50 = GF_MUL( in50, 1 ); \
3704 0 : scratch_19 = in51; \
3705 0 : in51 = GF_MUL( in51, 1 ); \
3706 0 : scratch_20 = in52; \
3707 0 : in52 = GF_MUL( in52, 1 ); \
3708 0 : scratch_21 = in53; \
3709 0 : in53 = GF_MUL( in53, 1 ); \
3710 0 : GF_MUL22( in38, in54, 1, 71, 1, 70 ); \
3711 0 : GF_MUL22( in39, in55, 1, 71, 1, 70 ); \
3712 0 : GF_MUL22( in40, in56, 1, 71, 1, 70 ); \
3713 0 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
3714 0 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
3715 0 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
3716 0 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
3717 0 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
3718 0 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
3719 0 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
3720 0 : scratch_8 = in40; \
3721 0 : in40 = GF_MUL( in40, 1 ); \
3722 0 : scratch_9 = in41; \
3723 0 : in41 = GF_MUL( in41, 1 ); \
3724 0 : scratch_10 = in42; \
3725 0 : in42 = GF_MUL( in42, 1 ); \
3726 0 : scratch_11 = in43; \
3727 0 : in43 = GF_MUL( in43, 1 ); \
3728 0 : scratch_12 = in44; \
3729 0 : in44 = GF_MUL( in44, 1 ); \
3730 0 : scratch_13 = in45; \
3731 0 : in45 = GF_MUL( in45, 1 ); \
3732 0 : GF_MUL22( in38, in46, 1, 174, 1, 175 ); \
3733 0 : GF_MUL22( in39, in47, 1, 174, 1, 175 ); \
3734 0 : scratch_6 = in38; \
3735 0 : in38 = GF_MUL( in38, 1 ); \
3736 0 : scratch_7 = in39; \
3737 0 : in39 = GF_MUL( in39, 1 ); \
3738 0 : FD_REEDSOL_GENERATE_IFFT( 4, 32, in32, in33, in34, in35 ); \
3739 0 : in38 = GF_ADD( GF_MUL( in34, 1 ), in38 ); \
3740 0 : in39 = GF_ADD( GF_MUL( in35, 1 ), in39 ); \
3741 0 : scratch_2 = in38; \
3742 0 : in38 = GF_MUL( in38, 1 ); \
3743 0 : scratch_3 = in39; \
3744 0 : in39 = GF_MUL( in39, 1 ); \
3745 0 : GF_MUL22( in36, in37, 37, 36, 1, 1 ); \
3746 0 : in38 = GF_ADD( GF_MUL( in36, 1 ), in38 ); \
3747 0 : in39 = GF_ADD( GF_MUL( in37, 1 ), in39 ); \
3748 0 : GF_MUL22( in38, in39, 1, 38, 1, 39 ); \
3749 0 : in36 = GF_MUL( in36, 1 ); \
3750 0 : in36 = GF_ADD( GF_MUL( scratch_2, 235 ), in36 ); \
3751 0 : in37 = GF_MUL( in37, 1 ); \
3752 0 : in37 = GF_ADD( GF_MUL( scratch_3, 235 ), in37 ); \
3753 0 : GF_MUL22( in32, in36, 39, 38, 1, 1 ); \
3754 0 : GF_MUL22( in33, in37, 39, 38, 1, 1 ); \
3755 0 : in34 = GF_MUL( in34, 1 ); \
3756 0 : in34 = GF_ADD( GF_MUL( scratch_6, 38 ), in34 ); \
3757 0 : in35 = GF_MUL( in35, 1 ); \
3758 0 : in35 = GF_ADD( GF_MUL( scratch_7, 38 ), in35 ); \
3759 0 : in40 = GF_ADD( GF_MUL( in32, 1 ), in40 ); \
3760 0 : in41 = GF_ADD( GF_MUL( in33, 1 ), in41 ); \
3761 0 : in42 = GF_ADD( GF_MUL( in34, 1 ), in42 ); \
3762 0 : in43 = GF_ADD( GF_MUL( in35, 1 ), in43 ); \
3763 0 : in44 = GF_ADD( GF_MUL( in36, 1 ), in44 ); \
3764 0 : in45 = GF_ADD( GF_MUL( in37, 1 ), in45 ); \
3765 0 : FD_REEDSOL_GENERATE_FFT( 8, 40, in40, in41, in42, in43, in44, in45, in46, in47 ); \
3766 0 : in32 = GF_MUL( in32, 1 ); \
3767 0 : in32 = GF_ADD( GF_MUL( scratch_8, 174 ), in32 ); \
3768 0 : in33 = GF_MUL( in33, 1 ); \
3769 0 : in33 = GF_ADD( GF_MUL( scratch_9, 174 ), in33 ); \
3770 0 : in34 = GF_MUL( in34, 1 ); \
3771 0 : in34 = GF_ADD( GF_MUL( scratch_10, 174 ), in34 ); \
3772 0 : in35 = GF_MUL( in35, 1 ); \
3773 0 : in35 = GF_ADD( GF_MUL( scratch_11, 174 ), in35 ); \
3774 0 : in36 = GF_MUL( in36, 1 ); \
3775 0 : in36 = GF_ADD( GF_MUL( scratch_12, 174 ), in36 ); \
3776 0 : in37 = GF_MUL( in37, 1 ); \
3777 0 : in37 = GF_ADD( GF_MUL( scratch_13, 174 ), in37 ); \
3778 0 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
3779 0 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
3780 0 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
3781 0 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
3782 0 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
3783 0 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
3784 0 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
3785 0 : in32 = GF_MUL( in32, 1 ); \
3786 0 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
3787 0 : in33 = GF_MUL( in33, 1 ); \
3788 0 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
3789 0 : in34 = GF_MUL( in34, 1 ); \
3790 0 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
3791 0 : in35 = GF_MUL( in35, 1 ); \
3792 0 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
3793 0 : in36 = GF_MUL( in36, 1 ); \
3794 0 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
3795 0 : in37 = GF_MUL( in37, 1 ); \
3796 0 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
3797 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
3798 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
3799 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
3800 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
3801 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
3802 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
3803 0 : in06 = GF_MUL( in06, 1 ); \
3804 0 : in06 = GF_ADD( GF_MUL( scratch_38, 0 ), in06 ); \
3805 0 : in07 = GF_MUL( in07, 1 ); \
3806 0 : in07 = GF_ADD( GF_MUL( scratch_39, 0 ), in07 ); \
3807 0 : in08 = GF_MUL( in08, 1 ); \
3808 0 : in08 = GF_ADD( GF_MUL( scratch_40, 0 ), in08 ); \
3809 0 : in09 = GF_MUL( in09, 1 ); \
3810 0 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
3811 0 : in10 = GF_MUL( in10, 1 ); \
3812 0 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
3813 0 : in11 = GF_MUL( in11, 1 ); \
3814 0 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
3815 0 : in12 = GF_MUL( in12, 1 ); \
3816 0 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
3817 0 : in13 = GF_MUL( in13, 1 ); \
3818 0 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
3819 0 : in14 = GF_MUL( in14, 1 ); \
3820 0 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
3821 0 : in15 = GF_MUL( in15, 1 ); \
3822 0 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
3823 0 : in16 = GF_MUL( in16, 1 ); \
3824 0 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
3825 0 : in17 = GF_MUL( in17, 1 ); \
3826 0 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
3827 0 : in18 = GF_MUL( in18, 1 ); \
3828 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
3829 0 : in19 = GF_MUL( in19, 1 ); \
3830 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
3831 0 : in20 = GF_MUL( in20, 1 ); \
3832 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
3833 0 : in21 = GF_MUL( in21, 1 ); \
3834 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
3835 0 : in22 = GF_MUL( in22, 1 ); \
3836 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
3837 0 : in23 = GF_MUL( in23, 1 ); \
3838 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
3839 0 : in24 = GF_MUL( in24, 1 ); \
3840 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
3841 0 : in25 = GF_MUL( in25, 1 ); \
3842 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
3843 0 : in26 = GF_MUL( in26, 1 ); \
3844 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
3845 0 : in27 = GF_MUL( in27, 1 ); \
3846 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
3847 0 : in28 = GF_MUL( in28, 1 ); \
3848 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
3849 0 : in29 = GF_MUL( in29, 1 ); \
3850 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
3851 0 : in30 = GF_MUL( in30, 1 ); \
3852 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
3853 0 : in31 = GF_MUL( in31, 1 ); \
3854 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
3855 0 : } while( 0 )
3856 :
3857 : void fd_reedsol_ppt_64_39( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
3858 : #define FD_REEDSOL_PPT_IMPL_64_39( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
3859 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
3860 0 : do { \
3861 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_16, scratch_17, scratch_18, scratch_19, scratch_20, scratch_21, scratch_22, scratch_3, scratch_39, scratch_40, scratch_41; \
3862 0 : gf_t scratch_42, scratch_43, scratch_44, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57; \
3863 0 : gf_t scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7, scratch_8, scratch_9; \
3864 0 : scratch_39 = in39; \
3865 0 : in39 = GF_MUL( in39, 1 ); \
3866 0 : scratch_40 = in40; \
3867 0 : in40 = GF_MUL( in40, 1 ); \
3868 0 : scratch_41 = in41; \
3869 0 : in41 = GF_MUL( in41, 1 ); \
3870 0 : scratch_42 = in42; \
3871 0 : in42 = GF_MUL( in42, 1 ); \
3872 0 : scratch_43 = in43; \
3873 0 : in43 = GF_MUL( in43, 1 ); \
3874 0 : scratch_44 = in44; \
3875 0 : in44 = GF_MUL( in44, 1 ); \
3876 0 : scratch_45 = in45; \
3877 0 : in45 = GF_MUL( in45, 1 ); \
3878 0 : scratch_46 = in46; \
3879 0 : in46 = GF_MUL( in46, 1 ); \
3880 0 : scratch_47 = in47; \
3881 0 : in47 = GF_MUL( in47, 1 ); \
3882 0 : scratch_48 = in48; \
3883 0 : in48 = GF_MUL( in48, 1 ); \
3884 0 : scratch_49 = in49; \
3885 0 : in49 = GF_MUL( in49, 1 ); \
3886 0 : scratch_50 = in50; \
3887 0 : in50 = GF_MUL( in50, 1 ); \
3888 0 : scratch_51 = in51; \
3889 0 : in51 = GF_MUL( in51, 1 ); \
3890 0 : scratch_52 = in52; \
3891 0 : in52 = GF_MUL( in52, 1 ); \
3892 0 : scratch_53 = in53; \
3893 0 : in53 = GF_MUL( in53, 1 ); \
3894 0 : scratch_54 = in54; \
3895 0 : in54 = GF_MUL( in54, 1 ); \
3896 0 : scratch_55 = in55; \
3897 0 : in55 = GF_MUL( in55, 1 ); \
3898 0 : scratch_56 = in56; \
3899 0 : in56 = GF_MUL( in56, 1 ); \
3900 0 : scratch_57 = in57; \
3901 0 : in57 = GF_MUL( in57, 1 ); \
3902 0 : scratch_58 = in58; \
3903 0 : in58 = GF_MUL( in58, 1 ); \
3904 0 : scratch_59 = in59; \
3905 0 : in59 = GF_MUL( in59, 1 ); \
3906 0 : scratch_60 = in60; \
3907 0 : in60 = GF_MUL( in60, 1 ); \
3908 0 : scratch_61 = in61; \
3909 0 : in61 = GF_MUL( in61, 1 ); \
3910 0 : scratch_62 = in62; \
3911 0 : in62 = GF_MUL( in62, 1 ); \
3912 0 : scratch_63 = in63; \
3913 0 : in63 = GF_MUL( in63, 1 ); \
3914 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
3915 0 : in39 = GF_ADD( GF_MUL( in07, 1 ), in39 ); \
3916 0 : in40 = GF_ADD( GF_MUL( in08, 1 ), in40 ); \
3917 0 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
3918 0 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
3919 0 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
3920 0 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
3921 0 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
3922 0 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
3923 0 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
3924 0 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
3925 0 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
3926 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
3927 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
3928 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
3929 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
3930 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
3931 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
3932 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
3933 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
3934 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
3935 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
3936 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
3937 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
3938 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
3939 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
3940 0 : scratch_16 = in48; \
3941 0 : in48 = GF_MUL( in48, 1 ); \
3942 0 : scratch_17 = in49; \
3943 0 : in49 = GF_MUL( in49, 1 ); \
3944 0 : scratch_18 = in50; \
3945 0 : in50 = GF_MUL( in50, 1 ); \
3946 0 : scratch_19 = in51; \
3947 0 : in51 = GF_MUL( in51, 1 ); \
3948 0 : scratch_20 = in52; \
3949 0 : in52 = GF_MUL( in52, 1 ); \
3950 0 : scratch_21 = in53; \
3951 0 : in53 = GF_MUL( in53, 1 ); \
3952 0 : scratch_22 = in54; \
3953 0 : in54 = GF_MUL( in54, 1 ); \
3954 0 : GF_MUL22( in39, in55, 1, 71, 1, 70 ); \
3955 0 : GF_MUL22( in40, in56, 1, 71, 1, 70 ); \
3956 0 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
3957 0 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
3958 0 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
3959 0 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
3960 0 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
3961 0 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
3962 0 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
3963 0 : scratch_8 = in40; \
3964 0 : in40 = GF_MUL( in40, 1 ); \
3965 0 : scratch_9 = in41; \
3966 0 : in41 = GF_MUL( in41, 1 ); \
3967 0 : scratch_10 = in42; \
3968 0 : in42 = GF_MUL( in42, 1 ); \
3969 0 : scratch_11 = in43; \
3970 0 : in43 = GF_MUL( in43, 1 ); \
3971 0 : scratch_12 = in44; \
3972 0 : in44 = GF_MUL( in44, 1 ); \
3973 0 : scratch_13 = in45; \
3974 0 : in45 = GF_MUL( in45, 1 ); \
3975 0 : scratch_14 = in46; \
3976 0 : in46 = GF_MUL( in46, 1 ); \
3977 0 : GF_MUL22( in39, in47, 1, 174, 1, 175 ); \
3978 0 : scratch_7 = in39; \
3979 0 : in39 = GF_MUL( in39, 1 ); \
3980 0 : FD_REEDSOL_GENERATE_IFFT( 4, 32, in32, in33, in34, in35 ); \
3981 0 : in39 = GF_ADD( GF_MUL( in35, 1 ), in39 ); \
3982 0 : scratch_3 = in39; \
3983 0 : in39 = GF_MUL( in39, 1 ); \
3984 0 : GF_MUL22( in36, in37, 37, 36, 1, 1 ); \
3985 0 : in39 = GF_ADD( GF_MUL( in37, 1 ), in39 ); \
3986 0 : GF_MUL22( in38, in39, 1, 38, 1, 1 ); \
3987 0 : GF_MUL22( in36, in38, 234, 235, 1, 1 ); \
3988 0 : in37 = GF_MUL( in37, 1 ); \
3989 0 : in37 = GF_ADD( GF_MUL( scratch_3, 235 ), in37 ); \
3990 0 : GF_MUL22( in32, in36, 39, 38, 1, 1 ); \
3991 0 : GF_MUL22( in33, in37, 39, 38, 1, 1 ); \
3992 0 : GF_MUL22( in34, in38, 39, 38, 1, 1 ); \
3993 0 : in35 = GF_MUL( in35, 1 ); \
3994 0 : in35 = GF_ADD( GF_MUL( scratch_7, 38 ), in35 ); \
3995 0 : in40 = GF_ADD( GF_MUL( in32, 1 ), in40 ); \
3996 0 : in41 = GF_ADD( GF_MUL( in33, 1 ), in41 ); \
3997 0 : in42 = GF_ADD( GF_MUL( in34, 1 ), in42 ); \
3998 0 : in43 = GF_ADD( GF_MUL( in35, 1 ), in43 ); \
3999 0 : in44 = GF_ADD( GF_MUL( in36, 1 ), in44 ); \
4000 0 : in45 = GF_ADD( GF_MUL( in37, 1 ), in45 ); \
4001 0 : in46 = GF_ADD( GF_MUL( in38, 1 ), in46 ); \
4002 0 : FD_REEDSOL_GENERATE_FFT( 8, 40, in40, in41, in42, in43, in44, in45, in46, in47 ); \
4003 0 : in32 = GF_MUL( in32, 1 ); \
4004 0 : in32 = GF_ADD( GF_MUL( scratch_8, 174 ), in32 ); \
4005 0 : in33 = GF_MUL( in33, 1 ); \
4006 0 : in33 = GF_ADD( GF_MUL( scratch_9, 174 ), in33 ); \
4007 0 : in34 = GF_MUL( in34, 1 ); \
4008 0 : in34 = GF_ADD( GF_MUL( scratch_10, 174 ), in34 ); \
4009 0 : in35 = GF_MUL( in35, 1 ); \
4010 0 : in35 = GF_ADD( GF_MUL( scratch_11, 174 ), in35 ); \
4011 0 : in36 = GF_MUL( in36, 1 ); \
4012 0 : in36 = GF_ADD( GF_MUL( scratch_12, 174 ), in36 ); \
4013 0 : in37 = GF_MUL( in37, 1 ); \
4014 0 : in37 = GF_ADD( GF_MUL( scratch_13, 174 ), in37 ); \
4015 0 : in38 = GF_MUL( in38, 1 ); \
4016 0 : in38 = GF_ADD( GF_MUL( scratch_14, 174 ), in38 ); \
4017 0 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
4018 0 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
4019 0 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
4020 0 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
4021 0 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
4022 0 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
4023 0 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
4024 0 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
4025 0 : in32 = GF_MUL( in32, 1 ); \
4026 0 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
4027 0 : in33 = GF_MUL( in33, 1 ); \
4028 0 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
4029 0 : in34 = GF_MUL( in34, 1 ); \
4030 0 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
4031 0 : in35 = GF_MUL( in35, 1 ); \
4032 0 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
4033 0 : in36 = GF_MUL( in36, 1 ); \
4034 0 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
4035 0 : in37 = GF_MUL( in37, 1 ); \
4036 0 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
4037 0 : in38 = GF_MUL( in38, 1 ); \
4038 0 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
4039 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
4040 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
4041 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
4042 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
4043 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
4044 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
4045 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
4046 0 : in07 = GF_MUL( in07, 1 ); \
4047 0 : in07 = GF_ADD( GF_MUL( scratch_39, 0 ), in07 ); \
4048 0 : in08 = GF_MUL( in08, 1 ); \
4049 0 : in08 = GF_ADD( GF_MUL( scratch_40, 0 ), in08 ); \
4050 0 : in09 = GF_MUL( in09, 1 ); \
4051 0 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
4052 0 : in10 = GF_MUL( in10, 1 ); \
4053 0 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
4054 0 : in11 = GF_MUL( in11, 1 ); \
4055 0 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
4056 0 : in12 = GF_MUL( in12, 1 ); \
4057 0 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
4058 0 : in13 = GF_MUL( in13, 1 ); \
4059 0 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
4060 0 : in14 = GF_MUL( in14, 1 ); \
4061 0 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
4062 0 : in15 = GF_MUL( in15, 1 ); \
4063 0 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
4064 0 : in16 = GF_MUL( in16, 1 ); \
4065 0 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
4066 0 : in17 = GF_MUL( in17, 1 ); \
4067 0 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
4068 0 : in18 = GF_MUL( in18, 1 ); \
4069 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
4070 0 : in19 = GF_MUL( in19, 1 ); \
4071 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
4072 0 : in20 = GF_MUL( in20, 1 ); \
4073 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
4074 0 : in21 = GF_MUL( in21, 1 ); \
4075 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
4076 0 : in22 = GF_MUL( in22, 1 ); \
4077 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
4078 0 : in23 = GF_MUL( in23, 1 ); \
4079 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
4080 0 : in24 = GF_MUL( in24, 1 ); \
4081 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
4082 0 : in25 = GF_MUL( in25, 1 ); \
4083 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
4084 0 : in26 = GF_MUL( in26, 1 ); \
4085 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
4086 0 : in27 = GF_MUL( in27, 1 ); \
4087 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
4088 0 : in28 = GF_MUL( in28, 1 ); \
4089 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
4090 0 : in29 = GF_MUL( in29, 1 ); \
4091 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
4092 0 : in30 = GF_MUL( in30, 1 ); \
4093 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
4094 0 : in31 = GF_MUL( in31, 1 ); \
4095 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
4096 0 : } while( 0 )
4097 :
4098 : void fd_reedsol_ppt_64_40( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
4099 : #define FD_REEDSOL_PPT_IMPL_64_40( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
4100 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
4101 0 : do { \
4102 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_16, scratch_17, scratch_18, scratch_19, scratch_20, scratch_21, scratch_22, scratch_23, scratch_40, scratch_41; \
4103 0 : gf_t scratch_42, scratch_43, scratch_44, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57; \
4104 0 : gf_t scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63, scratch_8, scratch_9; \
4105 0 : scratch_40 = in40; \
4106 0 : in40 = GF_MUL( in40, 1 ); \
4107 0 : scratch_41 = in41; \
4108 0 : in41 = GF_MUL( in41, 1 ); \
4109 0 : scratch_42 = in42; \
4110 0 : in42 = GF_MUL( in42, 1 ); \
4111 0 : scratch_43 = in43; \
4112 0 : in43 = GF_MUL( in43, 1 ); \
4113 0 : scratch_44 = in44; \
4114 0 : in44 = GF_MUL( in44, 1 ); \
4115 0 : scratch_45 = in45; \
4116 0 : in45 = GF_MUL( in45, 1 ); \
4117 0 : scratch_46 = in46; \
4118 0 : in46 = GF_MUL( in46, 1 ); \
4119 0 : scratch_47 = in47; \
4120 0 : in47 = GF_MUL( in47, 1 ); \
4121 0 : scratch_48 = in48; \
4122 0 : in48 = GF_MUL( in48, 1 ); \
4123 0 : scratch_49 = in49; \
4124 0 : in49 = GF_MUL( in49, 1 ); \
4125 0 : scratch_50 = in50; \
4126 0 : in50 = GF_MUL( in50, 1 ); \
4127 0 : scratch_51 = in51; \
4128 0 : in51 = GF_MUL( in51, 1 ); \
4129 0 : scratch_52 = in52; \
4130 0 : in52 = GF_MUL( in52, 1 ); \
4131 0 : scratch_53 = in53; \
4132 0 : in53 = GF_MUL( in53, 1 ); \
4133 0 : scratch_54 = in54; \
4134 0 : in54 = GF_MUL( in54, 1 ); \
4135 0 : scratch_55 = in55; \
4136 0 : in55 = GF_MUL( in55, 1 ); \
4137 0 : scratch_56 = in56; \
4138 0 : in56 = GF_MUL( in56, 1 ); \
4139 0 : scratch_57 = in57; \
4140 0 : in57 = GF_MUL( in57, 1 ); \
4141 0 : scratch_58 = in58; \
4142 0 : in58 = GF_MUL( in58, 1 ); \
4143 0 : scratch_59 = in59; \
4144 0 : in59 = GF_MUL( in59, 1 ); \
4145 0 : scratch_60 = in60; \
4146 0 : in60 = GF_MUL( in60, 1 ); \
4147 0 : scratch_61 = in61; \
4148 0 : in61 = GF_MUL( in61, 1 ); \
4149 0 : scratch_62 = in62; \
4150 0 : in62 = GF_MUL( in62, 1 ); \
4151 0 : scratch_63 = in63; \
4152 0 : in63 = GF_MUL( in63, 1 ); \
4153 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
4154 0 : in40 = GF_ADD( GF_MUL( in08, 1 ), in40 ); \
4155 0 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
4156 0 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
4157 0 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
4158 0 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
4159 0 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
4160 0 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
4161 0 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
4162 0 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
4163 0 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
4164 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
4165 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
4166 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
4167 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
4168 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
4169 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
4170 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
4171 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
4172 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
4173 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
4174 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
4175 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
4176 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
4177 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
4178 0 : scratch_16 = in48; \
4179 0 : in48 = GF_MUL( in48, 1 ); \
4180 0 : scratch_17 = in49; \
4181 0 : in49 = GF_MUL( in49, 1 ); \
4182 0 : scratch_18 = in50; \
4183 0 : in50 = GF_MUL( in50, 1 ); \
4184 0 : scratch_19 = in51; \
4185 0 : in51 = GF_MUL( in51, 1 ); \
4186 0 : scratch_20 = in52; \
4187 0 : in52 = GF_MUL( in52, 1 ); \
4188 0 : scratch_21 = in53; \
4189 0 : in53 = GF_MUL( in53, 1 ); \
4190 0 : scratch_22 = in54; \
4191 0 : in54 = GF_MUL( in54, 1 ); \
4192 0 : scratch_23 = in55; \
4193 0 : in55 = GF_MUL( in55, 1 ); \
4194 0 : GF_MUL22( in40, in56, 1, 71, 1, 70 ); \
4195 0 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
4196 0 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
4197 0 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
4198 0 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
4199 0 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
4200 0 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
4201 0 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
4202 0 : scratch_8 = in40; \
4203 0 : in40 = GF_MUL( in40, 1 ); \
4204 0 : scratch_9 = in41; \
4205 0 : in41 = GF_MUL( in41, 1 ); \
4206 0 : scratch_10 = in42; \
4207 0 : in42 = GF_MUL( in42, 1 ); \
4208 0 : scratch_11 = in43; \
4209 0 : in43 = GF_MUL( in43, 1 ); \
4210 0 : scratch_12 = in44; \
4211 0 : in44 = GF_MUL( in44, 1 ); \
4212 0 : scratch_13 = in45; \
4213 0 : in45 = GF_MUL( in45, 1 ); \
4214 0 : scratch_14 = in46; \
4215 0 : in46 = GF_MUL( in46, 1 ); \
4216 0 : scratch_15 = in47; \
4217 0 : in47 = GF_MUL( in47, 1 ); \
4218 0 : FD_REEDSOL_GENERATE_IFFT( 8, 32, in32, in33, in34, in35, in36, in37, in38, in39 ); \
4219 0 : in40 = GF_ADD( GF_MUL( in32, 1 ), in40 ); \
4220 0 : in41 = GF_ADD( GF_MUL( in33, 1 ), in41 ); \
4221 0 : in42 = GF_ADD( GF_MUL( in34, 1 ), in42 ); \
4222 0 : in43 = GF_ADD( GF_MUL( in35, 1 ), in43 ); \
4223 0 : in44 = GF_ADD( GF_MUL( in36, 1 ), in44 ); \
4224 0 : in45 = GF_ADD( GF_MUL( in37, 1 ), in45 ); \
4225 0 : in46 = GF_ADD( GF_MUL( in38, 1 ), in46 ); \
4226 0 : in47 = GF_ADD( GF_MUL( in39, 1 ), in47 ); \
4227 0 : FD_REEDSOL_GENERATE_FFT( 8, 40, in40, in41, in42, in43, in44, in45, in46, in47 ); \
4228 0 : in32 = GF_MUL( in32, 1 ); \
4229 0 : in32 = GF_ADD( GF_MUL( scratch_8, 174 ), in32 ); \
4230 0 : in33 = GF_MUL( in33, 1 ); \
4231 0 : in33 = GF_ADD( GF_MUL( scratch_9, 174 ), in33 ); \
4232 0 : in34 = GF_MUL( in34, 1 ); \
4233 0 : in34 = GF_ADD( GF_MUL( scratch_10, 174 ), in34 ); \
4234 0 : in35 = GF_MUL( in35, 1 ); \
4235 0 : in35 = GF_ADD( GF_MUL( scratch_11, 174 ), in35 ); \
4236 0 : in36 = GF_MUL( in36, 1 ); \
4237 0 : in36 = GF_ADD( GF_MUL( scratch_12, 174 ), in36 ); \
4238 0 : in37 = GF_MUL( in37, 1 ); \
4239 0 : in37 = GF_ADD( GF_MUL( scratch_13, 174 ), in37 ); \
4240 0 : in38 = GF_MUL( in38, 1 ); \
4241 0 : in38 = GF_ADD( GF_MUL( scratch_14, 174 ), in38 ); \
4242 0 : in39 = GF_MUL( in39, 1 ); \
4243 0 : in39 = GF_ADD( GF_MUL( scratch_15, 174 ), in39 ); \
4244 0 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
4245 0 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
4246 0 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
4247 0 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
4248 0 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
4249 0 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
4250 0 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
4251 0 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
4252 0 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
4253 0 : in32 = GF_MUL( in32, 1 ); \
4254 0 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
4255 0 : in33 = GF_MUL( in33, 1 ); \
4256 0 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
4257 0 : in34 = GF_MUL( in34, 1 ); \
4258 0 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
4259 0 : in35 = GF_MUL( in35, 1 ); \
4260 0 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
4261 0 : in36 = GF_MUL( in36, 1 ); \
4262 0 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
4263 0 : in37 = GF_MUL( in37, 1 ); \
4264 0 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
4265 0 : in38 = GF_MUL( in38, 1 ); \
4266 0 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
4267 0 : in39 = GF_MUL( in39, 1 ); \
4268 0 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
4269 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
4270 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
4271 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
4272 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
4273 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
4274 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
4275 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
4276 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
4277 0 : in08 = GF_MUL( in08, 1 ); \
4278 0 : in08 = GF_ADD( GF_MUL( scratch_40, 0 ), in08 ); \
4279 0 : in09 = GF_MUL( in09, 1 ); \
4280 0 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
4281 0 : in10 = GF_MUL( in10, 1 ); \
4282 0 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
4283 0 : in11 = GF_MUL( in11, 1 ); \
4284 0 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
4285 0 : in12 = GF_MUL( in12, 1 ); \
4286 0 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
4287 0 : in13 = GF_MUL( in13, 1 ); \
4288 0 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
4289 0 : in14 = GF_MUL( in14, 1 ); \
4290 0 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
4291 0 : in15 = GF_MUL( in15, 1 ); \
4292 0 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
4293 0 : in16 = GF_MUL( in16, 1 ); \
4294 0 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
4295 0 : in17 = GF_MUL( in17, 1 ); \
4296 0 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
4297 0 : in18 = GF_MUL( in18, 1 ); \
4298 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
4299 0 : in19 = GF_MUL( in19, 1 ); \
4300 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
4301 0 : in20 = GF_MUL( in20, 1 ); \
4302 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
4303 0 : in21 = GF_MUL( in21, 1 ); \
4304 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
4305 0 : in22 = GF_MUL( in22, 1 ); \
4306 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
4307 0 : in23 = GF_MUL( in23, 1 ); \
4308 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
4309 0 : in24 = GF_MUL( in24, 1 ); \
4310 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
4311 0 : in25 = GF_MUL( in25, 1 ); \
4312 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
4313 0 : in26 = GF_MUL( in26, 1 ); \
4314 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
4315 0 : in27 = GF_MUL( in27, 1 ); \
4316 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
4317 0 : in28 = GF_MUL( in28, 1 ); \
4318 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
4319 0 : in29 = GF_MUL( in29, 1 ); \
4320 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
4321 0 : in30 = GF_MUL( in30, 1 ); \
4322 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
4323 0 : in31 = GF_MUL( in31, 1 ); \
4324 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
4325 0 : } while( 0 )
4326 :
4327 : void fd_reedsol_ppt_64_41( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
4328 : #define FD_REEDSOL_PPT_IMPL_64_41( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
4329 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
4330 0 : do { \
4331 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_16, scratch_17, scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24; \
4332 0 : gf_t scratch_4, scratch_41, scratch_42, scratch_43, scratch_44, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55; \
4333 0 : gf_t scratch_56, scratch_57, scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63, scratch_9; \
4334 0 : scratch_41 = in41; \
4335 0 : in41 = GF_MUL( in41, 1 ); \
4336 0 : scratch_42 = in42; \
4337 0 : in42 = GF_MUL( in42, 1 ); \
4338 0 : scratch_43 = in43; \
4339 0 : in43 = GF_MUL( in43, 1 ); \
4340 0 : scratch_44 = in44; \
4341 0 : in44 = GF_MUL( in44, 1 ); \
4342 0 : scratch_45 = in45; \
4343 0 : in45 = GF_MUL( in45, 1 ); \
4344 0 : scratch_46 = in46; \
4345 0 : in46 = GF_MUL( in46, 1 ); \
4346 0 : scratch_47 = in47; \
4347 0 : in47 = GF_MUL( in47, 1 ); \
4348 0 : scratch_48 = in48; \
4349 0 : in48 = GF_MUL( in48, 1 ); \
4350 0 : scratch_49 = in49; \
4351 0 : in49 = GF_MUL( in49, 1 ); \
4352 0 : scratch_50 = in50; \
4353 0 : in50 = GF_MUL( in50, 1 ); \
4354 0 : scratch_51 = in51; \
4355 0 : in51 = GF_MUL( in51, 1 ); \
4356 0 : scratch_52 = in52; \
4357 0 : in52 = GF_MUL( in52, 1 ); \
4358 0 : scratch_53 = in53; \
4359 0 : in53 = GF_MUL( in53, 1 ); \
4360 0 : scratch_54 = in54; \
4361 0 : in54 = GF_MUL( in54, 1 ); \
4362 0 : scratch_55 = in55; \
4363 0 : in55 = GF_MUL( in55, 1 ); \
4364 0 : scratch_56 = in56; \
4365 0 : in56 = GF_MUL( in56, 1 ); \
4366 0 : scratch_57 = in57; \
4367 0 : in57 = GF_MUL( in57, 1 ); \
4368 0 : scratch_58 = in58; \
4369 0 : in58 = GF_MUL( in58, 1 ); \
4370 0 : scratch_59 = in59; \
4371 0 : in59 = GF_MUL( in59, 1 ); \
4372 0 : scratch_60 = in60; \
4373 0 : in60 = GF_MUL( in60, 1 ); \
4374 0 : scratch_61 = in61; \
4375 0 : in61 = GF_MUL( in61, 1 ); \
4376 0 : scratch_62 = in62; \
4377 0 : in62 = GF_MUL( in62, 1 ); \
4378 0 : scratch_63 = in63; \
4379 0 : in63 = GF_MUL( in63, 1 ); \
4380 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
4381 0 : in41 = GF_ADD( GF_MUL( in09, 1 ), in41 ); \
4382 0 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
4383 0 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
4384 0 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
4385 0 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
4386 0 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
4387 0 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
4388 0 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
4389 0 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
4390 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
4391 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
4392 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
4393 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
4394 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
4395 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
4396 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
4397 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
4398 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
4399 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
4400 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
4401 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
4402 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
4403 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
4404 0 : scratch_16 = in48; \
4405 0 : in48 = GF_MUL( in48, 1 ); \
4406 0 : scratch_17 = in49; \
4407 0 : in49 = GF_MUL( in49, 1 ); \
4408 0 : scratch_18 = in50; \
4409 0 : in50 = GF_MUL( in50, 1 ); \
4410 0 : scratch_19 = in51; \
4411 0 : in51 = GF_MUL( in51, 1 ); \
4412 0 : scratch_20 = in52; \
4413 0 : in52 = GF_MUL( in52, 1 ); \
4414 0 : scratch_21 = in53; \
4415 0 : in53 = GF_MUL( in53, 1 ); \
4416 0 : scratch_22 = in54; \
4417 0 : in54 = GF_MUL( in54, 1 ); \
4418 0 : scratch_23 = in55; \
4419 0 : in55 = GF_MUL( in55, 1 ); \
4420 0 : scratch_24 = in56; \
4421 0 : in56 = GF_MUL( in56, 1 ); \
4422 0 : GF_MUL22( in41, in57, 1, 71, 1, 70 ); \
4423 0 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
4424 0 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
4425 0 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
4426 0 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
4427 0 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
4428 0 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
4429 0 : scratch_9 = in41; \
4430 0 : in41 = GF_MUL( in41, 1 ); \
4431 0 : scratch_10 = in42; \
4432 0 : in42 = GF_MUL( in42, 1 ); \
4433 0 : scratch_11 = in43; \
4434 0 : in43 = GF_MUL( in43, 1 ); \
4435 0 : scratch_12 = in44; \
4436 0 : in44 = GF_MUL( in44, 1 ); \
4437 0 : scratch_13 = in45; \
4438 0 : in45 = GF_MUL( in45, 1 ); \
4439 0 : scratch_14 = in46; \
4440 0 : in46 = GF_MUL( in46, 1 ); \
4441 0 : scratch_15 = in47; \
4442 0 : in47 = GF_MUL( in47, 1 ); \
4443 0 : FD_REEDSOL_GENERATE_IFFT( 8, 32, in32, in33, in34, in35, in36, in37, in38, in39 ); \
4444 0 : in41 = GF_ADD( GF_MUL( in33, 1 ), in41 ); \
4445 0 : in42 = GF_ADD( GF_MUL( in34, 1 ), in42 ); \
4446 0 : in43 = GF_ADD( GF_MUL( in35, 1 ), in43 ); \
4447 0 : in44 = GF_ADD( GF_MUL( in36, 1 ), in44 ); \
4448 0 : in45 = GF_ADD( GF_MUL( in37, 1 ), in45 ); \
4449 0 : in46 = GF_ADD( GF_MUL( in38, 1 ), in46 ); \
4450 0 : in47 = GF_ADD( GF_MUL( in39, 1 ), in47 ); \
4451 0 : scratch_4 = in44; \
4452 0 : in44 = GF_MUL( in44, 1 ); \
4453 0 : GF_MUL22( in41, in45, 1, 48, 1, 49 ); \
4454 0 : GF_MUL22( in42, in46, 1, 48, 1, 49 ); \
4455 0 : GF_MUL22( in43, in47, 1, 48, 1, 49 ); \
4456 0 : scratch_2 = in42; \
4457 0 : in42 = GF_MUL( in42, 1 ); \
4458 0 : GF_MUL22( in41, in43, 1, 241, 1, 240 ); \
4459 0 : GF_MUL22( in40, in41, 1, 40, 1, 1 ); \
4460 0 : in42 = GF_ADD( GF_MUL( in40, 1 ), in42 ); \
4461 0 : GF_MUL22( in42, in43, 1, 42, 1, 43 ); \
4462 0 : in40 = GF_MUL( in40, 1 ); \
4463 0 : in40 = GF_ADD( GF_MUL( scratch_2, 241 ), in40 ); \
4464 0 : in44 = GF_ADD( GF_MUL( in40, 1 ), in44 ); \
4465 0 : FD_REEDSOL_GENERATE_FFT( 4, 44, in44, in45, in46, in47 ); \
4466 0 : in40 = GF_MUL( in40, 1 ); \
4467 0 : in40 = GF_ADD( GF_MUL( scratch_4, 48 ), in40 ); \
4468 0 : GF_MUL22( in32, in40, 175, 174, 1, 1 ); \
4469 0 : in33 = GF_MUL( in33, 1 ); \
4470 0 : in33 = GF_ADD( GF_MUL( scratch_9, 174 ), in33 ); \
4471 0 : in34 = GF_MUL( in34, 1 ); \
4472 0 : in34 = GF_ADD( GF_MUL( scratch_10, 174 ), in34 ); \
4473 0 : in35 = GF_MUL( in35, 1 ); \
4474 0 : in35 = GF_ADD( GF_MUL( scratch_11, 174 ), in35 ); \
4475 0 : in36 = GF_MUL( in36, 1 ); \
4476 0 : in36 = GF_ADD( GF_MUL( scratch_12, 174 ), in36 ); \
4477 0 : in37 = GF_MUL( in37, 1 ); \
4478 0 : in37 = GF_ADD( GF_MUL( scratch_13, 174 ), in37 ); \
4479 0 : in38 = GF_MUL( in38, 1 ); \
4480 0 : in38 = GF_ADD( GF_MUL( scratch_14, 174 ), in38 ); \
4481 0 : in39 = GF_MUL( in39, 1 ); \
4482 0 : in39 = GF_ADD( GF_MUL( scratch_15, 174 ), in39 ); \
4483 0 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
4484 0 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
4485 0 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
4486 0 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
4487 0 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
4488 0 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
4489 0 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
4490 0 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
4491 0 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
4492 0 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
4493 0 : in32 = GF_MUL( in32, 1 ); \
4494 0 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
4495 0 : in33 = GF_MUL( in33, 1 ); \
4496 0 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
4497 0 : in34 = GF_MUL( in34, 1 ); \
4498 0 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
4499 0 : in35 = GF_MUL( in35, 1 ); \
4500 0 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
4501 0 : in36 = GF_MUL( in36, 1 ); \
4502 0 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
4503 0 : in37 = GF_MUL( in37, 1 ); \
4504 0 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
4505 0 : in38 = GF_MUL( in38, 1 ); \
4506 0 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
4507 0 : in39 = GF_MUL( in39, 1 ); \
4508 0 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
4509 0 : in40 = GF_MUL( in40, 1 ); \
4510 0 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
4511 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
4512 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
4513 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
4514 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
4515 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
4516 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
4517 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
4518 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
4519 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
4520 0 : in09 = GF_MUL( in09, 1 ); \
4521 0 : in09 = GF_ADD( GF_MUL( scratch_41, 0 ), in09 ); \
4522 0 : in10 = GF_MUL( in10, 1 ); \
4523 0 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
4524 0 : in11 = GF_MUL( in11, 1 ); \
4525 0 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
4526 0 : in12 = GF_MUL( in12, 1 ); \
4527 0 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
4528 0 : in13 = GF_MUL( in13, 1 ); \
4529 0 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
4530 0 : in14 = GF_MUL( in14, 1 ); \
4531 0 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
4532 0 : in15 = GF_MUL( in15, 1 ); \
4533 0 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
4534 0 : in16 = GF_MUL( in16, 1 ); \
4535 0 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
4536 0 : in17 = GF_MUL( in17, 1 ); \
4537 0 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
4538 0 : in18 = GF_MUL( in18, 1 ); \
4539 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
4540 0 : in19 = GF_MUL( in19, 1 ); \
4541 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
4542 0 : in20 = GF_MUL( in20, 1 ); \
4543 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
4544 0 : in21 = GF_MUL( in21, 1 ); \
4545 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
4546 0 : in22 = GF_MUL( in22, 1 ); \
4547 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
4548 0 : in23 = GF_MUL( in23, 1 ); \
4549 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
4550 0 : in24 = GF_MUL( in24, 1 ); \
4551 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
4552 0 : in25 = GF_MUL( in25, 1 ); \
4553 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
4554 0 : in26 = GF_MUL( in26, 1 ); \
4555 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
4556 0 : in27 = GF_MUL( in27, 1 ); \
4557 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
4558 0 : in28 = GF_MUL( in28, 1 ); \
4559 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
4560 0 : in29 = GF_MUL( in29, 1 ); \
4561 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
4562 0 : in30 = GF_MUL( in30, 1 ); \
4563 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
4564 0 : in31 = GF_MUL( in31, 1 ); \
4565 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
4566 0 : } while( 0 )
4567 :
4568 : void fd_reedsol_ppt_64_42( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
4569 : #define FD_REEDSOL_PPT_IMPL_64_42( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
4570 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
4571 0 : do { \
4572 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_16, scratch_17, scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24; \
4573 0 : gf_t scratch_25, scratch_3, scratch_4, scratch_42, scratch_43, scratch_44, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53; \
4574 0 : gf_t scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63; \
4575 0 : scratch_42 = in42; \
4576 0 : in42 = GF_MUL( in42, 1 ); \
4577 0 : scratch_43 = in43; \
4578 0 : in43 = GF_MUL( in43, 1 ); \
4579 0 : scratch_44 = in44; \
4580 0 : in44 = GF_MUL( in44, 1 ); \
4581 0 : scratch_45 = in45; \
4582 0 : in45 = GF_MUL( in45, 1 ); \
4583 0 : scratch_46 = in46; \
4584 0 : in46 = GF_MUL( in46, 1 ); \
4585 0 : scratch_47 = in47; \
4586 0 : in47 = GF_MUL( in47, 1 ); \
4587 0 : scratch_48 = in48; \
4588 0 : in48 = GF_MUL( in48, 1 ); \
4589 0 : scratch_49 = in49; \
4590 0 : in49 = GF_MUL( in49, 1 ); \
4591 0 : scratch_50 = in50; \
4592 0 : in50 = GF_MUL( in50, 1 ); \
4593 0 : scratch_51 = in51; \
4594 0 : in51 = GF_MUL( in51, 1 ); \
4595 0 : scratch_52 = in52; \
4596 0 : in52 = GF_MUL( in52, 1 ); \
4597 0 : scratch_53 = in53; \
4598 0 : in53 = GF_MUL( in53, 1 ); \
4599 0 : scratch_54 = in54; \
4600 0 : in54 = GF_MUL( in54, 1 ); \
4601 0 : scratch_55 = in55; \
4602 0 : in55 = GF_MUL( in55, 1 ); \
4603 0 : scratch_56 = in56; \
4604 0 : in56 = GF_MUL( in56, 1 ); \
4605 0 : scratch_57 = in57; \
4606 0 : in57 = GF_MUL( in57, 1 ); \
4607 0 : scratch_58 = in58; \
4608 0 : in58 = GF_MUL( in58, 1 ); \
4609 0 : scratch_59 = in59; \
4610 0 : in59 = GF_MUL( in59, 1 ); \
4611 0 : scratch_60 = in60; \
4612 0 : in60 = GF_MUL( in60, 1 ); \
4613 0 : scratch_61 = in61; \
4614 0 : in61 = GF_MUL( in61, 1 ); \
4615 0 : scratch_62 = in62; \
4616 0 : in62 = GF_MUL( in62, 1 ); \
4617 0 : scratch_63 = in63; \
4618 0 : in63 = GF_MUL( in63, 1 ); \
4619 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
4620 0 : in42 = GF_ADD( GF_MUL( in10, 1 ), in42 ); \
4621 0 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
4622 0 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
4623 0 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
4624 0 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
4625 0 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
4626 0 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
4627 0 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
4628 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
4629 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
4630 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
4631 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
4632 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
4633 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
4634 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
4635 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
4636 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
4637 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
4638 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
4639 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
4640 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
4641 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
4642 0 : scratch_16 = in48; \
4643 0 : in48 = GF_MUL( in48, 1 ); \
4644 0 : scratch_17 = in49; \
4645 0 : in49 = GF_MUL( in49, 1 ); \
4646 0 : scratch_18 = in50; \
4647 0 : in50 = GF_MUL( in50, 1 ); \
4648 0 : scratch_19 = in51; \
4649 0 : in51 = GF_MUL( in51, 1 ); \
4650 0 : scratch_20 = in52; \
4651 0 : in52 = GF_MUL( in52, 1 ); \
4652 0 : scratch_21 = in53; \
4653 0 : in53 = GF_MUL( in53, 1 ); \
4654 0 : scratch_22 = in54; \
4655 0 : in54 = GF_MUL( in54, 1 ); \
4656 0 : scratch_23 = in55; \
4657 0 : in55 = GF_MUL( in55, 1 ); \
4658 0 : scratch_24 = in56; \
4659 0 : in56 = GF_MUL( in56, 1 ); \
4660 0 : scratch_25 = in57; \
4661 0 : in57 = GF_MUL( in57, 1 ); \
4662 0 : GF_MUL22( in42, in58, 1, 71, 1, 70 ); \
4663 0 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
4664 0 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
4665 0 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
4666 0 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
4667 0 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
4668 0 : scratch_10 = in42; \
4669 0 : in42 = GF_MUL( in42, 1 ); \
4670 0 : scratch_11 = in43; \
4671 0 : in43 = GF_MUL( in43, 1 ); \
4672 0 : scratch_12 = in44; \
4673 0 : in44 = GF_MUL( in44, 1 ); \
4674 0 : scratch_13 = in45; \
4675 0 : in45 = GF_MUL( in45, 1 ); \
4676 0 : scratch_14 = in46; \
4677 0 : in46 = GF_MUL( in46, 1 ); \
4678 0 : scratch_15 = in47; \
4679 0 : in47 = GF_MUL( in47, 1 ); \
4680 0 : FD_REEDSOL_GENERATE_IFFT( 8, 32, in32, in33, in34, in35, in36, in37, in38, in39 ); \
4681 0 : in42 = GF_ADD( GF_MUL( in34, 1 ), in42 ); \
4682 0 : in43 = GF_ADD( GF_MUL( in35, 1 ), in43 ); \
4683 0 : in44 = GF_ADD( GF_MUL( in36, 1 ), in44 ); \
4684 0 : in45 = GF_ADD( GF_MUL( in37, 1 ), in45 ); \
4685 0 : in46 = GF_ADD( GF_MUL( in38, 1 ), in46 ); \
4686 0 : in47 = GF_ADD( GF_MUL( in39, 1 ), in47 ); \
4687 0 : scratch_4 = in44; \
4688 0 : in44 = GF_MUL( in44, 1 ); \
4689 0 : scratch_5 = in45; \
4690 0 : in45 = GF_MUL( in45, 1 ); \
4691 0 : GF_MUL22( in42, in46, 1, 48, 1, 49 ); \
4692 0 : GF_MUL22( in43, in47, 1, 48, 1, 49 ); \
4693 0 : scratch_2 = in42; \
4694 0 : in42 = GF_MUL( in42, 1 ); \
4695 0 : scratch_3 = in43; \
4696 0 : in43 = GF_MUL( in43, 1 ); \
4697 0 : GF_MUL22( in40, in41, 41, 40, 1, 1 ); \
4698 0 : in42 = GF_ADD( GF_MUL( in40, 1 ), in42 ); \
4699 0 : in43 = GF_ADD( GF_MUL( in41, 1 ), in43 ); \
4700 0 : GF_MUL22( in42, in43, 1, 42, 1, 43 ); \
4701 0 : in40 = GF_MUL( in40, 1 ); \
4702 0 : in40 = GF_ADD( GF_MUL( scratch_2, 241 ), in40 ); \
4703 0 : in41 = GF_MUL( in41, 1 ); \
4704 0 : in41 = GF_ADD( GF_MUL( scratch_3, 241 ), in41 ); \
4705 0 : in44 = GF_ADD( GF_MUL( in40, 1 ), in44 ); \
4706 0 : in45 = GF_ADD( GF_MUL( in41, 1 ), in45 ); \
4707 0 : FD_REEDSOL_GENERATE_FFT( 4, 44, in44, in45, in46, in47 ); \
4708 0 : in40 = GF_MUL( in40, 1 ); \
4709 0 : in40 = GF_ADD( GF_MUL( scratch_4, 48 ), in40 ); \
4710 0 : in41 = GF_MUL( in41, 1 ); \
4711 0 : in41 = GF_ADD( GF_MUL( scratch_5, 48 ), in41 ); \
4712 0 : GF_MUL22( in32, in40, 175, 174, 1, 1 ); \
4713 0 : GF_MUL22( in33, in41, 175, 174, 1, 1 ); \
4714 0 : in34 = GF_MUL( in34, 1 ); \
4715 0 : in34 = GF_ADD( GF_MUL( scratch_10, 174 ), in34 ); \
4716 0 : in35 = GF_MUL( in35, 1 ); \
4717 0 : in35 = GF_ADD( GF_MUL( scratch_11, 174 ), in35 ); \
4718 0 : in36 = GF_MUL( in36, 1 ); \
4719 0 : in36 = GF_ADD( GF_MUL( scratch_12, 174 ), in36 ); \
4720 0 : in37 = GF_MUL( in37, 1 ); \
4721 0 : in37 = GF_ADD( GF_MUL( scratch_13, 174 ), in37 ); \
4722 0 : in38 = GF_MUL( in38, 1 ); \
4723 0 : in38 = GF_ADD( GF_MUL( scratch_14, 174 ), in38 ); \
4724 0 : in39 = GF_MUL( in39, 1 ); \
4725 0 : in39 = GF_ADD( GF_MUL( scratch_15, 174 ), in39 ); \
4726 0 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
4727 0 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
4728 0 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
4729 0 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
4730 0 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
4731 0 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
4732 0 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
4733 0 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
4734 0 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
4735 0 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
4736 0 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
4737 0 : in32 = GF_MUL( in32, 1 ); \
4738 0 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
4739 0 : in33 = GF_MUL( in33, 1 ); \
4740 0 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
4741 0 : in34 = GF_MUL( in34, 1 ); \
4742 0 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
4743 0 : in35 = GF_MUL( in35, 1 ); \
4744 0 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
4745 0 : in36 = GF_MUL( in36, 1 ); \
4746 0 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
4747 0 : in37 = GF_MUL( in37, 1 ); \
4748 0 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
4749 0 : in38 = GF_MUL( in38, 1 ); \
4750 0 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
4751 0 : in39 = GF_MUL( in39, 1 ); \
4752 0 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
4753 0 : in40 = GF_MUL( in40, 1 ); \
4754 0 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
4755 0 : in41 = GF_MUL( in41, 1 ); \
4756 0 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
4757 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
4758 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
4759 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
4760 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
4761 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
4762 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
4763 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
4764 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
4765 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
4766 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
4767 0 : in10 = GF_MUL( in10, 1 ); \
4768 0 : in10 = GF_ADD( GF_MUL( scratch_42, 0 ), in10 ); \
4769 0 : in11 = GF_MUL( in11, 1 ); \
4770 0 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
4771 0 : in12 = GF_MUL( in12, 1 ); \
4772 0 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
4773 0 : in13 = GF_MUL( in13, 1 ); \
4774 0 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
4775 0 : in14 = GF_MUL( in14, 1 ); \
4776 0 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
4777 0 : in15 = GF_MUL( in15, 1 ); \
4778 0 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
4779 0 : in16 = GF_MUL( in16, 1 ); \
4780 0 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
4781 0 : in17 = GF_MUL( in17, 1 ); \
4782 0 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
4783 0 : in18 = GF_MUL( in18, 1 ); \
4784 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
4785 0 : in19 = GF_MUL( in19, 1 ); \
4786 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
4787 0 : in20 = GF_MUL( in20, 1 ); \
4788 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
4789 0 : in21 = GF_MUL( in21, 1 ); \
4790 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
4791 0 : in22 = GF_MUL( in22, 1 ); \
4792 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
4793 0 : in23 = GF_MUL( in23, 1 ); \
4794 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
4795 0 : in24 = GF_MUL( in24, 1 ); \
4796 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
4797 0 : in25 = GF_MUL( in25, 1 ); \
4798 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
4799 0 : in26 = GF_MUL( in26, 1 ); \
4800 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
4801 0 : in27 = GF_MUL( in27, 1 ); \
4802 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
4803 0 : in28 = GF_MUL( in28, 1 ); \
4804 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
4805 0 : in29 = GF_MUL( in29, 1 ); \
4806 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
4807 0 : in30 = GF_MUL( in30, 1 ); \
4808 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
4809 0 : in31 = GF_MUL( in31, 1 ); \
4810 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
4811 0 : } while( 0 )
4812 :
4813 : void fd_reedsol_ppt_64_43( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
4814 : #define FD_REEDSOL_PPT_IMPL_64_43( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
4815 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
4816 0 : do { \
4817 0 : gf_t scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_16, scratch_17, scratch_18, scratch_19, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26; \
4818 0 : gf_t scratch_3, scratch_4, scratch_43, scratch_44, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55; \
4819 0 : gf_t scratch_56, scratch_57, scratch_58, scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63; \
4820 0 : scratch_43 = in43; \
4821 0 : in43 = GF_MUL( in43, 1 ); \
4822 0 : scratch_44 = in44; \
4823 0 : in44 = GF_MUL( in44, 1 ); \
4824 0 : scratch_45 = in45; \
4825 0 : in45 = GF_MUL( in45, 1 ); \
4826 0 : scratch_46 = in46; \
4827 0 : in46 = GF_MUL( in46, 1 ); \
4828 0 : scratch_47 = in47; \
4829 0 : in47 = GF_MUL( in47, 1 ); \
4830 0 : scratch_48 = in48; \
4831 0 : in48 = GF_MUL( in48, 1 ); \
4832 0 : scratch_49 = in49; \
4833 0 : in49 = GF_MUL( in49, 1 ); \
4834 0 : scratch_50 = in50; \
4835 0 : in50 = GF_MUL( in50, 1 ); \
4836 0 : scratch_51 = in51; \
4837 0 : in51 = GF_MUL( in51, 1 ); \
4838 0 : scratch_52 = in52; \
4839 0 : in52 = GF_MUL( in52, 1 ); \
4840 0 : scratch_53 = in53; \
4841 0 : in53 = GF_MUL( in53, 1 ); \
4842 0 : scratch_54 = in54; \
4843 0 : in54 = GF_MUL( in54, 1 ); \
4844 0 : scratch_55 = in55; \
4845 0 : in55 = GF_MUL( in55, 1 ); \
4846 0 : scratch_56 = in56; \
4847 0 : in56 = GF_MUL( in56, 1 ); \
4848 0 : scratch_57 = in57; \
4849 0 : in57 = GF_MUL( in57, 1 ); \
4850 0 : scratch_58 = in58; \
4851 0 : in58 = GF_MUL( in58, 1 ); \
4852 0 : scratch_59 = in59; \
4853 0 : in59 = GF_MUL( in59, 1 ); \
4854 0 : scratch_60 = in60; \
4855 0 : in60 = GF_MUL( in60, 1 ); \
4856 0 : scratch_61 = in61; \
4857 0 : in61 = GF_MUL( in61, 1 ); \
4858 0 : scratch_62 = in62; \
4859 0 : in62 = GF_MUL( in62, 1 ); \
4860 0 : scratch_63 = in63; \
4861 0 : in63 = GF_MUL( in63, 1 ); \
4862 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
4863 0 : in43 = GF_ADD( GF_MUL( in11, 1 ), in43 ); \
4864 0 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
4865 0 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
4866 0 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
4867 0 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
4868 0 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
4869 0 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
4870 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
4871 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
4872 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
4873 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
4874 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
4875 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
4876 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
4877 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
4878 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
4879 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
4880 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
4881 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
4882 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
4883 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
4884 0 : scratch_16 = in48; \
4885 0 : in48 = GF_MUL( in48, 1 ); \
4886 0 : scratch_17 = in49; \
4887 0 : in49 = GF_MUL( in49, 1 ); \
4888 0 : scratch_18 = in50; \
4889 0 : in50 = GF_MUL( in50, 1 ); \
4890 0 : scratch_19 = in51; \
4891 0 : in51 = GF_MUL( in51, 1 ); \
4892 0 : scratch_20 = in52; \
4893 0 : in52 = GF_MUL( in52, 1 ); \
4894 0 : scratch_21 = in53; \
4895 0 : in53 = GF_MUL( in53, 1 ); \
4896 0 : scratch_22 = in54; \
4897 0 : in54 = GF_MUL( in54, 1 ); \
4898 0 : scratch_23 = in55; \
4899 0 : in55 = GF_MUL( in55, 1 ); \
4900 0 : scratch_24 = in56; \
4901 0 : in56 = GF_MUL( in56, 1 ); \
4902 0 : scratch_25 = in57; \
4903 0 : in57 = GF_MUL( in57, 1 ); \
4904 0 : scratch_26 = in58; \
4905 0 : in58 = GF_MUL( in58, 1 ); \
4906 0 : GF_MUL22( in43, in59, 1, 71, 1, 70 ); \
4907 0 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
4908 0 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
4909 0 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
4910 0 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
4911 0 : scratch_11 = in43; \
4912 0 : in43 = GF_MUL( in43, 1 ); \
4913 0 : scratch_12 = in44; \
4914 0 : in44 = GF_MUL( in44, 1 ); \
4915 0 : scratch_13 = in45; \
4916 0 : in45 = GF_MUL( in45, 1 ); \
4917 0 : scratch_14 = in46; \
4918 0 : in46 = GF_MUL( in46, 1 ); \
4919 0 : scratch_15 = in47; \
4920 0 : in47 = GF_MUL( in47, 1 ); \
4921 0 : FD_REEDSOL_GENERATE_IFFT( 8, 32, in32, in33, in34, in35, in36, in37, in38, in39 ); \
4922 0 : in43 = GF_ADD( GF_MUL( in35, 1 ), in43 ); \
4923 0 : in44 = GF_ADD( GF_MUL( in36, 1 ), in44 ); \
4924 0 : in45 = GF_ADD( GF_MUL( in37, 1 ), in45 ); \
4925 0 : in46 = GF_ADD( GF_MUL( in38, 1 ), in46 ); \
4926 0 : in47 = GF_ADD( GF_MUL( in39, 1 ), in47 ); \
4927 0 : scratch_4 = in44; \
4928 0 : in44 = GF_MUL( in44, 1 ); \
4929 0 : scratch_5 = in45; \
4930 0 : in45 = GF_MUL( in45, 1 ); \
4931 0 : scratch_6 = in46; \
4932 0 : in46 = GF_MUL( in46, 1 ); \
4933 0 : GF_MUL22( in43, in47, 1, 48, 1, 49 ); \
4934 0 : scratch_3 = in43; \
4935 0 : in43 = GF_MUL( in43, 1 ); \
4936 0 : GF_MUL22( in40, in41, 41, 40, 1, 1 ); \
4937 0 : in43 = GF_ADD( GF_MUL( in41, 1 ), in43 ); \
4938 0 : GF_MUL22( in42, in43, 1, 42, 1, 1 ); \
4939 0 : GF_MUL22( in40, in42, 240, 241, 1, 1 ); \
4940 0 : in41 = GF_MUL( in41, 1 ); \
4941 0 : in41 = GF_ADD( GF_MUL( scratch_3, 241 ), in41 ); \
4942 0 : in44 = GF_ADD( GF_MUL( in40, 1 ), in44 ); \
4943 0 : in45 = GF_ADD( GF_MUL( in41, 1 ), in45 ); \
4944 0 : in46 = GF_ADD( GF_MUL( in42, 1 ), in46 ); \
4945 0 : FD_REEDSOL_GENERATE_FFT( 4, 44, in44, in45, in46, in47 ); \
4946 0 : in40 = GF_MUL( in40, 1 ); \
4947 0 : in40 = GF_ADD( GF_MUL( scratch_4, 48 ), in40 ); \
4948 0 : in41 = GF_MUL( in41, 1 ); \
4949 0 : in41 = GF_ADD( GF_MUL( scratch_5, 48 ), in41 ); \
4950 0 : in42 = GF_MUL( in42, 1 ); \
4951 0 : in42 = GF_ADD( GF_MUL( scratch_6, 48 ), in42 ); \
4952 0 : GF_MUL22( in32, in40, 175, 174, 1, 1 ); \
4953 0 : GF_MUL22( in33, in41, 175, 174, 1, 1 ); \
4954 0 : GF_MUL22( in34, in42, 175, 174, 1, 1 ); \
4955 0 : in35 = GF_MUL( in35, 1 ); \
4956 0 : in35 = GF_ADD( GF_MUL( scratch_11, 174 ), in35 ); \
4957 0 : in36 = GF_MUL( in36, 1 ); \
4958 0 : in36 = GF_ADD( GF_MUL( scratch_12, 174 ), in36 ); \
4959 0 : in37 = GF_MUL( in37, 1 ); \
4960 0 : in37 = GF_ADD( GF_MUL( scratch_13, 174 ), in37 ); \
4961 0 : in38 = GF_MUL( in38, 1 ); \
4962 0 : in38 = GF_ADD( GF_MUL( scratch_14, 174 ), in38 ); \
4963 0 : in39 = GF_MUL( in39, 1 ); \
4964 0 : in39 = GF_ADD( GF_MUL( scratch_15, 174 ), in39 ); \
4965 0 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
4966 0 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
4967 0 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
4968 0 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
4969 0 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
4970 0 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
4971 0 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
4972 0 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
4973 0 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
4974 0 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
4975 0 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
4976 0 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
4977 0 : in32 = GF_MUL( in32, 1 ); \
4978 0 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
4979 0 : in33 = GF_MUL( in33, 1 ); \
4980 0 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
4981 0 : in34 = GF_MUL( in34, 1 ); \
4982 0 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
4983 0 : in35 = GF_MUL( in35, 1 ); \
4984 0 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
4985 0 : in36 = GF_MUL( in36, 1 ); \
4986 0 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
4987 0 : in37 = GF_MUL( in37, 1 ); \
4988 0 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
4989 0 : in38 = GF_MUL( in38, 1 ); \
4990 0 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
4991 0 : in39 = GF_MUL( in39, 1 ); \
4992 0 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
4993 0 : in40 = GF_MUL( in40, 1 ); \
4994 0 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
4995 0 : in41 = GF_MUL( in41, 1 ); \
4996 0 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
4997 0 : in42 = GF_MUL( in42, 1 ); \
4998 0 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
4999 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
5000 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
5001 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
5002 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
5003 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
5004 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
5005 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
5006 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
5007 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
5008 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
5009 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
5010 0 : in11 = GF_MUL( in11, 1 ); \
5011 0 : in11 = GF_ADD( GF_MUL( scratch_43, 0 ), in11 ); \
5012 0 : in12 = GF_MUL( in12, 1 ); \
5013 0 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
5014 0 : in13 = GF_MUL( in13, 1 ); \
5015 0 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
5016 0 : in14 = GF_MUL( in14, 1 ); \
5017 0 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
5018 0 : in15 = GF_MUL( in15, 1 ); \
5019 0 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
5020 0 : in16 = GF_MUL( in16, 1 ); \
5021 0 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
5022 0 : in17 = GF_MUL( in17, 1 ); \
5023 0 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
5024 0 : in18 = GF_MUL( in18, 1 ); \
5025 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
5026 0 : in19 = GF_MUL( in19, 1 ); \
5027 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
5028 0 : in20 = GF_MUL( in20, 1 ); \
5029 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
5030 0 : in21 = GF_MUL( in21, 1 ); \
5031 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
5032 0 : in22 = GF_MUL( in22, 1 ); \
5033 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
5034 0 : in23 = GF_MUL( in23, 1 ); \
5035 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
5036 0 : in24 = GF_MUL( in24, 1 ); \
5037 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
5038 0 : in25 = GF_MUL( in25, 1 ); \
5039 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
5040 0 : in26 = GF_MUL( in26, 1 ); \
5041 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
5042 0 : in27 = GF_MUL( in27, 1 ); \
5043 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
5044 0 : in28 = GF_MUL( in28, 1 ); \
5045 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
5046 0 : in29 = GF_MUL( in29, 1 ); \
5047 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
5048 0 : in30 = GF_MUL( in30, 1 ); \
5049 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
5050 0 : in31 = GF_MUL( in31, 1 ); \
5051 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
5052 0 : } while( 0 )
5053 :
5054 : void fd_reedsol_ppt_64_44( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
5055 : #define FD_REEDSOL_PPT_IMPL_64_44( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
5056 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
5057 0 : do { \
5058 0 : gf_t scratch_12, scratch_13, scratch_14, scratch_15, scratch_16, scratch_17, scratch_18, scratch_19, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27; \
5059 0 : gf_t scratch_4, scratch_44, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57; \
5060 0 : gf_t scratch_58, scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7; \
5061 0 : scratch_44 = in44; \
5062 0 : in44 = GF_MUL( in44, 1 ); \
5063 0 : scratch_45 = in45; \
5064 0 : in45 = GF_MUL( in45, 1 ); \
5065 0 : scratch_46 = in46; \
5066 0 : in46 = GF_MUL( in46, 1 ); \
5067 0 : scratch_47 = in47; \
5068 0 : in47 = GF_MUL( in47, 1 ); \
5069 0 : scratch_48 = in48; \
5070 0 : in48 = GF_MUL( in48, 1 ); \
5071 0 : scratch_49 = in49; \
5072 0 : in49 = GF_MUL( in49, 1 ); \
5073 0 : scratch_50 = in50; \
5074 0 : in50 = GF_MUL( in50, 1 ); \
5075 0 : scratch_51 = in51; \
5076 0 : in51 = GF_MUL( in51, 1 ); \
5077 0 : scratch_52 = in52; \
5078 0 : in52 = GF_MUL( in52, 1 ); \
5079 0 : scratch_53 = in53; \
5080 0 : in53 = GF_MUL( in53, 1 ); \
5081 0 : scratch_54 = in54; \
5082 0 : in54 = GF_MUL( in54, 1 ); \
5083 0 : scratch_55 = in55; \
5084 0 : in55 = GF_MUL( in55, 1 ); \
5085 0 : scratch_56 = in56; \
5086 0 : in56 = GF_MUL( in56, 1 ); \
5087 0 : scratch_57 = in57; \
5088 0 : in57 = GF_MUL( in57, 1 ); \
5089 0 : scratch_58 = in58; \
5090 0 : in58 = GF_MUL( in58, 1 ); \
5091 0 : scratch_59 = in59; \
5092 0 : in59 = GF_MUL( in59, 1 ); \
5093 0 : scratch_60 = in60; \
5094 0 : in60 = GF_MUL( in60, 1 ); \
5095 0 : scratch_61 = in61; \
5096 0 : in61 = GF_MUL( in61, 1 ); \
5097 0 : scratch_62 = in62; \
5098 0 : in62 = GF_MUL( in62, 1 ); \
5099 0 : scratch_63 = in63; \
5100 0 : in63 = GF_MUL( in63, 1 ); \
5101 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
5102 0 : in44 = GF_ADD( GF_MUL( in12, 1 ), in44 ); \
5103 0 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
5104 0 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
5105 0 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
5106 0 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
5107 0 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
5108 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
5109 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
5110 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
5111 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
5112 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
5113 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
5114 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
5115 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
5116 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
5117 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
5118 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
5119 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
5120 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
5121 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
5122 0 : scratch_16 = in48; \
5123 0 : in48 = GF_MUL( in48, 1 ); \
5124 0 : scratch_17 = in49; \
5125 0 : in49 = GF_MUL( in49, 1 ); \
5126 0 : scratch_18 = in50; \
5127 0 : in50 = GF_MUL( in50, 1 ); \
5128 0 : scratch_19 = in51; \
5129 0 : in51 = GF_MUL( in51, 1 ); \
5130 0 : scratch_20 = in52; \
5131 0 : in52 = GF_MUL( in52, 1 ); \
5132 0 : scratch_21 = in53; \
5133 0 : in53 = GF_MUL( in53, 1 ); \
5134 0 : scratch_22 = in54; \
5135 0 : in54 = GF_MUL( in54, 1 ); \
5136 0 : scratch_23 = in55; \
5137 0 : in55 = GF_MUL( in55, 1 ); \
5138 0 : scratch_24 = in56; \
5139 0 : in56 = GF_MUL( in56, 1 ); \
5140 0 : scratch_25 = in57; \
5141 0 : in57 = GF_MUL( in57, 1 ); \
5142 0 : scratch_26 = in58; \
5143 0 : in58 = GF_MUL( in58, 1 ); \
5144 0 : scratch_27 = in59; \
5145 0 : in59 = GF_MUL( in59, 1 ); \
5146 0 : GF_MUL22( in44, in60, 1, 71, 1, 70 ); \
5147 0 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
5148 0 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
5149 0 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
5150 0 : scratch_12 = in44; \
5151 0 : in44 = GF_MUL( in44, 1 ); \
5152 0 : scratch_13 = in45; \
5153 0 : in45 = GF_MUL( in45, 1 ); \
5154 0 : scratch_14 = in46; \
5155 0 : in46 = GF_MUL( in46, 1 ); \
5156 0 : scratch_15 = in47; \
5157 0 : in47 = GF_MUL( in47, 1 ); \
5158 0 : FD_REEDSOL_GENERATE_IFFT( 8, 32, in32, in33, in34, in35, in36, in37, in38, in39 ); \
5159 0 : in44 = GF_ADD( GF_MUL( in36, 1 ), in44 ); \
5160 0 : in45 = GF_ADD( GF_MUL( in37, 1 ), in45 ); \
5161 0 : in46 = GF_ADD( GF_MUL( in38, 1 ), in46 ); \
5162 0 : in47 = GF_ADD( GF_MUL( in39, 1 ), in47 ); \
5163 0 : scratch_4 = in44; \
5164 0 : in44 = GF_MUL( in44, 1 ); \
5165 0 : scratch_5 = in45; \
5166 0 : in45 = GF_MUL( in45, 1 ); \
5167 0 : scratch_6 = in46; \
5168 0 : in46 = GF_MUL( in46, 1 ); \
5169 0 : scratch_7 = in47; \
5170 0 : in47 = GF_MUL( in47, 1 ); \
5171 0 : FD_REEDSOL_GENERATE_IFFT( 4, 40, in40, in41, in42, in43 ); \
5172 0 : in44 = GF_ADD( GF_MUL( in40, 1 ), in44 ); \
5173 0 : in45 = GF_ADD( GF_MUL( in41, 1 ), in45 ); \
5174 0 : in46 = GF_ADD( GF_MUL( in42, 1 ), in46 ); \
5175 0 : in47 = GF_ADD( GF_MUL( in43, 1 ), in47 ); \
5176 0 : FD_REEDSOL_GENERATE_FFT( 4, 44, in44, in45, in46, in47 ); \
5177 0 : in40 = GF_MUL( in40, 1 ); \
5178 0 : in40 = GF_ADD( GF_MUL( scratch_4, 48 ), in40 ); \
5179 0 : in41 = GF_MUL( in41, 1 ); \
5180 0 : in41 = GF_ADD( GF_MUL( scratch_5, 48 ), in41 ); \
5181 0 : in42 = GF_MUL( in42, 1 ); \
5182 0 : in42 = GF_ADD( GF_MUL( scratch_6, 48 ), in42 ); \
5183 0 : in43 = GF_MUL( in43, 1 ); \
5184 0 : in43 = GF_ADD( GF_MUL( scratch_7, 48 ), in43 ); \
5185 0 : GF_MUL22( in32, in40, 175, 174, 1, 1 ); \
5186 0 : GF_MUL22( in33, in41, 175, 174, 1, 1 ); \
5187 0 : GF_MUL22( in34, in42, 175, 174, 1, 1 ); \
5188 0 : GF_MUL22( in35, in43, 175, 174, 1, 1 ); \
5189 0 : in36 = GF_MUL( in36, 1 ); \
5190 0 : in36 = GF_ADD( GF_MUL( scratch_12, 174 ), in36 ); \
5191 0 : in37 = GF_MUL( in37, 1 ); \
5192 0 : in37 = GF_ADD( GF_MUL( scratch_13, 174 ), in37 ); \
5193 0 : in38 = GF_MUL( in38, 1 ); \
5194 0 : in38 = GF_ADD( GF_MUL( scratch_14, 174 ), in38 ); \
5195 0 : in39 = GF_MUL( in39, 1 ); \
5196 0 : in39 = GF_ADD( GF_MUL( scratch_15, 174 ), in39 ); \
5197 0 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
5198 0 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
5199 0 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
5200 0 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
5201 0 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
5202 0 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
5203 0 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
5204 0 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
5205 0 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
5206 0 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
5207 0 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
5208 0 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
5209 0 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
5210 0 : in32 = GF_MUL( in32, 1 ); \
5211 0 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
5212 0 : in33 = GF_MUL( in33, 1 ); \
5213 0 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
5214 0 : in34 = GF_MUL( in34, 1 ); \
5215 0 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
5216 0 : in35 = GF_MUL( in35, 1 ); \
5217 0 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
5218 0 : in36 = GF_MUL( in36, 1 ); \
5219 0 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
5220 0 : in37 = GF_MUL( in37, 1 ); \
5221 0 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
5222 0 : in38 = GF_MUL( in38, 1 ); \
5223 0 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
5224 0 : in39 = GF_MUL( in39, 1 ); \
5225 0 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
5226 0 : in40 = GF_MUL( in40, 1 ); \
5227 0 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
5228 0 : in41 = GF_MUL( in41, 1 ); \
5229 0 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
5230 0 : in42 = GF_MUL( in42, 1 ); \
5231 0 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
5232 0 : in43 = GF_MUL( in43, 1 ); \
5233 0 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
5234 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
5235 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
5236 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
5237 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
5238 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
5239 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
5240 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
5241 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
5242 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
5243 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
5244 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
5245 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
5246 0 : in12 = GF_MUL( in12, 1 ); \
5247 0 : in12 = GF_ADD( GF_MUL( scratch_44, 0 ), in12 ); \
5248 0 : in13 = GF_MUL( in13, 1 ); \
5249 0 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
5250 0 : in14 = GF_MUL( in14, 1 ); \
5251 0 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
5252 0 : in15 = GF_MUL( in15, 1 ); \
5253 0 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
5254 0 : in16 = GF_MUL( in16, 1 ); \
5255 0 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
5256 0 : in17 = GF_MUL( in17, 1 ); \
5257 0 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
5258 0 : in18 = GF_MUL( in18, 1 ); \
5259 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
5260 0 : in19 = GF_MUL( in19, 1 ); \
5261 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
5262 0 : in20 = GF_MUL( in20, 1 ); \
5263 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
5264 0 : in21 = GF_MUL( in21, 1 ); \
5265 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
5266 0 : in22 = GF_MUL( in22, 1 ); \
5267 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
5268 0 : in23 = GF_MUL( in23, 1 ); \
5269 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
5270 0 : in24 = GF_MUL( in24, 1 ); \
5271 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
5272 0 : in25 = GF_MUL( in25, 1 ); \
5273 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
5274 0 : in26 = GF_MUL( in26, 1 ); \
5275 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
5276 0 : in27 = GF_MUL( in27, 1 ); \
5277 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
5278 0 : in28 = GF_MUL( in28, 1 ); \
5279 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
5280 0 : in29 = GF_MUL( in29, 1 ); \
5281 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
5282 0 : in30 = GF_MUL( in30, 1 ); \
5283 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
5284 0 : in31 = GF_MUL( in31, 1 ); \
5285 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
5286 0 : } while( 0 )
5287 :
5288 : void fd_reedsol_ppt_64_45( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
5289 : #define FD_REEDSOL_PPT_IMPL_64_45( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
5290 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
5291 0 : do { \
5292 0 : gf_t scratch_13, scratch_14, scratch_15, scratch_16, scratch_17, scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27; \
5293 0 : gf_t scratch_28, scratch_45, scratch_46, scratch_47, scratch_48, scratch_49, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58; \
5294 0 : gf_t scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7; \
5295 0 : scratch_45 = in45; \
5296 0 : in45 = GF_MUL( in45, 1 ); \
5297 0 : scratch_46 = in46; \
5298 0 : in46 = GF_MUL( in46, 1 ); \
5299 0 : scratch_47 = in47; \
5300 0 : in47 = GF_MUL( in47, 1 ); \
5301 0 : scratch_48 = in48; \
5302 0 : in48 = GF_MUL( in48, 1 ); \
5303 0 : scratch_49 = in49; \
5304 0 : in49 = GF_MUL( in49, 1 ); \
5305 0 : scratch_50 = in50; \
5306 0 : in50 = GF_MUL( in50, 1 ); \
5307 0 : scratch_51 = in51; \
5308 0 : in51 = GF_MUL( in51, 1 ); \
5309 0 : scratch_52 = in52; \
5310 0 : in52 = GF_MUL( in52, 1 ); \
5311 0 : scratch_53 = in53; \
5312 0 : in53 = GF_MUL( in53, 1 ); \
5313 0 : scratch_54 = in54; \
5314 0 : in54 = GF_MUL( in54, 1 ); \
5315 0 : scratch_55 = in55; \
5316 0 : in55 = GF_MUL( in55, 1 ); \
5317 0 : scratch_56 = in56; \
5318 0 : in56 = GF_MUL( in56, 1 ); \
5319 0 : scratch_57 = in57; \
5320 0 : in57 = GF_MUL( in57, 1 ); \
5321 0 : scratch_58 = in58; \
5322 0 : in58 = GF_MUL( in58, 1 ); \
5323 0 : scratch_59 = in59; \
5324 0 : in59 = GF_MUL( in59, 1 ); \
5325 0 : scratch_60 = in60; \
5326 0 : in60 = GF_MUL( in60, 1 ); \
5327 0 : scratch_61 = in61; \
5328 0 : in61 = GF_MUL( in61, 1 ); \
5329 0 : scratch_62 = in62; \
5330 0 : in62 = GF_MUL( in62, 1 ); \
5331 0 : scratch_63 = in63; \
5332 0 : in63 = GF_MUL( in63, 1 ); \
5333 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
5334 0 : in45 = GF_ADD( GF_MUL( in13, 1 ), in45 ); \
5335 0 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
5336 0 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
5337 0 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
5338 0 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
5339 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
5340 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
5341 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
5342 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
5343 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
5344 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
5345 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
5346 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
5347 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
5348 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
5349 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
5350 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
5351 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
5352 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
5353 0 : scratch_16 = in48; \
5354 0 : in48 = GF_MUL( in48, 1 ); \
5355 0 : scratch_17 = in49; \
5356 0 : in49 = GF_MUL( in49, 1 ); \
5357 0 : scratch_18 = in50; \
5358 0 : in50 = GF_MUL( in50, 1 ); \
5359 0 : scratch_19 = in51; \
5360 0 : in51 = GF_MUL( in51, 1 ); \
5361 0 : scratch_20 = in52; \
5362 0 : in52 = GF_MUL( in52, 1 ); \
5363 0 : scratch_21 = in53; \
5364 0 : in53 = GF_MUL( in53, 1 ); \
5365 0 : scratch_22 = in54; \
5366 0 : in54 = GF_MUL( in54, 1 ); \
5367 0 : scratch_23 = in55; \
5368 0 : in55 = GF_MUL( in55, 1 ); \
5369 0 : scratch_24 = in56; \
5370 0 : in56 = GF_MUL( in56, 1 ); \
5371 0 : scratch_25 = in57; \
5372 0 : in57 = GF_MUL( in57, 1 ); \
5373 0 : scratch_26 = in58; \
5374 0 : in58 = GF_MUL( in58, 1 ); \
5375 0 : scratch_27 = in59; \
5376 0 : in59 = GF_MUL( in59, 1 ); \
5377 0 : scratch_28 = in60; \
5378 0 : in60 = GF_MUL( in60, 1 ); \
5379 0 : GF_MUL22( in45, in61, 1, 71, 1, 70 ); \
5380 0 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
5381 0 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
5382 0 : scratch_13 = in45; \
5383 0 : in45 = GF_MUL( in45, 1 ); \
5384 0 : scratch_14 = in46; \
5385 0 : in46 = GF_MUL( in46, 1 ); \
5386 0 : scratch_15 = in47; \
5387 0 : in47 = GF_MUL( in47, 1 ); \
5388 0 : FD_REEDSOL_GENERATE_IFFT( 8, 32, in32, in33, in34, in35, in36, in37, in38, in39 ); \
5389 0 : in45 = GF_ADD( GF_MUL( in37, 1 ), in45 ); \
5390 0 : in46 = GF_ADD( GF_MUL( in38, 1 ), in46 ); \
5391 0 : in47 = GF_ADD( GF_MUL( in39, 1 ), in47 ); \
5392 0 : scratch_5 = in45; \
5393 0 : in45 = GF_MUL( in45, 1 ); \
5394 0 : scratch_6 = in46; \
5395 0 : in46 = GF_MUL( in46, 1 ); \
5396 0 : scratch_7 = in47; \
5397 0 : in47 = GF_MUL( in47, 1 ); \
5398 0 : FD_REEDSOL_GENERATE_IFFT( 4, 40, in40, in41, in42, in43 ); \
5399 0 : in45 = GF_ADD( GF_MUL( in41, 1 ), in45 ); \
5400 0 : in46 = GF_ADD( GF_MUL( in42, 1 ), in46 ); \
5401 0 : in47 = GF_ADD( GF_MUL( in43, 1 ), in47 ); \
5402 0 : scratch_2 = in46; \
5403 0 : in46 = GF_MUL( in46, 1 ); \
5404 0 : GF_MUL22( in45, in47, 1, 247, 1, 246 ); \
5405 0 : GF_MUL22( in44, in45, 1, 44, 1, 1 ); \
5406 0 : in46 = GF_ADD( GF_MUL( in44, 1 ), in46 ); \
5407 0 : GF_MUL22( in46, in47, 1, 46, 1, 47 ); \
5408 0 : in44 = GF_MUL( in44, 1 ); \
5409 0 : in44 = GF_ADD( GF_MUL( scratch_2, 247 ), in44 ); \
5410 0 : GF_MUL22( in40, in44, 49, 48, 1, 1 ); \
5411 0 : in41 = GF_MUL( in41, 1 ); \
5412 0 : in41 = GF_ADD( GF_MUL( scratch_5, 48 ), in41 ); \
5413 0 : in42 = GF_MUL( in42, 1 ); \
5414 0 : in42 = GF_ADD( GF_MUL( scratch_6, 48 ), in42 ); \
5415 0 : in43 = GF_MUL( in43, 1 ); \
5416 0 : in43 = GF_ADD( GF_MUL( scratch_7, 48 ), in43 ); \
5417 0 : GF_MUL22( in32, in40, 175, 174, 1, 1 ); \
5418 0 : GF_MUL22( in33, in41, 175, 174, 1, 1 ); \
5419 0 : GF_MUL22( in34, in42, 175, 174, 1, 1 ); \
5420 0 : GF_MUL22( in35, in43, 175, 174, 1, 1 ); \
5421 0 : GF_MUL22( in36, in44, 175, 174, 1, 1 ); \
5422 0 : in37 = GF_MUL( in37, 1 ); \
5423 0 : in37 = GF_ADD( GF_MUL( scratch_13, 174 ), in37 ); \
5424 0 : in38 = GF_MUL( in38, 1 ); \
5425 0 : in38 = GF_ADD( GF_MUL( scratch_14, 174 ), in38 ); \
5426 0 : in39 = GF_MUL( in39, 1 ); \
5427 0 : in39 = GF_ADD( GF_MUL( scratch_15, 174 ), in39 ); \
5428 0 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
5429 0 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
5430 0 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
5431 0 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
5432 0 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
5433 0 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
5434 0 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
5435 0 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
5436 0 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
5437 0 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
5438 0 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
5439 0 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
5440 0 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
5441 0 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
5442 0 : in32 = GF_MUL( in32, 1 ); \
5443 0 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
5444 0 : in33 = GF_MUL( in33, 1 ); \
5445 0 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
5446 0 : in34 = GF_MUL( in34, 1 ); \
5447 0 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
5448 0 : in35 = GF_MUL( in35, 1 ); \
5449 0 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
5450 0 : in36 = GF_MUL( in36, 1 ); \
5451 0 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
5452 0 : in37 = GF_MUL( in37, 1 ); \
5453 0 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
5454 0 : in38 = GF_MUL( in38, 1 ); \
5455 0 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
5456 0 : in39 = GF_MUL( in39, 1 ); \
5457 0 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
5458 0 : in40 = GF_MUL( in40, 1 ); \
5459 0 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
5460 0 : in41 = GF_MUL( in41, 1 ); \
5461 0 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
5462 0 : in42 = GF_MUL( in42, 1 ); \
5463 0 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
5464 0 : in43 = GF_MUL( in43, 1 ); \
5465 0 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
5466 0 : in44 = GF_MUL( in44, 1 ); \
5467 0 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
5468 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
5469 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
5470 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
5471 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
5472 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
5473 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
5474 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
5475 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
5476 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
5477 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
5478 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
5479 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
5480 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
5481 0 : in13 = GF_MUL( in13, 1 ); \
5482 0 : in13 = GF_ADD( GF_MUL( scratch_45, 0 ), in13 ); \
5483 0 : in14 = GF_MUL( in14, 1 ); \
5484 0 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
5485 0 : in15 = GF_MUL( in15, 1 ); \
5486 0 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
5487 0 : in16 = GF_MUL( in16, 1 ); \
5488 0 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
5489 0 : in17 = GF_MUL( in17, 1 ); \
5490 0 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
5491 0 : in18 = GF_MUL( in18, 1 ); \
5492 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
5493 0 : in19 = GF_MUL( in19, 1 ); \
5494 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
5495 0 : in20 = GF_MUL( in20, 1 ); \
5496 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
5497 0 : in21 = GF_MUL( in21, 1 ); \
5498 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
5499 0 : in22 = GF_MUL( in22, 1 ); \
5500 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
5501 0 : in23 = GF_MUL( in23, 1 ); \
5502 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
5503 0 : in24 = GF_MUL( in24, 1 ); \
5504 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
5505 0 : in25 = GF_MUL( in25, 1 ); \
5506 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
5507 0 : in26 = GF_MUL( in26, 1 ); \
5508 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
5509 0 : in27 = GF_MUL( in27, 1 ); \
5510 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
5511 0 : in28 = GF_MUL( in28, 1 ); \
5512 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
5513 0 : in29 = GF_MUL( in29, 1 ); \
5514 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
5515 0 : in30 = GF_MUL( in30, 1 ); \
5516 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
5517 0 : in31 = GF_MUL( in31, 1 ); \
5518 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
5519 0 : } while( 0 )
5520 :
5521 : void fd_reedsol_ppt_64_46( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
5522 : #define FD_REEDSOL_PPT_IMPL_64_46( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
5523 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
5524 0 : do { \
5525 0 : gf_t scratch_14, scratch_15, scratch_16, scratch_17, scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28; \
5526 0 : gf_t scratch_29, scratch_3, scratch_46, scratch_47, scratch_48, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59; \
5527 0 : gf_t scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7; \
5528 0 : scratch_46 = in46; \
5529 0 : in46 = GF_MUL( in46, 1 ); \
5530 0 : scratch_47 = in47; \
5531 0 : in47 = GF_MUL( in47, 1 ); \
5532 0 : scratch_48 = in48; \
5533 0 : in48 = GF_MUL( in48, 1 ); \
5534 0 : scratch_49 = in49; \
5535 0 : in49 = GF_MUL( in49, 1 ); \
5536 0 : scratch_50 = in50; \
5537 0 : in50 = GF_MUL( in50, 1 ); \
5538 0 : scratch_51 = in51; \
5539 0 : in51 = GF_MUL( in51, 1 ); \
5540 0 : scratch_52 = in52; \
5541 0 : in52 = GF_MUL( in52, 1 ); \
5542 0 : scratch_53 = in53; \
5543 0 : in53 = GF_MUL( in53, 1 ); \
5544 0 : scratch_54 = in54; \
5545 0 : in54 = GF_MUL( in54, 1 ); \
5546 0 : scratch_55 = in55; \
5547 0 : in55 = GF_MUL( in55, 1 ); \
5548 0 : scratch_56 = in56; \
5549 0 : in56 = GF_MUL( in56, 1 ); \
5550 0 : scratch_57 = in57; \
5551 0 : in57 = GF_MUL( in57, 1 ); \
5552 0 : scratch_58 = in58; \
5553 0 : in58 = GF_MUL( in58, 1 ); \
5554 0 : scratch_59 = in59; \
5555 0 : in59 = GF_MUL( in59, 1 ); \
5556 0 : scratch_60 = in60; \
5557 0 : in60 = GF_MUL( in60, 1 ); \
5558 0 : scratch_61 = in61; \
5559 0 : in61 = GF_MUL( in61, 1 ); \
5560 0 : scratch_62 = in62; \
5561 0 : in62 = GF_MUL( in62, 1 ); \
5562 0 : scratch_63 = in63; \
5563 0 : in63 = GF_MUL( in63, 1 ); \
5564 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
5565 0 : in46 = GF_ADD( GF_MUL( in14, 1 ), in46 ); \
5566 0 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
5567 0 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
5568 0 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
5569 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
5570 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
5571 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
5572 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
5573 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
5574 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
5575 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
5576 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
5577 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
5578 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
5579 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
5580 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
5581 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
5582 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
5583 0 : scratch_16 = in48; \
5584 0 : in48 = GF_MUL( in48, 1 ); \
5585 0 : scratch_17 = in49; \
5586 0 : in49 = GF_MUL( in49, 1 ); \
5587 0 : scratch_18 = in50; \
5588 0 : in50 = GF_MUL( in50, 1 ); \
5589 0 : scratch_19 = in51; \
5590 0 : in51 = GF_MUL( in51, 1 ); \
5591 0 : scratch_20 = in52; \
5592 0 : in52 = GF_MUL( in52, 1 ); \
5593 0 : scratch_21 = in53; \
5594 0 : in53 = GF_MUL( in53, 1 ); \
5595 0 : scratch_22 = in54; \
5596 0 : in54 = GF_MUL( in54, 1 ); \
5597 0 : scratch_23 = in55; \
5598 0 : in55 = GF_MUL( in55, 1 ); \
5599 0 : scratch_24 = in56; \
5600 0 : in56 = GF_MUL( in56, 1 ); \
5601 0 : scratch_25 = in57; \
5602 0 : in57 = GF_MUL( in57, 1 ); \
5603 0 : scratch_26 = in58; \
5604 0 : in58 = GF_MUL( in58, 1 ); \
5605 0 : scratch_27 = in59; \
5606 0 : in59 = GF_MUL( in59, 1 ); \
5607 0 : scratch_28 = in60; \
5608 0 : in60 = GF_MUL( in60, 1 ); \
5609 0 : scratch_29 = in61; \
5610 0 : in61 = GF_MUL( in61, 1 ); \
5611 0 : GF_MUL22( in46, in62, 1, 71, 1, 70 ); \
5612 0 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
5613 0 : scratch_14 = in46; \
5614 0 : in46 = GF_MUL( in46, 1 ); \
5615 0 : scratch_15 = in47; \
5616 0 : in47 = GF_MUL( in47, 1 ); \
5617 0 : FD_REEDSOL_GENERATE_IFFT( 8, 32, in32, in33, in34, in35, in36, in37, in38, in39 ); \
5618 0 : in46 = GF_ADD( GF_MUL( in38, 1 ), in46 ); \
5619 0 : in47 = GF_ADD( GF_MUL( in39, 1 ), in47 ); \
5620 0 : scratch_6 = in46; \
5621 0 : in46 = GF_MUL( in46, 1 ); \
5622 0 : scratch_7 = in47; \
5623 0 : in47 = GF_MUL( in47, 1 ); \
5624 0 : FD_REEDSOL_GENERATE_IFFT( 4, 40, in40, in41, in42, in43 ); \
5625 0 : in46 = GF_ADD( GF_MUL( in42, 1 ), in46 ); \
5626 0 : in47 = GF_ADD( GF_MUL( in43, 1 ), in47 ); \
5627 0 : scratch_2 = in46; \
5628 0 : in46 = GF_MUL( in46, 1 ); \
5629 0 : scratch_3 = in47; \
5630 0 : in47 = GF_MUL( in47, 1 ); \
5631 0 : GF_MUL22( in44, in45, 45, 44, 1, 1 ); \
5632 0 : in46 = GF_ADD( GF_MUL( in44, 1 ), in46 ); \
5633 0 : in47 = GF_ADD( GF_MUL( in45, 1 ), in47 ); \
5634 0 : GF_MUL22( in46, in47, 1, 46, 1, 47 ); \
5635 0 : in44 = GF_MUL( in44, 1 ); \
5636 0 : in44 = GF_ADD( GF_MUL( scratch_2, 247 ), in44 ); \
5637 0 : in45 = GF_MUL( in45, 1 ); \
5638 0 : in45 = GF_ADD( GF_MUL( scratch_3, 247 ), in45 ); \
5639 0 : GF_MUL22( in40, in44, 49, 48, 1, 1 ); \
5640 0 : GF_MUL22( in41, in45, 49, 48, 1, 1 ); \
5641 0 : in42 = GF_MUL( in42, 1 ); \
5642 0 : in42 = GF_ADD( GF_MUL( scratch_6, 48 ), in42 ); \
5643 0 : in43 = GF_MUL( in43, 1 ); \
5644 0 : in43 = GF_ADD( GF_MUL( scratch_7, 48 ), in43 ); \
5645 0 : GF_MUL22( in32, in40, 175, 174, 1, 1 ); \
5646 0 : GF_MUL22( in33, in41, 175, 174, 1, 1 ); \
5647 0 : GF_MUL22( in34, in42, 175, 174, 1, 1 ); \
5648 0 : GF_MUL22( in35, in43, 175, 174, 1, 1 ); \
5649 0 : GF_MUL22( in36, in44, 175, 174, 1, 1 ); \
5650 0 : GF_MUL22( in37, in45, 175, 174, 1, 1 ); \
5651 0 : in38 = GF_MUL( in38, 1 ); \
5652 0 : in38 = GF_ADD( GF_MUL( scratch_14, 174 ), in38 ); \
5653 0 : in39 = GF_MUL( in39, 1 ); \
5654 0 : in39 = GF_ADD( GF_MUL( scratch_15, 174 ), in39 ); \
5655 0 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
5656 0 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
5657 0 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
5658 0 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
5659 0 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
5660 0 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
5661 0 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
5662 0 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
5663 0 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
5664 0 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
5665 0 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
5666 0 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
5667 0 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
5668 0 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
5669 0 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
5670 0 : in32 = GF_MUL( in32, 1 ); \
5671 0 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
5672 0 : in33 = GF_MUL( in33, 1 ); \
5673 0 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
5674 0 : in34 = GF_MUL( in34, 1 ); \
5675 0 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
5676 0 : in35 = GF_MUL( in35, 1 ); \
5677 0 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
5678 0 : in36 = GF_MUL( in36, 1 ); \
5679 0 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
5680 0 : in37 = GF_MUL( in37, 1 ); \
5681 0 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
5682 0 : in38 = GF_MUL( in38, 1 ); \
5683 0 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
5684 0 : in39 = GF_MUL( in39, 1 ); \
5685 0 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
5686 0 : in40 = GF_MUL( in40, 1 ); \
5687 0 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
5688 0 : in41 = GF_MUL( in41, 1 ); \
5689 0 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
5690 0 : in42 = GF_MUL( in42, 1 ); \
5691 0 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
5692 0 : in43 = GF_MUL( in43, 1 ); \
5693 0 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
5694 0 : in44 = GF_MUL( in44, 1 ); \
5695 0 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
5696 0 : in45 = GF_MUL( in45, 1 ); \
5697 0 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
5698 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
5699 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
5700 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
5701 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
5702 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
5703 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
5704 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
5705 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
5706 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
5707 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
5708 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
5709 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
5710 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
5711 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
5712 0 : in14 = GF_MUL( in14, 1 ); \
5713 0 : in14 = GF_ADD( GF_MUL( scratch_46, 0 ), in14 ); \
5714 0 : in15 = GF_MUL( in15, 1 ); \
5715 0 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
5716 0 : in16 = GF_MUL( in16, 1 ); \
5717 0 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
5718 0 : in17 = GF_MUL( in17, 1 ); \
5719 0 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
5720 0 : in18 = GF_MUL( in18, 1 ); \
5721 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
5722 0 : in19 = GF_MUL( in19, 1 ); \
5723 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
5724 0 : in20 = GF_MUL( in20, 1 ); \
5725 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
5726 0 : in21 = GF_MUL( in21, 1 ); \
5727 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
5728 0 : in22 = GF_MUL( in22, 1 ); \
5729 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
5730 0 : in23 = GF_MUL( in23, 1 ); \
5731 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
5732 0 : in24 = GF_MUL( in24, 1 ); \
5733 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
5734 0 : in25 = GF_MUL( in25, 1 ); \
5735 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
5736 0 : in26 = GF_MUL( in26, 1 ); \
5737 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
5738 0 : in27 = GF_MUL( in27, 1 ); \
5739 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
5740 0 : in28 = GF_MUL( in28, 1 ); \
5741 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
5742 0 : in29 = GF_MUL( in29, 1 ); \
5743 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
5744 0 : in30 = GF_MUL( in30, 1 ); \
5745 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
5746 0 : in31 = GF_MUL( in31, 1 ); \
5747 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
5748 0 : } while( 0 )
5749 :
5750 : void fd_reedsol_ppt_64_47( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
5751 : #define FD_REEDSOL_PPT_IMPL_64_47( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
5752 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
5753 0 : do { \
5754 0 : gf_t scratch_15, scratch_16, scratch_17, scratch_18, scratch_19, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3; \
5755 0 : gf_t scratch_30, scratch_47, scratch_48, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_60, scratch_61; \
5756 0 : gf_t scratch_62, scratch_63, scratch_7; \
5757 0 : scratch_47 = in47; \
5758 0 : in47 = GF_MUL( in47, 1 ); \
5759 0 : scratch_48 = in48; \
5760 0 : in48 = GF_MUL( in48, 1 ); \
5761 0 : scratch_49 = in49; \
5762 0 : in49 = GF_MUL( in49, 1 ); \
5763 0 : scratch_50 = in50; \
5764 0 : in50 = GF_MUL( in50, 1 ); \
5765 0 : scratch_51 = in51; \
5766 0 : in51 = GF_MUL( in51, 1 ); \
5767 0 : scratch_52 = in52; \
5768 0 : in52 = GF_MUL( in52, 1 ); \
5769 0 : scratch_53 = in53; \
5770 0 : in53 = GF_MUL( in53, 1 ); \
5771 0 : scratch_54 = in54; \
5772 0 : in54 = GF_MUL( in54, 1 ); \
5773 0 : scratch_55 = in55; \
5774 0 : in55 = GF_MUL( in55, 1 ); \
5775 0 : scratch_56 = in56; \
5776 0 : in56 = GF_MUL( in56, 1 ); \
5777 0 : scratch_57 = in57; \
5778 0 : in57 = GF_MUL( in57, 1 ); \
5779 0 : scratch_58 = in58; \
5780 0 : in58 = GF_MUL( in58, 1 ); \
5781 0 : scratch_59 = in59; \
5782 0 : in59 = GF_MUL( in59, 1 ); \
5783 0 : scratch_60 = in60; \
5784 0 : in60 = GF_MUL( in60, 1 ); \
5785 0 : scratch_61 = in61; \
5786 0 : in61 = GF_MUL( in61, 1 ); \
5787 0 : scratch_62 = in62; \
5788 0 : in62 = GF_MUL( in62, 1 ); \
5789 0 : scratch_63 = in63; \
5790 0 : in63 = GF_MUL( in63, 1 ); \
5791 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
5792 0 : in47 = GF_ADD( GF_MUL( in15, 1 ), in47 ); \
5793 0 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
5794 0 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
5795 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
5796 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
5797 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
5798 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
5799 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
5800 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
5801 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
5802 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
5803 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
5804 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
5805 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
5806 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
5807 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
5808 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
5809 0 : scratch_16 = in48; \
5810 0 : in48 = GF_MUL( in48, 1 ); \
5811 0 : scratch_17 = in49; \
5812 0 : in49 = GF_MUL( in49, 1 ); \
5813 0 : scratch_18 = in50; \
5814 0 : in50 = GF_MUL( in50, 1 ); \
5815 0 : scratch_19 = in51; \
5816 0 : in51 = GF_MUL( in51, 1 ); \
5817 0 : scratch_20 = in52; \
5818 0 : in52 = GF_MUL( in52, 1 ); \
5819 0 : scratch_21 = in53; \
5820 0 : in53 = GF_MUL( in53, 1 ); \
5821 0 : scratch_22 = in54; \
5822 0 : in54 = GF_MUL( in54, 1 ); \
5823 0 : scratch_23 = in55; \
5824 0 : in55 = GF_MUL( in55, 1 ); \
5825 0 : scratch_24 = in56; \
5826 0 : in56 = GF_MUL( in56, 1 ); \
5827 0 : scratch_25 = in57; \
5828 0 : in57 = GF_MUL( in57, 1 ); \
5829 0 : scratch_26 = in58; \
5830 0 : in58 = GF_MUL( in58, 1 ); \
5831 0 : scratch_27 = in59; \
5832 0 : in59 = GF_MUL( in59, 1 ); \
5833 0 : scratch_28 = in60; \
5834 0 : in60 = GF_MUL( in60, 1 ); \
5835 0 : scratch_29 = in61; \
5836 0 : in61 = GF_MUL( in61, 1 ); \
5837 0 : scratch_30 = in62; \
5838 0 : in62 = GF_MUL( in62, 1 ); \
5839 0 : GF_MUL22( in47, in63, 1, 71, 1, 70 ); \
5840 0 : scratch_15 = in47; \
5841 0 : in47 = GF_MUL( in47, 1 ); \
5842 0 : FD_REEDSOL_GENERATE_IFFT( 8, 32, in32, in33, in34, in35, in36, in37, in38, in39 ); \
5843 0 : in47 = GF_ADD( GF_MUL( in39, 1 ), in47 ); \
5844 0 : scratch_7 = in47; \
5845 0 : in47 = GF_MUL( in47, 1 ); \
5846 0 : FD_REEDSOL_GENERATE_IFFT( 4, 40, in40, in41, in42, in43 ); \
5847 0 : in47 = GF_ADD( GF_MUL( in43, 1 ), in47 ); \
5848 0 : scratch_3 = in47; \
5849 0 : in47 = GF_MUL( in47, 1 ); \
5850 0 : GF_MUL22( in44, in45, 45, 44, 1, 1 ); \
5851 0 : in47 = GF_ADD( GF_MUL( in45, 1 ), in47 ); \
5852 0 : GF_MUL22( in46, in47, 1, 46, 1, 1 ); \
5853 0 : GF_MUL22( in44, in46, 246, 247, 1, 1 ); \
5854 0 : in45 = GF_MUL( in45, 1 ); \
5855 0 : in45 = GF_ADD( GF_MUL( scratch_3, 247 ), in45 ); \
5856 0 : GF_MUL22( in40, in44, 49, 48, 1, 1 ); \
5857 0 : GF_MUL22( in41, in45, 49, 48, 1, 1 ); \
5858 0 : GF_MUL22( in42, in46, 49, 48, 1, 1 ); \
5859 0 : in43 = GF_MUL( in43, 1 ); \
5860 0 : in43 = GF_ADD( GF_MUL( scratch_7, 48 ), in43 ); \
5861 0 : GF_MUL22( in32, in40, 175, 174, 1, 1 ); \
5862 0 : GF_MUL22( in33, in41, 175, 174, 1, 1 ); \
5863 0 : GF_MUL22( in34, in42, 175, 174, 1, 1 ); \
5864 0 : GF_MUL22( in35, in43, 175, 174, 1, 1 ); \
5865 0 : GF_MUL22( in36, in44, 175, 174, 1, 1 ); \
5866 0 : GF_MUL22( in37, in45, 175, 174, 1, 1 ); \
5867 0 : GF_MUL22( in38, in46, 175, 174, 1, 1 ); \
5868 0 : in39 = GF_MUL( in39, 1 ); \
5869 0 : in39 = GF_ADD( GF_MUL( scratch_15, 174 ), in39 ); \
5870 0 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
5871 0 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
5872 0 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
5873 0 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
5874 0 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
5875 0 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
5876 0 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
5877 0 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
5878 0 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
5879 0 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
5880 0 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
5881 0 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
5882 0 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
5883 0 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
5884 0 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
5885 0 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
5886 0 : in32 = GF_MUL( in32, 1 ); \
5887 0 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
5888 0 : in33 = GF_MUL( in33, 1 ); \
5889 0 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
5890 0 : in34 = GF_MUL( in34, 1 ); \
5891 0 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
5892 0 : in35 = GF_MUL( in35, 1 ); \
5893 0 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
5894 0 : in36 = GF_MUL( in36, 1 ); \
5895 0 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
5896 0 : in37 = GF_MUL( in37, 1 ); \
5897 0 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
5898 0 : in38 = GF_MUL( in38, 1 ); \
5899 0 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
5900 0 : in39 = GF_MUL( in39, 1 ); \
5901 0 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
5902 0 : in40 = GF_MUL( in40, 1 ); \
5903 0 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
5904 0 : in41 = GF_MUL( in41, 1 ); \
5905 0 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
5906 0 : in42 = GF_MUL( in42, 1 ); \
5907 0 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
5908 0 : in43 = GF_MUL( in43, 1 ); \
5909 0 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
5910 0 : in44 = GF_MUL( in44, 1 ); \
5911 0 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
5912 0 : in45 = GF_MUL( in45, 1 ); \
5913 0 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
5914 0 : in46 = GF_MUL( in46, 1 ); \
5915 0 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
5916 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
5917 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
5918 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
5919 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
5920 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
5921 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
5922 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
5923 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
5924 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
5925 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
5926 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
5927 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
5928 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
5929 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
5930 0 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
5931 0 : in15 = GF_MUL( in15, 1 ); \
5932 0 : in15 = GF_ADD( GF_MUL( scratch_47, 0 ), in15 ); \
5933 0 : in16 = GF_MUL( in16, 1 ); \
5934 0 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
5935 0 : in17 = GF_MUL( in17, 1 ); \
5936 0 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
5937 0 : in18 = GF_MUL( in18, 1 ); \
5938 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
5939 0 : in19 = GF_MUL( in19, 1 ); \
5940 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
5941 0 : in20 = GF_MUL( in20, 1 ); \
5942 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
5943 0 : in21 = GF_MUL( in21, 1 ); \
5944 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
5945 0 : in22 = GF_MUL( in22, 1 ); \
5946 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
5947 0 : in23 = GF_MUL( in23, 1 ); \
5948 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
5949 0 : in24 = GF_MUL( in24, 1 ); \
5950 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
5951 0 : in25 = GF_MUL( in25, 1 ); \
5952 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
5953 0 : in26 = GF_MUL( in26, 1 ); \
5954 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
5955 0 : in27 = GF_MUL( in27, 1 ); \
5956 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
5957 0 : in28 = GF_MUL( in28, 1 ); \
5958 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
5959 0 : in29 = GF_MUL( in29, 1 ); \
5960 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
5961 0 : in30 = GF_MUL( in30, 1 ); \
5962 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
5963 0 : in31 = GF_MUL( in31, 1 ); \
5964 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
5965 0 : } while( 0 )
5966 :
5967 : void fd_reedsol_ppt_64_48( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
5968 : #define FD_REEDSOL_PPT_IMPL_64_48( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
5969 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
5970 0 : do { \
5971 0 : gf_t scratch_16, scratch_17, scratch_18, scratch_19, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31; \
5972 0 : gf_t scratch_48, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63; \
5973 0 : scratch_48 = in48; \
5974 0 : in48 = GF_MUL( in48, 1 ); \
5975 0 : scratch_49 = in49; \
5976 0 : in49 = GF_MUL( in49, 1 ); \
5977 0 : scratch_50 = in50; \
5978 0 : in50 = GF_MUL( in50, 1 ); \
5979 0 : scratch_51 = in51; \
5980 0 : in51 = GF_MUL( in51, 1 ); \
5981 0 : scratch_52 = in52; \
5982 0 : in52 = GF_MUL( in52, 1 ); \
5983 0 : scratch_53 = in53; \
5984 0 : in53 = GF_MUL( in53, 1 ); \
5985 0 : scratch_54 = in54; \
5986 0 : in54 = GF_MUL( in54, 1 ); \
5987 0 : scratch_55 = in55; \
5988 0 : in55 = GF_MUL( in55, 1 ); \
5989 0 : scratch_56 = in56; \
5990 0 : in56 = GF_MUL( in56, 1 ); \
5991 0 : scratch_57 = in57; \
5992 0 : in57 = GF_MUL( in57, 1 ); \
5993 0 : scratch_58 = in58; \
5994 0 : in58 = GF_MUL( in58, 1 ); \
5995 0 : scratch_59 = in59; \
5996 0 : in59 = GF_MUL( in59, 1 ); \
5997 0 : scratch_60 = in60; \
5998 0 : in60 = GF_MUL( in60, 1 ); \
5999 0 : scratch_61 = in61; \
6000 0 : in61 = GF_MUL( in61, 1 ); \
6001 0 : scratch_62 = in62; \
6002 0 : in62 = GF_MUL( in62, 1 ); \
6003 0 : scratch_63 = in63; \
6004 0 : in63 = GF_MUL( in63, 1 ); \
6005 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
6006 0 : in48 = GF_ADD( GF_MUL( in16, 1 ), in48 ); \
6007 0 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
6008 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
6009 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
6010 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
6011 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
6012 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
6013 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
6014 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
6015 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
6016 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
6017 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
6018 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
6019 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
6020 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
6021 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
6022 0 : scratch_16 = in48; \
6023 0 : in48 = GF_MUL( in48, 1 ); \
6024 0 : scratch_17 = in49; \
6025 0 : in49 = GF_MUL( in49, 1 ); \
6026 0 : scratch_18 = in50; \
6027 0 : in50 = GF_MUL( in50, 1 ); \
6028 0 : scratch_19 = in51; \
6029 0 : in51 = GF_MUL( in51, 1 ); \
6030 0 : scratch_20 = in52; \
6031 0 : in52 = GF_MUL( in52, 1 ); \
6032 0 : scratch_21 = in53; \
6033 0 : in53 = GF_MUL( in53, 1 ); \
6034 0 : scratch_22 = in54; \
6035 0 : in54 = GF_MUL( in54, 1 ); \
6036 0 : scratch_23 = in55; \
6037 0 : in55 = GF_MUL( in55, 1 ); \
6038 0 : scratch_24 = in56; \
6039 0 : in56 = GF_MUL( in56, 1 ); \
6040 0 : scratch_25 = in57; \
6041 0 : in57 = GF_MUL( in57, 1 ); \
6042 0 : scratch_26 = in58; \
6043 0 : in58 = GF_MUL( in58, 1 ); \
6044 0 : scratch_27 = in59; \
6045 0 : in59 = GF_MUL( in59, 1 ); \
6046 0 : scratch_28 = in60; \
6047 0 : in60 = GF_MUL( in60, 1 ); \
6048 0 : scratch_29 = in61; \
6049 0 : in61 = GF_MUL( in61, 1 ); \
6050 0 : scratch_30 = in62; \
6051 0 : in62 = GF_MUL( in62, 1 ); \
6052 0 : scratch_31 = in63; \
6053 0 : in63 = GF_MUL( in63, 1 ); \
6054 0 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
6055 0 : in48 = GF_ADD( GF_MUL( in32, 1 ), in48 ); \
6056 0 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
6057 0 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
6058 0 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
6059 0 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
6060 0 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
6061 0 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
6062 0 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
6063 0 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
6064 0 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
6065 0 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
6066 0 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
6067 0 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
6068 0 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
6069 0 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
6070 0 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
6071 0 : FD_REEDSOL_GENERATE_FFT( 16, 48, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
6072 0 : in32 = GF_MUL( in32, 1 ); \
6073 0 : in32 = GF_ADD( GF_MUL( scratch_16, 71 ), in32 ); \
6074 0 : in33 = GF_MUL( in33, 1 ); \
6075 0 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
6076 0 : in34 = GF_MUL( in34, 1 ); \
6077 0 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
6078 0 : in35 = GF_MUL( in35, 1 ); \
6079 0 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
6080 0 : in36 = GF_MUL( in36, 1 ); \
6081 0 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
6082 0 : in37 = GF_MUL( in37, 1 ); \
6083 0 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
6084 0 : in38 = GF_MUL( in38, 1 ); \
6085 0 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
6086 0 : in39 = GF_MUL( in39, 1 ); \
6087 0 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
6088 0 : in40 = GF_MUL( in40, 1 ); \
6089 0 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
6090 0 : in41 = GF_MUL( in41, 1 ); \
6091 0 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
6092 0 : in42 = GF_MUL( in42, 1 ); \
6093 0 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
6094 0 : in43 = GF_MUL( in43, 1 ); \
6095 0 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
6096 0 : in44 = GF_MUL( in44, 1 ); \
6097 0 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
6098 0 : in45 = GF_MUL( in45, 1 ); \
6099 0 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
6100 0 : in46 = GF_MUL( in46, 1 ); \
6101 0 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
6102 0 : in47 = GF_MUL( in47, 1 ); \
6103 0 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
6104 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
6105 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
6106 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
6107 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
6108 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
6109 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
6110 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
6111 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
6112 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
6113 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
6114 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
6115 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
6116 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
6117 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
6118 0 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
6119 0 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
6120 0 : in16 = GF_MUL( in16, 1 ); \
6121 0 : in16 = GF_ADD( GF_MUL( scratch_48, 0 ), in16 ); \
6122 0 : in17 = GF_MUL( in17, 1 ); \
6123 0 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
6124 0 : in18 = GF_MUL( in18, 1 ); \
6125 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
6126 0 : in19 = GF_MUL( in19, 1 ); \
6127 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
6128 0 : in20 = GF_MUL( in20, 1 ); \
6129 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
6130 0 : in21 = GF_MUL( in21, 1 ); \
6131 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
6132 0 : in22 = GF_MUL( in22, 1 ); \
6133 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
6134 0 : in23 = GF_MUL( in23, 1 ); \
6135 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
6136 0 : in24 = GF_MUL( in24, 1 ); \
6137 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
6138 0 : in25 = GF_MUL( in25, 1 ); \
6139 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
6140 0 : in26 = GF_MUL( in26, 1 ); \
6141 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
6142 0 : in27 = GF_MUL( in27, 1 ); \
6143 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
6144 0 : in28 = GF_MUL( in28, 1 ); \
6145 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
6146 0 : in29 = GF_MUL( in29, 1 ); \
6147 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
6148 0 : in30 = GF_MUL( in30, 1 ); \
6149 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
6150 0 : in31 = GF_MUL( in31, 1 ); \
6151 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
6152 0 : } while( 0 )
6153 :
6154 : void fd_reedsol_ppt_64_49( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
6155 : #define FD_REEDSOL_PPT_IMPL_64_49( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
6156 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
6157 0 : do { \
6158 0 : gf_t scratch_17, scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31; \
6159 0 : gf_t scratch_4, scratch_49, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63; \
6160 0 : gf_t scratch_8; \
6161 0 : scratch_49 = in49; \
6162 0 : in49 = GF_MUL( in49, 1 ); \
6163 0 : scratch_50 = in50; \
6164 0 : in50 = GF_MUL( in50, 1 ); \
6165 0 : scratch_51 = in51; \
6166 0 : in51 = GF_MUL( in51, 1 ); \
6167 0 : scratch_52 = in52; \
6168 0 : in52 = GF_MUL( in52, 1 ); \
6169 0 : scratch_53 = in53; \
6170 0 : in53 = GF_MUL( in53, 1 ); \
6171 0 : scratch_54 = in54; \
6172 0 : in54 = GF_MUL( in54, 1 ); \
6173 0 : scratch_55 = in55; \
6174 0 : in55 = GF_MUL( in55, 1 ); \
6175 0 : scratch_56 = in56; \
6176 0 : in56 = GF_MUL( in56, 1 ); \
6177 0 : scratch_57 = in57; \
6178 0 : in57 = GF_MUL( in57, 1 ); \
6179 0 : scratch_58 = in58; \
6180 0 : in58 = GF_MUL( in58, 1 ); \
6181 0 : scratch_59 = in59; \
6182 0 : in59 = GF_MUL( in59, 1 ); \
6183 0 : scratch_60 = in60; \
6184 0 : in60 = GF_MUL( in60, 1 ); \
6185 0 : scratch_61 = in61; \
6186 0 : in61 = GF_MUL( in61, 1 ); \
6187 0 : scratch_62 = in62; \
6188 0 : in62 = GF_MUL( in62, 1 ); \
6189 0 : scratch_63 = in63; \
6190 0 : in63 = GF_MUL( in63, 1 ); \
6191 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
6192 0 : in49 = GF_ADD( GF_MUL( in17, 1 ), in49 ); \
6193 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
6194 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
6195 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
6196 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
6197 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
6198 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
6199 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
6200 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
6201 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
6202 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
6203 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
6204 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
6205 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
6206 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
6207 0 : scratch_17 = in49; \
6208 0 : in49 = GF_MUL( in49, 1 ); \
6209 0 : scratch_18 = in50; \
6210 0 : in50 = GF_MUL( in50, 1 ); \
6211 0 : scratch_19 = in51; \
6212 0 : in51 = GF_MUL( in51, 1 ); \
6213 0 : scratch_20 = in52; \
6214 0 : in52 = GF_MUL( in52, 1 ); \
6215 0 : scratch_21 = in53; \
6216 0 : in53 = GF_MUL( in53, 1 ); \
6217 0 : scratch_22 = in54; \
6218 0 : in54 = GF_MUL( in54, 1 ); \
6219 0 : scratch_23 = in55; \
6220 0 : in55 = GF_MUL( in55, 1 ); \
6221 0 : scratch_24 = in56; \
6222 0 : in56 = GF_MUL( in56, 1 ); \
6223 0 : scratch_25 = in57; \
6224 0 : in57 = GF_MUL( in57, 1 ); \
6225 0 : scratch_26 = in58; \
6226 0 : in58 = GF_MUL( in58, 1 ); \
6227 0 : scratch_27 = in59; \
6228 0 : in59 = GF_MUL( in59, 1 ); \
6229 0 : scratch_28 = in60; \
6230 0 : in60 = GF_MUL( in60, 1 ); \
6231 0 : scratch_29 = in61; \
6232 0 : in61 = GF_MUL( in61, 1 ); \
6233 0 : scratch_30 = in62; \
6234 0 : in62 = GF_MUL( in62, 1 ); \
6235 0 : scratch_31 = in63; \
6236 0 : in63 = GF_MUL( in63, 1 ); \
6237 0 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
6238 0 : in49 = GF_ADD( GF_MUL( in33, 1 ), in49 ); \
6239 0 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
6240 0 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
6241 0 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
6242 0 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
6243 0 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
6244 0 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
6245 0 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
6246 0 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
6247 0 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
6248 0 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
6249 0 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
6250 0 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
6251 0 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
6252 0 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
6253 0 : scratch_8 = in56; \
6254 0 : in56 = GF_MUL( in56, 1 ); \
6255 0 : GF_MUL22( in49, in57, 1, 165, 1, 164 ); \
6256 0 : GF_MUL22( in50, in58, 1, 165, 1, 164 ); \
6257 0 : GF_MUL22( in51, in59, 1, 165, 1, 164 ); \
6258 0 : GF_MUL22( in52, in60, 1, 165, 1, 164 ); \
6259 0 : GF_MUL22( in53, in61, 1, 165, 1, 164 ); \
6260 0 : GF_MUL22( in54, in62, 1, 165, 1, 164 ); \
6261 0 : GF_MUL22( in55, in63, 1, 165, 1, 164 ); \
6262 0 : scratch_4 = in52; \
6263 0 : in52 = GF_MUL( in52, 1 ); \
6264 0 : GF_MUL22( in49, in53, 1, 71, 1, 70 ); \
6265 0 : GF_MUL22( in50, in54, 1, 71, 1, 70 ); \
6266 0 : GF_MUL22( in51, in55, 1, 71, 1, 70 ); \
6267 0 : scratch_2 = in50; \
6268 0 : in50 = GF_MUL( in50, 1 ); \
6269 0 : GF_MUL22( in49, in51, 1, 149, 1, 148 ); \
6270 0 : GF_MUL22( in48, in49, 1, 48, 1, 1 ); \
6271 0 : in50 = GF_ADD( GF_MUL( in48, 1 ), in50 ); \
6272 0 : GF_MUL22( in50, in51, 1, 50, 1, 51 ); \
6273 0 : in48 = GF_MUL( in48, 1 ); \
6274 0 : in48 = GF_ADD( GF_MUL( scratch_2, 149 ), in48 ); \
6275 0 : in52 = GF_ADD( GF_MUL( in48, 1 ), in52 ); \
6276 0 : FD_REEDSOL_GENERATE_FFT( 4, 52, in52, in53, in54, in55 ); \
6277 0 : in48 = GF_MUL( in48, 1 ); \
6278 0 : in48 = GF_ADD( GF_MUL( scratch_4, 71 ), in48 ); \
6279 0 : in56 = GF_ADD( GF_MUL( in48, 1 ), in56 ); \
6280 0 : FD_REEDSOL_GENERATE_FFT( 8, 56, in56, in57, in58, in59, in60, in61, in62, in63 ); \
6281 0 : in48 = GF_MUL( in48, 1 ); \
6282 0 : in48 = GF_ADD( GF_MUL( scratch_8, 165 ), in48 ); \
6283 0 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
6284 0 : in33 = GF_MUL( in33, 1 ); \
6285 0 : in33 = GF_ADD( GF_MUL( scratch_17, 71 ), in33 ); \
6286 0 : in34 = GF_MUL( in34, 1 ); \
6287 0 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
6288 0 : in35 = GF_MUL( in35, 1 ); \
6289 0 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
6290 0 : in36 = GF_MUL( in36, 1 ); \
6291 0 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
6292 0 : in37 = GF_MUL( in37, 1 ); \
6293 0 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
6294 0 : in38 = GF_MUL( in38, 1 ); \
6295 0 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
6296 0 : in39 = GF_MUL( in39, 1 ); \
6297 0 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
6298 0 : in40 = GF_MUL( in40, 1 ); \
6299 0 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
6300 0 : in41 = GF_MUL( in41, 1 ); \
6301 0 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
6302 0 : in42 = GF_MUL( in42, 1 ); \
6303 0 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
6304 0 : in43 = GF_MUL( in43, 1 ); \
6305 0 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
6306 0 : in44 = GF_MUL( in44, 1 ); \
6307 0 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
6308 0 : in45 = GF_MUL( in45, 1 ); \
6309 0 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
6310 0 : in46 = GF_MUL( in46, 1 ); \
6311 0 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
6312 0 : in47 = GF_MUL( in47, 1 ); \
6313 0 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
6314 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
6315 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
6316 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
6317 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
6318 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
6319 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
6320 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
6321 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
6322 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
6323 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
6324 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
6325 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
6326 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
6327 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
6328 0 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
6329 0 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
6330 0 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
6331 0 : in17 = GF_MUL( in17, 1 ); \
6332 0 : in17 = GF_ADD( GF_MUL( scratch_49, 0 ), in17 ); \
6333 0 : in18 = GF_MUL( in18, 1 ); \
6334 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
6335 0 : in19 = GF_MUL( in19, 1 ); \
6336 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
6337 0 : in20 = GF_MUL( in20, 1 ); \
6338 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
6339 0 : in21 = GF_MUL( in21, 1 ); \
6340 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
6341 0 : in22 = GF_MUL( in22, 1 ); \
6342 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
6343 0 : in23 = GF_MUL( in23, 1 ); \
6344 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
6345 0 : in24 = GF_MUL( in24, 1 ); \
6346 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
6347 0 : in25 = GF_MUL( in25, 1 ); \
6348 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
6349 0 : in26 = GF_MUL( in26, 1 ); \
6350 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
6351 0 : in27 = GF_MUL( in27, 1 ); \
6352 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
6353 0 : in28 = GF_MUL( in28, 1 ); \
6354 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
6355 0 : in29 = GF_MUL( in29, 1 ); \
6356 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
6357 0 : in30 = GF_MUL( in30, 1 ); \
6358 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
6359 0 : in31 = GF_MUL( in31, 1 ); \
6360 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
6361 0 : } while( 0 )
6362 :
6363 : void fd_reedsol_ppt_64_50( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
6364 : #define FD_REEDSOL_PPT_IMPL_64_50( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
6365 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
6366 0 : do { \
6367 0 : gf_t scratch_18, scratch_19, scratch_2, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31; \
6368 0 : gf_t scratch_4, scratch_5, scratch_50, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63; \
6369 0 : gf_t scratch_8, scratch_9; \
6370 0 : scratch_50 = in50; \
6371 0 : in50 = GF_MUL( in50, 1 ); \
6372 0 : scratch_51 = in51; \
6373 0 : in51 = GF_MUL( in51, 1 ); \
6374 0 : scratch_52 = in52; \
6375 0 : in52 = GF_MUL( in52, 1 ); \
6376 0 : scratch_53 = in53; \
6377 0 : in53 = GF_MUL( in53, 1 ); \
6378 0 : scratch_54 = in54; \
6379 0 : in54 = GF_MUL( in54, 1 ); \
6380 0 : scratch_55 = in55; \
6381 0 : in55 = GF_MUL( in55, 1 ); \
6382 0 : scratch_56 = in56; \
6383 0 : in56 = GF_MUL( in56, 1 ); \
6384 0 : scratch_57 = in57; \
6385 0 : in57 = GF_MUL( in57, 1 ); \
6386 0 : scratch_58 = in58; \
6387 0 : in58 = GF_MUL( in58, 1 ); \
6388 0 : scratch_59 = in59; \
6389 0 : in59 = GF_MUL( in59, 1 ); \
6390 0 : scratch_60 = in60; \
6391 0 : in60 = GF_MUL( in60, 1 ); \
6392 0 : scratch_61 = in61; \
6393 0 : in61 = GF_MUL( in61, 1 ); \
6394 0 : scratch_62 = in62; \
6395 0 : in62 = GF_MUL( in62, 1 ); \
6396 0 : scratch_63 = in63; \
6397 0 : in63 = GF_MUL( in63, 1 ); \
6398 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
6399 0 : in50 = GF_ADD( GF_MUL( in18, 1 ), in50 ); \
6400 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
6401 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
6402 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
6403 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
6404 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
6405 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
6406 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
6407 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
6408 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
6409 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
6410 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
6411 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
6412 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
6413 0 : scratch_18 = in50; \
6414 0 : in50 = GF_MUL( in50, 1 ); \
6415 0 : scratch_19 = in51; \
6416 0 : in51 = GF_MUL( in51, 1 ); \
6417 0 : scratch_20 = in52; \
6418 0 : in52 = GF_MUL( in52, 1 ); \
6419 0 : scratch_21 = in53; \
6420 0 : in53 = GF_MUL( in53, 1 ); \
6421 0 : scratch_22 = in54; \
6422 0 : in54 = GF_MUL( in54, 1 ); \
6423 0 : scratch_23 = in55; \
6424 0 : in55 = GF_MUL( in55, 1 ); \
6425 0 : scratch_24 = in56; \
6426 0 : in56 = GF_MUL( in56, 1 ); \
6427 0 : scratch_25 = in57; \
6428 0 : in57 = GF_MUL( in57, 1 ); \
6429 0 : scratch_26 = in58; \
6430 0 : in58 = GF_MUL( in58, 1 ); \
6431 0 : scratch_27 = in59; \
6432 0 : in59 = GF_MUL( in59, 1 ); \
6433 0 : scratch_28 = in60; \
6434 0 : in60 = GF_MUL( in60, 1 ); \
6435 0 : scratch_29 = in61; \
6436 0 : in61 = GF_MUL( in61, 1 ); \
6437 0 : scratch_30 = in62; \
6438 0 : in62 = GF_MUL( in62, 1 ); \
6439 0 : scratch_31 = in63; \
6440 0 : in63 = GF_MUL( in63, 1 ); \
6441 0 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
6442 0 : in50 = GF_ADD( GF_MUL( in34, 1 ), in50 ); \
6443 0 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
6444 0 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
6445 0 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
6446 0 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
6447 0 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
6448 0 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
6449 0 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
6450 0 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
6451 0 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
6452 0 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
6453 0 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
6454 0 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
6455 0 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
6456 0 : scratch_8 = in56; \
6457 0 : in56 = GF_MUL( in56, 1 ); \
6458 0 : scratch_9 = in57; \
6459 0 : in57 = GF_MUL( in57, 1 ); \
6460 0 : GF_MUL22( in50, in58, 1, 165, 1, 164 ); \
6461 0 : GF_MUL22( in51, in59, 1, 165, 1, 164 ); \
6462 0 : GF_MUL22( in52, in60, 1, 165, 1, 164 ); \
6463 0 : GF_MUL22( in53, in61, 1, 165, 1, 164 ); \
6464 0 : GF_MUL22( in54, in62, 1, 165, 1, 164 ); \
6465 0 : GF_MUL22( in55, in63, 1, 165, 1, 164 ); \
6466 0 : scratch_4 = in52; \
6467 0 : in52 = GF_MUL( in52, 1 ); \
6468 0 : scratch_5 = in53; \
6469 0 : in53 = GF_MUL( in53, 1 ); \
6470 0 : GF_MUL22( in50, in54, 1, 71, 1, 70 ); \
6471 0 : GF_MUL22( in51, in55, 1, 71, 1, 70 ); \
6472 0 : scratch_2 = in50; \
6473 0 : in50 = GF_MUL( in50, 1 ); \
6474 0 : scratch_3 = in51; \
6475 0 : in51 = GF_MUL( in51, 1 ); \
6476 0 : GF_MUL22( in48, in49, 49, 48, 1, 1 ); \
6477 0 : in50 = GF_ADD( GF_MUL( in48, 1 ), in50 ); \
6478 0 : in51 = GF_ADD( GF_MUL( in49, 1 ), in51 ); \
6479 0 : GF_MUL22( in50, in51, 1, 50, 1, 51 ); \
6480 0 : in48 = GF_MUL( in48, 1 ); \
6481 0 : in48 = GF_ADD( GF_MUL( scratch_2, 149 ), in48 ); \
6482 0 : in49 = GF_MUL( in49, 1 ); \
6483 0 : in49 = GF_ADD( GF_MUL( scratch_3, 149 ), in49 ); \
6484 0 : in52 = GF_ADD( GF_MUL( in48, 1 ), in52 ); \
6485 0 : in53 = GF_ADD( GF_MUL( in49, 1 ), in53 ); \
6486 0 : FD_REEDSOL_GENERATE_FFT( 4, 52, in52, in53, in54, in55 ); \
6487 0 : in48 = GF_MUL( in48, 1 ); \
6488 0 : in48 = GF_ADD( GF_MUL( scratch_4, 71 ), in48 ); \
6489 0 : in49 = GF_MUL( in49, 1 ); \
6490 0 : in49 = GF_ADD( GF_MUL( scratch_5, 71 ), in49 ); \
6491 0 : in56 = GF_ADD( GF_MUL( in48, 1 ), in56 ); \
6492 0 : in57 = GF_ADD( GF_MUL( in49, 1 ), in57 ); \
6493 0 : FD_REEDSOL_GENERATE_FFT( 8, 56, in56, in57, in58, in59, in60, in61, in62, in63 ); \
6494 0 : in48 = GF_MUL( in48, 1 ); \
6495 0 : in48 = GF_ADD( GF_MUL( scratch_8, 165 ), in48 ); \
6496 0 : in49 = GF_MUL( in49, 1 ); \
6497 0 : in49 = GF_ADD( GF_MUL( scratch_9, 165 ), in49 ); \
6498 0 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
6499 0 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
6500 0 : in34 = GF_MUL( in34, 1 ); \
6501 0 : in34 = GF_ADD( GF_MUL( scratch_18, 71 ), in34 ); \
6502 0 : in35 = GF_MUL( in35, 1 ); \
6503 0 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
6504 0 : in36 = GF_MUL( in36, 1 ); \
6505 0 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
6506 0 : in37 = GF_MUL( in37, 1 ); \
6507 0 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
6508 0 : in38 = GF_MUL( in38, 1 ); \
6509 0 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
6510 0 : in39 = GF_MUL( in39, 1 ); \
6511 0 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
6512 0 : in40 = GF_MUL( in40, 1 ); \
6513 0 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
6514 0 : in41 = GF_MUL( in41, 1 ); \
6515 0 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
6516 0 : in42 = GF_MUL( in42, 1 ); \
6517 0 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
6518 0 : in43 = GF_MUL( in43, 1 ); \
6519 0 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
6520 0 : in44 = GF_MUL( in44, 1 ); \
6521 0 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
6522 0 : in45 = GF_MUL( in45, 1 ); \
6523 0 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
6524 0 : in46 = GF_MUL( in46, 1 ); \
6525 0 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
6526 0 : in47 = GF_MUL( in47, 1 ); \
6527 0 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
6528 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
6529 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
6530 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
6531 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
6532 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
6533 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
6534 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
6535 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
6536 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
6537 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
6538 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
6539 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
6540 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
6541 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
6542 0 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
6543 0 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
6544 0 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
6545 0 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
6546 0 : in18 = GF_MUL( in18, 1 ); \
6547 0 : in18 = GF_ADD( GF_MUL( scratch_50, 0 ), in18 ); \
6548 0 : in19 = GF_MUL( in19, 1 ); \
6549 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
6550 0 : in20 = GF_MUL( in20, 1 ); \
6551 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
6552 0 : in21 = GF_MUL( in21, 1 ); \
6553 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
6554 0 : in22 = GF_MUL( in22, 1 ); \
6555 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
6556 0 : in23 = GF_MUL( in23, 1 ); \
6557 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
6558 0 : in24 = GF_MUL( in24, 1 ); \
6559 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
6560 0 : in25 = GF_MUL( in25, 1 ); \
6561 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
6562 0 : in26 = GF_MUL( in26, 1 ); \
6563 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
6564 0 : in27 = GF_MUL( in27, 1 ); \
6565 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
6566 0 : in28 = GF_MUL( in28, 1 ); \
6567 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
6568 0 : in29 = GF_MUL( in29, 1 ); \
6569 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
6570 0 : in30 = GF_MUL( in30, 1 ); \
6571 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
6572 0 : in31 = GF_MUL( in31, 1 ); \
6573 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
6574 0 : } while( 0 )
6575 :
6576 : void fd_reedsol_ppt_64_51( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
6577 : #define FD_REEDSOL_PPT_IMPL_64_51( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
6578 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
6579 0 : do { \
6580 0 : gf_t scratch_10, scratch_19, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31, scratch_4; \
6581 0 : gf_t scratch_5, scratch_51, scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_8; \
6582 0 : gf_t scratch_9; \
6583 0 : scratch_51 = in51; \
6584 0 : in51 = GF_MUL( in51, 1 ); \
6585 0 : scratch_52 = in52; \
6586 0 : in52 = GF_MUL( in52, 1 ); \
6587 0 : scratch_53 = in53; \
6588 0 : in53 = GF_MUL( in53, 1 ); \
6589 0 : scratch_54 = in54; \
6590 0 : in54 = GF_MUL( in54, 1 ); \
6591 0 : scratch_55 = in55; \
6592 0 : in55 = GF_MUL( in55, 1 ); \
6593 0 : scratch_56 = in56; \
6594 0 : in56 = GF_MUL( in56, 1 ); \
6595 0 : scratch_57 = in57; \
6596 0 : in57 = GF_MUL( in57, 1 ); \
6597 0 : scratch_58 = in58; \
6598 0 : in58 = GF_MUL( in58, 1 ); \
6599 0 : scratch_59 = in59; \
6600 0 : in59 = GF_MUL( in59, 1 ); \
6601 0 : scratch_60 = in60; \
6602 0 : in60 = GF_MUL( in60, 1 ); \
6603 0 : scratch_61 = in61; \
6604 0 : in61 = GF_MUL( in61, 1 ); \
6605 0 : scratch_62 = in62; \
6606 0 : in62 = GF_MUL( in62, 1 ); \
6607 0 : scratch_63 = in63; \
6608 0 : in63 = GF_MUL( in63, 1 ); \
6609 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
6610 0 : in51 = GF_ADD( GF_MUL( in19, 1 ), in51 ); \
6611 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
6612 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
6613 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
6614 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
6615 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
6616 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
6617 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
6618 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
6619 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
6620 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
6621 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
6622 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
6623 0 : scratch_19 = in51; \
6624 0 : in51 = GF_MUL( in51, 1 ); \
6625 0 : scratch_20 = in52; \
6626 0 : in52 = GF_MUL( in52, 1 ); \
6627 0 : scratch_21 = in53; \
6628 0 : in53 = GF_MUL( in53, 1 ); \
6629 0 : scratch_22 = in54; \
6630 0 : in54 = GF_MUL( in54, 1 ); \
6631 0 : scratch_23 = in55; \
6632 0 : in55 = GF_MUL( in55, 1 ); \
6633 0 : scratch_24 = in56; \
6634 0 : in56 = GF_MUL( in56, 1 ); \
6635 0 : scratch_25 = in57; \
6636 0 : in57 = GF_MUL( in57, 1 ); \
6637 0 : scratch_26 = in58; \
6638 0 : in58 = GF_MUL( in58, 1 ); \
6639 0 : scratch_27 = in59; \
6640 0 : in59 = GF_MUL( in59, 1 ); \
6641 0 : scratch_28 = in60; \
6642 0 : in60 = GF_MUL( in60, 1 ); \
6643 0 : scratch_29 = in61; \
6644 0 : in61 = GF_MUL( in61, 1 ); \
6645 0 : scratch_30 = in62; \
6646 0 : in62 = GF_MUL( in62, 1 ); \
6647 0 : scratch_31 = in63; \
6648 0 : in63 = GF_MUL( in63, 1 ); \
6649 0 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
6650 0 : in51 = GF_ADD( GF_MUL( in35, 1 ), in51 ); \
6651 0 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
6652 0 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
6653 0 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
6654 0 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
6655 0 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
6656 0 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
6657 0 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
6658 0 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
6659 0 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
6660 0 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
6661 0 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
6662 0 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
6663 0 : scratch_8 = in56; \
6664 0 : in56 = GF_MUL( in56, 1 ); \
6665 0 : scratch_9 = in57; \
6666 0 : in57 = GF_MUL( in57, 1 ); \
6667 0 : scratch_10 = in58; \
6668 0 : in58 = GF_MUL( in58, 1 ); \
6669 0 : GF_MUL22( in51, in59, 1, 165, 1, 164 ); \
6670 0 : GF_MUL22( in52, in60, 1, 165, 1, 164 ); \
6671 0 : GF_MUL22( in53, in61, 1, 165, 1, 164 ); \
6672 0 : GF_MUL22( in54, in62, 1, 165, 1, 164 ); \
6673 0 : GF_MUL22( in55, in63, 1, 165, 1, 164 ); \
6674 0 : scratch_4 = in52; \
6675 0 : in52 = GF_MUL( in52, 1 ); \
6676 0 : scratch_5 = in53; \
6677 0 : in53 = GF_MUL( in53, 1 ); \
6678 0 : scratch_6 = in54; \
6679 0 : in54 = GF_MUL( in54, 1 ); \
6680 0 : GF_MUL22( in51, in55, 1, 71, 1, 70 ); \
6681 0 : scratch_3 = in51; \
6682 0 : in51 = GF_MUL( in51, 1 ); \
6683 0 : GF_MUL22( in48, in49, 49, 48, 1, 1 ); \
6684 0 : in51 = GF_ADD( GF_MUL( in49, 1 ), in51 ); \
6685 0 : GF_MUL22( in50, in51, 1, 50, 1, 1 ); \
6686 0 : GF_MUL22( in48, in50, 148, 149, 1, 1 ); \
6687 0 : in49 = GF_MUL( in49, 1 ); \
6688 0 : in49 = GF_ADD( GF_MUL( scratch_3, 149 ), in49 ); \
6689 0 : in52 = GF_ADD( GF_MUL( in48, 1 ), in52 ); \
6690 0 : in53 = GF_ADD( GF_MUL( in49, 1 ), in53 ); \
6691 0 : in54 = GF_ADD( GF_MUL( in50, 1 ), in54 ); \
6692 0 : FD_REEDSOL_GENERATE_FFT( 4, 52, in52, in53, in54, in55 ); \
6693 0 : in48 = GF_MUL( in48, 1 ); \
6694 0 : in48 = GF_ADD( GF_MUL( scratch_4, 71 ), in48 ); \
6695 0 : in49 = GF_MUL( in49, 1 ); \
6696 0 : in49 = GF_ADD( GF_MUL( scratch_5, 71 ), in49 ); \
6697 0 : in50 = GF_MUL( in50, 1 ); \
6698 0 : in50 = GF_ADD( GF_MUL( scratch_6, 71 ), in50 ); \
6699 0 : in56 = GF_ADD( GF_MUL( in48, 1 ), in56 ); \
6700 0 : in57 = GF_ADD( GF_MUL( in49, 1 ), in57 ); \
6701 0 : in58 = GF_ADD( GF_MUL( in50, 1 ), in58 ); \
6702 0 : FD_REEDSOL_GENERATE_FFT( 8, 56, in56, in57, in58, in59, in60, in61, in62, in63 ); \
6703 0 : in48 = GF_MUL( in48, 1 ); \
6704 0 : in48 = GF_ADD( GF_MUL( scratch_8, 165 ), in48 ); \
6705 0 : in49 = GF_MUL( in49, 1 ); \
6706 0 : in49 = GF_ADD( GF_MUL( scratch_9, 165 ), in49 ); \
6707 0 : in50 = GF_MUL( in50, 1 ); \
6708 0 : in50 = GF_ADD( GF_MUL( scratch_10, 165 ), in50 ); \
6709 0 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
6710 0 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
6711 0 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
6712 0 : in35 = GF_MUL( in35, 1 ); \
6713 0 : in35 = GF_ADD( GF_MUL( scratch_19, 71 ), in35 ); \
6714 0 : in36 = GF_MUL( in36, 1 ); \
6715 0 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
6716 0 : in37 = GF_MUL( in37, 1 ); \
6717 0 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
6718 0 : in38 = GF_MUL( in38, 1 ); \
6719 0 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
6720 0 : in39 = GF_MUL( in39, 1 ); \
6721 0 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
6722 0 : in40 = GF_MUL( in40, 1 ); \
6723 0 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
6724 0 : in41 = GF_MUL( in41, 1 ); \
6725 0 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
6726 0 : in42 = GF_MUL( in42, 1 ); \
6727 0 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
6728 0 : in43 = GF_MUL( in43, 1 ); \
6729 0 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
6730 0 : in44 = GF_MUL( in44, 1 ); \
6731 0 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
6732 0 : in45 = GF_MUL( in45, 1 ); \
6733 0 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
6734 0 : in46 = GF_MUL( in46, 1 ); \
6735 0 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
6736 0 : in47 = GF_MUL( in47, 1 ); \
6737 0 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
6738 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
6739 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
6740 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
6741 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
6742 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
6743 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
6744 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
6745 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
6746 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
6747 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
6748 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
6749 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
6750 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
6751 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
6752 0 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
6753 0 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
6754 0 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
6755 0 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
6756 0 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
6757 0 : in19 = GF_MUL( in19, 1 ); \
6758 0 : in19 = GF_ADD( GF_MUL( scratch_51, 0 ), in19 ); \
6759 0 : in20 = GF_MUL( in20, 1 ); \
6760 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
6761 0 : in21 = GF_MUL( in21, 1 ); \
6762 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
6763 0 : in22 = GF_MUL( in22, 1 ); \
6764 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
6765 0 : in23 = GF_MUL( in23, 1 ); \
6766 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
6767 0 : in24 = GF_MUL( in24, 1 ); \
6768 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
6769 0 : in25 = GF_MUL( in25, 1 ); \
6770 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
6771 0 : in26 = GF_MUL( in26, 1 ); \
6772 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
6773 0 : in27 = GF_MUL( in27, 1 ); \
6774 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
6775 0 : in28 = GF_MUL( in28, 1 ); \
6776 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
6777 0 : in29 = GF_MUL( in29, 1 ); \
6778 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
6779 0 : in30 = GF_MUL( in30, 1 ); \
6780 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
6781 0 : in31 = GF_MUL( in31, 1 ); \
6782 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
6783 0 : } while( 0 )
6784 :
6785 : void fd_reedsol_ppt_64_52( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
6786 : #define FD_REEDSOL_PPT_IMPL_64_52( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
6787 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
6788 0 : do { \
6789 0 : gf_t scratch_10, scratch_11, scratch_20, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31, scratch_4, scratch_5; \
6790 0 : gf_t scratch_52, scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7, scratch_8, scratch_9; \
6791 0 : scratch_52 = in52; \
6792 0 : in52 = GF_MUL( in52, 1 ); \
6793 0 : scratch_53 = in53; \
6794 0 : in53 = GF_MUL( in53, 1 ); \
6795 0 : scratch_54 = in54; \
6796 0 : in54 = GF_MUL( in54, 1 ); \
6797 0 : scratch_55 = in55; \
6798 0 : in55 = GF_MUL( in55, 1 ); \
6799 0 : scratch_56 = in56; \
6800 0 : in56 = GF_MUL( in56, 1 ); \
6801 0 : scratch_57 = in57; \
6802 0 : in57 = GF_MUL( in57, 1 ); \
6803 0 : scratch_58 = in58; \
6804 0 : in58 = GF_MUL( in58, 1 ); \
6805 0 : scratch_59 = in59; \
6806 0 : in59 = GF_MUL( in59, 1 ); \
6807 0 : scratch_60 = in60; \
6808 0 : in60 = GF_MUL( in60, 1 ); \
6809 0 : scratch_61 = in61; \
6810 0 : in61 = GF_MUL( in61, 1 ); \
6811 0 : scratch_62 = in62; \
6812 0 : in62 = GF_MUL( in62, 1 ); \
6813 0 : scratch_63 = in63; \
6814 0 : in63 = GF_MUL( in63, 1 ); \
6815 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
6816 0 : in52 = GF_ADD( GF_MUL( in20, 1 ), in52 ); \
6817 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
6818 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
6819 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
6820 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
6821 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
6822 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
6823 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
6824 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
6825 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
6826 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
6827 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
6828 0 : scratch_20 = in52; \
6829 0 : in52 = GF_MUL( in52, 1 ); \
6830 0 : scratch_21 = in53; \
6831 0 : in53 = GF_MUL( in53, 1 ); \
6832 0 : scratch_22 = in54; \
6833 0 : in54 = GF_MUL( in54, 1 ); \
6834 0 : scratch_23 = in55; \
6835 0 : in55 = GF_MUL( in55, 1 ); \
6836 0 : scratch_24 = in56; \
6837 0 : in56 = GF_MUL( in56, 1 ); \
6838 0 : scratch_25 = in57; \
6839 0 : in57 = GF_MUL( in57, 1 ); \
6840 0 : scratch_26 = in58; \
6841 0 : in58 = GF_MUL( in58, 1 ); \
6842 0 : scratch_27 = in59; \
6843 0 : in59 = GF_MUL( in59, 1 ); \
6844 0 : scratch_28 = in60; \
6845 0 : in60 = GF_MUL( in60, 1 ); \
6846 0 : scratch_29 = in61; \
6847 0 : in61 = GF_MUL( in61, 1 ); \
6848 0 : scratch_30 = in62; \
6849 0 : in62 = GF_MUL( in62, 1 ); \
6850 0 : scratch_31 = in63; \
6851 0 : in63 = GF_MUL( in63, 1 ); \
6852 0 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
6853 0 : in52 = GF_ADD( GF_MUL( in36, 1 ), in52 ); \
6854 0 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
6855 0 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
6856 0 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
6857 0 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
6858 0 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
6859 0 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
6860 0 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
6861 0 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
6862 0 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
6863 0 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
6864 0 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
6865 0 : scratch_8 = in56; \
6866 0 : in56 = GF_MUL( in56, 1 ); \
6867 0 : scratch_9 = in57; \
6868 0 : in57 = GF_MUL( in57, 1 ); \
6869 0 : scratch_10 = in58; \
6870 0 : in58 = GF_MUL( in58, 1 ); \
6871 0 : scratch_11 = in59; \
6872 0 : in59 = GF_MUL( in59, 1 ); \
6873 0 : GF_MUL22( in52, in60, 1, 165, 1, 164 ); \
6874 0 : GF_MUL22( in53, in61, 1, 165, 1, 164 ); \
6875 0 : GF_MUL22( in54, in62, 1, 165, 1, 164 ); \
6876 0 : GF_MUL22( in55, in63, 1, 165, 1, 164 ); \
6877 0 : scratch_4 = in52; \
6878 0 : in52 = GF_MUL( in52, 1 ); \
6879 0 : scratch_5 = in53; \
6880 0 : in53 = GF_MUL( in53, 1 ); \
6881 0 : scratch_6 = in54; \
6882 0 : in54 = GF_MUL( in54, 1 ); \
6883 0 : scratch_7 = in55; \
6884 0 : in55 = GF_MUL( in55, 1 ); \
6885 0 : FD_REEDSOL_GENERATE_IFFT( 4, 48, in48, in49, in50, in51 ); \
6886 0 : in52 = GF_ADD( GF_MUL( in48, 1 ), in52 ); \
6887 0 : in53 = GF_ADD( GF_MUL( in49, 1 ), in53 ); \
6888 0 : in54 = GF_ADD( GF_MUL( in50, 1 ), in54 ); \
6889 0 : in55 = GF_ADD( GF_MUL( in51, 1 ), in55 ); \
6890 0 : FD_REEDSOL_GENERATE_FFT( 4, 52, in52, in53, in54, in55 ); \
6891 0 : in48 = GF_MUL( in48, 1 ); \
6892 0 : in48 = GF_ADD( GF_MUL( scratch_4, 71 ), in48 ); \
6893 0 : in49 = GF_MUL( in49, 1 ); \
6894 0 : in49 = GF_ADD( GF_MUL( scratch_5, 71 ), in49 ); \
6895 0 : in50 = GF_MUL( in50, 1 ); \
6896 0 : in50 = GF_ADD( GF_MUL( scratch_6, 71 ), in50 ); \
6897 0 : in51 = GF_MUL( in51, 1 ); \
6898 0 : in51 = GF_ADD( GF_MUL( scratch_7, 71 ), in51 ); \
6899 0 : in56 = GF_ADD( GF_MUL( in48, 1 ), in56 ); \
6900 0 : in57 = GF_ADD( GF_MUL( in49, 1 ), in57 ); \
6901 0 : in58 = GF_ADD( GF_MUL( in50, 1 ), in58 ); \
6902 0 : in59 = GF_ADD( GF_MUL( in51, 1 ), in59 ); \
6903 0 : FD_REEDSOL_GENERATE_FFT( 8, 56, in56, in57, in58, in59, in60, in61, in62, in63 ); \
6904 0 : in48 = GF_MUL( in48, 1 ); \
6905 0 : in48 = GF_ADD( GF_MUL( scratch_8, 165 ), in48 ); \
6906 0 : in49 = GF_MUL( in49, 1 ); \
6907 0 : in49 = GF_ADD( GF_MUL( scratch_9, 165 ), in49 ); \
6908 0 : in50 = GF_MUL( in50, 1 ); \
6909 0 : in50 = GF_ADD( GF_MUL( scratch_10, 165 ), in50 ); \
6910 0 : in51 = GF_MUL( in51, 1 ); \
6911 0 : in51 = GF_ADD( GF_MUL( scratch_11, 165 ), in51 ); \
6912 0 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
6913 0 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
6914 0 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
6915 0 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
6916 0 : in36 = GF_MUL( in36, 1 ); \
6917 0 : in36 = GF_ADD( GF_MUL( scratch_20, 71 ), in36 ); \
6918 0 : in37 = GF_MUL( in37, 1 ); \
6919 0 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
6920 0 : in38 = GF_MUL( in38, 1 ); \
6921 0 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
6922 0 : in39 = GF_MUL( in39, 1 ); \
6923 0 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
6924 0 : in40 = GF_MUL( in40, 1 ); \
6925 0 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
6926 0 : in41 = GF_MUL( in41, 1 ); \
6927 0 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
6928 0 : in42 = GF_MUL( in42, 1 ); \
6929 0 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
6930 0 : in43 = GF_MUL( in43, 1 ); \
6931 0 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
6932 0 : in44 = GF_MUL( in44, 1 ); \
6933 0 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
6934 0 : in45 = GF_MUL( in45, 1 ); \
6935 0 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
6936 0 : in46 = GF_MUL( in46, 1 ); \
6937 0 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
6938 0 : in47 = GF_MUL( in47, 1 ); \
6939 0 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
6940 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
6941 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
6942 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
6943 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
6944 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
6945 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
6946 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
6947 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
6948 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
6949 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
6950 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
6951 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
6952 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
6953 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
6954 0 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
6955 0 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
6956 0 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
6957 0 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
6958 0 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
6959 0 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
6960 0 : in20 = GF_MUL( in20, 1 ); \
6961 0 : in20 = GF_ADD( GF_MUL( scratch_52, 0 ), in20 ); \
6962 0 : in21 = GF_MUL( in21, 1 ); \
6963 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
6964 0 : in22 = GF_MUL( in22, 1 ); \
6965 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
6966 0 : in23 = GF_MUL( in23, 1 ); \
6967 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
6968 0 : in24 = GF_MUL( in24, 1 ); \
6969 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
6970 0 : in25 = GF_MUL( in25, 1 ); \
6971 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
6972 0 : in26 = GF_MUL( in26, 1 ); \
6973 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
6974 0 : in27 = GF_MUL( in27, 1 ); \
6975 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
6976 0 : in28 = GF_MUL( in28, 1 ); \
6977 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
6978 0 : in29 = GF_MUL( in29, 1 ); \
6979 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
6980 0 : in30 = GF_MUL( in30, 1 ); \
6981 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
6982 0 : in31 = GF_MUL( in31, 1 ); \
6983 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
6984 0 : } while( 0 )
6985 :
6986 : void fd_reedsol_ppt_64_53( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
6987 : #define FD_REEDSOL_PPT_IMPL_64_53( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
6988 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
6989 0 : do { \
6990 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_2, scratch_21, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31, scratch_5; \
6991 0 : gf_t scratch_53, scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7, scratch_8, scratch_9; \
6992 0 : scratch_53 = in53; \
6993 0 : in53 = GF_MUL( in53, 1 ); \
6994 0 : scratch_54 = in54; \
6995 0 : in54 = GF_MUL( in54, 1 ); \
6996 0 : scratch_55 = in55; \
6997 0 : in55 = GF_MUL( in55, 1 ); \
6998 0 : scratch_56 = in56; \
6999 0 : in56 = GF_MUL( in56, 1 ); \
7000 0 : scratch_57 = in57; \
7001 0 : in57 = GF_MUL( in57, 1 ); \
7002 0 : scratch_58 = in58; \
7003 0 : in58 = GF_MUL( in58, 1 ); \
7004 0 : scratch_59 = in59; \
7005 0 : in59 = GF_MUL( in59, 1 ); \
7006 0 : scratch_60 = in60; \
7007 0 : in60 = GF_MUL( in60, 1 ); \
7008 0 : scratch_61 = in61; \
7009 0 : in61 = GF_MUL( in61, 1 ); \
7010 0 : scratch_62 = in62; \
7011 0 : in62 = GF_MUL( in62, 1 ); \
7012 0 : scratch_63 = in63; \
7013 0 : in63 = GF_MUL( in63, 1 ); \
7014 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
7015 0 : in53 = GF_ADD( GF_MUL( in21, 1 ), in53 ); \
7016 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
7017 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
7018 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
7019 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
7020 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
7021 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
7022 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
7023 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
7024 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
7025 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
7026 0 : scratch_21 = in53; \
7027 0 : in53 = GF_MUL( in53, 1 ); \
7028 0 : scratch_22 = in54; \
7029 0 : in54 = GF_MUL( in54, 1 ); \
7030 0 : scratch_23 = in55; \
7031 0 : in55 = GF_MUL( in55, 1 ); \
7032 0 : scratch_24 = in56; \
7033 0 : in56 = GF_MUL( in56, 1 ); \
7034 0 : scratch_25 = in57; \
7035 0 : in57 = GF_MUL( in57, 1 ); \
7036 0 : scratch_26 = in58; \
7037 0 : in58 = GF_MUL( in58, 1 ); \
7038 0 : scratch_27 = in59; \
7039 0 : in59 = GF_MUL( in59, 1 ); \
7040 0 : scratch_28 = in60; \
7041 0 : in60 = GF_MUL( in60, 1 ); \
7042 0 : scratch_29 = in61; \
7043 0 : in61 = GF_MUL( in61, 1 ); \
7044 0 : scratch_30 = in62; \
7045 0 : in62 = GF_MUL( in62, 1 ); \
7046 0 : scratch_31 = in63; \
7047 0 : in63 = GF_MUL( in63, 1 ); \
7048 0 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
7049 0 : in53 = GF_ADD( GF_MUL( in37, 1 ), in53 ); \
7050 0 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
7051 0 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
7052 0 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
7053 0 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
7054 0 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
7055 0 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
7056 0 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
7057 0 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
7058 0 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
7059 0 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
7060 0 : scratch_8 = in56; \
7061 0 : in56 = GF_MUL( in56, 1 ); \
7062 0 : scratch_9 = in57; \
7063 0 : in57 = GF_MUL( in57, 1 ); \
7064 0 : scratch_10 = in58; \
7065 0 : in58 = GF_MUL( in58, 1 ); \
7066 0 : scratch_11 = in59; \
7067 0 : in59 = GF_MUL( in59, 1 ); \
7068 0 : scratch_12 = in60; \
7069 0 : in60 = GF_MUL( in60, 1 ); \
7070 0 : GF_MUL22( in53, in61, 1, 165, 1, 164 ); \
7071 0 : GF_MUL22( in54, in62, 1, 165, 1, 164 ); \
7072 0 : GF_MUL22( in55, in63, 1, 165, 1, 164 ); \
7073 0 : scratch_5 = in53; \
7074 0 : in53 = GF_MUL( in53, 1 ); \
7075 0 : scratch_6 = in54; \
7076 0 : in54 = GF_MUL( in54, 1 ); \
7077 0 : scratch_7 = in55; \
7078 0 : in55 = GF_MUL( in55, 1 ); \
7079 0 : FD_REEDSOL_GENERATE_IFFT( 4, 48, in48, in49, in50, in51 ); \
7080 0 : in53 = GF_ADD( GF_MUL( in49, 1 ), in53 ); \
7081 0 : in54 = GF_ADD( GF_MUL( in50, 1 ), in54 ); \
7082 0 : in55 = GF_ADD( GF_MUL( in51, 1 ), in55 ); \
7083 0 : scratch_2 = in54; \
7084 0 : in54 = GF_MUL( in54, 1 ); \
7085 0 : GF_MUL22( in53, in55, 1, 147, 1, 146 ); \
7086 0 : GF_MUL22( in52, in53, 1, 52, 1, 1 ); \
7087 0 : in54 = GF_ADD( GF_MUL( in52, 1 ), in54 ); \
7088 0 : GF_MUL22( in54, in55, 1, 54, 1, 55 ); \
7089 0 : in52 = GF_MUL( in52, 1 ); \
7090 0 : in52 = GF_ADD( GF_MUL( scratch_2, 147 ), in52 ); \
7091 0 : GF_MUL22( in48, in52, 70, 71, 1, 1 ); \
7092 0 : in49 = GF_MUL( in49, 1 ); \
7093 0 : in49 = GF_ADD( GF_MUL( scratch_5, 71 ), in49 ); \
7094 0 : in50 = GF_MUL( in50, 1 ); \
7095 0 : in50 = GF_ADD( GF_MUL( scratch_6, 71 ), in50 ); \
7096 0 : in51 = GF_MUL( in51, 1 ); \
7097 0 : in51 = GF_ADD( GF_MUL( scratch_7, 71 ), in51 ); \
7098 0 : in56 = GF_ADD( GF_MUL( in48, 1 ), in56 ); \
7099 0 : in57 = GF_ADD( GF_MUL( in49, 1 ), in57 ); \
7100 0 : in58 = GF_ADD( GF_MUL( in50, 1 ), in58 ); \
7101 0 : in59 = GF_ADD( GF_MUL( in51, 1 ), in59 ); \
7102 0 : in60 = GF_ADD( GF_MUL( in52, 1 ), in60 ); \
7103 0 : FD_REEDSOL_GENERATE_FFT( 8, 56, in56, in57, in58, in59, in60, in61, in62, in63 ); \
7104 0 : in48 = GF_MUL( in48, 1 ); \
7105 0 : in48 = GF_ADD( GF_MUL( scratch_8, 165 ), in48 ); \
7106 0 : in49 = GF_MUL( in49, 1 ); \
7107 0 : in49 = GF_ADD( GF_MUL( scratch_9, 165 ), in49 ); \
7108 0 : in50 = GF_MUL( in50, 1 ); \
7109 0 : in50 = GF_ADD( GF_MUL( scratch_10, 165 ), in50 ); \
7110 0 : in51 = GF_MUL( in51, 1 ); \
7111 0 : in51 = GF_ADD( GF_MUL( scratch_11, 165 ), in51 ); \
7112 0 : in52 = GF_MUL( in52, 1 ); \
7113 0 : in52 = GF_ADD( GF_MUL( scratch_12, 165 ), in52 ); \
7114 0 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
7115 0 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
7116 0 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
7117 0 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
7118 0 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
7119 0 : in37 = GF_MUL( in37, 1 ); \
7120 0 : in37 = GF_ADD( GF_MUL( scratch_21, 71 ), in37 ); \
7121 0 : in38 = GF_MUL( in38, 1 ); \
7122 0 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
7123 0 : in39 = GF_MUL( in39, 1 ); \
7124 0 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
7125 0 : in40 = GF_MUL( in40, 1 ); \
7126 0 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
7127 0 : in41 = GF_MUL( in41, 1 ); \
7128 0 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
7129 0 : in42 = GF_MUL( in42, 1 ); \
7130 0 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
7131 0 : in43 = GF_MUL( in43, 1 ); \
7132 0 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
7133 0 : in44 = GF_MUL( in44, 1 ); \
7134 0 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
7135 0 : in45 = GF_MUL( in45, 1 ); \
7136 0 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
7137 0 : in46 = GF_MUL( in46, 1 ); \
7138 0 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
7139 0 : in47 = GF_MUL( in47, 1 ); \
7140 0 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
7141 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
7142 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
7143 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
7144 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
7145 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
7146 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
7147 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
7148 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
7149 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
7150 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
7151 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
7152 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
7153 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
7154 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
7155 0 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
7156 0 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
7157 0 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
7158 0 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
7159 0 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
7160 0 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
7161 0 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
7162 0 : in21 = GF_MUL( in21, 1 ); \
7163 0 : in21 = GF_ADD( GF_MUL( scratch_53, 0 ), in21 ); \
7164 0 : in22 = GF_MUL( in22, 1 ); \
7165 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
7166 0 : in23 = GF_MUL( in23, 1 ); \
7167 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
7168 0 : in24 = GF_MUL( in24, 1 ); \
7169 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
7170 0 : in25 = GF_MUL( in25, 1 ); \
7171 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
7172 0 : in26 = GF_MUL( in26, 1 ); \
7173 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
7174 0 : in27 = GF_MUL( in27, 1 ); \
7175 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
7176 0 : in28 = GF_MUL( in28, 1 ); \
7177 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
7178 0 : in29 = GF_MUL( in29, 1 ); \
7179 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
7180 0 : in30 = GF_MUL( in30, 1 ); \
7181 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
7182 0 : in31 = GF_MUL( in31, 1 ); \
7183 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
7184 0 : } while( 0 )
7185 :
7186 : void fd_reedsol_ppt_64_54( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
7187 : #define FD_REEDSOL_PPT_IMPL_64_54( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
7188 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
7189 0 : do { \
7190 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_2, scratch_22, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31; \
7191 0 : gf_t scratch_54, scratch_55, scratch_56, scratch_57, scratch_58, scratch_59, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7, scratch_8, scratch_9; \
7192 0 : scratch_54 = in54; \
7193 0 : in54 = GF_MUL( in54, 1 ); \
7194 0 : scratch_55 = in55; \
7195 0 : in55 = GF_MUL( in55, 1 ); \
7196 0 : scratch_56 = in56; \
7197 0 : in56 = GF_MUL( in56, 1 ); \
7198 0 : scratch_57 = in57; \
7199 0 : in57 = GF_MUL( in57, 1 ); \
7200 0 : scratch_58 = in58; \
7201 0 : in58 = GF_MUL( in58, 1 ); \
7202 0 : scratch_59 = in59; \
7203 0 : in59 = GF_MUL( in59, 1 ); \
7204 0 : scratch_60 = in60; \
7205 0 : in60 = GF_MUL( in60, 1 ); \
7206 0 : scratch_61 = in61; \
7207 0 : in61 = GF_MUL( in61, 1 ); \
7208 0 : scratch_62 = in62; \
7209 0 : in62 = GF_MUL( in62, 1 ); \
7210 0 : scratch_63 = in63; \
7211 0 : in63 = GF_MUL( in63, 1 ); \
7212 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
7213 0 : in54 = GF_ADD( GF_MUL( in22, 1 ), in54 ); \
7214 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
7215 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
7216 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
7217 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
7218 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
7219 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
7220 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
7221 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
7222 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
7223 0 : scratch_22 = in54; \
7224 0 : in54 = GF_MUL( in54, 1 ); \
7225 0 : scratch_23 = in55; \
7226 0 : in55 = GF_MUL( in55, 1 ); \
7227 0 : scratch_24 = in56; \
7228 0 : in56 = GF_MUL( in56, 1 ); \
7229 0 : scratch_25 = in57; \
7230 0 : in57 = GF_MUL( in57, 1 ); \
7231 0 : scratch_26 = in58; \
7232 0 : in58 = GF_MUL( in58, 1 ); \
7233 0 : scratch_27 = in59; \
7234 0 : in59 = GF_MUL( in59, 1 ); \
7235 0 : scratch_28 = in60; \
7236 0 : in60 = GF_MUL( in60, 1 ); \
7237 0 : scratch_29 = in61; \
7238 0 : in61 = GF_MUL( in61, 1 ); \
7239 0 : scratch_30 = in62; \
7240 0 : in62 = GF_MUL( in62, 1 ); \
7241 0 : scratch_31 = in63; \
7242 0 : in63 = GF_MUL( in63, 1 ); \
7243 0 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
7244 0 : in54 = GF_ADD( GF_MUL( in38, 1 ), in54 ); \
7245 0 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
7246 0 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
7247 0 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
7248 0 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
7249 0 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
7250 0 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
7251 0 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
7252 0 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
7253 0 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
7254 0 : scratch_8 = in56; \
7255 0 : in56 = GF_MUL( in56, 1 ); \
7256 0 : scratch_9 = in57; \
7257 0 : in57 = GF_MUL( in57, 1 ); \
7258 0 : scratch_10 = in58; \
7259 0 : in58 = GF_MUL( in58, 1 ); \
7260 0 : scratch_11 = in59; \
7261 0 : in59 = GF_MUL( in59, 1 ); \
7262 0 : scratch_12 = in60; \
7263 0 : in60 = GF_MUL( in60, 1 ); \
7264 0 : scratch_13 = in61; \
7265 0 : in61 = GF_MUL( in61, 1 ); \
7266 0 : GF_MUL22( in54, in62, 1, 165, 1, 164 ); \
7267 0 : GF_MUL22( in55, in63, 1, 165, 1, 164 ); \
7268 0 : scratch_6 = in54; \
7269 0 : in54 = GF_MUL( in54, 1 ); \
7270 0 : scratch_7 = in55; \
7271 0 : in55 = GF_MUL( in55, 1 ); \
7272 0 : FD_REEDSOL_GENERATE_IFFT( 4, 48, in48, in49, in50, in51 ); \
7273 0 : in54 = GF_ADD( GF_MUL( in50, 1 ), in54 ); \
7274 0 : in55 = GF_ADD( GF_MUL( in51, 1 ), in55 ); \
7275 0 : scratch_2 = in54; \
7276 0 : in54 = GF_MUL( in54, 1 ); \
7277 0 : scratch_3 = in55; \
7278 0 : in55 = GF_MUL( in55, 1 ); \
7279 0 : GF_MUL22( in52, in53, 53, 52, 1, 1 ); \
7280 0 : in54 = GF_ADD( GF_MUL( in52, 1 ), in54 ); \
7281 0 : in55 = GF_ADD( GF_MUL( in53, 1 ), in55 ); \
7282 0 : GF_MUL22( in54, in55, 1, 54, 1, 55 ); \
7283 0 : in52 = GF_MUL( in52, 1 ); \
7284 0 : in52 = GF_ADD( GF_MUL( scratch_2, 147 ), in52 ); \
7285 0 : in53 = GF_MUL( in53, 1 ); \
7286 0 : in53 = GF_ADD( GF_MUL( scratch_3, 147 ), in53 ); \
7287 0 : GF_MUL22( in48, in52, 70, 71, 1, 1 ); \
7288 0 : GF_MUL22( in49, in53, 70, 71, 1, 1 ); \
7289 0 : in50 = GF_MUL( in50, 1 ); \
7290 0 : in50 = GF_ADD( GF_MUL( scratch_6, 71 ), in50 ); \
7291 0 : in51 = GF_MUL( in51, 1 ); \
7292 0 : in51 = GF_ADD( GF_MUL( scratch_7, 71 ), in51 ); \
7293 0 : in56 = GF_ADD( GF_MUL( in48, 1 ), in56 ); \
7294 0 : in57 = GF_ADD( GF_MUL( in49, 1 ), in57 ); \
7295 0 : in58 = GF_ADD( GF_MUL( in50, 1 ), in58 ); \
7296 0 : in59 = GF_ADD( GF_MUL( in51, 1 ), in59 ); \
7297 0 : in60 = GF_ADD( GF_MUL( in52, 1 ), in60 ); \
7298 0 : in61 = GF_ADD( GF_MUL( in53, 1 ), in61 ); \
7299 0 : FD_REEDSOL_GENERATE_FFT( 8, 56, in56, in57, in58, in59, in60, in61, in62, in63 ); \
7300 0 : in48 = GF_MUL( in48, 1 ); \
7301 0 : in48 = GF_ADD( GF_MUL( scratch_8, 165 ), in48 ); \
7302 0 : in49 = GF_MUL( in49, 1 ); \
7303 0 : in49 = GF_ADD( GF_MUL( scratch_9, 165 ), in49 ); \
7304 0 : in50 = GF_MUL( in50, 1 ); \
7305 0 : in50 = GF_ADD( GF_MUL( scratch_10, 165 ), in50 ); \
7306 0 : in51 = GF_MUL( in51, 1 ); \
7307 0 : in51 = GF_ADD( GF_MUL( scratch_11, 165 ), in51 ); \
7308 0 : in52 = GF_MUL( in52, 1 ); \
7309 0 : in52 = GF_ADD( GF_MUL( scratch_12, 165 ), in52 ); \
7310 0 : in53 = GF_MUL( in53, 1 ); \
7311 0 : in53 = GF_ADD( GF_MUL( scratch_13, 165 ), in53 ); \
7312 0 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
7313 0 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
7314 0 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
7315 0 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
7316 0 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
7317 0 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
7318 0 : in38 = GF_MUL( in38, 1 ); \
7319 0 : in38 = GF_ADD( GF_MUL( scratch_22, 71 ), in38 ); \
7320 0 : in39 = GF_MUL( in39, 1 ); \
7321 0 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
7322 0 : in40 = GF_MUL( in40, 1 ); \
7323 0 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
7324 0 : in41 = GF_MUL( in41, 1 ); \
7325 0 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
7326 0 : in42 = GF_MUL( in42, 1 ); \
7327 0 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
7328 0 : in43 = GF_MUL( in43, 1 ); \
7329 0 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
7330 0 : in44 = GF_MUL( in44, 1 ); \
7331 0 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
7332 0 : in45 = GF_MUL( in45, 1 ); \
7333 0 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
7334 0 : in46 = GF_MUL( in46, 1 ); \
7335 0 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
7336 0 : in47 = GF_MUL( in47, 1 ); \
7337 0 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
7338 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
7339 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
7340 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
7341 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
7342 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
7343 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
7344 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
7345 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
7346 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
7347 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
7348 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
7349 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
7350 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
7351 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
7352 0 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
7353 0 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
7354 0 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
7355 0 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
7356 0 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
7357 0 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
7358 0 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
7359 0 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
7360 0 : in22 = GF_MUL( in22, 1 ); \
7361 0 : in22 = GF_ADD( GF_MUL( scratch_54, 0 ), in22 ); \
7362 0 : in23 = GF_MUL( in23, 1 ); \
7363 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
7364 0 : in24 = GF_MUL( in24, 1 ); \
7365 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
7366 0 : in25 = GF_MUL( in25, 1 ); \
7367 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
7368 0 : in26 = GF_MUL( in26, 1 ); \
7369 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
7370 0 : in27 = GF_MUL( in27, 1 ); \
7371 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
7372 0 : in28 = GF_MUL( in28, 1 ); \
7373 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
7374 0 : in29 = GF_MUL( in29, 1 ); \
7375 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
7376 0 : in30 = GF_MUL( in30, 1 ); \
7377 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
7378 0 : in31 = GF_MUL( in31, 1 ); \
7379 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
7380 0 : } while( 0 )
7381 :
7382 : void fd_reedsol_ppt_64_55( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
7383 : #define FD_REEDSOL_PPT_IMPL_64_55( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
7384 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
7385 0 : do { \
7386 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_23, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31, scratch_55; \
7387 0 : gf_t scratch_56, scratch_57, scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7, scratch_8, scratch_9; \
7388 0 : scratch_55 = in55; \
7389 0 : in55 = GF_MUL( in55, 1 ); \
7390 0 : scratch_56 = in56; \
7391 0 : in56 = GF_MUL( in56, 1 ); \
7392 0 : scratch_57 = in57; \
7393 0 : in57 = GF_MUL( in57, 1 ); \
7394 0 : scratch_58 = in58; \
7395 0 : in58 = GF_MUL( in58, 1 ); \
7396 0 : scratch_59 = in59; \
7397 0 : in59 = GF_MUL( in59, 1 ); \
7398 0 : scratch_60 = in60; \
7399 0 : in60 = GF_MUL( in60, 1 ); \
7400 0 : scratch_61 = in61; \
7401 0 : in61 = GF_MUL( in61, 1 ); \
7402 0 : scratch_62 = in62; \
7403 0 : in62 = GF_MUL( in62, 1 ); \
7404 0 : scratch_63 = in63; \
7405 0 : in63 = GF_MUL( in63, 1 ); \
7406 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
7407 0 : in55 = GF_ADD( GF_MUL( in23, 1 ), in55 ); \
7408 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
7409 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
7410 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
7411 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
7412 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
7413 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
7414 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
7415 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
7416 0 : scratch_23 = in55; \
7417 0 : in55 = GF_MUL( in55, 1 ); \
7418 0 : scratch_24 = in56; \
7419 0 : in56 = GF_MUL( in56, 1 ); \
7420 0 : scratch_25 = in57; \
7421 0 : in57 = GF_MUL( in57, 1 ); \
7422 0 : scratch_26 = in58; \
7423 0 : in58 = GF_MUL( in58, 1 ); \
7424 0 : scratch_27 = in59; \
7425 0 : in59 = GF_MUL( in59, 1 ); \
7426 0 : scratch_28 = in60; \
7427 0 : in60 = GF_MUL( in60, 1 ); \
7428 0 : scratch_29 = in61; \
7429 0 : in61 = GF_MUL( in61, 1 ); \
7430 0 : scratch_30 = in62; \
7431 0 : in62 = GF_MUL( in62, 1 ); \
7432 0 : scratch_31 = in63; \
7433 0 : in63 = GF_MUL( in63, 1 ); \
7434 0 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
7435 0 : in55 = GF_ADD( GF_MUL( in39, 1 ), in55 ); \
7436 0 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
7437 0 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
7438 0 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
7439 0 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
7440 0 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
7441 0 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
7442 0 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
7443 0 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
7444 0 : scratch_8 = in56; \
7445 0 : in56 = GF_MUL( in56, 1 ); \
7446 0 : scratch_9 = in57; \
7447 0 : in57 = GF_MUL( in57, 1 ); \
7448 0 : scratch_10 = in58; \
7449 0 : in58 = GF_MUL( in58, 1 ); \
7450 0 : scratch_11 = in59; \
7451 0 : in59 = GF_MUL( in59, 1 ); \
7452 0 : scratch_12 = in60; \
7453 0 : in60 = GF_MUL( in60, 1 ); \
7454 0 : scratch_13 = in61; \
7455 0 : in61 = GF_MUL( in61, 1 ); \
7456 0 : scratch_14 = in62; \
7457 0 : in62 = GF_MUL( in62, 1 ); \
7458 0 : GF_MUL22( in55, in63, 1, 165, 1, 164 ); \
7459 0 : scratch_7 = in55; \
7460 0 : in55 = GF_MUL( in55, 1 ); \
7461 0 : FD_REEDSOL_GENERATE_IFFT( 4, 48, in48, in49, in50, in51 ); \
7462 0 : in55 = GF_ADD( GF_MUL( in51, 1 ), in55 ); \
7463 0 : scratch_3 = in55; \
7464 0 : in55 = GF_MUL( in55, 1 ); \
7465 0 : GF_MUL22( in52, in53, 53, 52, 1, 1 ); \
7466 0 : in55 = GF_ADD( GF_MUL( in53, 1 ), in55 ); \
7467 0 : GF_MUL22( in54, in55, 1, 54, 1, 1 ); \
7468 0 : GF_MUL22( in52, in54, 146, 147, 1, 1 ); \
7469 0 : in53 = GF_MUL( in53, 1 ); \
7470 0 : in53 = GF_ADD( GF_MUL( scratch_3, 147 ), in53 ); \
7471 0 : GF_MUL22( in48, in52, 70, 71, 1, 1 ); \
7472 0 : GF_MUL22( in49, in53, 70, 71, 1, 1 ); \
7473 0 : GF_MUL22( in50, in54, 70, 71, 1, 1 ); \
7474 0 : in51 = GF_MUL( in51, 1 ); \
7475 0 : in51 = GF_ADD( GF_MUL( scratch_7, 71 ), in51 ); \
7476 0 : in56 = GF_ADD( GF_MUL( in48, 1 ), in56 ); \
7477 0 : in57 = GF_ADD( GF_MUL( in49, 1 ), in57 ); \
7478 0 : in58 = GF_ADD( GF_MUL( in50, 1 ), in58 ); \
7479 0 : in59 = GF_ADD( GF_MUL( in51, 1 ), in59 ); \
7480 0 : in60 = GF_ADD( GF_MUL( in52, 1 ), in60 ); \
7481 0 : in61 = GF_ADD( GF_MUL( in53, 1 ), in61 ); \
7482 0 : in62 = GF_ADD( GF_MUL( in54, 1 ), in62 ); \
7483 0 : FD_REEDSOL_GENERATE_FFT( 8, 56, in56, in57, in58, in59, in60, in61, in62, in63 ); \
7484 0 : in48 = GF_MUL( in48, 1 ); \
7485 0 : in48 = GF_ADD( GF_MUL( scratch_8, 165 ), in48 ); \
7486 0 : in49 = GF_MUL( in49, 1 ); \
7487 0 : in49 = GF_ADD( GF_MUL( scratch_9, 165 ), in49 ); \
7488 0 : in50 = GF_MUL( in50, 1 ); \
7489 0 : in50 = GF_ADD( GF_MUL( scratch_10, 165 ), in50 ); \
7490 0 : in51 = GF_MUL( in51, 1 ); \
7491 0 : in51 = GF_ADD( GF_MUL( scratch_11, 165 ), in51 ); \
7492 0 : in52 = GF_MUL( in52, 1 ); \
7493 0 : in52 = GF_ADD( GF_MUL( scratch_12, 165 ), in52 ); \
7494 0 : in53 = GF_MUL( in53, 1 ); \
7495 0 : in53 = GF_ADD( GF_MUL( scratch_13, 165 ), in53 ); \
7496 0 : in54 = GF_MUL( in54, 1 ); \
7497 0 : in54 = GF_ADD( GF_MUL( scratch_14, 165 ), in54 ); \
7498 0 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
7499 0 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
7500 0 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
7501 0 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
7502 0 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
7503 0 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
7504 0 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
7505 0 : in39 = GF_MUL( in39, 1 ); \
7506 0 : in39 = GF_ADD( GF_MUL( scratch_23, 71 ), in39 ); \
7507 0 : in40 = GF_MUL( in40, 1 ); \
7508 0 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
7509 0 : in41 = GF_MUL( in41, 1 ); \
7510 0 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
7511 0 : in42 = GF_MUL( in42, 1 ); \
7512 0 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
7513 0 : in43 = GF_MUL( in43, 1 ); \
7514 0 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
7515 0 : in44 = GF_MUL( in44, 1 ); \
7516 0 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
7517 0 : in45 = GF_MUL( in45, 1 ); \
7518 0 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
7519 0 : in46 = GF_MUL( in46, 1 ); \
7520 0 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
7521 0 : in47 = GF_MUL( in47, 1 ); \
7522 0 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
7523 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
7524 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
7525 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
7526 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
7527 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
7528 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
7529 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
7530 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
7531 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
7532 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
7533 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
7534 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
7535 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
7536 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
7537 0 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
7538 0 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
7539 0 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
7540 0 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
7541 0 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
7542 0 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
7543 0 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
7544 0 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
7545 0 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
7546 0 : in23 = GF_MUL( in23, 1 ); \
7547 0 : in23 = GF_ADD( GF_MUL( scratch_55, 0 ), in23 ); \
7548 0 : in24 = GF_MUL( in24, 1 ); \
7549 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
7550 0 : in25 = GF_MUL( in25, 1 ); \
7551 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
7552 0 : in26 = GF_MUL( in26, 1 ); \
7553 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
7554 0 : in27 = GF_MUL( in27, 1 ); \
7555 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
7556 0 : in28 = GF_MUL( in28, 1 ); \
7557 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
7558 0 : in29 = GF_MUL( in29, 1 ); \
7559 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
7560 0 : in30 = GF_MUL( in30, 1 ); \
7561 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
7562 0 : in31 = GF_MUL( in31, 1 ); \
7563 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
7564 0 : } while( 0 )
7565 :
7566 : void fd_reedsol_ppt_64_56( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
7567 : #define FD_REEDSOL_PPT_IMPL_64_56( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
7568 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
7569 0 : do { \
7570 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_24, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31, scratch_56, scratch_57; \
7571 0 : gf_t scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63, scratch_8, scratch_9; \
7572 0 : scratch_56 = in56; \
7573 0 : in56 = GF_MUL( in56, 1 ); \
7574 0 : scratch_57 = in57; \
7575 0 : in57 = GF_MUL( in57, 1 ); \
7576 0 : scratch_58 = in58; \
7577 0 : in58 = GF_MUL( in58, 1 ); \
7578 0 : scratch_59 = in59; \
7579 0 : in59 = GF_MUL( in59, 1 ); \
7580 0 : scratch_60 = in60; \
7581 0 : in60 = GF_MUL( in60, 1 ); \
7582 0 : scratch_61 = in61; \
7583 0 : in61 = GF_MUL( in61, 1 ); \
7584 0 : scratch_62 = in62; \
7585 0 : in62 = GF_MUL( in62, 1 ); \
7586 0 : scratch_63 = in63; \
7587 0 : in63 = GF_MUL( in63, 1 ); \
7588 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
7589 0 : in56 = GF_ADD( GF_MUL( in24, 1 ), in56 ); \
7590 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
7591 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
7592 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
7593 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
7594 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
7595 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
7596 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
7597 0 : scratch_24 = in56; \
7598 0 : in56 = GF_MUL( in56, 1 ); \
7599 0 : scratch_25 = in57; \
7600 0 : in57 = GF_MUL( in57, 1 ); \
7601 0 : scratch_26 = in58; \
7602 0 : in58 = GF_MUL( in58, 1 ); \
7603 0 : scratch_27 = in59; \
7604 0 : in59 = GF_MUL( in59, 1 ); \
7605 0 : scratch_28 = in60; \
7606 0 : in60 = GF_MUL( in60, 1 ); \
7607 0 : scratch_29 = in61; \
7608 0 : in61 = GF_MUL( in61, 1 ); \
7609 0 : scratch_30 = in62; \
7610 0 : in62 = GF_MUL( in62, 1 ); \
7611 0 : scratch_31 = in63; \
7612 0 : in63 = GF_MUL( in63, 1 ); \
7613 0 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
7614 0 : in56 = GF_ADD( GF_MUL( in40, 1 ), in56 ); \
7615 0 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
7616 0 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
7617 0 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
7618 0 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
7619 0 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
7620 0 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
7621 0 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
7622 0 : scratch_8 = in56; \
7623 0 : in56 = GF_MUL( in56, 1 ); \
7624 0 : scratch_9 = in57; \
7625 0 : in57 = GF_MUL( in57, 1 ); \
7626 0 : scratch_10 = in58; \
7627 0 : in58 = GF_MUL( in58, 1 ); \
7628 0 : scratch_11 = in59; \
7629 0 : in59 = GF_MUL( in59, 1 ); \
7630 0 : scratch_12 = in60; \
7631 0 : in60 = GF_MUL( in60, 1 ); \
7632 0 : scratch_13 = in61; \
7633 0 : in61 = GF_MUL( in61, 1 ); \
7634 0 : scratch_14 = in62; \
7635 0 : in62 = GF_MUL( in62, 1 ); \
7636 0 : scratch_15 = in63; \
7637 0 : in63 = GF_MUL( in63, 1 ); \
7638 0 : FD_REEDSOL_GENERATE_IFFT( 8, 48, in48, in49, in50, in51, in52, in53, in54, in55 ); \
7639 0 : in56 = GF_ADD( GF_MUL( in48, 1 ), in56 ); \
7640 0 : in57 = GF_ADD( GF_MUL( in49, 1 ), in57 ); \
7641 0 : in58 = GF_ADD( GF_MUL( in50, 1 ), in58 ); \
7642 0 : in59 = GF_ADD( GF_MUL( in51, 1 ), in59 ); \
7643 0 : in60 = GF_ADD( GF_MUL( in52, 1 ), in60 ); \
7644 0 : in61 = GF_ADD( GF_MUL( in53, 1 ), in61 ); \
7645 0 : in62 = GF_ADD( GF_MUL( in54, 1 ), in62 ); \
7646 0 : in63 = GF_ADD( GF_MUL( in55, 1 ), in63 ); \
7647 0 : FD_REEDSOL_GENERATE_FFT( 8, 56, in56, in57, in58, in59, in60, in61, in62, in63 ); \
7648 0 : in48 = GF_MUL( in48, 1 ); \
7649 0 : in48 = GF_ADD( GF_MUL( scratch_8, 165 ), in48 ); \
7650 0 : in49 = GF_MUL( in49, 1 ); \
7651 0 : in49 = GF_ADD( GF_MUL( scratch_9, 165 ), in49 ); \
7652 0 : in50 = GF_MUL( in50, 1 ); \
7653 0 : in50 = GF_ADD( GF_MUL( scratch_10, 165 ), in50 ); \
7654 0 : in51 = GF_MUL( in51, 1 ); \
7655 0 : in51 = GF_ADD( GF_MUL( scratch_11, 165 ), in51 ); \
7656 0 : in52 = GF_MUL( in52, 1 ); \
7657 0 : in52 = GF_ADD( GF_MUL( scratch_12, 165 ), in52 ); \
7658 0 : in53 = GF_MUL( in53, 1 ); \
7659 0 : in53 = GF_ADD( GF_MUL( scratch_13, 165 ), in53 ); \
7660 0 : in54 = GF_MUL( in54, 1 ); \
7661 0 : in54 = GF_ADD( GF_MUL( scratch_14, 165 ), in54 ); \
7662 0 : in55 = GF_MUL( in55, 1 ); \
7663 0 : in55 = GF_ADD( GF_MUL( scratch_15, 165 ), in55 ); \
7664 0 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
7665 0 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
7666 0 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
7667 0 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
7668 0 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
7669 0 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
7670 0 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
7671 0 : GF_MUL22( in39, in55, 70, 71, 1, 1 ); \
7672 0 : in40 = GF_MUL( in40, 1 ); \
7673 0 : in40 = GF_ADD( GF_MUL( scratch_24, 71 ), in40 ); \
7674 0 : in41 = GF_MUL( in41, 1 ); \
7675 0 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
7676 0 : in42 = GF_MUL( in42, 1 ); \
7677 0 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
7678 0 : in43 = GF_MUL( in43, 1 ); \
7679 0 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
7680 0 : in44 = GF_MUL( in44, 1 ); \
7681 0 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
7682 0 : in45 = GF_MUL( in45, 1 ); \
7683 0 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
7684 0 : in46 = GF_MUL( in46, 1 ); \
7685 0 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
7686 0 : in47 = GF_MUL( in47, 1 ); \
7687 0 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
7688 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
7689 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
7690 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
7691 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
7692 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
7693 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
7694 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
7695 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
7696 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
7697 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
7698 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
7699 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
7700 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
7701 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
7702 0 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
7703 0 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
7704 0 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
7705 0 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
7706 0 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
7707 0 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
7708 0 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
7709 0 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
7710 0 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
7711 0 : GF_MUL22( in23, in55, 1, 0, 1, 1 ); \
7712 0 : in24 = GF_MUL( in24, 1 ); \
7713 0 : in24 = GF_ADD( GF_MUL( scratch_56, 0 ), in24 ); \
7714 0 : in25 = GF_MUL( in25, 1 ); \
7715 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
7716 0 : in26 = GF_MUL( in26, 1 ); \
7717 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
7718 0 : in27 = GF_MUL( in27, 1 ); \
7719 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
7720 0 : in28 = GF_MUL( in28, 1 ); \
7721 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
7722 0 : in29 = GF_MUL( in29, 1 ); \
7723 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
7724 0 : in30 = GF_MUL( in30, 1 ); \
7725 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
7726 0 : in31 = GF_MUL( in31, 1 ); \
7727 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
7728 0 : } while( 0 )
7729 :
7730 : void fd_reedsol_ppt_64_57( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
7731 : #define FD_REEDSOL_PPT_IMPL_64_57( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
7732 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
7733 0 : do { \
7734 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_2, scratch_25, scratch_26, scratch_27, scratch_28, scratch_29, scratch_30, scratch_31, scratch_4, scratch_57; \
7735 0 : gf_t scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63, scratch_9; \
7736 0 : scratch_57 = in57; \
7737 0 : in57 = GF_MUL( in57, 1 ); \
7738 0 : scratch_58 = in58; \
7739 0 : in58 = GF_MUL( in58, 1 ); \
7740 0 : scratch_59 = in59; \
7741 0 : in59 = GF_MUL( in59, 1 ); \
7742 0 : scratch_60 = in60; \
7743 0 : in60 = GF_MUL( in60, 1 ); \
7744 0 : scratch_61 = in61; \
7745 0 : in61 = GF_MUL( in61, 1 ); \
7746 0 : scratch_62 = in62; \
7747 0 : in62 = GF_MUL( in62, 1 ); \
7748 0 : scratch_63 = in63; \
7749 0 : in63 = GF_MUL( in63, 1 ); \
7750 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
7751 0 : in57 = GF_ADD( GF_MUL( in25, 1 ), in57 ); \
7752 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
7753 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
7754 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
7755 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
7756 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
7757 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
7758 0 : scratch_25 = in57; \
7759 0 : in57 = GF_MUL( in57, 1 ); \
7760 0 : scratch_26 = in58; \
7761 0 : in58 = GF_MUL( in58, 1 ); \
7762 0 : scratch_27 = in59; \
7763 0 : in59 = GF_MUL( in59, 1 ); \
7764 0 : scratch_28 = in60; \
7765 0 : in60 = GF_MUL( in60, 1 ); \
7766 0 : scratch_29 = in61; \
7767 0 : in61 = GF_MUL( in61, 1 ); \
7768 0 : scratch_30 = in62; \
7769 0 : in62 = GF_MUL( in62, 1 ); \
7770 0 : scratch_31 = in63; \
7771 0 : in63 = GF_MUL( in63, 1 ); \
7772 0 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
7773 0 : in57 = GF_ADD( GF_MUL( in41, 1 ), in57 ); \
7774 0 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
7775 0 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
7776 0 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
7777 0 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
7778 0 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
7779 0 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
7780 0 : scratch_9 = in57; \
7781 0 : in57 = GF_MUL( in57, 1 ); \
7782 0 : scratch_10 = in58; \
7783 0 : in58 = GF_MUL( in58, 1 ); \
7784 0 : scratch_11 = in59; \
7785 0 : in59 = GF_MUL( in59, 1 ); \
7786 0 : scratch_12 = in60; \
7787 0 : in60 = GF_MUL( in60, 1 ); \
7788 0 : scratch_13 = in61; \
7789 0 : in61 = GF_MUL( in61, 1 ); \
7790 0 : scratch_14 = in62; \
7791 0 : in62 = GF_MUL( in62, 1 ); \
7792 0 : scratch_15 = in63; \
7793 0 : in63 = GF_MUL( in63, 1 ); \
7794 0 : FD_REEDSOL_GENERATE_IFFT( 8, 48, in48, in49, in50, in51, in52, in53, in54, in55 ); \
7795 0 : in57 = GF_ADD( GF_MUL( in49, 1 ), in57 ); \
7796 0 : in58 = GF_ADD( GF_MUL( in50, 1 ), in58 ); \
7797 0 : in59 = GF_ADD( GF_MUL( in51, 1 ), in59 ); \
7798 0 : in60 = GF_ADD( GF_MUL( in52, 1 ), in60 ); \
7799 0 : in61 = GF_ADD( GF_MUL( in53, 1 ), in61 ); \
7800 0 : in62 = GF_ADD( GF_MUL( in54, 1 ), in62 ); \
7801 0 : in63 = GF_ADD( GF_MUL( in55, 1 ), in63 ); \
7802 0 : scratch_4 = in60; \
7803 0 : in60 = GF_MUL( in60, 1 ); \
7804 0 : GF_MUL22( in57, in61, 1, 81, 1, 80 ); \
7805 0 : GF_MUL22( in58, in62, 1, 81, 1, 80 ); \
7806 0 : GF_MUL22( in59, in63, 1, 81, 1, 80 ); \
7807 0 : scratch_2 = in58; \
7808 0 : in58 = GF_MUL( in58, 1 ); \
7809 0 : GF_MUL22( in57, in59, 1, 137, 1, 136 ); \
7810 0 : GF_MUL22( in56, in57, 1, 56, 1, 1 ); \
7811 0 : in58 = GF_ADD( GF_MUL( in56, 1 ), in58 ); \
7812 0 : GF_MUL22( in58, in59, 1, 58, 1, 59 ); \
7813 0 : in56 = GF_MUL( in56, 1 ); \
7814 0 : in56 = GF_ADD( GF_MUL( scratch_2, 137 ), in56 ); \
7815 0 : in60 = GF_ADD( GF_MUL( in56, 1 ), in60 ); \
7816 0 : FD_REEDSOL_GENERATE_FFT( 4, 60, in60, in61, in62, in63 ); \
7817 0 : in56 = GF_MUL( in56, 1 ); \
7818 0 : in56 = GF_ADD( GF_MUL( scratch_4, 81 ), in56 ); \
7819 0 : GF_MUL22( in48, in56, 164, 165, 1, 1 ); \
7820 0 : in49 = GF_MUL( in49, 1 ); \
7821 0 : in49 = GF_ADD( GF_MUL( scratch_9, 165 ), in49 ); \
7822 0 : in50 = GF_MUL( in50, 1 ); \
7823 0 : in50 = GF_ADD( GF_MUL( scratch_10, 165 ), in50 ); \
7824 0 : in51 = GF_MUL( in51, 1 ); \
7825 0 : in51 = GF_ADD( GF_MUL( scratch_11, 165 ), in51 ); \
7826 0 : in52 = GF_MUL( in52, 1 ); \
7827 0 : in52 = GF_ADD( GF_MUL( scratch_12, 165 ), in52 ); \
7828 0 : in53 = GF_MUL( in53, 1 ); \
7829 0 : in53 = GF_ADD( GF_MUL( scratch_13, 165 ), in53 ); \
7830 0 : in54 = GF_MUL( in54, 1 ); \
7831 0 : in54 = GF_ADD( GF_MUL( scratch_14, 165 ), in54 ); \
7832 0 : in55 = GF_MUL( in55, 1 ); \
7833 0 : in55 = GF_ADD( GF_MUL( scratch_15, 165 ), in55 ); \
7834 0 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
7835 0 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
7836 0 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
7837 0 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
7838 0 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
7839 0 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
7840 0 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
7841 0 : GF_MUL22( in39, in55, 70, 71, 1, 1 ); \
7842 0 : GF_MUL22( in40, in56, 70, 71, 1, 1 ); \
7843 0 : in41 = GF_MUL( in41, 1 ); \
7844 0 : in41 = GF_ADD( GF_MUL( scratch_25, 71 ), in41 ); \
7845 0 : in42 = GF_MUL( in42, 1 ); \
7846 0 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
7847 0 : in43 = GF_MUL( in43, 1 ); \
7848 0 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
7849 0 : in44 = GF_MUL( in44, 1 ); \
7850 0 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
7851 0 : in45 = GF_MUL( in45, 1 ); \
7852 0 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
7853 0 : in46 = GF_MUL( in46, 1 ); \
7854 0 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
7855 0 : in47 = GF_MUL( in47, 1 ); \
7856 0 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
7857 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
7858 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
7859 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
7860 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
7861 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
7862 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
7863 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
7864 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
7865 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
7866 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
7867 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
7868 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
7869 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
7870 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
7871 0 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
7872 0 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
7873 0 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
7874 0 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
7875 0 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
7876 0 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
7877 0 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
7878 0 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
7879 0 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
7880 0 : GF_MUL22( in23, in55, 1, 0, 1, 1 ); \
7881 0 : GF_MUL22( in24, in56, 1, 0, 1, 1 ); \
7882 0 : in25 = GF_MUL( in25, 1 ); \
7883 0 : in25 = GF_ADD( GF_MUL( scratch_57, 0 ), in25 ); \
7884 0 : in26 = GF_MUL( in26, 1 ); \
7885 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
7886 0 : in27 = GF_MUL( in27, 1 ); \
7887 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
7888 0 : in28 = GF_MUL( in28, 1 ); \
7889 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
7890 0 : in29 = GF_MUL( in29, 1 ); \
7891 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
7892 0 : in30 = GF_MUL( in30, 1 ); \
7893 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
7894 0 : in31 = GF_MUL( in31, 1 ); \
7895 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
7896 0 : } while( 0 )
7897 :
7898 : void fd_reedsol_ppt_64_58( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
7899 : #define FD_REEDSOL_PPT_IMPL_64_58( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
7900 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
7901 0 : do { \
7902 0 : gf_t scratch_10, scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_2, scratch_26, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31, scratch_4, scratch_5; \
7903 0 : gf_t scratch_58, scratch_59, scratch_60, scratch_61, scratch_62, scratch_63; \
7904 0 : scratch_58 = in58; \
7905 0 : in58 = GF_MUL( in58, 1 ); \
7906 0 : scratch_59 = in59; \
7907 0 : in59 = GF_MUL( in59, 1 ); \
7908 0 : scratch_60 = in60; \
7909 0 : in60 = GF_MUL( in60, 1 ); \
7910 0 : scratch_61 = in61; \
7911 0 : in61 = GF_MUL( in61, 1 ); \
7912 0 : scratch_62 = in62; \
7913 0 : in62 = GF_MUL( in62, 1 ); \
7914 0 : scratch_63 = in63; \
7915 0 : in63 = GF_MUL( in63, 1 ); \
7916 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
7917 0 : in58 = GF_ADD( GF_MUL( in26, 1 ), in58 ); \
7918 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
7919 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
7920 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
7921 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
7922 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
7923 0 : scratch_26 = in58; \
7924 0 : in58 = GF_MUL( in58, 1 ); \
7925 0 : scratch_27 = in59; \
7926 0 : in59 = GF_MUL( in59, 1 ); \
7927 0 : scratch_28 = in60; \
7928 0 : in60 = GF_MUL( in60, 1 ); \
7929 0 : scratch_29 = in61; \
7930 0 : in61 = GF_MUL( in61, 1 ); \
7931 0 : scratch_30 = in62; \
7932 0 : in62 = GF_MUL( in62, 1 ); \
7933 0 : scratch_31 = in63; \
7934 0 : in63 = GF_MUL( in63, 1 ); \
7935 0 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
7936 0 : in58 = GF_ADD( GF_MUL( in42, 1 ), in58 ); \
7937 0 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
7938 0 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
7939 0 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
7940 0 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
7941 0 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
7942 0 : scratch_10 = in58; \
7943 0 : in58 = GF_MUL( in58, 1 ); \
7944 0 : scratch_11 = in59; \
7945 0 : in59 = GF_MUL( in59, 1 ); \
7946 0 : scratch_12 = in60; \
7947 0 : in60 = GF_MUL( in60, 1 ); \
7948 0 : scratch_13 = in61; \
7949 0 : in61 = GF_MUL( in61, 1 ); \
7950 0 : scratch_14 = in62; \
7951 0 : in62 = GF_MUL( in62, 1 ); \
7952 0 : scratch_15 = in63; \
7953 0 : in63 = GF_MUL( in63, 1 ); \
7954 0 : FD_REEDSOL_GENERATE_IFFT( 8, 48, in48, in49, in50, in51, in52, in53, in54, in55 ); \
7955 0 : in58 = GF_ADD( GF_MUL( in50, 1 ), in58 ); \
7956 0 : in59 = GF_ADD( GF_MUL( in51, 1 ), in59 ); \
7957 0 : in60 = GF_ADD( GF_MUL( in52, 1 ), in60 ); \
7958 0 : in61 = GF_ADD( GF_MUL( in53, 1 ), in61 ); \
7959 0 : in62 = GF_ADD( GF_MUL( in54, 1 ), in62 ); \
7960 0 : in63 = GF_ADD( GF_MUL( in55, 1 ), in63 ); \
7961 0 : scratch_4 = in60; \
7962 0 : in60 = GF_MUL( in60, 1 ); \
7963 0 : scratch_5 = in61; \
7964 0 : in61 = GF_MUL( in61, 1 ); \
7965 0 : GF_MUL22( in58, in62, 1, 81, 1, 80 ); \
7966 0 : GF_MUL22( in59, in63, 1, 81, 1, 80 ); \
7967 0 : scratch_2 = in58; \
7968 0 : in58 = GF_MUL( in58, 1 ); \
7969 0 : scratch_3 = in59; \
7970 0 : in59 = GF_MUL( in59, 1 ); \
7971 0 : GF_MUL22( in56, in57, 57, 56, 1, 1 ); \
7972 0 : in58 = GF_ADD( GF_MUL( in56, 1 ), in58 ); \
7973 0 : in59 = GF_ADD( GF_MUL( in57, 1 ), in59 ); \
7974 0 : GF_MUL22( in58, in59, 1, 58, 1, 59 ); \
7975 0 : in56 = GF_MUL( in56, 1 ); \
7976 0 : in56 = GF_ADD( GF_MUL( scratch_2, 137 ), in56 ); \
7977 0 : in57 = GF_MUL( in57, 1 ); \
7978 0 : in57 = GF_ADD( GF_MUL( scratch_3, 137 ), in57 ); \
7979 0 : in60 = GF_ADD( GF_MUL( in56, 1 ), in60 ); \
7980 0 : in61 = GF_ADD( GF_MUL( in57, 1 ), in61 ); \
7981 0 : FD_REEDSOL_GENERATE_FFT( 4, 60, in60, in61, in62, in63 ); \
7982 0 : in56 = GF_MUL( in56, 1 ); \
7983 0 : in56 = GF_ADD( GF_MUL( scratch_4, 81 ), in56 ); \
7984 0 : in57 = GF_MUL( in57, 1 ); \
7985 0 : in57 = GF_ADD( GF_MUL( scratch_5, 81 ), in57 ); \
7986 0 : GF_MUL22( in48, in56, 164, 165, 1, 1 ); \
7987 0 : GF_MUL22( in49, in57, 164, 165, 1, 1 ); \
7988 0 : in50 = GF_MUL( in50, 1 ); \
7989 0 : in50 = GF_ADD( GF_MUL( scratch_10, 165 ), in50 ); \
7990 0 : in51 = GF_MUL( in51, 1 ); \
7991 0 : in51 = GF_ADD( GF_MUL( scratch_11, 165 ), in51 ); \
7992 0 : in52 = GF_MUL( in52, 1 ); \
7993 0 : in52 = GF_ADD( GF_MUL( scratch_12, 165 ), in52 ); \
7994 0 : in53 = GF_MUL( in53, 1 ); \
7995 0 : in53 = GF_ADD( GF_MUL( scratch_13, 165 ), in53 ); \
7996 0 : in54 = GF_MUL( in54, 1 ); \
7997 0 : in54 = GF_ADD( GF_MUL( scratch_14, 165 ), in54 ); \
7998 0 : in55 = GF_MUL( in55, 1 ); \
7999 0 : in55 = GF_ADD( GF_MUL( scratch_15, 165 ), in55 ); \
8000 0 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
8001 0 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
8002 0 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
8003 0 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
8004 0 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
8005 0 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
8006 0 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
8007 0 : GF_MUL22( in39, in55, 70, 71, 1, 1 ); \
8008 0 : GF_MUL22( in40, in56, 70, 71, 1, 1 ); \
8009 0 : GF_MUL22( in41, in57, 70, 71, 1, 1 ); \
8010 0 : in42 = GF_MUL( in42, 1 ); \
8011 0 : in42 = GF_ADD( GF_MUL( scratch_26, 71 ), in42 ); \
8012 0 : in43 = GF_MUL( in43, 1 ); \
8013 0 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
8014 0 : in44 = GF_MUL( in44, 1 ); \
8015 0 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
8016 0 : in45 = GF_MUL( in45, 1 ); \
8017 0 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
8018 0 : in46 = GF_MUL( in46, 1 ); \
8019 0 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
8020 0 : in47 = GF_MUL( in47, 1 ); \
8021 0 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
8022 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
8023 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
8024 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
8025 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
8026 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
8027 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
8028 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
8029 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
8030 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
8031 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
8032 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
8033 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
8034 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
8035 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
8036 0 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
8037 0 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
8038 0 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
8039 0 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
8040 0 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
8041 0 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
8042 0 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
8043 0 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
8044 0 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
8045 0 : GF_MUL22( in23, in55, 1, 0, 1, 1 ); \
8046 0 : GF_MUL22( in24, in56, 1, 0, 1, 1 ); \
8047 0 : GF_MUL22( in25, in57, 1, 0, 1, 1 ); \
8048 0 : in26 = GF_MUL( in26, 1 ); \
8049 0 : in26 = GF_ADD( GF_MUL( scratch_58, 0 ), in26 ); \
8050 0 : in27 = GF_MUL( in27, 1 ); \
8051 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
8052 0 : in28 = GF_MUL( in28, 1 ); \
8053 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
8054 0 : in29 = GF_MUL( in29, 1 ); \
8055 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
8056 0 : in30 = GF_MUL( in30, 1 ); \
8057 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
8058 0 : in31 = GF_MUL( in31, 1 ); \
8059 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
8060 0 : } while( 0 )
8061 :
8062 : void fd_reedsol_ppt_64_59( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
8063 : #define FD_REEDSOL_PPT_IMPL_64_59( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
8064 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
8065 0 : do { \
8066 0 : gf_t scratch_11, scratch_12, scratch_13, scratch_14, scratch_15, scratch_27, scratch_28, scratch_29, scratch_3, scratch_30, scratch_31, scratch_4, scratch_5, scratch_59, scratch_6, scratch_60; \
8067 0 : gf_t scratch_61, scratch_62, scratch_63; \
8068 0 : scratch_59 = in59; \
8069 0 : in59 = GF_MUL( in59, 1 ); \
8070 0 : scratch_60 = in60; \
8071 0 : in60 = GF_MUL( in60, 1 ); \
8072 0 : scratch_61 = in61; \
8073 0 : in61 = GF_MUL( in61, 1 ); \
8074 0 : scratch_62 = in62; \
8075 0 : in62 = GF_MUL( in62, 1 ); \
8076 0 : scratch_63 = in63; \
8077 0 : in63 = GF_MUL( in63, 1 ); \
8078 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
8079 0 : in59 = GF_ADD( GF_MUL( in27, 1 ), in59 ); \
8080 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
8081 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
8082 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
8083 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
8084 0 : scratch_27 = in59; \
8085 0 : in59 = GF_MUL( in59, 1 ); \
8086 0 : scratch_28 = in60; \
8087 0 : in60 = GF_MUL( in60, 1 ); \
8088 0 : scratch_29 = in61; \
8089 0 : in61 = GF_MUL( in61, 1 ); \
8090 0 : scratch_30 = in62; \
8091 0 : in62 = GF_MUL( in62, 1 ); \
8092 0 : scratch_31 = in63; \
8093 0 : in63 = GF_MUL( in63, 1 ); \
8094 0 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
8095 0 : in59 = GF_ADD( GF_MUL( in43, 1 ), in59 ); \
8096 0 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
8097 0 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
8098 0 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
8099 0 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
8100 0 : scratch_11 = in59; \
8101 0 : in59 = GF_MUL( in59, 1 ); \
8102 0 : scratch_12 = in60; \
8103 0 : in60 = GF_MUL( in60, 1 ); \
8104 0 : scratch_13 = in61; \
8105 0 : in61 = GF_MUL( in61, 1 ); \
8106 0 : scratch_14 = in62; \
8107 0 : in62 = GF_MUL( in62, 1 ); \
8108 0 : scratch_15 = in63; \
8109 0 : in63 = GF_MUL( in63, 1 ); \
8110 0 : FD_REEDSOL_GENERATE_IFFT( 8, 48, in48, in49, in50, in51, in52, in53, in54, in55 ); \
8111 0 : in59 = GF_ADD( GF_MUL( in51, 1 ), in59 ); \
8112 0 : in60 = GF_ADD( GF_MUL( in52, 1 ), in60 ); \
8113 0 : in61 = GF_ADD( GF_MUL( in53, 1 ), in61 ); \
8114 0 : in62 = GF_ADD( GF_MUL( in54, 1 ), in62 ); \
8115 0 : in63 = GF_ADD( GF_MUL( in55, 1 ), in63 ); \
8116 0 : scratch_4 = in60; \
8117 0 : in60 = GF_MUL( in60, 1 ); \
8118 0 : scratch_5 = in61; \
8119 0 : in61 = GF_MUL( in61, 1 ); \
8120 0 : scratch_6 = in62; \
8121 0 : in62 = GF_MUL( in62, 1 ); \
8122 0 : GF_MUL22( in59, in63, 1, 81, 1, 80 ); \
8123 0 : scratch_3 = in59; \
8124 0 : in59 = GF_MUL( in59, 1 ); \
8125 0 : GF_MUL22( in56, in57, 57, 56, 1, 1 ); \
8126 0 : in59 = GF_ADD( GF_MUL( in57, 1 ), in59 ); \
8127 0 : GF_MUL22( in58, in59, 1, 58, 1, 1 ); \
8128 0 : GF_MUL22( in56, in58, 136, 137, 1, 1 ); \
8129 0 : in57 = GF_MUL( in57, 1 ); \
8130 0 : in57 = GF_ADD( GF_MUL( scratch_3, 137 ), in57 ); \
8131 0 : in60 = GF_ADD( GF_MUL( in56, 1 ), in60 ); \
8132 0 : in61 = GF_ADD( GF_MUL( in57, 1 ), in61 ); \
8133 0 : in62 = GF_ADD( GF_MUL( in58, 1 ), in62 ); \
8134 0 : FD_REEDSOL_GENERATE_FFT( 4, 60, in60, in61, in62, in63 ); \
8135 0 : in56 = GF_MUL( in56, 1 ); \
8136 0 : in56 = GF_ADD( GF_MUL( scratch_4, 81 ), in56 ); \
8137 0 : in57 = GF_MUL( in57, 1 ); \
8138 0 : in57 = GF_ADD( GF_MUL( scratch_5, 81 ), in57 ); \
8139 0 : in58 = GF_MUL( in58, 1 ); \
8140 0 : in58 = GF_ADD( GF_MUL( scratch_6, 81 ), in58 ); \
8141 0 : GF_MUL22( in48, in56, 164, 165, 1, 1 ); \
8142 0 : GF_MUL22( in49, in57, 164, 165, 1, 1 ); \
8143 0 : GF_MUL22( in50, in58, 164, 165, 1, 1 ); \
8144 0 : in51 = GF_MUL( in51, 1 ); \
8145 0 : in51 = GF_ADD( GF_MUL( scratch_11, 165 ), in51 ); \
8146 0 : in52 = GF_MUL( in52, 1 ); \
8147 0 : in52 = GF_ADD( GF_MUL( scratch_12, 165 ), in52 ); \
8148 0 : in53 = GF_MUL( in53, 1 ); \
8149 0 : in53 = GF_ADD( GF_MUL( scratch_13, 165 ), in53 ); \
8150 0 : in54 = GF_MUL( in54, 1 ); \
8151 0 : in54 = GF_ADD( GF_MUL( scratch_14, 165 ), in54 ); \
8152 0 : in55 = GF_MUL( in55, 1 ); \
8153 0 : in55 = GF_ADD( GF_MUL( scratch_15, 165 ), in55 ); \
8154 0 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
8155 0 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
8156 0 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
8157 0 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
8158 0 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
8159 0 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
8160 0 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
8161 0 : GF_MUL22( in39, in55, 70, 71, 1, 1 ); \
8162 0 : GF_MUL22( in40, in56, 70, 71, 1, 1 ); \
8163 0 : GF_MUL22( in41, in57, 70, 71, 1, 1 ); \
8164 0 : GF_MUL22( in42, in58, 70, 71, 1, 1 ); \
8165 0 : in43 = GF_MUL( in43, 1 ); \
8166 0 : in43 = GF_ADD( GF_MUL( scratch_27, 71 ), in43 ); \
8167 0 : in44 = GF_MUL( in44, 1 ); \
8168 0 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
8169 0 : in45 = GF_MUL( in45, 1 ); \
8170 0 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
8171 0 : in46 = GF_MUL( in46, 1 ); \
8172 0 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
8173 0 : in47 = GF_MUL( in47, 1 ); \
8174 0 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
8175 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
8176 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
8177 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
8178 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
8179 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
8180 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
8181 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
8182 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
8183 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
8184 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
8185 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
8186 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
8187 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
8188 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
8189 0 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
8190 0 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
8191 0 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
8192 0 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
8193 0 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
8194 0 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
8195 0 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
8196 0 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
8197 0 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
8198 0 : GF_MUL22( in23, in55, 1, 0, 1, 1 ); \
8199 0 : GF_MUL22( in24, in56, 1, 0, 1, 1 ); \
8200 0 : GF_MUL22( in25, in57, 1, 0, 1, 1 ); \
8201 0 : GF_MUL22( in26, in58, 1, 0, 1, 1 ); \
8202 0 : in27 = GF_MUL( in27, 1 ); \
8203 0 : in27 = GF_ADD( GF_MUL( scratch_59, 0 ), in27 ); \
8204 0 : in28 = GF_MUL( in28, 1 ); \
8205 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
8206 0 : in29 = GF_MUL( in29, 1 ); \
8207 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
8208 0 : in30 = GF_MUL( in30, 1 ); \
8209 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
8210 0 : in31 = GF_MUL( in31, 1 ); \
8211 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
8212 0 : } while( 0 )
8213 :
8214 : void fd_reedsol_ppt_64_60( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
8215 : #define FD_REEDSOL_PPT_IMPL_64_60( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
8216 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
8217 0 : do { \
8218 0 : gf_t scratch_12, scratch_13, scratch_14, scratch_15, scratch_28, scratch_29, scratch_30, scratch_31, scratch_4, scratch_5, scratch_6, scratch_60, scratch_61, scratch_62, scratch_63, scratch_7; \
8219 0 : scratch_60 = in60; \
8220 0 : in60 = GF_MUL( in60, 1 ); \
8221 0 : scratch_61 = in61; \
8222 0 : in61 = GF_MUL( in61, 1 ); \
8223 0 : scratch_62 = in62; \
8224 0 : in62 = GF_MUL( in62, 1 ); \
8225 0 : scratch_63 = in63; \
8226 0 : in63 = GF_MUL( in63, 1 ); \
8227 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
8228 0 : in60 = GF_ADD( GF_MUL( in28, 1 ), in60 ); \
8229 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
8230 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
8231 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
8232 0 : scratch_28 = in60; \
8233 0 : in60 = GF_MUL( in60, 1 ); \
8234 0 : scratch_29 = in61; \
8235 0 : in61 = GF_MUL( in61, 1 ); \
8236 0 : scratch_30 = in62; \
8237 0 : in62 = GF_MUL( in62, 1 ); \
8238 0 : scratch_31 = in63; \
8239 0 : in63 = GF_MUL( in63, 1 ); \
8240 0 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
8241 0 : in60 = GF_ADD( GF_MUL( in44, 1 ), in60 ); \
8242 0 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
8243 0 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
8244 0 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
8245 0 : scratch_12 = in60; \
8246 0 : in60 = GF_MUL( in60, 1 ); \
8247 0 : scratch_13 = in61; \
8248 0 : in61 = GF_MUL( in61, 1 ); \
8249 0 : scratch_14 = in62; \
8250 0 : in62 = GF_MUL( in62, 1 ); \
8251 0 : scratch_15 = in63; \
8252 0 : in63 = GF_MUL( in63, 1 ); \
8253 0 : FD_REEDSOL_GENERATE_IFFT( 8, 48, in48, in49, in50, in51, in52, in53, in54, in55 ); \
8254 0 : in60 = GF_ADD( GF_MUL( in52, 1 ), in60 ); \
8255 0 : in61 = GF_ADD( GF_MUL( in53, 1 ), in61 ); \
8256 0 : in62 = GF_ADD( GF_MUL( in54, 1 ), in62 ); \
8257 0 : in63 = GF_ADD( GF_MUL( in55, 1 ), in63 ); \
8258 0 : scratch_4 = in60; \
8259 0 : in60 = GF_MUL( in60, 1 ); \
8260 0 : scratch_5 = in61; \
8261 0 : in61 = GF_MUL( in61, 1 ); \
8262 0 : scratch_6 = in62; \
8263 0 : in62 = GF_MUL( in62, 1 ); \
8264 0 : scratch_7 = in63; \
8265 0 : in63 = GF_MUL( in63, 1 ); \
8266 0 : FD_REEDSOL_GENERATE_IFFT( 4, 56, in56, in57, in58, in59 ); \
8267 0 : in60 = GF_ADD( GF_MUL( in56, 1 ), in60 ); \
8268 0 : in61 = GF_ADD( GF_MUL( in57, 1 ), in61 ); \
8269 0 : in62 = GF_ADD( GF_MUL( in58, 1 ), in62 ); \
8270 0 : in63 = GF_ADD( GF_MUL( in59, 1 ), in63 ); \
8271 0 : FD_REEDSOL_GENERATE_FFT( 4, 60, in60, in61, in62, in63 ); \
8272 0 : in56 = GF_MUL( in56, 1 ); \
8273 0 : in56 = GF_ADD( GF_MUL( scratch_4, 81 ), in56 ); \
8274 0 : in57 = GF_MUL( in57, 1 ); \
8275 0 : in57 = GF_ADD( GF_MUL( scratch_5, 81 ), in57 ); \
8276 0 : in58 = GF_MUL( in58, 1 ); \
8277 0 : in58 = GF_ADD( GF_MUL( scratch_6, 81 ), in58 ); \
8278 0 : in59 = GF_MUL( in59, 1 ); \
8279 0 : in59 = GF_ADD( GF_MUL( scratch_7, 81 ), in59 ); \
8280 0 : GF_MUL22( in48, in56, 164, 165, 1, 1 ); \
8281 0 : GF_MUL22( in49, in57, 164, 165, 1, 1 ); \
8282 0 : GF_MUL22( in50, in58, 164, 165, 1, 1 ); \
8283 0 : GF_MUL22( in51, in59, 164, 165, 1, 1 ); \
8284 0 : in52 = GF_MUL( in52, 1 ); \
8285 0 : in52 = GF_ADD( GF_MUL( scratch_12, 165 ), in52 ); \
8286 0 : in53 = GF_MUL( in53, 1 ); \
8287 0 : in53 = GF_ADD( GF_MUL( scratch_13, 165 ), in53 ); \
8288 0 : in54 = GF_MUL( in54, 1 ); \
8289 0 : in54 = GF_ADD( GF_MUL( scratch_14, 165 ), in54 ); \
8290 0 : in55 = GF_MUL( in55, 1 ); \
8291 0 : in55 = GF_ADD( GF_MUL( scratch_15, 165 ), in55 ); \
8292 0 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
8293 0 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
8294 0 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
8295 0 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
8296 0 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
8297 0 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
8298 0 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
8299 0 : GF_MUL22( in39, in55, 70, 71, 1, 1 ); \
8300 0 : GF_MUL22( in40, in56, 70, 71, 1, 1 ); \
8301 0 : GF_MUL22( in41, in57, 70, 71, 1, 1 ); \
8302 0 : GF_MUL22( in42, in58, 70, 71, 1, 1 ); \
8303 0 : GF_MUL22( in43, in59, 70, 71, 1, 1 ); \
8304 0 : in44 = GF_MUL( in44, 1 ); \
8305 0 : in44 = GF_ADD( GF_MUL( scratch_28, 71 ), in44 ); \
8306 0 : in45 = GF_MUL( in45, 1 ); \
8307 0 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
8308 0 : in46 = GF_MUL( in46, 1 ); \
8309 0 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
8310 0 : in47 = GF_MUL( in47, 1 ); \
8311 0 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
8312 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
8313 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
8314 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
8315 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
8316 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
8317 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
8318 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
8319 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
8320 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
8321 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
8322 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
8323 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
8324 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
8325 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
8326 0 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
8327 0 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
8328 0 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
8329 0 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
8330 0 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
8331 0 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
8332 0 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
8333 0 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
8334 0 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
8335 0 : GF_MUL22( in23, in55, 1, 0, 1, 1 ); \
8336 0 : GF_MUL22( in24, in56, 1, 0, 1, 1 ); \
8337 0 : GF_MUL22( in25, in57, 1, 0, 1, 1 ); \
8338 0 : GF_MUL22( in26, in58, 1, 0, 1, 1 ); \
8339 0 : GF_MUL22( in27, in59, 1, 0, 1, 1 ); \
8340 0 : in28 = GF_MUL( in28, 1 ); \
8341 0 : in28 = GF_ADD( GF_MUL( scratch_60, 0 ), in28 ); \
8342 0 : in29 = GF_MUL( in29, 1 ); \
8343 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
8344 0 : in30 = GF_MUL( in30, 1 ); \
8345 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
8346 0 : in31 = GF_MUL( in31, 1 ); \
8347 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
8348 0 : } while( 0 )
8349 :
8350 : void fd_reedsol_ppt_64_61( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
8351 : #define FD_REEDSOL_PPT_IMPL_64_61( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
8352 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
8353 0 : do { \
8354 0 : gf_t scratch_13, scratch_14, scratch_15, scratch_2, scratch_29, scratch_30, scratch_31, scratch_5, scratch_6, scratch_61, scratch_62, scratch_63, scratch_7; \
8355 0 : scratch_61 = in61; \
8356 0 : in61 = GF_MUL( in61, 1 ); \
8357 0 : scratch_62 = in62; \
8358 0 : in62 = GF_MUL( in62, 1 ); \
8359 0 : scratch_63 = in63; \
8360 0 : in63 = GF_MUL( in63, 1 ); \
8361 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
8362 0 : in61 = GF_ADD( GF_MUL( in29, 1 ), in61 ); \
8363 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
8364 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
8365 0 : scratch_29 = in61; \
8366 0 : in61 = GF_MUL( in61, 1 ); \
8367 0 : scratch_30 = in62; \
8368 0 : in62 = GF_MUL( in62, 1 ); \
8369 0 : scratch_31 = in63; \
8370 0 : in63 = GF_MUL( in63, 1 ); \
8371 0 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
8372 0 : in61 = GF_ADD( GF_MUL( in45, 1 ), in61 ); \
8373 0 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
8374 0 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
8375 0 : scratch_13 = in61; \
8376 0 : in61 = GF_MUL( in61, 1 ); \
8377 0 : scratch_14 = in62; \
8378 0 : in62 = GF_MUL( in62, 1 ); \
8379 0 : scratch_15 = in63; \
8380 0 : in63 = GF_MUL( in63, 1 ); \
8381 0 : FD_REEDSOL_GENERATE_IFFT( 8, 48, in48, in49, in50, in51, in52, in53, in54, in55 ); \
8382 0 : in61 = GF_ADD( GF_MUL( in53, 1 ), in61 ); \
8383 0 : in62 = GF_ADD( GF_MUL( in54, 1 ), in62 ); \
8384 0 : in63 = GF_ADD( GF_MUL( in55, 1 ), in63 ); \
8385 0 : scratch_5 = in61; \
8386 0 : in61 = GF_MUL( in61, 1 ); \
8387 0 : scratch_6 = in62; \
8388 0 : in62 = GF_MUL( in62, 1 ); \
8389 0 : scratch_7 = in63; \
8390 0 : in63 = GF_MUL( in63, 1 ); \
8391 0 : FD_REEDSOL_GENERATE_IFFT( 4, 56, in56, in57, in58, in59 ); \
8392 0 : in61 = GF_ADD( GF_MUL( in57, 1 ), in61 ); \
8393 0 : in62 = GF_ADD( GF_MUL( in58, 1 ), in62 ); \
8394 0 : in63 = GF_ADD( GF_MUL( in59, 1 ), in63 ); \
8395 0 : scratch_2 = in62; \
8396 0 : in62 = GF_MUL( in62, 1 ); \
8397 0 : GF_MUL22( in61, in63, 1, 143, 1, 142 ); \
8398 0 : GF_MUL22( in60, in61, 1, 60, 1, 1 ); \
8399 0 : in62 = GF_ADD( GF_MUL( in60, 1 ), in62 ); \
8400 0 : GF_MUL22( in62, in63, 1, 62, 1, 63 ); \
8401 0 : in60 = GF_MUL( in60, 1 ); \
8402 0 : in60 = GF_ADD( GF_MUL( scratch_2, 143 ), in60 ); \
8403 0 : GF_MUL22( in56, in60, 80, 81, 1, 1 ); \
8404 0 : in57 = GF_MUL( in57, 1 ); \
8405 0 : in57 = GF_ADD( GF_MUL( scratch_5, 81 ), in57 ); \
8406 0 : in58 = GF_MUL( in58, 1 ); \
8407 0 : in58 = GF_ADD( GF_MUL( scratch_6, 81 ), in58 ); \
8408 0 : in59 = GF_MUL( in59, 1 ); \
8409 0 : in59 = GF_ADD( GF_MUL( scratch_7, 81 ), in59 ); \
8410 0 : GF_MUL22( in48, in56, 164, 165, 1, 1 ); \
8411 0 : GF_MUL22( in49, in57, 164, 165, 1, 1 ); \
8412 0 : GF_MUL22( in50, in58, 164, 165, 1, 1 ); \
8413 0 : GF_MUL22( in51, in59, 164, 165, 1, 1 ); \
8414 0 : GF_MUL22( in52, in60, 164, 165, 1, 1 ); \
8415 0 : in53 = GF_MUL( in53, 1 ); \
8416 0 : in53 = GF_ADD( GF_MUL( scratch_13, 165 ), in53 ); \
8417 0 : in54 = GF_MUL( in54, 1 ); \
8418 0 : in54 = GF_ADD( GF_MUL( scratch_14, 165 ), in54 ); \
8419 0 : in55 = GF_MUL( in55, 1 ); \
8420 0 : in55 = GF_ADD( GF_MUL( scratch_15, 165 ), in55 ); \
8421 0 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
8422 0 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
8423 0 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
8424 0 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
8425 0 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
8426 0 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
8427 0 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
8428 0 : GF_MUL22( in39, in55, 70, 71, 1, 1 ); \
8429 0 : GF_MUL22( in40, in56, 70, 71, 1, 1 ); \
8430 0 : GF_MUL22( in41, in57, 70, 71, 1, 1 ); \
8431 0 : GF_MUL22( in42, in58, 70, 71, 1, 1 ); \
8432 0 : GF_MUL22( in43, in59, 70, 71, 1, 1 ); \
8433 0 : GF_MUL22( in44, in60, 70, 71, 1, 1 ); \
8434 0 : in45 = GF_MUL( in45, 1 ); \
8435 0 : in45 = GF_ADD( GF_MUL( scratch_29, 71 ), in45 ); \
8436 0 : in46 = GF_MUL( in46, 1 ); \
8437 0 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
8438 0 : in47 = GF_MUL( in47, 1 ); \
8439 0 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
8440 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
8441 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
8442 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
8443 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
8444 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
8445 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
8446 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
8447 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
8448 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
8449 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
8450 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
8451 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
8452 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
8453 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
8454 0 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
8455 0 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
8456 0 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
8457 0 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
8458 0 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
8459 0 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
8460 0 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
8461 0 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
8462 0 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
8463 0 : GF_MUL22( in23, in55, 1, 0, 1, 1 ); \
8464 0 : GF_MUL22( in24, in56, 1, 0, 1, 1 ); \
8465 0 : GF_MUL22( in25, in57, 1, 0, 1, 1 ); \
8466 0 : GF_MUL22( in26, in58, 1, 0, 1, 1 ); \
8467 0 : GF_MUL22( in27, in59, 1, 0, 1, 1 ); \
8468 0 : GF_MUL22( in28, in60, 1, 0, 1, 1 ); \
8469 0 : in29 = GF_MUL( in29, 1 ); \
8470 0 : in29 = GF_ADD( GF_MUL( scratch_61, 0 ), in29 ); \
8471 0 : in30 = GF_MUL( in30, 1 ); \
8472 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
8473 0 : in31 = GF_MUL( in31, 1 ); \
8474 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
8475 0 : } while( 0 )
8476 :
8477 : void fd_reedsol_ppt_64_62( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
8478 : #define FD_REEDSOL_PPT_IMPL_64_62( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
8479 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
8480 0 : do { \
8481 0 : gf_t scratch_14, scratch_15, scratch_2, scratch_3, scratch_30, scratch_31, scratch_6, scratch_62, scratch_63, scratch_7; \
8482 0 : scratch_62 = in62; \
8483 0 : in62 = GF_MUL( in62, 1 ); \
8484 0 : scratch_63 = in63; \
8485 0 : in63 = GF_MUL( in63, 1 ); \
8486 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
8487 0 : in62 = GF_ADD( GF_MUL( in30, 1 ), in62 ); \
8488 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
8489 0 : scratch_30 = in62; \
8490 0 : in62 = GF_MUL( in62, 1 ); \
8491 0 : scratch_31 = in63; \
8492 0 : in63 = GF_MUL( in63, 1 ); \
8493 0 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
8494 0 : in62 = GF_ADD( GF_MUL( in46, 1 ), in62 ); \
8495 0 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
8496 0 : scratch_14 = in62; \
8497 0 : in62 = GF_MUL( in62, 1 ); \
8498 0 : scratch_15 = in63; \
8499 0 : in63 = GF_MUL( in63, 1 ); \
8500 0 : FD_REEDSOL_GENERATE_IFFT( 8, 48, in48, in49, in50, in51, in52, in53, in54, in55 ); \
8501 0 : in62 = GF_ADD( GF_MUL( in54, 1 ), in62 ); \
8502 0 : in63 = GF_ADD( GF_MUL( in55, 1 ), in63 ); \
8503 0 : scratch_6 = in62; \
8504 0 : in62 = GF_MUL( in62, 1 ); \
8505 0 : scratch_7 = in63; \
8506 0 : in63 = GF_MUL( in63, 1 ); \
8507 0 : FD_REEDSOL_GENERATE_IFFT( 4, 56, in56, in57, in58, in59 ); \
8508 0 : in62 = GF_ADD( GF_MUL( in58, 1 ), in62 ); \
8509 0 : in63 = GF_ADD( GF_MUL( in59, 1 ), in63 ); \
8510 0 : scratch_2 = in62; \
8511 0 : in62 = GF_MUL( in62, 1 ); \
8512 0 : scratch_3 = in63; \
8513 0 : in63 = GF_MUL( in63, 1 ); \
8514 0 : GF_MUL22( in60, in61, 61, 60, 1, 1 ); \
8515 0 : in62 = GF_ADD( GF_MUL( in60, 1 ), in62 ); \
8516 0 : in63 = GF_ADD( GF_MUL( in61, 1 ), in63 ); \
8517 0 : GF_MUL22( in62, in63, 1, 62, 1, 63 ); \
8518 0 : in60 = GF_MUL( in60, 1 ); \
8519 0 : in60 = GF_ADD( GF_MUL( scratch_2, 143 ), in60 ); \
8520 0 : in61 = GF_MUL( in61, 1 ); \
8521 0 : in61 = GF_ADD( GF_MUL( scratch_3, 143 ), in61 ); \
8522 0 : GF_MUL22( in56, in60, 80, 81, 1, 1 ); \
8523 0 : GF_MUL22( in57, in61, 80, 81, 1, 1 ); \
8524 0 : in58 = GF_MUL( in58, 1 ); \
8525 0 : in58 = GF_ADD( GF_MUL( scratch_6, 81 ), in58 ); \
8526 0 : in59 = GF_MUL( in59, 1 ); \
8527 0 : in59 = GF_ADD( GF_MUL( scratch_7, 81 ), in59 ); \
8528 0 : GF_MUL22( in48, in56, 164, 165, 1, 1 ); \
8529 0 : GF_MUL22( in49, in57, 164, 165, 1, 1 ); \
8530 0 : GF_MUL22( in50, in58, 164, 165, 1, 1 ); \
8531 0 : GF_MUL22( in51, in59, 164, 165, 1, 1 ); \
8532 0 : GF_MUL22( in52, in60, 164, 165, 1, 1 ); \
8533 0 : GF_MUL22( in53, in61, 164, 165, 1, 1 ); \
8534 0 : in54 = GF_MUL( in54, 1 ); \
8535 0 : in54 = GF_ADD( GF_MUL( scratch_14, 165 ), in54 ); \
8536 0 : in55 = GF_MUL( in55, 1 ); \
8537 0 : in55 = GF_ADD( GF_MUL( scratch_15, 165 ), in55 ); \
8538 0 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
8539 0 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
8540 0 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
8541 0 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
8542 0 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
8543 0 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
8544 0 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
8545 0 : GF_MUL22( in39, in55, 70, 71, 1, 1 ); \
8546 0 : GF_MUL22( in40, in56, 70, 71, 1, 1 ); \
8547 0 : GF_MUL22( in41, in57, 70, 71, 1, 1 ); \
8548 0 : GF_MUL22( in42, in58, 70, 71, 1, 1 ); \
8549 0 : GF_MUL22( in43, in59, 70, 71, 1, 1 ); \
8550 0 : GF_MUL22( in44, in60, 70, 71, 1, 1 ); \
8551 0 : GF_MUL22( in45, in61, 70, 71, 1, 1 ); \
8552 0 : in46 = GF_MUL( in46, 1 ); \
8553 0 : in46 = GF_ADD( GF_MUL( scratch_30, 71 ), in46 ); \
8554 0 : in47 = GF_MUL( in47, 1 ); \
8555 0 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
8556 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
8557 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
8558 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
8559 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
8560 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
8561 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
8562 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
8563 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
8564 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
8565 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
8566 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
8567 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
8568 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
8569 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
8570 0 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
8571 0 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
8572 0 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
8573 0 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
8574 0 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
8575 0 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
8576 0 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
8577 0 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
8578 0 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
8579 0 : GF_MUL22( in23, in55, 1, 0, 1, 1 ); \
8580 0 : GF_MUL22( in24, in56, 1, 0, 1, 1 ); \
8581 0 : GF_MUL22( in25, in57, 1, 0, 1, 1 ); \
8582 0 : GF_MUL22( in26, in58, 1, 0, 1, 1 ); \
8583 0 : GF_MUL22( in27, in59, 1, 0, 1, 1 ); \
8584 0 : GF_MUL22( in28, in60, 1, 0, 1, 1 ); \
8585 0 : GF_MUL22( in29, in61, 1, 0, 1, 1 ); \
8586 0 : in30 = GF_MUL( in30, 1 ); \
8587 0 : in30 = GF_ADD( GF_MUL( scratch_62, 0 ), in30 ); \
8588 0 : in31 = GF_MUL( in31, 1 ); \
8589 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
8590 0 : } while( 0 )
8591 :
8592 : void fd_reedsol_ppt_64_63( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
8593 : #define FD_REEDSOL_PPT_IMPL_64_63( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33 , \
8594 : in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63) \
8595 0 : do { \
8596 0 : gf_t scratch_15, scratch_3, scratch_31, scratch_63, scratch_7; \
8597 0 : scratch_63 = in63; \
8598 0 : in63 = GF_MUL( in63, 1 ); \
8599 0 : FD_REEDSOL_GENERATE_IFFT( 32, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31 ); \
8600 0 : in63 = GF_ADD( GF_MUL( in31, 1 ), in63 ); \
8601 0 : scratch_31 = in63; \
8602 0 : in63 = GF_MUL( in63, 1 ); \
8603 0 : FD_REEDSOL_GENERATE_IFFT( 16, 32, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47 ); \
8604 0 : in63 = GF_ADD( GF_MUL( in47, 1 ), in63 ); \
8605 0 : scratch_15 = in63; \
8606 0 : in63 = GF_MUL( in63, 1 ); \
8607 0 : FD_REEDSOL_GENERATE_IFFT( 8, 48, in48, in49, in50, in51, in52, in53, in54, in55 ); \
8608 0 : in63 = GF_ADD( GF_MUL( in55, 1 ), in63 ); \
8609 0 : scratch_7 = in63; \
8610 0 : in63 = GF_MUL( in63, 1 ); \
8611 0 : FD_REEDSOL_GENERATE_IFFT( 4, 56, in56, in57, in58, in59 ); \
8612 0 : in63 = GF_ADD( GF_MUL( in59, 1 ), in63 ); \
8613 0 : scratch_3 = in63; \
8614 0 : in63 = GF_MUL( in63, 1 ); \
8615 0 : GF_MUL22( in60, in61, 61, 60, 1, 1 ); \
8616 0 : in63 = GF_ADD( GF_MUL( in61, 1 ), in63 ); \
8617 0 : GF_MUL22( in62, in63, 1, 62, 1, 1 ); \
8618 0 : GF_MUL22( in60, in62, 142, 143, 1, 1 ); \
8619 0 : in61 = GF_MUL( in61, 1 ); \
8620 0 : in61 = GF_ADD( GF_MUL( scratch_3, 143 ), in61 ); \
8621 0 : GF_MUL22( in56, in60, 80, 81, 1, 1 ); \
8622 0 : GF_MUL22( in57, in61, 80, 81, 1, 1 ); \
8623 0 : GF_MUL22( in58, in62, 80, 81, 1, 1 ); \
8624 0 : in59 = GF_MUL( in59, 1 ); \
8625 0 : in59 = GF_ADD( GF_MUL( scratch_7, 81 ), in59 ); \
8626 0 : GF_MUL22( in48, in56, 164, 165, 1, 1 ); \
8627 0 : GF_MUL22( in49, in57, 164, 165, 1, 1 ); \
8628 0 : GF_MUL22( in50, in58, 164, 165, 1, 1 ); \
8629 0 : GF_MUL22( in51, in59, 164, 165, 1, 1 ); \
8630 0 : GF_MUL22( in52, in60, 164, 165, 1, 1 ); \
8631 0 : GF_MUL22( in53, in61, 164, 165, 1, 1 ); \
8632 0 : GF_MUL22( in54, in62, 164, 165, 1, 1 ); \
8633 0 : in55 = GF_MUL( in55, 1 ); \
8634 0 : in55 = GF_ADD( GF_MUL( scratch_15, 165 ), in55 ); \
8635 0 : GF_MUL22( in32, in48, 70, 71, 1, 1 ); \
8636 0 : GF_MUL22( in33, in49, 70, 71, 1, 1 ); \
8637 0 : GF_MUL22( in34, in50, 70, 71, 1, 1 ); \
8638 0 : GF_MUL22( in35, in51, 70, 71, 1, 1 ); \
8639 0 : GF_MUL22( in36, in52, 70, 71, 1, 1 ); \
8640 0 : GF_MUL22( in37, in53, 70, 71, 1, 1 ); \
8641 0 : GF_MUL22( in38, in54, 70, 71, 1, 1 ); \
8642 0 : GF_MUL22( in39, in55, 70, 71, 1, 1 ); \
8643 0 : GF_MUL22( in40, in56, 70, 71, 1, 1 ); \
8644 0 : GF_MUL22( in41, in57, 70, 71, 1, 1 ); \
8645 0 : GF_MUL22( in42, in58, 70, 71, 1, 1 ); \
8646 0 : GF_MUL22( in43, in59, 70, 71, 1, 1 ); \
8647 0 : GF_MUL22( in44, in60, 70, 71, 1, 1 ); \
8648 0 : GF_MUL22( in45, in61, 70, 71, 1, 1 ); \
8649 0 : GF_MUL22( in46, in62, 70, 71, 1, 1 ); \
8650 0 : in47 = GF_MUL( in47, 1 ); \
8651 0 : in47 = GF_ADD( GF_MUL( scratch_31, 71 ), in47 ); \
8652 0 : GF_MUL22( in00, in32, 1, 0, 1, 1 ); \
8653 0 : GF_MUL22( in01, in33, 1, 0, 1, 1 ); \
8654 0 : GF_MUL22( in02, in34, 1, 0, 1, 1 ); \
8655 0 : GF_MUL22( in03, in35, 1, 0, 1, 1 ); \
8656 0 : GF_MUL22( in04, in36, 1, 0, 1, 1 ); \
8657 0 : GF_MUL22( in05, in37, 1, 0, 1, 1 ); \
8658 0 : GF_MUL22( in06, in38, 1, 0, 1, 1 ); \
8659 0 : GF_MUL22( in07, in39, 1, 0, 1, 1 ); \
8660 0 : GF_MUL22( in08, in40, 1, 0, 1, 1 ); \
8661 0 : GF_MUL22( in09, in41, 1, 0, 1, 1 ); \
8662 0 : GF_MUL22( in10, in42, 1, 0, 1, 1 ); \
8663 0 : GF_MUL22( in11, in43, 1, 0, 1, 1 ); \
8664 0 : GF_MUL22( in12, in44, 1, 0, 1, 1 ); \
8665 0 : GF_MUL22( in13, in45, 1, 0, 1, 1 ); \
8666 0 : GF_MUL22( in14, in46, 1, 0, 1, 1 ); \
8667 0 : GF_MUL22( in15, in47, 1, 0, 1, 1 ); \
8668 0 : GF_MUL22( in16, in48, 1, 0, 1, 1 ); \
8669 0 : GF_MUL22( in17, in49, 1, 0, 1, 1 ); \
8670 0 : GF_MUL22( in18, in50, 1, 0, 1, 1 ); \
8671 0 : GF_MUL22( in19, in51, 1, 0, 1, 1 ); \
8672 0 : GF_MUL22( in20, in52, 1, 0, 1, 1 ); \
8673 0 : GF_MUL22( in21, in53, 1, 0, 1, 1 ); \
8674 0 : GF_MUL22( in22, in54, 1, 0, 1, 1 ); \
8675 0 : GF_MUL22( in23, in55, 1, 0, 1, 1 ); \
8676 0 : GF_MUL22( in24, in56, 1, 0, 1, 1 ); \
8677 0 : GF_MUL22( in25, in57, 1, 0, 1, 1 ); \
8678 0 : GF_MUL22( in26, in58, 1, 0, 1, 1 ); \
8679 0 : GF_MUL22( in27, in59, 1, 0, 1, 1 ); \
8680 0 : GF_MUL22( in28, in60, 1, 0, 1, 1 ); \
8681 0 : GF_MUL22( in29, in61, 1, 0, 1, 1 ); \
8682 0 : GF_MUL22( in30, in62, 1, 0, 1, 1 ); \
8683 0 : in31 = GF_MUL( in31, 1 ); \
8684 0 : in31 = GF_ADD( GF_MUL( scratch_63, 0 ), in31 ); \
8685 0 : } while( 0 )
8686 :
8687 : void fd_reedsol_ppt_128_65( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
8688 : #define FD_REEDSOL_PPT_IMPL_128_65( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63, in64, in65 , \
8689 : in66, in67, in68, in69, in70, in71, in72, in73, in74, in75, in76, in77, in78, in79, in80, in81, in82, in83, in84, in85, in86, in87, in88, in89, in90, in91, in92, in93, in94, in95, in96, in97, in98, in99, in100, in101, in102, in103, in104, in105, in106, in107, in108, in109, in110, in111, in112, in113, in114, in115, in116, in117, in118, in119, in120, in121, in122, in123, in124, in125, in126, in127) \
8690 0 : do { \
8691 0 : gf_t scratch_100, scratch_101, scratch_102, scratch_103, scratch_104, scratch_105, scratch_106, scratch_107, scratch_108, scratch_109, scratch_110, scratch_111, scratch_112, scratch_113, scratch_114, scratch_115; \
8692 0 : gf_t scratch_116, scratch_117, scratch_118, scratch_119, scratch_120, scratch_121, scratch_122, scratch_123, scratch_124, scratch_125, scratch_126, scratch_127, scratch_16, scratch_2, scratch_32, scratch_4; \
8693 0 : gf_t scratch_65, scratch_66, scratch_67, scratch_68, scratch_69, scratch_70, scratch_71, scratch_72, scratch_73, scratch_74, scratch_75, scratch_76, scratch_77, scratch_78, scratch_79, scratch_8; \
8694 0 : gf_t scratch_80, scratch_81, scratch_82, scratch_83, scratch_84, scratch_85, scratch_86, scratch_87, scratch_88, scratch_89, scratch_90, scratch_91, scratch_92, scratch_93, scratch_94, scratch_95; \
8695 0 : gf_t scratch_96, scratch_97, scratch_98, scratch_99; \
8696 0 : scratch_65 = in65; \
8697 0 : in65 = GF_MUL( in65, 1 ); \
8698 0 : scratch_66 = in66; \
8699 0 : in66 = GF_MUL( in66, 1 ); \
8700 0 : scratch_67 = in67; \
8701 0 : in67 = GF_MUL( in67, 1 ); \
8702 0 : scratch_68 = in68; \
8703 0 : in68 = GF_MUL( in68, 1 ); \
8704 0 : scratch_69 = in69; \
8705 0 : in69 = GF_MUL( in69, 1 ); \
8706 0 : scratch_70 = in70; \
8707 0 : in70 = GF_MUL( in70, 1 ); \
8708 0 : scratch_71 = in71; \
8709 0 : in71 = GF_MUL( in71, 1 ); \
8710 0 : scratch_72 = in72; \
8711 0 : in72 = GF_MUL( in72, 1 ); \
8712 0 : scratch_73 = in73; \
8713 0 : in73 = GF_MUL( in73, 1 ); \
8714 0 : scratch_74 = in74; \
8715 0 : in74 = GF_MUL( in74, 1 ); \
8716 0 : scratch_75 = in75; \
8717 0 : in75 = GF_MUL( in75, 1 ); \
8718 0 : scratch_76 = in76; \
8719 0 : in76 = GF_MUL( in76, 1 ); \
8720 0 : scratch_77 = in77; \
8721 0 : in77 = GF_MUL( in77, 1 ); \
8722 0 : scratch_78 = in78; \
8723 0 : in78 = GF_MUL( in78, 1 ); \
8724 0 : scratch_79 = in79; \
8725 0 : in79 = GF_MUL( in79, 1 ); \
8726 0 : scratch_80 = in80; \
8727 0 : in80 = GF_MUL( in80, 1 ); \
8728 0 : scratch_81 = in81; \
8729 0 : in81 = GF_MUL( in81, 1 ); \
8730 0 : scratch_82 = in82; \
8731 0 : in82 = GF_MUL( in82, 1 ); \
8732 0 : scratch_83 = in83; \
8733 0 : in83 = GF_MUL( in83, 1 ); \
8734 0 : scratch_84 = in84; \
8735 0 : in84 = GF_MUL( in84, 1 ); \
8736 0 : scratch_85 = in85; \
8737 0 : in85 = GF_MUL( in85, 1 ); \
8738 0 : scratch_86 = in86; \
8739 0 : in86 = GF_MUL( in86, 1 ); \
8740 0 : scratch_87 = in87; \
8741 0 : in87 = GF_MUL( in87, 1 ); \
8742 0 : scratch_88 = in88; \
8743 0 : in88 = GF_MUL( in88, 1 ); \
8744 0 : scratch_89 = in89; \
8745 0 : in89 = GF_MUL( in89, 1 ); \
8746 0 : scratch_90 = in90; \
8747 0 : in90 = GF_MUL( in90, 1 ); \
8748 0 : scratch_91 = in91; \
8749 0 : in91 = GF_MUL( in91, 1 ); \
8750 0 : scratch_92 = in92; \
8751 0 : in92 = GF_MUL( in92, 1 ); \
8752 0 : scratch_93 = in93; \
8753 0 : in93 = GF_MUL( in93, 1 ); \
8754 0 : scratch_94 = in94; \
8755 0 : in94 = GF_MUL( in94, 1 ); \
8756 0 : scratch_95 = in95; \
8757 0 : in95 = GF_MUL( in95, 1 ); \
8758 0 : scratch_96 = in96; \
8759 0 : in96 = GF_MUL( in96, 1 ); \
8760 0 : scratch_97 = in97; \
8761 0 : in97 = GF_MUL( in97, 1 ); \
8762 0 : scratch_98 = in98; \
8763 0 : in98 = GF_MUL( in98, 1 ); \
8764 0 : scratch_99 = in99; \
8765 0 : in99 = GF_MUL( in99, 1 ); \
8766 0 : scratch_100 = in100; \
8767 0 : in100 = GF_MUL( in100, 1 ); \
8768 0 : scratch_101 = in101; \
8769 0 : in101 = GF_MUL( in101, 1 ); \
8770 0 : scratch_102 = in102; \
8771 0 : in102 = GF_MUL( in102, 1 ); \
8772 0 : scratch_103 = in103; \
8773 0 : in103 = GF_MUL( in103, 1 ); \
8774 0 : scratch_104 = in104; \
8775 0 : in104 = GF_MUL( in104, 1 ); \
8776 0 : scratch_105 = in105; \
8777 0 : in105 = GF_MUL( in105, 1 ); \
8778 0 : scratch_106 = in106; \
8779 0 : in106 = GF_MUL( in106, 1 ); \
8780 0 : scratch_107 = in107; \
8781 0 : in107 = GF_MUL( in107, 1 ); \
8782 0 : scratch_108 = in108; \
8783 0 : in108 = GF_MUL( in108, 1 ); \
8784 0 : scratch_109 = in109; \
8785 0 : in109 = GF_MUL( in109, 1 ); \
8786 0 : scratch_110 = in110; \
8787 0 : in110 = GF_MUL( in110, 1 ); \
8788 0 : scratch_111 = in111; \
8789 0 : in111 = GF_MUL( in111, 1 ); \
8790 0 : scratch_112 = in112; \
8791 0 : in112 = GF_MUL( in112, 1 ); \
8792 0 : scratch_113 = in113; \
8793 0 : in113 = GF_MUL( in113, 1 ); \
8794 0 : scratch_114 = in114; \
8795 0 : in114 = GF_MUL( in114, 1 ); \
8796 0 : scratch_115 = in115; \
8797 0 : in115 = GF_MUL( in115, 1 ); \
8798 0 : scratch_116 = in116; \
8799 0 : in116 = GF_MUL( in116, 1 ); \
8800 0 : scratch_117 = in117; \
8801 0 : in117 = GF_MUL( in117, 1 ); \
8802 0 : scratch_118 = in118; \
8803 0 : in118 = GF_MUL( in118, 1 ); \
8804 0 : scratch_119 = in119; \
8805 0 : in119 = GF_MUL( in119, 1 ); \
8806 0 : scratch_120 = in120; \
8807 0 : in120 = GF_MUL( in120, 1 ); \
8808 0 : scratch_121 = in121; \
8809 0 : in121 = GF_MUL( in121, 1 ); \
8810 0 : scratch_122 = in122; \
8811 0 : in122 = GF_MUL( in122, 1 ); \
8812 0 : scratch_123 = in123; \
8813 0 : in123 = GF_MUL( in123, 1 ); \
8814 0 : scratch_124 = in124; \
8815 0 : in124 = GF_MUL( in124, 1 ); \
8816 0 : scratch_125 = in125; \
8817 0 : in125 = GF_MUL( in125, 1 ); \
8818 0 : scratch_126 = in126; \
8819 0 : in126 = GF_MUL( in126, 1 ); \
8820 0 : scratch_127 = in127; \
8821 0 : in127 = GF_MUL( in127, 1 ); \
8822 0 : FD_REEDSOL_GENERATE_IFFT( 64, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
8823 0 : in65 = GF_ADD( GF_MUL( in01, 1 ), in65 ); \
8824 0 : in66 = GF_ADD( GF_MUL( in02, 1 ), in66 ); \
8825 0 : in67 = GF_ADD( GF_MUL( in03, 1 ), in67 ); \
8826 0 : in68 = GF_ADD( GF_MUL( in04, 1 ), in68 ); \
8827 0 : in69 = GF_ADD( GF_MUL( in05, 1 ), in69 ); \
8828 0 : in70 = GF_ADD( GF_MUL( in06, 1 ), in70 ); \
8829 0 : in71 = GF_ADD( GF_MUL( in07, 1 ), in71 ); \
8830 0 : in72 = GF_ADD( GF_MUL( in08, 1 ), in72 ); \
8831 0 : in73 = GF_ADD( GF_MUL( in09, 1 ), in73 ); \
8832 0 : in74 = GF_ADD( GF_MUL( in10, 1 ), in74 ); \
8833 0 : in75 = GF_ADD( GF_MUL( in11, 1 ), in75 ); \
8834 0 : in76 = GF_ADD( GF_MUL( in12, 1 ), in76 ); \
8835 0 : in77 = GF_ADD( GF_MUL( in13, 1 ), in77 ); \
8836 0 : in78 = GF_ADD( GF_MUL( in14, 1 ), in78 ); \
8837 0 : in79 = GF_ADD( GF_MUL( in15, 1 ), in79 ); \
8838 0 : in80 = GF_ADD( GF_MUL( in16, 1 ), in80 ); \
8839 0 : in81 = GF_ADD( GF_MUL( in17, 1 ), in81 ); \
8840 0 : in82 = GF_ADD( GF_MUL( in18, 1 ), in82 ); \
8841 0 : in83 = GF_ADD( GF_MUL( in19, 1 ), in83 ); \
8842 0 : in84 = GF_ADD( GF_MUL( in20, 1 ), in84 ); \
8843 0 : in85 = GF_ADD( GF_MUL( in21, 1 ), in85 ); \
8844 0 : in86 = GF_ADD( GF_MUL( in22, 1 ), in86 ); \
8845 0 : in87 = GF_ADD( GF_MUL( in23, 1 ), in87 ); \
8846 0 : in88 = GF_ADD( GF_MUL( in24, 1 ), in88 ); \
8847 0 : in89 = GF_ADD( GF_MUL( in25, 1 ), in89 ); \
8848 0 : in90 = GF_ADD( GF_MUL( in26, 1 ), in90 ); \
8849 0 : in91 = GF_ADD( GF_MUL( in27, 1 ), in91 ); \
8850 0 : in92 = GF_ADD( GF_MUL( in28, 1 ), in92 ); \
8851 0 : in93 = GF_ADD( GF_MUL( in29, 1 ), in93 ); \
8852 0 : in94 = GF_ADD( GF_MUL( in30, 1 ), in94 ); \
8853 0 : in95 = GF_ADD( GF_MUL( in31, 1 ), in95 ); \
8854 0 : in96 = GF_ADD( GF_MUL( in32, 1 ), in96 ); \
8855 0 : in97 = GF_ADD( GF_MUL( in33, 1 ), in97 ); \
8856 0 : in98 = GF_ADD( GF_MUL( in34, 1 ), in98 ); \
8857 0 : in99 = GF_ADD( GF_MUL( in35, 1 ), in99 ); \
8858 0 : in100 = GF_ADD( GF_MUL( in36, 1 ), in100 ); \
8859 0 : in101 = GF_ADD( GF_MUL( in37, 1 ), in101 ); \
8860 0 : in102 = GF_ADD( GF_MUL( in38, 1 ), in102 ); \
8861 0 : in103 = GF_ADD( GF_MUL( in39, 1 ), in103 ); \
8862 0 : in104 = GF_ADD( GF_MUL( in40, 1 ), in104 ); \
8863 0 : in105 = GF_ADD( GF_MUL( in41, 1 ), in105 ); \
8864 0 : in106 = GF_ADD( GF_MUL( in42, 1 ), in106 ); \
8865 0 : in107 = GF_ADD( GF_MUL( in43, 1 ), in107 ); \
8866 0 : in108 = GF_ADD( GF_MUL( in44, 1 ), in108 ); \
8867 0 : in109 = GF_ADD( GF_MUL( in45, 1 ), in109 ); \
8868 0 : in110 = GF_ADD( GF_MUL( in46, 1 ), in110 ); \
8869 0 : in111 = GF_ADD( GF_MUL( in47, 1 ), in111 ); \
8870 0 : in112 = GF_ADD( GF_MUL( in48, 1 ), in112 ); \
8871 0 : in113 = GF_ADD( GF_MUL( in49, 1 ), in113 ); \
8872 0 : in114 = GF_ADD( GF_MUL( in50, 1 ), in114 ); \
8873 0 : in115 = GF_ADD( GF_MUL( in51, 1 ), in115 ); \
8874 0 : in116 = GF_ADD( GF_MUL( in52, 1 ), in116 ); \
8875 0 : in117 = GF_ADD( GF_MUL( in53, 1 ), in117 ); \
8876 0 : in118 = GF_ADD( GF_MUL( in54, 1 ), in118 ); \
8877 0 : in119 = GF_ADD( GF_MUL( in55, 1 ), in119 ); \
8878 0 : in120 = GF_ADD( GF_MUL( in56, 1 ), in120 ); \
8879 0 : in121 = GF_ADD( GF_MUL( in57, 1 ), in121 ); \
8880 0 : in122 = GF_ADD( GF_MUL( in58, 1 ), in122 ); \
8881 0 : in123 = GF_ADD( GF_MUL( in59, 1 ), in123 ); \
8882 0 : in124 = GF_ADD( GF_MUL( in60, 1 ), in124 ); \
8883 0 : in125 = GF_ADD( GF_MUL( in61, 1 ), in125 ); \
8884 0 : in126 = GF_ADD( GF_MUL( in62, 1 ), in126 ); \
8885 0 : in127 = GF_ADD( GF_MUL( in63, 1 ), in127 ); \
8886 0 : scratch_32 = in96; \
8887 0 : in96 = GF_MUL( in96, 1 ); \
8888 0 : GF_MUL22( in65, in97, 1, 218, 1, 219 ); \
8889 0 : GF_MUL22( in66, in98, 1, 218, 1, 219 ); \
8890 0 : GF_MUL22( in67, in99, 1, 218, 1, 219 ); \
8891 0 : GF_MUL22( in68, in100, 1, 218, 1, 219 ); \
8892 0 : GF_MUL22( in69, in101, 1, 218, 1, 219 ); \
8893 0 : GF_MUL22( in70, in102, 1, 218, 1, 219 ); \
8894 0 : GF_MUL22( in71, in103, 1, 218, 1, 219 ); \
8895 0 : GF_MUL22( in72, in104, 1, 218, 1, 219 ); \
8896 0 : GF_MUL22( in73, in105, 1, 218, 1, 219 ); \
8897 0 : GF_MUL22( in74, in106, 1, 218, 1, 219 ); \
8898 0 : GF_MUL22( in75, in107, 1, 218, 1, 219 ); \
8899 0 : GF_MUL22( in76, in108, 1, 218, 1, 219 ); \
8900 0 : GF_MUL22( in77, in109, 1, 218, 1, 219 ); \
8901 0 : GF_MUL22( in78, in110, 1, 218, 1, 219 ); \
8902 0 : GF_MUL22( in79, in111, 1, 218, 1, 219 ); \
8903 0 : GF_MUL22( in80, in112, 1, 218, 1, 219 ); \
8904 0 : GF_MUL22( in81, in113, 1, 218, 1, 219 ); \
8905 0 : GF_MUL22( in82, in114, 1, 218, 1, 219 ); \
8906 0 : GF_MUL22( in83, in115, 1, 218, 1, 219 ); \
8907 0 : GF_MUL22( in84, in116, 1, 218, 1, 219 ); \
8908 0 : GF_MUL22( in85, in117, 1, 218, 1, 219 ); \
8909 0 : GF_MUL22( in86, in118, 1, 218, 1, 219 ); \
8910 0 : GF_MUL22( in87, in119, 1, 218, 1, 219 ); \
8911 0 : GF_MUL22( in88, in120, 1, 218, 1, 219 ); \
8912 0 : GF_MUL22( in89, in121, 1, 218, 1, 219 ); \
8913 0 : GF_MUL22( in90, in122, 1, 218, 1, 219 ); \
8914 0 : GF_MUL22( in91, in123, 1, 218, 1, 219 ); \
8915 0 : GF_MUL22( in92, in124, 1, 218, 1, 219 ); \
8916 0 : GF_MUL22( in93, in125, 1, 218, 1, 219 ); \
8917 0 : GF_MUL22( in94, in126, 1, 218, 1, 219 ); \
8918 0 : GF_MUL22( in95, in127, 1, 218, 1, 219 ); \
8919 0 : scratch_16 = in80; \
8920 0 : in80 = GF_MUL( in80, 1 ); \
8921 0 : GF_MUL22( in65, in81, 1, 189, 1, 188 ); \
8922 0 : GF_MUL22( in66, in82, 1, 189, 1, 188 ); \
8923 0 : GF_MUL22( in67, in83, 1, 189, 1, 188 ); \
8924 0 : GF_MUL22( in68, in84, 1, 189, 1, 188 ); \
8925 0 : GF_MUL22( in69, in85, 1, 189, 1, 188 ); \
8926 0 : GF_MUL22( in70, in86, 1, 189, 1, 188 ); \
8927 0 : GF_MUL22( in71, in87, 1, 189, 1, 188 ); \
8928 0 : GF_MUL22( in72, in88, 1, 189, 1, 188 ); \
8929 0 : GF_MUL22( in73, in89, 1, 189, 1, 188 ); \
8930 0 : GF_MUL22( in74, in90, 1, 189, 1, 188 ); \
8931 0 : GF_MUL22( in75, in91, 1, 189, 1, 188 ); \
8932 0 : GF_MUL22( in76, in92, 1, 189, 1, 188 ); \
8933 0 : GF_MUL22( in77, in93, 1, 189, 1, 188 ); \
8934 0 : GF_MUL22( in78, in94, 1, 189, 1, 188 ); \
8935 0 : GF_MUL22( in79, in95, 1, 189, 1, 188 ); \
8936 0 : scratch_8 = in72; \
8937 0 : in72 = GF_MUL( in72, 1 ); \
8938 0 : GF_MUL22( in65, in73, 1, 33, 1, 32 ); \
8939 0 : GF_MUL22( in66, in74, 1, 33, 1, 32 ); \
8940 0 : GF_MUL22( in67, in75, 1, 33, 1, 32 ); \
8941 0 : GF_MUL22( in68, in76, 1, 33, 1, 32 ); \
8942 0 : GF_MUL22( in69, in77, 1, 33, 1, 32 ); \
8943 0 : GF_MUL22( in70, in78, 1, 33, 1, 32 ); \
8944 0 : GF_MUL22( in71, in79, 1, 33, 1, 32 ); \
8945 0 : scratch_4 = in68; \
8946 0 : in68 = GF_MUL( in68, 1 ); \
8947 0 : GF_MUL22( in65, in69, 1, 183, 1, 182 ); \
8948 0 : GF_MUL22( in66, in70, 1, 183, 1, 182 ); \
8949 0 : GF_MUL22( in67, in71, 1, 183, 1, 182 ); \
8950 0 : scratch_2 = in66; \
8951 0 : in66 = GF_MUL( in66, 1 ); \
8952 0 : GF_MUL22( in65, in67, 1, 179, 1, 178 ); \
8953 0 : GF_MUL22( in64, in65, 1, 64, 1, 1 ); \
8954 0 : in66 = GF_ADD( GF_MUL( in64, 1 ), in66 ); \
8955 0 : GF_MUL22( in66, in67, 1, 66, 1, 67 ); \
8956 0 : in64 = GF_MUL( in64, 1 ); \
8957 0 : in64 = GF_ADD( GF_MUL( scratch_2, 179 ), in64 ); \
8958 0 : in68 = GF_ADD( GF_MUL( in64, 1 ), in68 ); \
8959 0 : FD_REEDSOL_GENERATE_FFT( 4, 68, in68, in69, in70, in71 ); \
8960 0 : in64 = GF_MUL( in64, 1 ); \
8961 0 : in64 = GF_ADD( GF_MUL( scratch_4, 183 ), in64 ); \
8962 0 : in72 = GF_ADD( GF_MUL( in64, 1 ), in72 ); \
8963 0 : FD_REEDSOL_GENERATE_FFT( 8, 72, in72, in73, in74, in75, in76, in77, in78, in79 ); \
8964 0 : in64 = GF_MUL( in64, 1 ); \
8965 0 : in64 = GF_ADD( GF_MUL( scratch_8, 33 ), in64 ); \
8966 0 : in80 = GF_ADD( GF_MUL( in64, 1 ), in80 ); \
8967 0 : FD_REEDSOL_GENERATE_FFT( 16, 80, in80, in81, in82, in83, in84, in85, in86, in87, in88, in89, in90, in91, in92, in93, in94, in95 ); \
8968 0 : in64 = GF_MUL( in64, 1 ); \
8969 0 : in64 = GF_ADD( GF_MUL( scratch_16, 189 ), in64 ); \
8970 0 : in96 = GF_ADD( GF_MUL( in64, 1 ), in96 ); \
8971 0 : FD_REEDSOL_GENERATE_FFT( 32, 96, in96, in97, in98, in99, in100, in101, in102, in103, in104, in105, in106, in107, in108, in109, in110, in111, in112, in113, in114, in115, in116, in117, in118, in119, in120, in121, in122, in123, in124, in125, in126, in127 ); \
8972 0 : in64 = GF_MUL( in64, 1 ); \
8973 0 : in64 = GF_ADD( GF_MUL( scratch_32, 218 ), in64 ); \
8974 0 : GF_MUL22( in00, in64, 1, 0, 1, 1 ); \
8975 0 : in01 = GF_MUL( in01, 1 ); \
8976 0 : in01 = GF_ADD( GF_MUL( scratch_65, 0 ), in01 ); \
8977 0 : in02 = GF_MUL( in02, 1 ); \
8978 0 : in02 = GF_ADD( GF_MUL( scratch_66, 0 ), in02 ); \
8979 0 : in03 = GF_MUL( in03, 1 ); \
8980 0 : in03 = GF_ADD( GF_MUL( scratch_67, 0 ), in03 ); \
8981 0 : in04 = GF_MUL( in04, 1 ); \
8982 0 : in04 = GF_ADD( GF_MUL( scratch_68, 0 ), in04 ); \
8983 0 : in05 = GF_MUL( in05, 1 ); \
8984 0 : in05 = GF_ADD( GF_MUL( scratch_69, 0 ), in05 ); \
8985 0 : in06 = GF_MUL( in06, 1 ); \
8986 0 : in06 = GF_ADD( GF_MUL( scratch_70, 0 ), in06 ); \
8987 0 : in07 = GF_MUL( in07, 1 ); \
8988 0 : in07 = GF_ADD( GF_MUL( scratch_71, 0 ), in07 ); \
8989 0 : in08 = GF_MUL( in08, 1 ); \
8990 0 : in08 = GF_ADD( GF_MUL( scratch_72, 0 ), in08 ); \
8991 0 : in09 = GF_MUL( in09, 1 ); \
8992 0 : in09 = GF_ADD( GF_MUL( scratch_73, 0 ), in09 ); \
8993 0 : in10 = GF_MUL( in10, 1 ); \
8994 0 : in10 = GF_ADD( GF_MUL( scratch_74, 0 ), in10 ); \
8995 0 : in11 = GF_MUL( in11, 1 ); \
8996 0 : in11 = GF_ADD( GF_MUL( scratch_75, 0 ), in11 ); \
8997 0 : in12 = GF_MUL( in12, 1 ); \
8998 0 : in12 = GF_ADD( GF_MUL( scratch_76, 0 ), in12 ); \
8999 0 : in13 = GF_MUL( in13, 1 ); \
9000 0 : in13 = GF_ADD( GF_MUL( scratch_77, 0 ), in13 ); \
9001 0 : in14 = GF_MUL( in14, 1 ); \
9002 0 : in14 = GF_ADD( GF_MUL( scratch_78, 0 ), in14 ); \
9003 0 : in15 = GF_MUL( in15, 1 ); \
9004 0 : in15 = GF_ADD( GF_MUL( scratch_79, 0 ), in15 ); \
9005 0 : in16 = GF_MUL( in16, 1 ); \
9006 0 : in16 = GF_ADD( GF_MUL( scratch_80, 0 ), in16 ); \
9007 0 : in17 = GF_MUL( in17, 1 ); \
9008 0 : in17 = GF_ADD( GF_MUL( scratch_81, 0 ), in17 ); \
9009 0 : in18 = GF_MUL( in18, 1 ); \
9010 0 : in18 = GF_ADD( GF_MUL( scratch_82, 0 ), in18 ); \
9011 0 : in19 = GF_MUL( in19, 1 ); \
9012 0 : in19 = GF_ADD( GF_MUL( scratch_83, 0 ), in19 ); \
9013 0 : in20 = GF_MUL( in20, 1 ); \
9014 0 : in20 = GF_ADD( GF_MUL( scratch_84, 0 ), in20 ); \
9015 0 : in21 = GF_MUL( in21, 1 ); \
9016 0 : in21 = GF_ADD( GF_MUL( scratch_85, 0 ), in21 ); \
9017 0 : in22 = GF_MUL( in22, 1 ); \
9018 0 : in22 = GF_ADD( GF_MUL( scratch_86, 0 ), in22 ); \
9019 0 : in23 = GF_MUL( in23, 1 ); \
9020 0 : in23 = GF_ADD( GF_MUL( scratch_87, 0 ), in23 ); \
9021 0 : in24 = GF_MUL( in24, 1 ); \
9022 0 : in24 = GF_ADD( GF_MUL( scratch_88, 0 ), in24 ); \
9023 0 : in25 = GF_MUL( in25, 1 ); \
9024 0 : in25 = GF_ADD( GF_MUL( scratch_89, 0 ), in25 ); \
9025 0 : in26 = GF_MUL( in26, 1 ); \
9026 0 : in26 = GF_ADD( GF_MUL( scratch_90, 0 ), in26 ); \
9027 0 : in27 = GF_MUL( in27, 1 ); \
9028 0 : in27 = GF_ADD( GF_MUL( scratch_91, 0 ), in27 ); \
9029 0 : in28 = GF_MUL( in28, 1 ); \
9030 0 : in28 = GF_ADD( GF_MUL( scratch_92, 0 ), in28 ); \
9031 0 : in29 = GF_MUL( in29, 1 ); \
9032 0 : in29 = GF_ADD( GF_MUL( scratch_93, 0 ), in29 ); \
9033 0 : in30 = GF_MUL( in30, 1 ); \
9034 0 : in30 = GF_ADD( GF_MUL( scratch_94, 0 ), in30 ); \
9035 0 : in31 = GF_MUL( in31, 1 ); \
9036 0 : in31 = GF_ADD( GF_MUL( scratch_95, 0 ), in31 ); \
9037 0 : in32 = GF_MUL( in32, 1 ); \
9038 0 : in32 = GF_ADD( GF_MUL( scratch_96, 0 ), in32 ); \
9039 0 : in33 = GF_MUL( in33, 1 ); \
9040 0 : in33 = GF_ADD( GF_MUL( scratch_97, 0 ), in33 ); \
9041 0 : in34 = GF_MUL( in34, 1 ); \
9042 0 : in34 = GF_ADD( GF_MUL( scratch_98, 0 ), in34 ); \
9043 0 : in35 = GF_MUL( in35, 1 ); \
9044 0 : in35 = GF_ADD( GF_MUL( scratch_99, 0 ), in35 ); \
9045 0 : in36 = GF_MUL( in36, 1 ); \
9046 0 : in36 = GF_ADD( GF_MUL( scratch_100, 0 ), in36 ); \
9047 0 : in37 = GF_MUL( in37, 1 ); \
9048 0 : in37 = GF_ADD( GF_MUL( scratch_101, 0 ), in37 ); \
9049 0 : in38 = GF_MUL( in38, 1 ); \
9050 0 : in38 = GF_ADD( GF_MUL( scratch_102, 0 ), in38 ); \
9051 0 : in39 = GF_MUL( in39, 1 ); \
9052 0 : in39 = GF_ADD( GF_MUL( scratch_103, 0 ), in39 ); \
9053 0 : in40 = GF_MUL( in40, 1 ); \
9054 0 : in40 = GF_ADD( GF_MUL( scratch_104, 0 ), in40 ); \
9055 0 : in41 = GF_MUL( in41, 1 ); \
9056 0 : in41 = GF_ADD( GF_MUL( scratch_105, 0 ), in41 ); \
9057 0 : in42 = GF_MUL( in42, 1 ); \
9058 0 : in42 = GF_ADD( GF_MUL( scratch_106, 0 ), in42 ); \
9059 0 : in43 = GF_MUL( in43, 1 ); \
9060 0 : in43 = GF_ADD( GF_MUL( scratch_107, 0 ), in43 ); \
9061 0 : in44 = GF_MUL( in44, 1 ); \
9062 0 : in44 = GF_ADD( GF_MUL( scratch_108, 0 ), in44 ); \
9063 0 : in45 = GF_MUL( in45, 1 ); \
9064 0 : in45 = GF_ADD( GF_MUL( scratch_109, 0 ), in45 ); \
9065 0 : in46 = GF_MUL( in46, 1 ); \
9066 0 : in46 = GF_ADD( GF_MUL( scratch_110, 0 ), in46 ); \
9067 0 : in47 = GF_MUL( in47, 1 ); \
9068 0 : in47 = GF_ADD( GF_MUL( scratch_111, 0 ), in47 ); \
9069 0 : in48 = GF_MUL( in48, 1 ); \
9070 0 : in48 = GF_ADD( GF_MUL( scratch_112, 0 ), in48 ); \
9071 0 : in49 = GF_MUL( in49, 1 ); \
9072 0 : in49 = GF_ADD( GF_MUL( scratch_113, 0 ), in49 ); \
9073 0 : in50 = GF_MUL( in50, 1 ); \
9074 0 : in50 = GF_ADD( GF_MUL( scratch_114, 0 ), in50 ); \
9075 0 : in51 = GF_MUL( in51, 1 ); \
9076 0 : in51 = GF_ADD( GF_MUL( scratch_115, 0 ), in51 ); \
9077 0 : in52 = GF_MUL( in52, 1 ); \
9078 0 : in52 = GF_ADD( GF_MUL( scratch_116, 0 ), in52 ); \
9079 0 : in53 = GF_MUL( in53, 1 ); \
9080 0 : in53 = GF_ADD( GF_MUL( scratch_117, 0 ), in53 ); \
9081 0 : in54 = GF_MUL( in54, 1 ); \
9082 0 : in54 = GF_ADD( GF_MUL( scratch_118, 0 ), in54 ); \
9083 0 : in55 = GF_MUL( in55, 1 ); \
9084 0 : in55 = GF_ADD( GF_MUL( scratch_119, 0 ), in55 ); \
9085 0 : in56 = GF_MUL( in56, 1 ); \
9086 0 : in56 = GF_ADD( GF_MUL( scratch_120, 0 ), in56 ); \
9087 0 : in57 = GF_MUL( in57, 1 ); \
9088 0 : in57 = GF_ADD( GF_MUL( scratch_121, 0 ), in57 ); \
9089 0 : in58 = GF_MUL( in58, 1 ); \
9090 0 : in58 = GF_ADD( GF_MUL( scratch_122, 0 ), in58 ); \
9091 0 : in59 = GF_MUL( in59, 1 ); \
9092 0 : in59 = GF_ADD( GF_MUL( scratch_123, 0 ), in59 ); \
9093 0 : in60 = GF_MUL( in60, 1 ); \
9094 0 : in60 = GF_ADD( GF_MUL( scratch_124, 0 ), in60 ); \
9095 0 : in61 = GF_MUL( in61, 1 ); \
9096 0 : in61 = GF_ADD( GF_MUL( scratch_125, 0 ), in61 ); \
9097 0 : in62 = GF_MUL( in62, 1 ); \
9098 0 : in62 = GF_ADD( GF_MUL( scratch_126, 0 ), in62 ); \
9099 0 : in63 = GF_MUL( in63, 1 ); \
9100 0 : in63 = GF_ADD( GF_MUL( scratch_127, 0 ), in63 ); \
9101 0 : } while( 0 )
9102 :
9103 : void fd_reedsol_ppt_128_66( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
9104 : #define FD_REEDSOL_PPT_IMPL_128_66( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63, in64, in65 , \
9105 : in66, in67, in68, in69, in70, in71, in72, in73, in74, in75, in76, in77, in78, in79, in80, in81, in82, in83, in84, in85, in86, in87, in88, in89, in90, in91, in92, in93, in94, in95, in96, in97, in98, in99, in100, in101, in102, in103, in104, in105, in106, in107, in108, in109, in110, in111, in112, in113, in114, in115, in116, in117, in118, in119, in120, in121, in122, in123, in124, in125, in126, in127) \
9106 0 : do { \
9107 0 : gf_t scratch_100, scratch_101, scratch_102, scratch_103, scratch_104, scratch_105, scratch_106, scratch_107, scratch_108, scratch_109, scratch_110, scratch_111, scratch_112, scratch_113, scratch_114, scratch_115; \
9108 0 : gf_t scratch_116, scratch_117, scratch_118, scratch_119, scratch_120, scratch_121, scratch_122, scratch_123, scratch_124, scratch_125, scratch_126, scratch_127, scratch_16, scratch_17, scratch_2, scratch_3; \
9109 0 : gf_t scratch_32, scratch_33, scratch_4, scratch_5, scratch_66, scratch_67, scratch_68, scratch_69, scratch_70, scratch_71, scratch_72, scratch_73, scratch_74, scratch_75, scratch_76, scratch_77; \
9110 0 : gf_t scratch_78, scratch_79, scratch_8, scratch_80, scratch_81, scratch_82, scratch_83, scratch_84, scratch_85, scratch_86, scratch_87, scratch_88, scratch_89, scratch_9, scratch_90, scratch_91; \
9111 0 : gf_t scratch_92, scratch_93, scratch_94, scratch_95, scratch_96, scratch_97, scratch_98, scratch_99; \
9112 0 : scratch_66 = in66; \
9113 0 : in66 = GF_MUL( in66, 1 ); \
9114 0 : scratch_67 = in67; \
9115 0 : in67 = GF_MUL( in67, 1 ); \
9116 0 : scratch_68 = in68; \
9117 0 : in68 = GF_MUL( in68, 1 ); \
9118 0 : scratch_69 = in69; \
9119 0 : in69 = GF_MUL( in69, 1 ); \
9120 0 : scratch_70 = in70; \
9121 0 : in70 = GF_MUL( in70, 1 ); \
9122 0 : scratch_71 = in71; \
9123 0 : in71 = GF_MUL( in71, 1 ); \
9124 0 : scratch_72 = in72; \
9125 0 : in72 = GF_MUL( in72, 1 ); \
9126 0 : scratch_73 = in73; \
9127 0 : in73 = GF_MUL( in73, 1 ); \
9128 0 : scratch_74 = in74; \
9129 0 : in74 = GF_MUL( in74, 1 ); \
9130 0 : scratch_75 = in75; \
9131 0 : in75 = GF_MUL( in75, 1 ); \
9132 0 : scratch_76 = in76; \
9133 0 : in76 = GF_MUL( in76, 1 ); \
9134 0 : scratch_77 = in77; \
9135 0 : in77 = GF_MUL( in77, 1 ); \
9136 0 : scratch_78 = in78; \
9137 0 : in78 = GF_MUL( in78, 1 ); \
9138 0 : scratch_79 = in79; \
9139 0 : in79 = GF_MUL( in79, 1 ); \
9140 0 : scratch_80 = in80; \
9141 0 : in80 = GF_MUL( in80, 1 ); \
9142 0 : scratch_81 = in81; \
9143 0 : in81 = GF_MUL( in81, 1 ); \
9144 0 : scratch_82 = in82; \
9145 0 : in82 = GF_MUL( in82, 1 ); \
9146 0 : scratch_83 = in83; \
9147 0 : in83 = GF_MUL( in83, 1 ); \
9148 0 : scratch_84 = in84; \
9149 0 : in84 = GF_MUL( in84, 1 ); \
9150 0 : scratch_85 = in85; \
9151 0 : in85 = GF_MUL( in85, 1 ); \
9152 0 : scratch_86 = in86; \
9153 0 : in86 = GF_MUL( in86, 1 ); \
9154 0 : scratch_87 = in87; \
9155 0 : in87 = GF_MUL( in87, 1 ); \
9156 0 : scratch_88 = in88; \
9157 0 : in88 = GF_MUL( in88, 1 ); \
9158 0 : scratch_89 = in89; \
9159 0 : in89 = GF_MUL( in89, 1 ); \
9160 0 : scratch_90 = in90; \
9161 0 : in90 = GF_MUL( in90, 1 ); \
9162 0 : scratch_91 = in91; \
9163 0 : in91 = GF_MUL( in91, 1 ); \
9164 0 : scratch_92 = in92; \
9165 0 : in92 = GF_MUL( in92, 1 ); \
9166 0 : scratch_93 = in93; \
9167 0 : in93 = GF_MUL( in93, 1 ); \
9168 0 : scratch_94 = in94; \
9169 0 : in94 = GF_MUL( in94, 1 ); \
9170 0 : scratch_95 = in95; \
9171 0 : in95 = GF_MUL( in95, 1 ); \
9172 0 : scratch_96 = in96; \
9173 0 : in96 = GF_MUL( in96, 1 ); \
9174 0 : scratch_97 = in97; \
9175 0 : in97 = GF_MUL( in97, 1 ); \
9176 0 : scratch_98 = in98; \
9177 0 : in98 = GF_MUL( in98, 1 ); \
9178 0 : scratch_99 = in99; \
9179 0 : in99 = GF_MUL( in99, 1 ); \
9180 0 : scratch_100 = in100; \
9181 0 : in100 = GF_MUL( in100, 1 ); \
9182 0 : scratch_101 = in101; \
9183 0 : in101 = GF_MUL( in101, 1 ); \
9184 0 : scratch_102 = in102; \
9185 0 : in102 = GF_MUL( in102, 1 ); \
9186 0 : scratch_103 = in103; \
9187 0 : in103 = GF_MUL( in103, 1 ); \
9188 0 : scratch_104 = in104; \
9189 0 : in104 = GF_MUL( in104, 1 ); \
9190 0 : scratch_105 = in105; \
9191 0 : in105 = GF_MUL( in105, 1 ); \
9192 0 : scratch_106 = in106; \
9193 0 : in106 = GF_MUL( in106, 1 ); \
9194 0 : scratch_107 = in107; \
9195 0 : in107 = GF_MUL( in107, 1 ); \
9196 0 : scratch_108 = in108; \
9197 0 : in108 = GF_MUL( in108, 1 ); \
9198 0 : scratch_109 = in109; \
9199 0 : in109 = GF_MUL( in109, 1 ); \
9200 0 : scratch_110 = in110; \
9201 0 : in110 = GF_MUL( in110, 1 ); \
9202 0 : scratch_111 = in111; \
9203 0 : in111 = GF_MUL( in111, 1 ); \
9204 0 : scratch_112 = in112; \
9205 0 : in112 = GF_MUL( in112, 1 ); \
9206 0 : scratch_113 = in113; \
9207 0 : in113 = GF_MUL( in113, 1 ); \
9208 0 : scratch_114 = in114; \
9209 0 : in114 = GF_MUL( in114, 1 ); \
9210 0 : scratch_115 = in115; \
9211 0 : in115 = GF_MUL( in115, 1 ); \
9212 0 : scratch_116 = in116; \
9213 0 : in116 = GF_MUL( in116, 1 ); \
9214 0 : scratch_117 = in117; \
9215 0 : in117 = GF_MUL( in117, 1 ); \
9216 0 : scratch_118 = in118; \
9217 0 : in118 = GF_MUL( in118, 1 ); \
9218 0 : scratch_119 = in119; \
9219 0 : in119 = GF_MUL( in119, 1 ); \
9220 0 : scratch_120 = in120; \
9221 0 : in120 = GF_MUL( in120, 1 ); \
9222 0 : scratch_121 = in121; \
9223 0 : in121 = GF_MUL( in121, 1 ); \
9224 0 : scratch_122 = in122; \
9225 0 : in122 = GF_MUL( in122, 1 ); \
9226 0 : scratch_123 = in123; \
9227 0 : in123 = GF_MUL( in123, 1 ); \
9228 0 : scratch_124 = in124; \
9229 0 : in124 = GF_MUL( in124, 1 ); \
9230 0 : scratch_125 = in125; \
9231 0 : in125 = GF_MUL( in125, 1 ); \
9232 0 : scratch_126 = in126; \
9233 0 : in126 = GF_MUL( in126, 1 ); \
9234 0 : scratch_127 = in127; \
9235 0 : in127 = GF_MUL( in127, 1 ); \
9236 0 : FD_REEDSOL_GENERATE_IFFT( 64, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
9237 0 : in66 = GF_ADD( GF_MUL( in02, 1 ), in66 ); \
9238 0 : in67 = GF_ADD( GF_MUL( in03, 1 ), in67 ); \
9239 0 : in68 = GF_ADD( GF_MUL( in04, 1 ), in68 ); \
9240 0 : in69 = GF_ADD( GF_MUL( in05, 1 ), in69 ); \
9241 0 : in70 = GF_ADD( GF_MUL( in06, 1 ), in70 ); \
9242 0 : in71 = GF_ADD( GF_MUL( in07, 1 ), in71 ); \
9243 0 : in72 = GF_ADD( GF_MUL( in08, 1 ), in72 ); \
9244 0 : in73 = GF_ADD( GF_MUL( in09, 1 ), in73 ); \
9245 0 : in74 = GF_ADD( GF_MUL( in10, 1 ), in74 ); \
9246 0 : in75 = GF_ADD( GF_MUL( in11, 1 ), in75 ); \
9247 0 : in76 = GF_ADD( GF_MUL( in12, 1 ), in76 ); \
9248 0 : in77 = GF_ADD( GF_MUL( in13, 1 ), in77 ); \
9249 0 : in78 = GF_ADD( GF_MUL( in14, 1 ), in78 ); \
9250 0 : in79 = GF_ADD( GF_MUL( in15, 1 ), in79 ); \
9251 0 : in80 = GF_ADD( GF_MUL( in16, 1 ), in80 ); \
9252 0 : in81 = GF_ADD( GF_MUL( in17, 1 ), in81 ); \
9253 0 : in82 = GF_ADD( GF_MUL( in18, 1 ), in82 ); \
9254 0 : in83 = GF_ADD( GF_MUL( in19, 1 ), in83 ); \
9255 0 : in84 = GF_ADD( GF_MUL( in20, 1 ), in84 ); \
9256 0 : in85 = GF_ADD( GF_MUL( in21, 1 ), in85 ); \
9257 0 : in86 = GF_ADD( GF_MUL( in22, 1 ), in86 ); \
9258 0 : in87 = GF_ADD( GF_MUL( in23, 1 ), in87 ); \
9259 0 : in88 = GF_ADD( GF_MUL( in24, 1 ), in88 ); \
9260 0 : in89 = GF_ADD( GF_MUL( in25, 1 ), in89 ); \
9261 0 : in90 = GF_ADD( GF_MUL( in26, 1 ), in90 ); \
9262 0 : in91 = GF_ADD( GF_MUL( in27, 1 ), in91 ); \
9263 0 : in92 = GF_ADD( GF_MUL( in28, 1 ), in92 ); \
9264 0 : in93 = GF_ADD( GF_MUL( in29, 1 ), in93 ); \
9265 0 : in94 = GF_ADD( GF_MUL( in30, 1 ), in94 ); \
9266 0 : in95 = GF_ADD( GF_MUL( in31, 1 ), in95 ); \
9267 0 : in96 = GF_ADD( GF_MUL( in32, 1 ), in96 ); \
9268 0 : in97 = GF_ADD( GF_MUL( in33, 1 ), in97 ); \
9269 0 : in98 = GF_ADD( GF_MUL( in34, 1 ), in98 ); \
9270 0 : in99 = GF_ADD( GF_MUL( in35, 1 ), in99 ); \
9271 0 : in100 = GF_ADD( GF_MUL( in36, 1 ), in100 ); \
9272 0 : in101 = GF_ADD( GF_MUL( in37, 1 ), in101 ); \
9273 0 : in102 = GF_ADD( GF_MUL( in38, 1 ), in102 ); \
9274 0 : in103 = GF_ADD( GF_MUL( in39, 1 ), in103 ); \
9275 0 : in104 = GF_ADD( GF_MUL( in40, 1 ), in104 ); \
9276 0 : in105 = GF_ADD( GF_MUL( in41, 1 ), in105 ); \
9277 0 : in106 = GF_ADD( GF_MUL( in42, 1 ), in106 ); \
9278 0 : in107 = GF_ADD( GF_MUL( in43, 1 ), in107 ); \
9279 0 : in108 = GF_ADD( GF_MUL( in44, 1 ), in108 ); \
9280 0 : in109 = GF_ADD( GF_MUL( in45, 1 ), in109 ); \
9281 0 : in110 = GF_ADD( GF_MUL( in46, 1 ), in110 ); \
9282 0 : in111 = GF_ADD( GF_MUL( in47, 1 ), in111 ); \
9283 0 : in112 = GF_ADD( GF_MUL( in48, 1 ), in112 ); \
9284 0 : in113 = GF_ADD( GF_MUL( in49, 1 ), in113 ); \
9285 0 : in114 = GF_ADD( GF_MUL( in50, 1 ), in114 ); \
9286 0 : in115 = GF_ADD( GF_MUL( in51, 1 ), in115 ); \
9287 0 : in116 = GF_ADD( GF_MUL( in52, 1 ), in116 ); \
9288 0 : in117 = GF_ADD( GF_MUL( in53, 1 ), in117 ); \
9289 0 : in118 = GF_ADD( GF_MUL( in54, 1 ), in118 ); \
9290 0 : in119 = GF_ADD( GF_MUL( in55, 1 ), in119 ); \
9291 0 : in120 = GF_ADD( GF_MUL( in56, 1 ), in120 ); \
9292 0 : in121 = GF_ADD( GF_MUL( in57, 1 ), in121 ); \
9293 0 : in122 = GF_ADD( GF_MUL( in58, 1 ), in122 ); \
9294 0 : in123 = GF_ADD( GF_MUL( in59, 1 ), in123 ); \
9295 0 : in124 = GF_ADD( GF_MUL( in60, 1 ), in124 ); \
9296 0 : in125 = GF_ADD( GF_MUL( in61, 1 ), in125 ); \
9297 0 : in126 = GF_ADD( GF_MUL( in62, 1 ), in126 ); \
9298 0 : in127 = GF_ADD( GF_MUL( in63, 1 ), in127 ); \
9299 0 : scratch_32 = in96; \
9300 0 : in96 = GF_MUL( in96, 1 ); \
9301 0 : scratch_33 = in97; \
9302 0 : in97 = GF_MUL( in97, 1 ); \
9303 0 : GF_MUL22( in66, in98, 1, 218, 1, 219 ); \
9304 0 : GF_MUL22( in67, in99, 1, 218, 1, 219 ); \
9305 0 : GF_MUL22( in68, in100, 1, 218, 1, 219 ); \
9306 0 : GF_MUL22( in69, in101, 1, 218, 1, 219 ); \
9307 0 : GF_MUL22( in70, in102, 1, 218, 1, 219 ); \
9308 0 : GF_MUL22( in71, in103, 1, 218, 1, 219 ); \
9309 0 : GF_MUL22( in72, in104, 1, 218, 1, 219 ); \
9310 0 : GF_MUL22( in73, in105, 1, 218, 1, 219 ); \
9311 0 : GF_MUL22( in74, in106, 1, 218, 1, 219 ); \
9312 0 : GF_MUL22( in75, in107, 1, 218, 1, 219 ); \
9313 0 : GF_MUL22( in76, in108, 1, 218, 1, 219 ); \
9314 0 : GF_MUL22( in77, in109, 1, 218, 1, 219 ); \
9315 0 : GF_MUL22( in78, in110, 1, 218, 1, 219 ); \
9316 0 : GF_MUL22( in79, in111, 1, 218, 1, 219 ); \
9317 0 : GF_MUL22( in80, in112, 1, 218, 1, 219 ); \
9318 0 : GF_MUL22( in81, in113, 1, 218, 1, 219 ); \
9319 0 : GF_MUL22( in82, in114, 1, 218, 1, 219 ); \
9320 0 : GF_MUL22( in83, in115, 1, 218, 1, 219 ); \
9321 0 : GF_MUL22( in84, in116, 1, 218, 1, 219 ); \
9322 0 : GF_MUL22( in85, in117, 1, 218, 1, 219 ); \
9323 0 : GF_MUL22( in86, in118, 1, 218, 1, 219 ); \
9324 0 : GF_MUL22( in87, in119, 1, 218, 1, 219 ); \
9325 0 : GF_MUL22( in88, in120, 1, 218, 1, 219 ); \
9326 0 : GF_MUL22( in89, in121, 1, 218, 1, 219 ); \
9327 0 : GF_MUL22( in90, in122, 1, 218, 1, 219 ); \
9328 0 : GF_MUL22( in91, in123, 1, 218, 1, 219 ); \
9329 0 : GF_MUL22( in92, in124, 1, 218, 1, 219 ); \
9330 0 : GF_MUL22( in93, in125, 1, 218, 1, 219 ); \
9331 0 : GF_MUL22( in94, in126, 1, 218, 1, 219 ); \
9332 0 : GF_MUL22( in95, in127, 1, 218, 1, 219 ); \
9333 0 : scratch_16 = in80; \
9334 0 : in80 = GF_MUL( in80, 1 ); \
9335 0 : scratch_17 = in81; \
9336 0 : in81 = GF_MUL( in81, 1 ); \
9337 0 : GF_MUL22( in66, in82, 1, 189, 1, 188 ); \
9338 0 : GF_MUL22( in67, in83, 1, 189, 1, 188 ); \
9339 0 : GF_MUL22( in68, in84, 1, 189, 1, 188 ); \
9340 0 : GF_MUL22( in69, in85, 1, 189, 1, 188 ); \
9341 0 : GF_MUL22( in70, in86, 1, 189, 1, 188 ); \
9342 0 : GF_MUL22( in71, in87, 1, 189, 1, 188 ); \
9343 0 : GF_MUL22( in72, in88, 1, 189, 1, 188 ); \
9344 0 : GF_MUL22( in73, in89, 1, 189, 1, 188 ); \
9345 0 : GF_MUL22( in74, in90, 1, 189, 1, 188 ); \
9346 0 : GF_MUL22( in75, in91, 1, 189, 1, 188 ); \
9347 0 : GF_MUL22( in76, in92, 1, 189, 1, 188 ); \
9348 0 : GF_MUL22( in77, in93, 1, 189, 1, 188 ); \
9349 0 : GF_MUL22( in78, in94, 1, 189, 1, 188 ); \
9350 0 : GF_MUL22( in79, in95, 1, 189, 1, 188 ); \
9351 0 : scratch_8 = in72; \
9352 0 : in72 = GF_MUL( in72, 1 ); \
9353 0 : scratch_9 = in73; \
9354 0 : in73 = GF_MUL( in73, 1 ); \
9355 0 : GF_MUL22( in66, in74, 1, 33, 1, 32 ); \
9356 0 : GF_MUL22( in67, in75, 1, 33, 1, 32 ); \
9357 0 : GF_MUL22( in68, in76, 1, 33, 1, 32 ); \
9358 0 : GF_MUL22( in69, in77, 1, 33, 1, 32 ); \
9359 0 : GF_MUL22( in70, in78, 1, 33, 1, 32 ); \
9360 0 : GF_MUL22( in71, in79, 1, 33, 1, 32 ); \
9361 0 : scratch_4 = in68; \
9362 0 : in68 = GF_MUL( in68, 1 ); \
9363 0 : scratch_5 = in69; \
9364 0 : in69 = GF_MUL( in69, 1 ); \
9365 0 : GF_MUL22( in66, in70, 1, 183, 1, 182 ); \
9366 0 : GF_MUL22( in67, in71, 1, 183, 1, 182 ); \
9367 0 : scratch_2 = in66; \
9368 0 : in66 = GF_MUL( in66, 1 ); \
9369 0 : scratch_3 = in67; \
9370 0 : in67 = GF_MUL( in67, 1 ); \
9371 0 : GF_MUL22( in64, in65, 65, 64, 1, 1 ); \
9372 0 : in66 = GF_ADD( GF_MUL( in64, 1 ), in66 ); \
9373 0 : in67 = GF_ADD( GF_MUL( in65, 1 ), in67 ); \
9374 0 : GF_MUL22( in66, in67, 1, 66, 1, 67 ); \
9375 0 : in64 = GF_MUL( in64, 1 ); \
9376 0 : in64 = GF_ADD( GF_MUL( scratch_2, 179 ), in64 ); \
9377 0 : in65 = GF_MUL( in65, 1 ); \
9378 0 : in65 = GF_ADD( GF_MUL( scratch_3, 179 ), in65 ); \
9379 0 : in68 = GF_ADD( GF_MUL( in64, 1 ), in68 ); \
9380 0 : in69 = GF_ADD( GF_MUL( in65, 1 ), in69 ); \
9381 0 : FD_REEDSOL_GENERATE_FFT( 4, 68, in68, in69, in70, in71 ); \
9382 0 : in64 = GF_MUL( in64, 1 ); \
9383 0 : in64 = GF_ADD( GF_MUL( scratch_4, 183 ), in64 ); \
9384 0 : in65 = GF_MUL( in65, 1 ); \
9385 0 : in65 = GF_ADD( GF_MUL( scratch_5, 183 ), in65 ); \
9386 0 : in72 = GF_ADD( GF_MUL( in64, 1 ), in72 ); \
9387 0 : in73 = GF_ADD( GF_MUL( in65, 1 ), in73 ); \
9388 0 : FD_REEDSOL_GENERATE_FFT( 8, 72, in72, in73, in74, in75, in76, in77, in78, in79 ); \
9389 0 : in64 = GF_MUL( in64, 1 ); \
9390 0 : in64 = GF_ADD( GF_MUL( scratch_8, 33 ), in64 ); \
9391 0 : in65 = GF_MUL( in65, 1 ); \
9392 0 : in65 = GF_ADD( GF_MUL( scratch_9, 33 ), in65 ); \
9393 0 : in80 = GF_ADD( GF_MUL( in64, 1 ), in80 ); \
9394 0 : in81 = GF_ADD( GF_MUL( in65, 1 ), in81 ); \
9395 0 : FD_REEDSOL_GENERATE_FFT( 16, 80, in80, in81, in82, in83, in84, in85, in86, in87, in88, in89, in90, in91, in92, in93, in94, in95 ); \
9396 0 : in64 = GF_MUL( in64, 1 ); \
9397 0 : in64 = GF_ADD( GF_MUL( scratch_16, 189 ), in64 ); \
9398 0 : in65 = GF_MUL( in65, 1 ); \
9399 0 : in65 = GF_ADD( GF_MUL( scratch_17, 189 ), in65 ); \
9400 0 : in96 = GF_ADD( GF_MUL( in64, 1 ), in96 ); \
9401 0 : in97 = GF_ADD( GF_MUL( in65, 1 ), in97 ); \
9402 0 : FD_REEDSOL_GENERATE_FFT( 32, 96, in96, in97, in98, in99, in100, in101, in102, in103, in104, in105, in106, in107, in108, in109, in110, in111, in112, in113, in114, in115, in116, in117, in118, in119, in120, in121, in122, in123, in124, in125, in126, in127 ); \
9403 0 : in64 = GF_MUL( in64, 1 ); \
9404 0 : in64 = GF_ADD( GF_MUL( scratch_32, 218 ), in64 ); \
9405 0 : in65 = GF_MUL( in65, 1 ); \
9406 0 : in65 = GF_ADD( GF_MUL( scratch_33, 218 ), in65 ); \
9407 0 : GF_MUL22( in00, in64, 1, 0, 1, 1 ); \
9408 0 : GF_MUL22( in01, in65, 1, 0, 1, 1 ); \
9409 0 : in02 = GF_MUL( in02, 1 ); \
9410 0 : in02 = GF_ADD( GF_MUL( scratch_66, 0 ), in02 ); \
9411 0 : in03 = GF_MUL( in03, 1 ); \
9412 0 : in03 = GF_ADD( GF_MUL( scratch_67, 0 ), in03 ); \
9413 0 : in04 = GF_MUL( in04, 1 ); \
9414 0 : in04 = GF_ADD( GF_MUL( scratch_68, 0 ), in04 ); \
9415 0 : in05 = GF_MUL( in05, 1 ); \
9416 0 : in05 = GF_ADD( GF_MUL( scratch_69, 0 ), in05 ); \
9417 0 : in06 = GF_MUL( in06, 1 ); \
9418 0 : in06 = GF_ADD( GF_MUL( scratch_70, 0 ), in06 ); \
9419 0 : in07 = GF_MUL( in07, 1 ); \
9420 0 : in07 = GF_ADD( GF_MUL( scratch_71, 0 ), in07 ); \
9421 0 : in08 = GF_MUL( in08, 1 ); \
9422 0 : in08 = GF_ADD( GF_MUL( scratch_72, 0 ), in08 ); \
9423 0 : in09 = GF_MUL( in09, 1 ); \
9424 0 : in09 = GF_ADD( GF_MUL( scratch_73, 0 ), in09 ); \
9425 0 : in10 = GF_MUL( in10, 1 ); \
9426 0 : in10 = GF_ADD( GF_MUL( scratch_74, 0 ), in10 ); \
9427 0 : in11 = GF_MUL( in11, 1 ); \
9428 0 : in11 = GF_ADD( GF_MUL( scratch_75, 0 ), in11 ); \
9429 0 : in12 = GF_MUL( in12, 1 ); \
9430 0 : in12 = GF_ADD( GF_MUL( scratch_76, 0 ), in12 ); \
9431 0 : in13 = GF_MUL( in13, 1 ); \
9432 0 : in13 = GF_ADD( GF_MUL( scratch_77, 0 ), in13 ); \
9433 0 : in14 = GF_MUL( in14, 1 ); \
9434 0 : in14 = GF_ADD( GF_MUL( scratch_78, 0 ), in14 ); \
9435 0 : in15 = GF_MUL( in15, 1 ); \
9436 0 : in15 = GF_ADD( GF_MUL( scratch_79, 0 ), in15 ); \
9437 0 : in16 = GF_MUL( in16, 1 ); \
9438 0 : in16 = GF_ADD( GF_MUL( scratch_80, 0 ), in16 ); \
9439 0 : in17 = GF_MUL( in17, 1 ); \
9440 0 : in17 = GF_ADD( GF_MUL( scratch_81, 0 ), in17 ); \
9441 0 : in18 = GF_MUL( in18, 1 ); \
9442 0 : in18 = GF_ADD( GF_MUL( scratch_82, 0 ), in18 ); \
9443 0 : in19 = GF_MUL( in19, 1 ); \
9444 0 : in19 = GF_ADD( GF_MUL( scratch_83, 0 ), in19 ); \
9445 0 : in20 = GF_MUL( in20, 1 ); \
9446 0 : in20 = GF_ADD( GF_MUL( scratch_84, 0 ), in20 ); \
9447 0 : in21 = GF_MUL( in21, 1 ); \
9448 0 : in21 = GF_ADD( GF_MUL( scratch_85, 0 ), in21 ); \
9449 0 : in22 = GF_MUL( in22, 1 ); \
9450 0 : in22 = GF_ADD( GF_MUL( scratch_86, 0 ), in22 ); \
9451 0 : in23 = GF_MUL( in23, 1 ); \
9452 0 : in23 = GF_ADD( GF_MUL( scratch_87, 0 ), in23 ); \
9453 0 : in24 = GF_MUL( in24, 1 ); \
9454 0 : in24 = GF_ADD( GF_MUL( scratch_88, 0 ), in24 ); \
9455 0 : in25 = GF_MUL( in25, 1 ); \
9456 0 : in25 = GF_ADD( GF_MUL( scratch_89, 0 ), in25 ); \
9457 0 : in26 = GF_MUL( in26, 1 ); \
9458 0 : in26 = GF_ADD( GF_MUL( scratch_90, 0 ), in26 ); \
9459 0 : in27 = GF_MUL( in27, 1 ); \
9460 0 : in27 = GF_ADD( GF_MUL( scratch_91, 0 ), in27 ); \
9461 0 : in28 = GF_MUL( in28, 1 ); \
9462 0 : in28 = GF_ADD( GF_MUL( scratch_92, 0 ), in28 ); \
9463 0 : in29 = GF_MUL( in29, 1 ); \
9464 0 : in29 = GF_ADD( GF_MUL( scratch_93, 0 ), in29 ); \
9465 0 : in30 = GF_MUL( in30, 1 ); \
9466 0 : in30 = GF_ADD( GF_MUL( scratch_94, 0 ), in30 ); \
9467 0 : in31 = GF_MUL( in31, 1 ); \
9468 0 : in31 = GF_ADD( GF_MUL( scratch_95, 0 ), in31 ); \
9469 0 : in32 = GF_MUL( in32, 1 ); \
9470 0 : in32 = GF_ADD( GF_MUL( scratch_96, 0 ), in32 ); \
9471 0 : in33 = GF_MUL( in33, 1 ); \
9472 0 : in33 = GF_ADD( GF_MUL( scratch_97, 0 ), in33 ); \
9473 0 : in34 = GF_MUL( in34, 1 ); \
9474 0 : in34 = GF_ADD( GF_MUL( scratch_98, 0 ), in34 ); \
9475 0 : in35 = GF_MUL( in35, 1 ); \
9476 0 : in35 = GF_ADD( GF_MUL( scratch_99, 0 ), in35 ); \
9477 0 : in36 = GF_MUL( in36, 1 ); \
9478 0 : in36 = GF_ADD( GF_MUL( scratch_100, 0 ), in36 ); \
9479 0 : in37 = GF_MUL( in37, 1 ); \
9480 0 : in37 = GF_ADD( GF_MUL( scratch_101, 0 ), in37 ); \
9481 0 : in38 = GF_MUL( in38, 1 ); \
9482 0 : in38 = GF_ADD( GF_MUL( scratch_102, 0 ), in38 ); \
9483 0 : in39 = GF_MUL( in39, 1 ); \
9484 0 : in39 = GF_ADD( GF_MUL( scratch_103, 0 ), in39 ); \
9485 0 : in40 = GF_MUL( in40, 1 ); \
9486 0 : in40 = GF_ADD( GF_MUL( scratch_104, 0 ), in40 ); \
9487 0 : in41 = GF_MUL( in41, 1 ); \
9488 0 : in41 = GF_ADD( GF_MUL( scratch_105, 0 ), in41 ); \
9489 0 : in42 = GF_MUL( in42, 1 ); \
9490 0 : in42 = GF_ADD( GF_MUL( scratch_106, 0 ), in42 ); \
9491 0 : in43 = GF_MUL( in43, 1 ); \
9492 0 : in43 = GF_ADD( GF_MUL( scratch_107, 0 ), in43 ); \
9493 0 : in44 = GF_MUL( in44, 1 ); \
9494 0 : in44 = GF_ADD( GF_MUL( scratch_108, 0 ), in44 ); \
9495 0 : in45 = GF_MUL( in45, 1 ); \
9496 0 : in45 = GF_ADD( GF_MUL( scratch_109, 0 ), in45 ); \
9497 0 : in46 = GF_MUL( in46, 1 ); \
9498 0 : in46 = GF_ADD( GF_MUL( scratch_110, 0 ), in46 ); \
9499 0 : in47 = GF_MUL( in47, 1 ); \
9500 0 : in47 = GF_ADD( GF_MUL( scratch_111, 0 ), in47 ); \
9501 0 : in48 = GF_MUL( in48, 1 ); \
9502 0 : in48 = GF_ADD( GF_MUL( scratch_112, 0 ), in48 ); \
9503 0 : in49 = GF_MUL( in49, 1 ); \
9504 0 : in49 = GF_ADD( GF_MUL( scratch_113, 0 ), in49 ); \
9505 0 : in50 = GF_MUL( in50, 1 ); \
9506 0 : in50 = GF_ADD( GF_MUL( scratch_114, 0 ), in50 ); \
9507 0 : in51 = GF_MUL( in51, 1 ); \
9508 0 : in51 = GF_ADD( GF_MUL( scratch_115, 0 ), in51 ); \
9509 0 : in52 = GF_MUL( in52, 1 ); \
9510 0 : in52 = GF_ADD( GF_MUL( scratch_116, 0 ), in52 ); \
9511 0 : in53 = GF_MUL( in53, 1 ); \
9512 0 : in53 = GF_ADD( GF_MUL( scratch_117, 0 ), in53 ); \
9513 0 : in54 = GF_MUL( in54, 1 ); \
9514 0 : in54 = GF_ADD( GF_MUL( scratch_118, 0 ), in54 ); \
9515 0 : in55 = GF_MUL( in55, 1 ); \
9516 0 : in55 = GF_ADD( GF_MUL( scratch_119, 0 ), in55 ); \
9517 0 : in56 = GF_MUL( in56, 1 ); \
9518 0 : in56 = GF_ADD( GF_MUL( scratch_120, 0 ), in56 ); \
9519 0 : in57 = GF_MUL( in57, 1 ); \
9520 0 : in57 = GF_ADD( GF_MUL( scratch_121, 0 ), in57 ); \
9521 0 : in58 = GF_MUL( in58, 1 ); \
9522 0 : in58 = GF_ADD( GF_MUL( scratch_122, 0 ), in58 ); \
9523 0 : in59 = GF_MUL( in59, 1 ); \
9524 0 : in59 = GF_ADD( GF_MUL( scratch_123, 0 ), in59 ); \
9525 0 : in60 = GF_MUL( in60, 1 ); \
9526 0 : in60 = GF_ADD( GF_MUL( scratch_124, 0 ), in60 ); \
9527 0 : in61 = GF_MUL( in61, 1 ); \
9528 0 : in61 = GF_ADD( GF_MUL( scratch_125, 0 ), in61 ); \
9529 0 : in62 = GF_MUL( in62, 1 ); \
9530 0 : in62 = GF_ADD( GF_MUL( scratch_126, 0 ), in62 ); \
9531 0 : in63 = GF_MUL( in63, 1 ); \
9532 0 : in63 = GF_ADD( GF_MUL( scratch_127, 0 ), in63 ); \
9533 0 : } while( 0 )
9534 :
9535 : void fd_reedsol_ppt_128_67( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
9536 : #define FD_REEDSOL_PPT_IMPL_128_67( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63, in64, in65 , \
9537 : in66, in67, in68, in69, in70, in71, in72, in73, in74, in75, in76, in77, in78, in79, in80, in81, in82, in83, in84, in85, in86, in87, in88, in89, in90, in91, in92, in93, in94, in95, in96, in97, in98, in99, in100, in101, in102, in103, in104, in105, in106, in107, in108, in109, in110, in111, in112, in113, in114, in115, in116, in117, in118, in119, in120, in121, in122, in123, in124, in125, in126, in127) \
9538 0 : do { \
9539 0 : gf_t scratch_10, scratch_100, scratch_101, scratch_102, scratch_103, scratch_104, scratch_105, scratch_106, scratch_107, scratch_108, scratch_109, scratch_110, scratch_111, scratch_112, scratch_113, scratch_114; \
9540 0 : gf_t scratch_115, scratch_116, scratch_117, scratch_118, scratch_119, scratch_120, scratch_121, scratch_122, scratch_123, scratch_124, scratch_125, scratch_126, scratch_127, scratch_16, scratch_17, scratch_18; \
9541 0 : gf_t scratch_3, scratch_32, scratch_33, scratch_34, scratch_4, scratch_5, scratch_6, scratch_67, scratch_68, scratch_69, scratch_70, scratch_71, scratch_72, scratch_73, scratch_74, scratch_75; \
9542 0 : gf_t scratch_76, scratch_77, scratch_78, scratch_79, scratch_8, scratch_80, scratch_81, scratch_82, scratch_83, scratch_84, scratch_85, scratch_86, scratch_87, scratch_88, scratch_89, scratch_9; \
9543 0 : gf_t scratch_90, scratch_91, scratch_92, scratch_93, scratch_94, scratch_95, scratch_96, scratch_97, scratch_98, scratch_99; \
9544 0 : scratch_67 = in67; \
9545 0 : in67 = GF_MUL( in67, 1 ); \
9546 0 : scratch_68 = in68; \
9547 0 : in68 = GF_MUL( in68, 1 ); \
9548 0 : scratch_69 = in69; \
9549 0 : in69 = GF_MUL( in69, 1 ); \
9550 0 : scratch_70 = in70; \
9551 0 : in70 = GF_MUL( in70, 1 ); \
9552 0 : scratch_71 = in71; \
9553 0 : in71 = GF_MUL( in71, 1 ); \
9554 0 : scratch_72 = in72; \
9555 0 : in72 = GF_MUL( in72, 1 ); \
9556 0 : scratch_73 = in73; \
9557 0 : in73 = GF_MUL( in73, 1 ); \
9558 0 : scratch_74 = in74; \
9559 0 : in74 = GF_MUL( in74, 1 ); \
9560 0 : scratch_75 = in75; \
9561 0 : in75 = GF_MUL( in75, 1 ); \
9562 0 : scratch_76 = in76; \
9563 0 : in76 = GF_MUL( in76, 1 ); \
9564 0 : scratch_77 = in77; \
9565 0 : in77 = GF_MUL( in77, 1 ); \
9566 0 : scratch_78 = in78; \
9567 0 : in78 = GF_MUL( in78, 1 ); \
9568 0 : scratch_79 = in79; \
9569 0 : in79 = GF_MUL( in79, 1 ); \
9570 0 : scratch_80 = in80; \
9571 0 : in80 = GF_MUL( in80, 1 ); \
9572 0 : scratch_81 = in81; \
9573 0 : in81 = GF_MUL( in81, 1 ); \
9574 0 : scratch_82 = in82; \
9575 0 : in82 = GF_MUL( in82, 1 ); \
9576 0 : scratch_83 = in83; \
9577 0 : in83 = GF_MUL( in83, 1 ); \
9578 0 : scratch_84 = in84; \
9579 0 : in84 = GF_MUL( in84, 1 ); \
9580 0 : scratch_85 = in85; \
9581 0 : in85 = GF_MUL( in85, 1 ); \
9582 0 : scratch_86 = in86; \
9583 0 : in86 = GF_MUL( in86, 1 ); \
9584 0 : scratch_87 = in87; \
9585 0 : in87 = GF_MUL( in87, 1 ); \
9586 0 : scratch_88 = in88; \
9587 0 : in88 = GF_MUL( in88, 1 ); \
9588 0 : scratch_89 = in89; \
9589 0 : in89 = GF_MUL( in89, 1 ); \
9590 0 : scratch_90 = in90; \
9591 0 : in90 = GF_MUL( in90, 1 ); \
9592 0 : scratch_91 = in91; \
9593 0 : in91 = GF_MUL( in91, 1 ); \
9594 0 : scratch_92 = in92; \
9595 0 : in92 = GF_MUL( in92, 1 ); \
9596 0 : scratch_93 = in93; \
9597 0 : in93 = GF_MUL( in93, 1 ); \
9598 0 : scratch_94 = in94; \
9599 0 : in94 = GF_MUL( in94, 1 ); \
9600 0 : scratch_95 = in95; \
9601 0 : in95 = GF_MUL( in95, 1 ); \
9602 0 : scratch_96 = in96; \
9603 0 : in96 = GF_MUL( in96, 1 ); \
9604 0 : scratch_97 = in97; \
9605 0 : in97 = GF_MUL( in97, 1 ); \
9606 0 : scratch_98 = in98; \
9607 0 : in98 = GF_MUL( in98, 1 ); \
9608 0 : scratch_99 = in99; \
9609 0 : in99 = GF_MUL( in99, 1 ); \
9610 0 : scratch_100 = in100; \
9611 0 : in100 = GF_MUL( in100, 1 ); \
9612 0 : scratch_101 = in101; \
9613 0 : in101 = GF_MUL( in101, 1 ); \
9614 0 : scratch_102 = in102; \
9615 0 : in102 = GF_MUL( in102, 1 ); \
9616 0 : scratch_103 = in103; \
9617 0 : in103 = GF_MUL( in103, 1 ); \
9618 0 : scratch_104 = in104; \
9619 0 : in104 = GF_MUL( in104, 1 ); \
9620 0 : scratch_105 = in105; \
9621 0 : in105 = GF_MUL( in105, 1 ); \
9622 0 : scratch_106 = in106; \
9623 0 : in106 = GF_MUL( in106, 1 ); \
9624 0 : scratch_107 = in107; \
9625 0 : in107 = GF_MUL( in107, 1 ); \
9626 0 : scratch_108 = in108; \
9627 0 : in108 = GF_MUL( in108, 1 ); \
9628 0 : scratch_109 = in109; \
9629 0 : in109 = GF_MUL( in109, 1 ); \
9630 0 : scratch_110 = in110; \
9631 0 : in110 = GF_MUL( in110, 1 ); \
9632 0 : scratch_111 = in111; \
9633 0 : in111 = GF_MUL( in111, 1 ); \
9634 0 : scratch_112 = in112; \
9635 0 : in112 = GF_MUL( in112, 1 ); \
9636 0 : scratch_113 = in113; \
9637 0 : in113 = GF_MUL( in113, 1 ); \
9638 0 : scratch_114 = in114; \
9639 0 : in114 = GF_MUL( in114, 1 ); \
9640 0 : scratch_115 = in115; \
9641 0 : in115 = GF_MUL( in115, 1 ); \
9642 0 : scratch_116 = in116; \
9643 0 : in116 = GF_MUL( in116, 1 ); \
9644 0 : scratch_117 = in117; \
9645 0 : in117 = GF_MUL( in117, 1 ); \
9646 0 : scratch_118 = in118; \
9647 0 : in118 = GF_MUL( in118, 1 ); \
9648 0 : scratch_119 = in119; \
9649 0 : in119 = GF_MUL( in119, 1 ); \
9650 0 : scratch_120 = in120; \
9651 0 : in120 = GF_MUL( in120, 1 ); \
9652 0 : scratch_121 = in121; \
9653 0 : in121 = GF_MUL( in121, 1 ); \
9654 0 : scratch_122 = in122; \
9655 0 : in122 = GF_MUL( in122, 1 ); \
9656 0 : scratch_123 = in123; \
9657 0 : in123 = GF_MUL( in123, 1 ); \
9658 0 : scratch_124 = in124; \
9659 0 : in124 = GF_MUL( in124, 1 ); \
9660 0 : scratch_125 = in125; \
9661 0 : in125 = GF_MUL( in125, 1 ); \
9662 0 : scratch_126 = in126; \
9663 0 : in126 = GF_MUL( in126, 1 ); \
9664 0 : scratch_127 = in127; \
9665 0 : in127 = GF_MUL( in127, 1 ); \
9666 0 : FD_REEDSOL_GENERATE_IFFT( 64, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
9667 0 : in67 = GF_ADD( GF_MUL( in03, 1 ), in67 ); \
9668 0 : in68 = GF_ADD( GF_MUL( in04, 1 ), in68 ); \
9669 0 : in69 = GF_ADD( GF_MUL( in05, 1 ), in69 ); \
9670 0 : in70 = GF_ADD( GF_MUL( in06, 1 ), in70 ); \
9671 0 : in71 = GF_ADD( GF_MUL( in07, 1 ), in71 ); \
9672 0 : in72 = GF_ADD( GF_MUL( in08, 1 ), in72 ); \
9673 0 : in73 = GF_ADD( GF_MUL( in09, 1 ), in73 ); \
9674 0 : in74 = GF_ADD( GF_MUL( in10, 1 ), in74 ); \
9675 0 : in75 = GF_ADD( GF_MUL( in11, 1 ), in75 ); \
9676 0 : in76 = GF_ADD( GF_MUL( in12, 1 ), in76 ); \
9677 0 : in77 = GF_ADD( GF_MUL( in13, 1 ), in77 ); \
9678 0 : in78 = GF_ADD( GF_MUL( in14, 1 ), in78 ); \
9679 0 : in79 = GF_ADD( GF_MUL( in15, 1 ), in79 ); \
9680 0 : in80 = GF_ADD( GF_MUL( in16, 1 ), in80 ); \
9681 0 : in81 = GF_ADD( GF_MUL( in17, 1 ), in81 ); \
9682 0 : in82 = GF_ADD( GF_MUL( in18, 1 ), in82 ); \
9683 0 : in83 = GF_ADD( GF_MUL( in19, 1 ), in83 ); \
9684 0 : in84 = GF_ADD( GF_MUL( in20, 1 ), in84 ); \
9685 0 : in85 = GF_ADD( GF_MUL( in21, 1 ), in85 ); \
9686 0 : in86 = GF_ADD( GF_MUL( in22, 1 ), in86 ); \
9687 0 : in87 = GF_ADD( GF_MUL( in23, 1 ), in87 ); \
9688 0 : in88 = GF_ADD( GF_MUL( in24, 1 ), in88 ); \
9689 0 : in89 = GF_ADD( GF_MUL( in25, 1 ), in89 ); \
9690 0 : in90 = GF_ADD( GF_MUL( in26, 1 ), in90 ); \
9691 0 : in91 = GF_ADD( GF_MUL( in27, 1 ), in91 ); \
9692 0 : in92 = GF_ADD( GF_MUL( in28, 1 ), in92 ); \
9693 0 : in93 = GF_ADD( GF_MUL( in29, 1 ), in93 ); \
9694 0 : in94 = GF_ADD( GF_MUL( in30, 1 ), in94 ); \
9695 0 : in95 = GF_ADD( GF_MUL( in31, 1 ), in95 ); \
9696 0 : in96 = GF_ADD( GF_MUL( in32, 1 ), in96 ); \
9697 0 : in97 = GF_ADD( GF_MUL( in33, 1 ), in97 ); \
9698 0 : in98 = GF_ADD( GF_MUL( in34, 1 ), in98 ); \
9699 0 : in99 = GF_ADD( GF_MUL( in35, 1 ), in99 ); \
9700 0 : in100 = GF_ADD( GF_MUL( in36, 1 ), in100 ); \
9701 0 : in101 = GF_ADD( GF_MUL( in37, 1 ), in101 ); \
9702 0 : in102 = GF_ADD( GF_MUL( in38, 1 ), in102 ); \
9703 0 : in103 = GF_ADD( GF_MUL( in39, 1 ), in103 ); \
9704 0 : in104 = GF_ADD( GF_MUL( in40, 1 ), in104 ); \
9705 0 : in105 = GF_ADD( GF_MUL( in41, 1 ), in105 ); \
9706 0 : in106 = GF_ADD( GF_MUL( in42, 1 ), in106 ); \
9707 0 : in107 = GF_ADD( GF_MUL( in43, 1 ), in107 ); \
9708 0 : in108 = GF_ADD( GF_MUL( in44, 1 ), in108 ); \
9709 0 : in109 = GF_ADD( GF_MUL( in45, 1 ), in109 ); \
9710 0 : in110 = GF_ADD( GF_MUL( in46, 1 ), in110 ); \
9711 0 : in111 = GF_ADD( GF_MUL( in47, 1 ), in111 ); \
9712 0 : in112 = GF_ADD( GF_MUL( in48, 1 ), in112 ); \
9713 0 : in113 = GF_ADD( GF_MUL( in49, 1 ), in113 ); \
9714 0 : in114 = GF_ADD( GF_MUL( in50, 1 ), in114 ); \
9715 0 : in115 = GF_ADD( GF_MUL( in51, 1 ), in115 ); \
9716 0 : in116 = GF_ADD( GF_MUL( in52, 1 ), in116 ); \
9717 0 : in117 = GF_ADD( GF_MUL( in53, 1 ), in117 ); \
9718 0 : in118 = GF_ADD( GF_MUL( in54, 1 ), in118 ); \
9719 0 : in119 = GF_ADD( GF_MUL( in55, 1 ), in119 ); \
9720 0 : in120 = GF_ADD( GF_MUL( in56, 1 ), in120 ); \
9721 0 : in121 = GF_ADD( GF_MUL( in57, 1 ), in121 ); \
9722 0 : in122 = GF_ADD( GF_MUL( in58, 1 ), in122 ); \
9723 0 : in123 = GF_ADD( GF_MUL( in59, 1 ), in123 ); \
9724 0 : in124 = GF_ADD( GF_MUL( in60, 1 ), in124 ); \
9725 0 : in125 = GF_ADD( GF_MUL( in61, 1 ), in125 ); \
9726 0 : in126 = GF_ADD( GF_MUL( in62, 1 ), in126 ); \
9727 0 : in127 = GF_ADD( GF_MUL( in63, 1 ), in127 ); \
9728 0 : scratch_32 = in96; \
9729 0 : in96 = GF_MUL( in96, 1 ); \
9730 0 : scratch_33 = in97; \
9731 0 : in97 = GF_MUL( in97, 1 ); \
9732 0 : scratch_34 = in98; \
9733 0 : in98 = GF_MUL( in98, 1 ); \
9734 0 : GF_MUL22( in67, in99, 1, 218, 1, 219 ); \
9735 0 : GF_MUL22( in68, in100, 1, 218, 1, 219 ); \
9736 0 : GF_MUL22( in69, in101, 1, 218, 1, 219 ); \
9737 0 : GF_MUL22( in70, in102, 1, 218, 1, 219 ); \
9738 0 : GF_MUL22( in71, in103, 1, 218, 1, 219 ); \
9739 0 : GF_MUL22( in72, in104, 1, 218, 1, 219 ); \
9740 0 : GF_MUL22( in73, in105, 1, 218, 1, 219 ); \
9741 0 : GF_MUL22( in74, in106, 1, 218, 1, 219 ); \
9742 0 : GF_MUL22( in75, in107, 1, 218, 1, 219 ); \
9743 0 : GF_MUL22( in76, in108, 1, 218, 1, 219 ); \
9744 0 : GF_MUL22( in77, in109, 1, 218, 1, 219 ); \
9745 0 : GF_MUL22( in78, in110, 1, 218, 1, 219 ); \
9746 0 : GF_MUL22( in79, in111, 1, 218, 1, 219 ); \
9747 0 : GF_MUL22( in80, in112, 1, 218, 1, 219 ); \
9748 0 : GF_MUL22( in81, in113, 1, 218, 1, 219 ); \
9749 0 : GF_MUL22( in82, in114, 1, 218, 1, 219 ); \
9750 0 : GF_MUL22( in83, in115, 1, 218, 1, 219 ); \
9751 0 : GF_MUL22( in84, in116, 1, 218, 1, 219 ); \
9752 0 : GF_MUL22( in85, in117, 1, 218, 1, 219 ); \
9753 0 : GF_MUL22( in86, in118, 1, 218, 1, 219 ); \
9754 0 : GF_MUL22( in87, in119, 1, 218, 1, 219 ); \
9755 0 : GF_MUL22( in88, in120, 1, 218, 1, 219 ); \
9756 0 : GF_MUL22( in89, in121, 1, 218, 1, 219 ); \
9757 0 : GF_MUL22( in90, in122, 1, 218, 1, 219 ); \
9758 0 : GF_MUL22( in91, in123, 1, 218, 1, 219 ); \
9759 0 : GF_MUL22( in92, in124, 1, 218, 1, 219 ); \
9760 0 : GF_MUL22( in93, in125, 1, 218, 1, 219 ); \
9761 0 : GF_MUL22( in94, in126, 1, 218, 1, 219 ); \
9762 0 : GF_MUL22( in95, in127, 1, 218, 1, 219 ); \
9763 0 : scratch_16 = in80; \
9764 0 : in80 = GF_MUL( in80, 1 ); \
9765 0 : scratch_17 = in81; \
9766 0 : in81 = GF_MUL( in81, 1 ); \
9767 0 : scratch_18 = in82; \
9768 0 : in82 = GF_MUL( in82, 1 ); \
9769 0 : GF_MUL22( in67, in83, 1, 189, 1, 188 ); \
9770 0 : GF_MUL22( in68, in84, 1, 189, 1, 188 ); \
9771 0 : GF_MUL22( in69, in85, 1, 189, 1, 188 ); \
9772 0 : GF_MUL22( in70, in86, 1, 189, 1, 188 ); \
9773 0 : GF_MUL22( in71, in87, 1, 189, 1, 188 ); \
9774 0 : GF_MUL22( in72, in88, 1, 189, 1, 188 ); \
9775 0 : GF_MUL22( in73, in89, 1, 189, 1, 188 ); \
9776 0 : GF_MUL22( in74, in90, 1, 189, 1, 188 ); \
9777 0 : GF_MUL22( in75, in91, 1, 189, 1, 188 ); \
9778 0 : GF_MUL22( in76, in92, 1, 189, 1, 188 ); \
9779 0 : GF_MUL22( in77, in93, 1, 189, 1, 188 ); \
9780 0 : GF_MUL22( in78, in94, 1, 189, 1, 188 ); \
9781 0 : GF_MUL22( in79, in95, 1, 189, 1, 188 ); \
9782 0 : scratch_8 = in72; \
9783 0 : in72 = GF_MUL( in72, 1 ); \
9784 0 : scratch_9 = in73; \
9785 0 : in73 = GF_MUL( in73, 1 ); \
9786 0 : scratch_10 = in74; \
9787 0 : in74 = GF_MUL( in74, 1 ); \
9788 0 : GF_MUL22( in67, in75, 1, 33, 1, 32 ); \
9789 0 : GF_MUL22( in68, in76, 1, 33, 1, 32 ); \
9790 0 : GF_MUL22( in69, in77, 1, 33, 1, 32 ); \
9791 0 : GF_MUL22( in70, in78, 1, 33, 1, 32 ); \
9792 0 : GF_MUL22( in71, in79, 1, 33, 1, 32 ); \
9793 0 : scratch_4 = in68; \
9794 0 : in68 = GF_MUL( in68, 1 ); \
9795 0 : scratch_5 = in69; \
9796 0 : in69 = GF_MUL( in69, 1 ); \
9797 0 : scratch_6 = in70; \
9798 0 : in70 = GF_MUL( in70, 1 ); \
9799 0 : GF_MUL22( in67, in71, 1, 183, 1, 182 ); \
9800 0 : scratch_3 = in67; \
9801 0 : in67 = GF_MUL( in67, 1 ); \
9802 0 : GF_MUL22( in64, in65, 65, 64, 1, 1 ); \
9803 0 : in67 = GF_ADD( GF_MUL( in65, 1 ), in67 ); \
9804 0 : GF_MUL22( in66, in67, 1, 66, 1, 1 ); \
9805 0 : GF_MUL22( in64, in66, 178, 179, 1, 1 ); \
9806 0 : in65 = GF_MUL( in65, 1 ); \
9807 0 : in65 = GF_ADD( GF_MUL( scratch_3, 179 ), in65 ); \
9808 0 : in68 = GF_ADD( GF_MUL( in64, 1 ), in68 ); \
9809 0 : in69 = GF_ADD( GF_MUL( in65, 1 ), in69 ); \
9810 0 : in70 = GF_ADD( GF_MUL( in66, 1 ), in70 ); \
9811 0 : FD_REEDSOL_GENERATE_FFT( 4, 68, in68, in69, in70, in71 ); \
9812 0 : in64 = GF_MUL( in64, 1 ); \
9813 0 : in64 = GF_ADD( GF_MUL( scratch_4, 183 ), in64 ); \
9814 0 : in65 = GF_MUL( in65, 1 ); \
9815 0 : in65 = GF_ADD( GF_MUL( scratch_5, 183 ), in65 ); \
9816 0 : in66 = GF_MUL( in66, 1 ); \
9817 0 : in66 = GF_ADD( GF_MUL( scratch_6, 183 ), in66 ); \
9818 0 : in72 = GF_ADD( GF_MUL( in64, 1 ), in72 ); \
9819 0 : in73 = GF_ADD( GF_MUL( in65, 1 ), in73 ); \
9820 0 : in74 = GF_ADD( GF_MUL( in66, 1 ), in74 ); \
9821 0 : FD_REEDSOL_GENERATE_FFT( 8, 72, in72, in73, in74, in75, in76, in77, in78, in79 ); \
9822 0 : in64 = GF_MUL( in64, 1 ); \
9823 0 : in64 = GF_ADD( GF_MUL( scratch_8, 33 ), in64 ); \
9824 0 : in65 = GF_MUL( in65, 1 ); \
9825 0 : in65 = GF_ADD( GF_MUL( scratch_9, 33 ), in65 ); \
9826 0 : in66 = GF_MUL( in66, 1 ); \
9827 0 : in66 = GF_ADD( GF_MUL( scratch_10, 33 ), in66 ); \
9828 0 : in80 = GF_ADD( GF_MUL( in64, 1 ), in80 ); \
9829 0 : in81 = GF_ADD( GF_MUL( in65, 1 ), in81 ); \
9830 0 : in82 = GF_ADD( GF_MUL( in66, 1 ), in82 ); \
9831 0 : FD_REEDSOL_GENERATE_FFT( 16, 80, in80, in81, in82, in83, in84, in85, in86, in87, in88, in89, in90, in91, in92, in93, in94, in95 ); \
9832 0 : in64 = GF_MUL( in64, 1 ); \
9833 0 : in64 = GF_ADD( GF_MUL( scratch_16, 189 ), in64 ); \
9834 0 : in65 = GF_MUL( in65, 1 ); \
9835 0 : in65 = GF_ADD( GF_MUL( scratch_17, 189 ), in65 ); \
9836 0 : in66 = GF_MUL( in66, 1 ); \
9837 0 : in66 = GF_ADD( GF_MUL( scratch_18, 189 ), in66 ); \
9838 0 : in96 = GF_ADD( GF_MUL( in64, 1 ), in96 ); \
9839 0 : in97 = GF_ADD( GF_MUL( in65, 1 ), in97 ); \
9840 0 : in98 = GF_ADD( GF_MUL( in66, 1 ), in98 ); \
9841 0 : FD_REEDSOL_GENERATE_FFT( 32, 96, in96, in97, in98, in99, in100, in101, in102, in103, in104, in105, in106, in107, in108, in109, in110, in111, in112, in113, in114, in115, in116, in117, in118, in119, in120, in121, in122, in123, in124, in125, in126, in127 ); \
9842 0 : in64 = GF_MUL( in64, 1 ); \
9843 0 : in64 = GF_ADD( GF_MUL( scratch_32, 218 ), in64 ); \
9844 0 : in65 = GF_MUL( in65, 1 ); \
9845 0 : in65 = GF_ADD( GF_MUL( scratch_33, 218 ), in65 ); \
9846 0 : in66 = GF_MUL( in66, 1 ); \
9847 0 : in66 = GF_ADD( GF_MUL( scratch_34, 218 ), in66 ); \
9848 0 : GF_MUL22( in00, in64, 1, 0, 1, 1 ); \
9849 0 : GF_MUL22( in01, in65, 1, 0, 1, 1 ); \
9850 0 : GF_MUL22( in02, in66, 1, 0, 1, 1 ); \
9851 0 : in03 = GF_MUL( in03, 1 ); \
9852 0 : in03 = GF_ADD( GF_MUL( scratch_67, 0 ), in03 ); \
9853 0 : in04 = GF_MUL( in04, 1 ); \
9854 0 : in04 = GF_ADD( GF_MUL( scratch_68, 0 ), in04 ); \
9855 0 : in05 = GF_MUL( in05, 1 ); \
9856 0 : in05 = GF_ADD( GF_MUL( scratch_69, 0 ), in05 ); \
9857 0 : in06 = GF_MUL( in06, 1 ); \
9858 0 : in06 = GF_ADD( GF_MUL( scratch_70, 0 ), in06 ); \
9859 0 : in07 = GF_MUL( in07, 1 ); \
9860 0 : in07 = GF_ADD( GF_MUL( scratch_71, 0 ), in07 ); \
9861 0 : in08 = GF_MUL( in08, 1 ); \
9862 0 : in08 = GF_ADD( GF_MUL( scratch_72, 0 ), in08 ); \
9863 0 : in09 = GF_MUL( in09, 1 ); \
9864 0 : in09 = GF_ADD( GF_MUL( scratch_73, 0 ), in09 ); \
9865 0 : in10 = GF_MUL( in10, 1 ); \
9866 0 : in10 = GF_ADD( GF_MUL( scratch_74, 0 ), in10 ); \
9867 0 : in11 = GF_MUL( in11, 1 ); \
9868 0 : in11 = GF_ADD( GF_MUL( scratch_75, 0 ), in11 ); \
9869 0 : in12 = GF_MUL( in12, 1 ); \
9870 0 : in12 = GF_ADD( GF_MUL( scratch_76, 0 ), in12 ); \
9871 0 : in13 = GF_MUL( in13, 1 ); \
9872 0 : in13 = GF_ADD( GF_MUL( scratch_77, 0 ), in13 ); \
9873 0 : in14 = GF_MUL( in14, 1 ); \
9874 0 : in14 = GF_ADD( GF_MUL( scratch_78, 0 ), in14 ); \
9875 0 : in15 = GF_MUL( in15, 1 ); \
9876 0 : in15 = GF_ADD( GF_MUL( scratch_79, 0 ), in15 ); \
9877 0 : in16 = GF_MUL( in16, 1 ); \
9878 0 : in16 = GF_ADD( GF_MUL( scratch_80, 0 ), in16 ); \
9879 0 : in17 = GF_MUL( in17, 1 ); \
9880 0 : in17 = GF_ADD( GF_MUL( scratch_81, 0 ), in17 ); \
9881 0 : in18 = GF_MUL( in18, 1 ); \
9882 0 : in18 = GF_ADD( GF_MUL( scratch_82, 0 ), in18 ); \
9883 0 : in19 = GF_MUL( in19, 1 ); \
9884 0 : in19 = GF_ADD( GF_MUL( scratch_83, 0 ), in19 ); \
9885 0 : in20 = GF_MUL( in20, 1 ); \
9886 0 : in20 = GF_ADD( GF_MUL( scratch_84, 0 ), in20 ); \
9887 0 : in21 = GF_MUL( in21, 1 ); \
9888 0 : in21 = GF_ADD( GF_MUL( scratch_85, 0 ), in21 ); \
9889 0 : in22 = GF_MUL( in22, 1 ); \
9890 0 : in22 = GF_ADD( GF_MUL( scratch_86, 0 ), in22 ); \
9891 0 : in23 = GF_MUL( in23, 1 ); \
9892 0 : in23 = GF_ADD( GF_MUL( scratch_87, 0 ), in23 ); \
9893 0 : in24 = GF_MUL( in24, 1 ); \
9894 0 : in24 = GF_ADD( GF_MUL( scratch_88, 0 ), in24 ); \
9895 0 : in25 = GF_MUL( in25, 1 ); \
9896 0 : in25 = GF_ADD( GF_MUL( scratch_89, 0 ), in25 ); \
9897 0 : in26 = GF_MUL( in26, 1 ); \
9898 0 : in26 = GF_ADD( GF_MUL( scratch_90, 0 ), in26 ); \
9899 0 : in27 = GF_MUL( in27, 1 ); \
9900 0 : in27 = GF_ADD( GF_MUL( scratch_91, 0 ), in27 ); \
9901 0 : in28 = GF_MUL( in28, 1 ); \
9902 0 : in28 = GF_ADD( GF_MUL( scratch_92, 0 ), in28 ); \
9903 0 : in29 = GF_MUL( in29, 1 ); \
9904 0 : in29 = GF_ADD( GF_MUL( scratch_93, 0 ), in29 ); \
9905 0 : in30 = GF_MUL( in30, 1 ); \
9906 0 : in30 = GF_ADD( GF_MUL( scratch_94, 0 ), in30 ); \
9907 0 : in31 = GF_MUL( in31, 1 ); \
9908 0 : in31 = GF_ADD( GF_MUL( scratch_95, 0 ), in31 ); \
9909 0 : in32 = GF_MUL( in32, 1 ); \
9910 0 : in32 = GF_ADD( GF_MUL( scratch_96, 0 ), in32 ); \
9911 0 : in33 = GF_MUL( in33, 1 ); \
9912 0 : in33 = GF_ADD( GF_MUL( scratch_97, 0 ), in33 ); \
9913 0 : in34 = GF_MUL( in34, 1 ); \
9914 0 : in34 = GF_ADD( GF_MUL( scratch_98, 0 ), in34 ); \
9915 0 : in35 = GF_MUL( in35, 1 ); \
9916 0 : in35 = GF_ADD( GF_MUL( scratch_99, 0 ), in35 ); \
9917 0 : in36 = GF_MUL( in36, 1 ); \
9918 0 : in36 = GF_ADD( GF_MUL( scratch_100, 0 ), in36 ); \
9919 0 : in37 = GF_MUL( in37, 1 ); \
9920 0 : in37 = GF_ADD( GF_MUL( scratch_101, 0 ), in37 ); \
9921 0 : in38 = GF_MUL( in38, 1 ); \
9922 0 : in38 = GF_ADD( GF_MUL( scratch_102, 0 ), in38 ); \
9923 0 : in39 = GF_MUL( in39, 1 ); \
9924 0 : in39 = GF_ADD( GF_MUL( scratch_103, 0 ), in39 ); \
9925 0 : in40 = GF_MUL( in40, 1 ); \
9926 0 : in40 = GF_ADD( GF_MUL( scratch_104, 0 ), in40 ); \
9927 0 : in41 = GF_MUL( in41, 1 ); \
9928 0 : in41 = GF_ADD( GF_MUL( scratch_105, 0 ), in41 ); \
9929 0 : in42 = GF_MUL( in42, 1 ); \
9930 0 : in42 = GF_ADD( GF_MUL( scratch_106, 0 ), in42 ); \
9931 0 : in43 = GF_MUL( in43, 1 ); \
9932 0 : in43 = GF_ADD( GF_MUL( scratch_107, 0 ), in43 ); \
9933 0 : in44 = GF_MUL( in44, 1 ); \
9934 0 : in44 = GF_ADD( GF_MUL( scratch_108, 0 ), in44 ); \
9935 0 : in45 = GF_MUL( in45, 1 ); \
9936 0 : in45 = GF_ADD( GF_MUL( scratch_109, 0 ), in45 ); \
9937 0 : in46 = GF_MUL( in46, 1 ); \
9938 0 : in46 = GF_ADD( GF_MUL( scratch_110, 0 ), in46 ); \
9939 0 : in47 = GF_MUL( in47, 1 ); \
9940 0 : in47 = GF_ADD( GF_MUL( scratch_111, 0 ), in47 ); \
9941 0 : in48 = GF_MUL( in48, 1 ); \
9942 0 : in48 = GF_ADD( GF_MUL( scratch_112, 0 ), in48 ); \
9943 0 : in49 = GF_MUL( in49, 1 ); \
9944 0 : in49 = GF_ADD( GF_MUL( scratch_113, 0 ), in49 ); \
9945 0 : in50 = GF_MUL( in50, 1 ); \
9946 0 : in50 = GF_ADD( GF_MUL( scratch_114, 0 ), in50 ); \
9947 0 : in51 = GF_MUL( in51, 1 ); \
9948 0 : in51 = GF_ADD( GF_MUL( scratch_115, 0 ), in51 ); \
9949 0 : in52 = GF_MUL( in52, 1 ); \
9950 0 : in52 = GF_ADD( GF_MUL( scratch_116, 0 ), in52 ); \
9951 0 : in53 = GF_MUL( in53, 1 ); \
9952 0 : in53 = GF_ADD( GF_MUL( scratch_117, 0 ), in53 ); \
9953 0 : in54 = GF_MUL( in54, 1 ); \
9954 0 : in54 = GF_ADD( GF_MUL( scratch_118, 0 ), in54 ); \
9955 0 : in55 = GF_MUL( in55, 1 ); \
9956 0 : in55 = GF_ADD( GF_MUL( scratch_119, 0 ), in55 ); \
9957 0 : in56 = GF_MUL( in56, 1 ); \
9958 0 : in56 = GF_ADD( GF_MUL( scratch_120, 0 ), in56 ); \
9959 0 : in57 = GF_MUL( in57, 1 ); \
9960 0 : in57 = GF_ADD( GF_MUL( scratch_121, 0 ), in57 ); \
9961 0 : in58 = GF_MUL( in58, 1 ); \
9962 0 : in58 = GF_ADD( GF_MUL( scratch_122, 0 ), in58 ); \
9963 0 : in59 = GF_MUL( in59, 1 ); \
9964 0 : in59 = GF_ADD( GF_MUL( scratch_123, 0 ), in59 ); \
9965 0 : in60 = GF_MUL( in60, 1 ); \
9966 0 : in60 = GF_ADD( GF_MUL( scratch_124, 0 ), in60 ); \
9967 0 : in61 = GF_MUL( in61, 1 ); \
9968 0 : in61 = GF_ADD( GF_MUL( scratch_125, 0 ), in61 ); \
9969 0 : in62 = GF_MUL( in62, 1 ); \
9970 0 : in62 = GF_ADD( GF_MUL( scratch_126, 0 ), in62 ); \
9971 0 : in63 = GF_MUL( in63, 1 ); \
9972 0 : in63 = GF_ADD( GF_MUL( scratch_127, 0 ), in63 ); \
9973 0 : } while( 0 )
9974 :
9975 : void fd_reedsol_ppt_128_68( gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t*, gf_t* );
9976 : #define FD_REEDSOL_PPT_IMPL_128_68( in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63, in64, in65 , \
9977 : in66, in67, in68, in69, in70, in71, in72, in73, in74, in75, in76, in77, in78, in79, in80, in81, in82, in83, in84, in85, in86, in87, in88, in89, in90, in91, in92, in93, in94, in95, in96, in97, in98, in99, in100, in101, in102, in103, in104, in105, in106, in107, in108, in109, in110, in111, in112, in113, in114, in115, in116, in117, in118, in119, in120, in121, in122, in123, in124, in125, in126, in127) \
9978 : do { \
9979 : gf_t scratch_10, scratch_100, scratch_101, scratch_102, scratch_103, scratch_104, scratch_105, scratch_106, scratch_107, scratch_108, scratch_109, scratch_11, scratch_110, scratch_111, scratch_112, scratch_113; \
9980 : gf_t scratch_114, scratch_115, scratch_116, scratch_117, scratch_118, scratch_119, scratch_120, scratch_121, scratch_122, scratch_123, scratch_124, scratch_125, scratch_126, scratch_127, scratch_16, scratch_17; \
9981 : gf_t scratch_18, scratch_19, scratch_32, scratch_33, scratch_34, scratch_35, scratch_4, scratch_5, scratch_6, scratch_68, scratch_69, scratch_7, scratch_70, scratch_71, scratch_72, scratch_73; \
9982 : gf_t scratch_74, scratch_75, scratch_76, scratch_77, scratch_78, scratch_79, scratch_8, scratch_80, scratch_81, scratch_82, scratch_83, scratch_84, scratch_85, scratch_86, scratch_87, scratch_88; \
9983 : gf_t scratch_89, scratch_9, scratch_90, scratch_91, scratch_92, scratch_93, scratch_94, scratch_95, scratch_96, scratch_97, scratch_98, scratch_99; \
9984 : scratch_68 = in68; \
9985 : in68 = GF_MUL( in68, 1 ); \
9986 : scratch_69 = in69; \
9987 : in69 = GF_MUL( in69, 1 ); \
9988 : scratch_70 = in70; \
9989 : in70 = GF_MUL( in70, 1 ); \
9990 : scratch_71 = in71; \
9991 : in71 = GF_MUL( in71, 1 ); \
9992 : scratch_72 = in72; \
9993 : in72 = GF_MUL( in72, 1 ); \
9994 : scratch_73 = in73; \
9995 : in73 = GF_MUL( in73, 1 ); \
9996 : scratch_74 = in74; \
9997 : in74 = GF_MUL( in74, 1 ); \
9998 : scratch_75 = in75; \
9999 : in75 = GF_MUL( in75, 1 ); \
10000 : scratch_76 = in76; \
10001 : in76 = GF_MUL( in76, 1 ); \
10002 : scratch_77 = in77; \
10003 : in77 = GF_MUL( in77, 1 ); \
10004 : scratch_78 = in78; \
10005 : in78 = GF_MUL( in78, 1 ); \
10006 : scratch_79 = in79; \
10007 : in79 = GF_MUL( in79, 1 ); \
10008 : scratch_80 = in80; \
10009 : in80 = GF_MUL( in80, 1 ); \
10010 : scratch_81 = in81; \
10011 : in81 = GF_MUL( in81, 1 ); \
10012 : scratch_82 = in82; \
10013 : in82 = GF_MUL( in82, 1 ); \
10014 : scratch_83 = in83; \
10015 : in83 = GF_MUL( in83, 1 ); \
10016 : scratch_84 = in84; \
10017 : in84 = GF_MUL( in84, 1 ); \
10018 : scratch_85 = in85; \
10019 : in85 = GF_MUL( in85, 1 ); \
10020 : scratch_86 = in86; \
10021 : in86 = GF_MUL( in86, 1 ); \
10022 : scratch_87 = in87; \
10023 : in87 = GF_MUL( in87, 1 ); \
10024 : scratch_88 = in88; \
10025 : in88 = GF_MUL( in88, 1 ); \
10026 : scratch_89 = in89; \
10027 : in89 = GF_MUL( in89, 1 ); \
10028 : scratch_90 = in90; \
10029 : in90 = GF_MUL( in90, 1 ); \
10030 : scratch_91 = in91; \
10031 : in91 = GF_MUL( in91, 1 ); \
10032 : scratch_92 = in92; \
10033 : in92 = GF_MUL( in92, 1 ); \
10034 : scratch_93 = in93; \
10035 : in93 = GF_MUL( in93, 1 ); \
10036 : scratch_94 = in94; \
10037 : in94 = GF_MUL( in94, 1 ); \
10038 : scratch_95 = in95; \
10039 : in95 = GF_MUL( in95, 1 ); \
10040 : scratch_96 = in96; \
10041 : in96 = GF_MUL( in96, 1 ); \
10042 : scratch_97 = in97; \
10043 : in97 = GF_MUL( in97, 1 ); \
10044 : scratch_98 = in98; \
10045 : in98 = GF_MUL( in98, 1 ); \
10046 : scratch_99 = in99; \
10047 : in99 = GF_MUL( in99, 1 ); \
10048 : scratch_100 = in100; \
10049 : in100 = GF_MUL( in100, 1 ); \
10050 : scratch_101 = in101; \
10051 : in101 = GF_MUL( in101, 1 ); \
10052 : scratch_102 = in102; \
10053 : in102 = GF_MUL( in102, 1 ); \
10054 : scratch_103 = in103; \
10055 : in103 = GF_MUL( in103, 1 ); \
10056 : scratch_104 = in104; \
10057 : in104 = GF_MUL( in104, 1 ); \
10058 : scratch_105 = in105; \
10059 : in105 = GF_MUL( in105, 1 ); \
10060 : scratch_106 = in106; \
10061 : in106 = GF_MUL( in106, 1 ); \
10062 : scratch_107 = in107; \
10063 : in107 = GF_MUL( in107, 1 ); \
10064 : scratch_108 = in108; \
10065 : in108 = GF_MUL( in108, 1 ); \
10066 : scratch_109 = in109; \
10067 : in109 = GF_MUL( in109, 1 ); \
10068 : scratch_110 = in110; \
10069 : in110 = GF_MUL( in110, 1 ); \
10070 : scratch_111 = in111; \
10071 : in111 = GF_MUL( in111, 1 ); \
10072 : scratch_112 = in112; \
10073 : in112 = GF_MUL( in112, 1 ); \
10074 : scratch_113 = in113; \
10075 : in113 = GF_MUL( in113, 1 ); \
10076 : scratch_114 = in114; \
10077 : in114 = GF_MUL( in114, 1 ); \
10078 : scratch_115 = in115; \
10079 : in115 = GF_MUL( in115, 1 ); \
10080 : scratch_116 = in116; \
10081 : in116 = GF_MUL( in116, 1 ); \
10082 : scratch_117 = in117; \
10083 : in117 = GF_MUL( in117, 1 ); \
10084 : scratch_118 = in118; \
10085 : in118 = GF_MUL( in118, 1 ); \
10086 : scratch_119 = in119; \
10087 : in119 = GF_MUL( in119, 1 ); \
10088 : scratch_120 = in120; \
10089 : in120 = GF_MUL( in120, 1 ); \
10090 : scratch_121 = in121; \
10091 : in121 = GF_MUL( in121, 1 ); \
10092 : scratch_122 = in122; \
10093 : in122 = GF_MUL( in122, 1 ); \
10094 : scratch_123 = in123; \
10095 : in123 = GF_MUL( in123, 1 ); \
10096 : scratch_124 = in124; \
10097 : in124 = GF_MUL( in124, 1 ); \
10098 : scratch_125 = in125; \
10099 : in125 = GF_MUL( in125, 1 ); \
10100 : scratch_126 = in126; \
10101 : in126 = GF_MUL( in126, 1 ); \
10102 : scratch_127 = in127; \
10103 : in127 = GF_MUL( in127, 1 ); \
10104 : FD_REEDSOL_GENERATE_IFFT( 64, 0, in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63 ); \
10105 : in68 = GF_ADD( GF_MUL( in04, 1 ), in68 ); \
10106 : in69 = GF_ADD( GF_MUL( in05, 1 ), in69 ); \
10107 : in70 = GF_ADD( GF_MUL( in06, 1 ), in70 ); \
10108 : in71 = GF_ADD( GF_MUL( in07, 1 ), in71 ); \
10109 : in72 = GF_ADD( GF_MUL( in08, 1 ), in72 ); \
10110 : in73 = GF_ADD( GF_MUL( in09, 1 ), in73 ); \
10111 : in74 = GF_ADD( GF_MUL( in10, 1 ), in74 ); \
10112 : in75 = GF_ADD( GF_MUL( in11, 1 ), in75 ); \
10113 : in76 = GF_ADD( GF_MUL( in12, 1 ), in76 ); \
10114 : in77 = GF_ADD( GF_MUL( in13, 1 ), in77 ); \
10115 : in78 = GF_ADD( GF_MUL( in14, 1 ), in78 ); \
10116 : in79 = GF_ADD( GF_MUL( in15, 1 ), in79 ); \
10117 : in80 = GF_ADD( GF_MUL( in16, 1 ), in80 ); \
10118 : in81 = GF_ADD( GF_MUL( in17, 1 ), in81 ); \
10119 : in82 = GF_ADD( GF_MUL( in18, 1 ), in82 ); \
10120 : in83 = GF_ADD( GF_MUL( in19, 1 ), in83 ); \
10121 : in84 = GF_ADD( GF_MUL( in20, 1 ), in84 ); \
10122 : in85 = GF_ADD( GF_MUL( in21, 1 ), in85 ); \
10123 : in86 = GF_ADD( GF_MUL( in22, 1 ), in86 ); \
10124 : in87 = GF_ADD( GF_MUL( in23, 1 ), in87 ); \
10125 : in88 = GF_ADD( GF_MUL( in24, 1 ), in88 ); \
10126 : in89 = GF_ADD( GF_MUL( in25, 1 ), in89 ); \
10127 : in90 = GF_ADD( GF_MUL( in26, 1 ), in90 ); \
10128 : in91 = GF_ADD( GF_MUL( in27, 1 ), in91 ); \
10129 : in92 = GF_ADD( GF_MUL( in28, 1 ), in92 ); \
10130 : in93 = GF_ADD( GF_MUL( in29, 1 ), in93 ); \
10131 : in94 = GF_ADD( GF_MUL( in30, 1 ), in94 ); \
10132 : in95 = GF_ADD( GF_MUL( in31, 1 ), in95 ); \
10133 : in96 = GF_ADD( GF_MUL( in32, 1 ), in96 ); \
10134 : in97 = GF_ADD( GF_MUL( in33, 1 ), in97 ); \
10135 : in98 = GF_ADD( GF_MUL( in34, 1 ), in98 ); \
10136 : in99 = GF_ADD( GF_MUL( in35, 1 ), in99 ); \
10137 : in100 = GF_ADD( GF_MUL( in36, 1 ), in100 ); \
10138 : in101 = GF_ADD( GF_MUL( in37, 1 ), in101 ); \
10139 : in102 = GF_ADD( GF_MUL( in38, 1 ), in102 ); \
10140 : in103 = GF_ADD( GF_MUL( in39, 1 ), in103 ); \
10141 : in104 = GF_ADD( GF_MUL( in40, 1 ), in104 ); \
10142 : in105 = GF_ADD( GF_MUL( in41, 1 ), in105 ); \
10143 : in106 = GF_ADD( GF_MUL( in42, 1 ), in106 ); \
10144 : in107 = GF_ADD( GF_MUL( in43, 1 ), in107 ); \
10145 : in108 = GF_ADD( GF_MUL( in44, 1 ), in108 ); \
10146 : in109 = GF_ADD( GF_MUL( in45, 1 ), in109 ); \
10147 : in110 = GF_ADD( GF_MUL( in46, 1 ), in110 ); \
10148 : in111 = GF_ADD( GF_MUL( in47, 1 ), in111 ); \
10149 : in112 = GF_ADD( GF_MUL( in48, 1 ), in112 ); \
10150 : in113 = GF_ADD( GF_MUL( in49, 1 ), in113 ); \
10151 : in114 = GF_ADD( GF_MUL( in50, 1 ), in114 ); \
10152 : in115 = GF_ADD( GF_MUL( in51, 1 ), in115 ); \
10153 : in116 = GF_ADD( GF_MUL( in52, 1 ), in116 ); \
10154 : in117 = GF_ADD( GF_MUL( in53, 1 ), in117 ); \
10155 : in118 = GF_ADD( GF_MUL( in54, 1 ), in118 ); \
10156 : in119 = GF_ADD( GF_MUL( in55, 1 ), in119 ); \
10157 : in120 = GF_ADD( GF_MUL( in56, 1 ), in120 ); \
10158 : in121 = GF_ADD( GF_MUL( in57, 1 ), in121 ); \
10159 : in122 = GF_ADD( GF_MUL( in58, 1 ), in122 ); \
10160 : in123 = GF_ADD( GF_MUL( in59, 1 ), in123 ); \
10161 : in124 = GF_ADD( GF_MUL( in60, 1 ), in124 ); \
10162 : in125 = GF_ADD( GF_MUL( in61, 1 ), in125 ); \
10163 : in126 = GF_ADD( GF_MUL( in62, 1 ), in126 ); \
10164 : in127 = GF_ADD( GF_MUL( in63, 1 ), in127 ); \
10165 : scratch_32 = in96; \
10166 : in96 = GF_MUL( in96, 1 ); \
10167 : scratch_33 = in97; \
10168 : in97 = GF_MUL( in97, 1 ); \
10169 : scratch_34 = in98; \
10170 : in98 = GF_MUL( in98, 1 ); \
10171 : scratch_35 = in99; \
10172 : in99 = GF_MUL( in99, 1 ); \
10173 : GF_MUL22( in68, in100, 1, 218, 1, 219 ); \
10174 : GF_MUL22( in69, in101, 1, 218, 1, 219 ); \
10175 : GF_MUL22( in70, in102, 1, 218, 1, 219 ); \
10176 : GF_MUL22( in71, in103, 1, 218, 1, 219 ); \
10177 : GF_MUL22( in72, in104, 1, 218, 1, 219 ); \
10178 : GF_MUL22( in73, in105, 1, 218, 1, 219 ); \
10179 : GF_MUL22( in74, in106, 1, 218, 1, 219 ); \
10180 : GF_MUL22( in75, in107, 1, 218, 1, 219 ); \
10181 : GF_MUL22( in76, in108, 1, 218, 1, 219 ); \
10182 : GF_MUL22( in77, in109, 1, 218, 1, 219 ); \
10183 : GF_MUL22( in78, in110, 1, 218, 1, 219 ); \
10184 : GF_MUL22( in79, in111, 1, 218, 1, 219 ); \
10185 : GF_MUL22( in80, in112, 1, 218, 1, 219 ); \
10186 : GF_MUL22( in81, in113, 1, 218, 1, 219 ); \
10187 : GF_MUL22( in82, in114, 1, 218, 1, 219 ); \
10188 : GF_MUL22( in83, in115, 1, 218, 1, 219 ); \
10189 : GF_MUL22( in84, in116, 1, 218, 1, 219 ); \
10190 : GF_MUL22( in85, in117, 1, 218, 1, 219 ); \
10191 : GF_MUL22( in86, in118, 1, 218, 1, 219 ); \
10192 : GF_MUL22( in87, in119, 1, 218, 1, 219 ); \
10193 : GF_MUL22( in88, in120, 1, 218, 1, 219 ); \
10194 : GF_MUL22( in89, in121, 1, 218, 1, 219 ); \
10195 : GF_MUL22( in90, in122, 1, 218, 1, 219 ); \
10196 : GF_MUL22( in91, in123, 1, 218, 1, 219 ); \
10197 : GF_MUL22( in92, in124, 1, 218, 1, 219 ); \
10198 : GF_MUL22( in93, in125, 1, 218, 1, 219 ); \
10199 : GF_MUL22( in94, in126, 1, 218, 1, 219 ); \
10200 : GF_MUL22( in95, in127, 1, 218, 1, 219 ); \
10201 : scratch_16 = in80; \
10202 : in80 = GF_MUL( in80, 1 ); \
10203 : scratch_17 = in81; \
10204 : in81 = GF_MUL( in81, 1 ); \
10205 : scratch_18 = in82; \
10206 : in82 = GF_MUL( in82, 1 ); \
10207 : scratch_19 = in83; \
10208 : in83 = GF_MUL( in83, 1 ); \
10209 : GF_MUL22( in68, in84, 1, 189, 1, 188 ); \
10210 : GF_MUL22( in69, in85, 1, 189, 1, 188 ); \
10211 : GF_MUL22( in70, in86, 1, 189, 1, 188 ); \
10212 : GF_MUL22( in71, in87, 1, 189, 1, 188 ); \
10213 : GF_MUL22( in72, in88, 1, 189, 1, 188 ); \
10214 : GF_MUL22( in73, in89, 1, 189, 1, 188 ); \
10215 : GF_MUL22( in74, in90, 1, 189, 1, 188 ); \
10216 : GF_MUL22( in75, in91, 1, 189, 1, 188 ); \
10217 : GF_MUL22( in76, in92, 1, 189, 1, 188 ); \
10218 : GF_MUL22( in77, in93, 1, 189, 1, 188 ); \
10219 : GF_MUL22( in78, in94, 1, 189, 1, 188 ); \
10220 : GF_MUL22( in79, in95, 1, 189, 1, 188 ); \
10221 : scratch_8 = in72; \
10222 : in72 = GF_MUL( in72, 1 ); \
10223 : scratch_9 = in73; \
10224 : in73 = GF_MUL( in73, 1 ); \
10225 : scratch_10 = in74; \
10226 : in74 = GF_MUL( in74, 1 ); \
10227 : scratch_11 = in75; \
10228 : in75 = GF_MUL( in75, 1 ); \
10229 : GF_MUL22( in68, in76, 1, 33, 1, 32 ); \
10230 : GF_MUL22( in69, in77, 1, 33, 1, 32 ); \
10231 : GF_MUL22( in70, in78, 1, 33, 1, 32 ); \
10232 : GF_MUL22( in71, in79, 1, 33, 1, 32 ); \
10233 : scratch_4 = in68; \
10234 : in68 = GF_MUL( in68, 1 ); \
10235 : scratch_5 = in69; \
10236 : in69 = GF_MUL( in69, 1 ); \
10237 : scratch_6 = in70; \
10238 : in70 = GF_MUL( in70, 1 ); \
10239 : scratch_7 = in71; \
10240 : in71 = GF_MUL( in71, 1 ); \
10241 : FD_REEDSOL_GENERATE_IFFT( 4, 64, in64, in65, in66, in67 ); \
10242 : in68 = GF_ADD( GF_MUL( in64, 1 ), in68 ); \
10243 : in69 = GF_ADD( GF_MUL( in65, 1 ), in69 ); \
10244 : in70 = GF_ADD( GF_MUL( in66, 1 ), in70 ); \
10245 : in71 = GF_ADD( GF_MUL( in67, 1 ), in71 ); \
10246 : FD_REEDSOL_GENERATE_FFT( 4, 68, in68, in69, in70, in71 ); \
10247 : in64 = GF_MUL( in64, 1 ); \
10248 : in64 = GF_ADD( GF_MUL( scratch_4, 183 ), in64 ); \
10249 : in65 = GF_MUL( in65, 1 ); \
10250 : in65 = GF_ADD( GF_MUL( scratch_5, 183 ), in65 ); \
10251 : in66 = GF_MUL( in66, 1 ); \
10252 : in66 = GF_ADD( GF_MUL( scratch_6, 183 ), in66 ); \
10253 : in67 = GF_MUL( in67, 1 ); \
10254 : in67 = GF_ADD( GF_MUL( scratch_7, 183 ), in67 ); \
10255 : in72 = GF_ADD( GF_MUL( in64, 1 ), in72 ); \
10256 : in73 = GF_ADD( GF_MUL( in65, 1 ), in73 ); \
10257 : in74 = GF_ADD( GF_MUL( in66, 1 ), in74 ); \
10258 : in75 = GF_ADD( GF_MUL( in67, 1 ), in75 ); \
10259 : FD_REEDSOL_GENERATE_FFT( 8, 72, in72, in73, in74, in75, in76, in77, in78, in79 ); \
10260 : in64 = GF_MUL( in64, 1 ); \
10261 : in64 = GF_ADD( GF_MUL( scratch_8, 33 ), in64 ); \
10262 : in65 = GF_MUL( in65, 1 ); \
10263 : in65 = GF_ADD( GF_MUL( scratch_9, 33 ), in65 ); \
10264 : in66 = GF_MUL( in66, 1 ); \
10265 : in66 = GF_ADD( GF_MUL( scratch_10, 33 ), in66 ); \
10266 : in67 = GF_MUL( in67, 1 ); \
10267 : in67 = GF_ADD( GF_MUL( scratch_11, 33 ), in67 ); \
10268 : in80 = GF_ADD( GF_MUL( in64, 1 ), in80 ); \
10269 : in81 = GF_ADD( GF_MUL( in65, 1 ), in81 ); \
10270 : in82 = GF_ADD( GF_MUL( in66, 1 ), in82 ); \
10271 : in83 = GF_ADD( GF_MUL( in67, 1 ), in83 ); \
10272 : FD_REEDSOL_GENERATE_FFT( 16, 80, in80, in81, in82, in83, in84, in85, in86, in87, in88, in89, in90, in91, in92, in93, in94, in95 ); \
10273 : in64 = GF_MUL( in64, 1 ); \
10274 : in64 = GF_ADD( GF_MUL( scratch_16, 189 ), in64 ); \
10275 : in65 = GF_MUL( in65, 1 ); \
10276 : in65 = GF_ADD( GF_MUL( scratch_17, 189 ), in65 ); \
10277 : in66 = GF_MUL( in66, 1 ); \
10278 : in66 = GF_ADD( GF_MUL( scratch_18, 189 ), in66 ); \
10279 : in67 = GF_MUL( in67, 1 ); \
10280 : in67 = GF_ADD( GF_MUL( scratch_19, 189 ), in67 ); \
10281 : in96 = GF_ADD( GF_MUL( in64, 1 ), in96 ); \
10282 : in97 = GF_ADD( GF_MUL( in65, 1 ), in97 ); \
10283 : in98 = GF_ADD( GF_MUL( in66, 1 ), in98 ); \
10284 : in99 = GF_ADD( GF_MUL( in67, 1 ), in99 ); \
10285 : FD_REEDSOL_GENERATE_FFT( 32, 96, in96, in97, in98, in99, in100, in101, in102, in103, in104, in105, in106, in107, in108, in109, in110, in111, in112, in113, in114, in115, in116, in117, in118, in119, in120, in121, in122, in123, in124, in125, in126, in127 ); \
10286 : in64 = GF_MUL( in64, 1 ); \
10287 : in64 = GF_ADD( GF_MUL( scratch_32, 218 ), in64 ); \
10288 : in65 = GF_MUL( in65, 1 ); \
10289 : in65 = GF_ADD( GF_MUL( scratch_33, 218 ), in65 ); \
10290 : in66 = GF_MUL( in66, 1 ); \
10291 : in66 = GF_ADD( GF_MUL( scratch_34, 218 ), in66 ); \
10292 : in67 = GF_MUL( in67, 1 ); \
10293 : in67 = GF_ADD( GF_MUL( scratch_35, 218 ), in67 ); \
10294 : GF_MUL22( in00, in64, 1, 0, 1, 1 ); \
10295 : GF_MUL22( in01, in65, 1, 0, 1, 1 ); \
10296 : GF_MUL22( in02, in66, 1, 0, 1, 1 ); \
10297 : GF_MUL22( in03, in67, 1, 0, 1, 1 ); \
10298 : in04 = GF_MUL( in04, 1 ); \
10299 : in04 = GF_ADD( GF_MUL( scratch_68, 0 ), in04 ); \
10300 : in05 = GF_MUL( in05, 1 ); \
10301 : in05 = GF_ADD( GF_MUL( scratch_69, 0 ), in05 ); \
10302 : in06 = GF_MUL( in06, 1 ); \
10303 : in06 = GF_ADD( GF_MUL( scratch_70, 0 ), in06 ); \
10304 : in07 = GF_MUL( in07, 1 ); \
10305 : in07 = GF_ADD( GF_MUL( scratch_71, 0 ), in07 ); \
10306 : in08 = GF_MUL( in08, 1 ); \
10307 : in08 = GF_ADD( GF_MUL( scratch_72, 0 ), in08 ); \
10308 : in09 = GF_MUL( in09, 1 ); \
10309 : in09 = GF_ADD( GF_MUL( scratch_73, 0 ), in09 ); \
10310 : in10 = GF_MUL( in10, 1 ); \
10311 : in10 = GF_ADD( GF_MUL( scratch_74, 0 ), in10 ); \
10312 : in11 = GF_MUL( in11, 1 ); \
10313 : in11 = GF_ADD( GF_MUL( scratch_75, 0 ), in11 ); \
10314 : in12 = GF_MUL( in12, 1 ); \
10315 : in12 = GF_ADD( GF_MUL( scratch_76, 0 ), in12 ); \
10316 : in13 = GF_MUL( in13, 1 ); \
10317 : in13 = GF_ADD( GF_MUL( scratch_77, 0 ), in13 ); \
10318 : in14 = GF_MUL( in14, 1 ); \
10319 : in14 = GF_ADD( GF_MUL( scratch_78, 0 ), in14 ); \
10320 : in15 = GF_MUL( in15, 1 ); \
10321 : in15 = GF_ADD( GF_MUL( scratch_79, 0 ), in15 ); \
10322 : in16 = GF_MUL( in16, 1 ); \
10323 : in16 = GF_ADD( GF_MUL( scratch_80, 0 ), in16 ); \
10324 : in17 = GF_MUL( in17, 1 ); \
10325 : in17 = GF_ADD( GF_MUL( scratch_81, 0 ), in17 ); \
10326 : in18 = GF_MUL( in18, 1 ); \
10327 : in18 = GF_ADD( GF_MUL( scratch_82, 0 ), in18 ); \
10328 : in19 = GF_MUL( in19, 1 ); \
10329 : in19 = GF_ADD( GF_MUL( scratch_83, 0 ), in19 ); \
10330 : in20 = GF_MUL( in20, 1 ); \
10331 : in20 = GF_ADD( GF_MUL( scratch_84, 0 ), in20 ); \
10332 : in21 = GF_MUL( in21, 1 ); \
10333 : in21 = GF_ADD( GF_MUL( scratch_85, 0 ), in21 ); \
10334 : in22 = GF_MUL( in22, 1 ); \
10335 : in22 = GF_ADD( GF_MUL( scratch_86, 0 ), in22 ); \
10336 : in23 = GF_MUL( in23, 1 ); \
10337 : in23 = GF_ADD( GF_MUL( scratch_87, 0 ), in23 ); \
10338 : in24 = GF_MUL( in24, 1 ); \
10339 : in24 = GF_ADD( GF_MUL( scratch_88, 0 ), in24 ); \
10340 : in25 = GF_MUL( in25, 1 ); \
10341 : in25 = GF_ADD( GF_MUL( scratch_89, 0 ), in25 ); \
10342 : in26 = GF_MUL( in26, 1 ); \
10343 : in26 = GF_ADD( GF_MUL( scratch_90, 0 ), in26 ); \
10344 : in27 = GF_MUL( in27, 1 ); \
10345 : in27 = GF_ADD( GF_MUL( scratch_91, 0 ), in27 ); \
10346 : in28 = GF_MUL( in28, 1 ); \
10347 : in28 = GF_ADD( GF_MUL( scratch_92, 0 ), in28 ); \
10348 : in29 = GF_MUL( in29, 1 ); \
10349 : in29 = GF_ADD( GF_MUL( scratch_93, 0 ), in29 ); \
10350 : in30 = GF_MUL( in30, 1 ); \
10351 : in30 = GF_ADD( GF_MUL( scratch_94, 0 ), in30 ); \
10352 : in31 = GF_MUL( in31, 1 ); \
10353 : in31 = GF_ADD( GF_MUL( scratch_95, 0 ), in31 ); \
10354 : in32 = GF_MUL( in32, 1 ); \
10355 : in32 = GF_ADD( GF_MUL( scratch_96, 0 ), in32 ); \
10356 : in33 = GF_MUL( in33, 1 ); \
10357 : in33 = GF_ADD( GF_MUL( scratch_97, 0 ), in33 ); \
10358 : in34 = GF_MUL( in34, 1 ); \
10359 : in34 = GF_ADD( GF_MUL( scratch_98, 0 ), in34 ); \
10360 : in35 = GF_MUL( in35, 1 ); \
10361 : in35 = GF_ADD( GF_MUL( scratch_99, 0 ), in35 ); \
10362 : in36 = GF_MUL( in36, 1 ); \
10363 : in36 = GF_ADD( GF_MUL( scratch_100, 0 ), in36 ); \
10364 : in37 = GF_MUL( in37, 1 ); \
10365 : in37 = GF_ADD( GF_MUL( scratch_101, 0 ), in37 ); \
10366 : in38 = GF_MUL( in38, 1 ); \
10367 : in38 = GF_ADD( GF_MUL( scratch_102, 0 ), in38 ); \
10368 : in39 = GF_MUL( in39, 1 ); \
10369 : in39 = GF_ADD( GF_MUL( scratch_103, 0 ), in39 ); \
10370 : in40 = GF_MUL( in40, 1 ); \
10371 : in40 = GF_ADD( GF_MUL( scratch_104, 0 ), in40 ); \
10372 : in41 = GF_MUL( in41, 1 ); \
10373 : in41 = GF_ADD( GF_MUL( scratch_105, 0 ), in41 ); \
10374 : in42 = GF_MUL( in42, 1 ); \
10375 : in42 = GF_ADD( GF_MUL( scratch_106, 0 ), in42 ); \
10376 : in43 = GF_MUL( in43, 1 ); \
10377 : in43 = GF_ADD( GF_MUL( scratch_107, 0 ), in43 ); \
10378 : in44 = GF_MUL( in44, 1 ); \
10379 : in44 = GF_ADD( GF_MUL( scratch_108, 0 ), in44 ); \
10380 : in45 = GF_MUL( in45, 1 ); \
10381 : in45 = GF_ADD( GF_MUL( scratch_109, 0 ), in45 ); \
10382 : in46 = GF_MUL( in46, 1 ); \
10383 : in46 = GF_ADD( GF_MUL( scratch_110, 0 ), in46 ); \
10384 : in47 = GF_MUL( in47, 1 ); \
10385 : in47 = GF_ADD( GF_MUL( scratch_111, 0 ), in47 ); \
10386 : in48 = GF_MUL( in48, 1 ); \
10387 : in48 = GF_ADD( GF_MUL( scratch_112, 0 ), in48 ); \
10388 : in49 = GF_MUL( in49, 1 ); \
10389 : in49 = GF_ADD( GF_MUL( scratch_113, 0 ), in49 ); \
10390 : in50 = GF_MUL( in50, 1 ); \
10391 : in50 = GF_ADD( GF_MUL( scratch_114, 0 ), in50 ); \
10392 : in51 = GF_MUL( in51, 1 ); \
10393 : in51 = GF_ADD( GF_MUL( scratch_115, 0 ), in51 ); \
10394 : in52 = GF_MUL( in52, 1 ); \
10395 : in52 = GF_ADD( GF_MUL( scratch_116, 0 ), in52 ); \
10396 : in53 = GF_MUL( in53, 1 ); \
10397 : in53 = GF_ADD( GF_MUL( scratch_117, 0 ), in53 ); \
10398 : in54 = GF_MUL( in54, 1 ); \
10399 : in54 = GF_ADD( GF_MUL( scratch_118, 0 ), in54 ); \
10400 : in55 = GF_MUL( in55, 1 ); \
10401 : in55 = GF_ADD( GF_MUL( scratch_119, 0 ), in55 ); \
10402 : in56 = GF_MUL( in56, 1 ); \
10403 : in56 = GF_ADD( GF_MUL( scratch_120, 0 ), in56 ); \
10404 : in57 = GF_MUL( in57, 1 ); \
10405 : in57 = GF_ADD( GF_MUL( scratch_121, 0 ), in57 ); \
10406 : in58 = GF_MUL( in58, 1 ); \
10407 : in58 = GF_ADD( GF_MUL( scratch_122, 0 ), in58 ); \
10408 : in59 = GF_MUL( in59, 1 ); \
10409 : in59 = GF_ADD( GF_MUL( scratch_123, 0 ), in59 ); \
10410 : in60 = GF_MUL( in60, 1 ); \
10411 : in60 = GF_ADD( GF_MUL( scratch_124, 0 ), in60 ); \
10412 : in61 = GF_MUL( in61, 1 ); \
10413 : in61 = GF_ADD( GF_MUL( scratch_125, 0 ), in61 ); \
10414 : in62 = GF_MUL( in62, 1 ); \
10415 : in62 = GF_ADD( GF_MUL( scratch_126, 0 ), in62 ); \
10416 : in63 = GF_MUL( in63, 1 ); \
10417 : in63 = GF_ADD( GF_MUL( scratch_127, 0 ), in63 ); \
10418 : } while( 0 )
10419 :
10420 : #endif /* HEADER_fd_src_ballet_reedsol_fd_reedsol_ppt_h */
|