To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

The primary repository for this project is hosted at https://github.com/sonic-visualiser/sv-dependency-builds .
This repository is a read-only copy which is updated automatically every hour.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / src / fftw-3.3.8 / dft / scalar / codelets / t2_25.c @ 167:bd3cc4d1df30

History | View | Annotate | Download (51.7 KB)

1
/*
2
 * Copyright (c) 2003, 2007-14 Matteo Frigo
3
 * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
4
 *
5
 * This program is free software; you can redistribute it and/or modify
6
 * it under the terms of the GNU General Public License as published by
7
 * the Free Software Foundation; either version 2 of the License, or
8
 * (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
18
 *
19
 */
20

    
21
/* This file was automatically generated --- DO NOT EDIT */
22
/* Generated on Thu May 24 08:04:27 EDT 2018 */
23

    
24
#include "dft/codelet-dft.h"
25

    
26
#if defined(ARCH_PREFERS_FMA) || defined(ISA_EXTENSION_PREFERS_FMA)
27

    
28
/* Generated by: ../../../genfft/gen_twiddle.native -fma -compact -variables 4 -pipeline-latency 4 -twiddle-log3 -precompute-twiddles -n 25 -name t2_25 -include dft/scalar/t.h */
29

    
30
/*
31
 * This function contains 440 FP additions, 434 FP multiplications,
32
 * (or, 84 additions, 78 multiplications, 356 fused multiply/add),
33
 * 186 stack variables, 47 constants, and 100 memory accesses
34
 */
35
#include "dft/scalar/t.h"
36

    
37
static void t2_25(R *ri, R *ii, const R *W, stride rs, INT mb, INT me, INT ms)
38
{
39
     DK(KP860541664, +0.860541664367944677098261680920518816412804187);
40
     DK(KP560319534, +0.560319534973832390111614715371676131169633784);
41
     DK(KP681693190, +0.681693190061530575150324149145440022633095390);
42
     DK(KP949179823, +0.949179823508441261575555465843363271711583843);
43
     DK(KP557913902, +0.557913902031834264187699648465567037992437152);
44
     DK(KP249506682, +0.249506682107067890488084201715862638334226305);
45
     DK(KP614372930, +0.614372930789563808870829930444362096004872855);
46
     DK(KP621716863, +0.621716863012209892444754556304102309693593202);
47
     DK(KP998026728, +0.998026728428271561952336806863450553336905220);
48
     DK(KP906616052, +0.906616052148196230441134447086066874408359177);
49
     DK(KP845997307, +0.845997307939530944175097360758058292389769300);
50
     DK(KP968479752, +0.968479752739016373193524836781420152702090879);
51
     DK(KP994076283, +0.994076283785401014123185814696322018529298887);
52
     DK(KP772036680, +0.772036680810363904029489473607579825330539880);
53
     DK(KP734762448, +0.734762448793050413546343770063151342619912334);
54
     DK(KP062914667, +0.062914667253649757225485955897349402364686947);
55
     DK(KP943557151, +0.943557151597354104399655195398983005179443399);
56
     DK(KP803003575, +0.803003575438660414833440593570376004635464850);
57
     DK(KP554608978, +0.554608978404018097464974850792216217022558774);
58
     DK(KP248028675, +0.248028675328619457762448260696444630363259177);
59
     DK(KP525970792, +0.525970792408939708442463226536226366643874659);
60
     DK(KP726211448, +0.726211448929902658173535992263577167607493062);
61
     DK(KP833417178, +0.833417178328688677408962550243238843138996060);
62
     DK(KP921177326, +0.921177326965143320250447435415066029359282231);
63
     DK(KP541454447, +0.541454447536312777046285590082819509052033189);
64
     DK(KP242145790, +0.242145790282157779872542093866183953459003101);
65
     DK(KP683113946, +0.683113946453479238701949862233725244439656928);
66
     DK(KP559154169, +0.559154169276087864842202529084232643714075927);
67
     DK(KP992114701, +0.992114701314477831049793042785778521453036709);
68
     DK(KP968583161, +0.968583161128631119490168375464735813836012403);
69
     DK(KP851038619, +0.851038619207379630836264138867114231259902550);
70
     DK(KP912018591, +0.912018591466481957908415381764119056233607330);
71
     DK(KP912575812, +0.912575812670962425556968549836277086778922727);
72
     DK(KP470564281, +0.470564281212251493087595091036643380879947982);
73
     DK(KP827271945, +0.827271945972475634034355757144307982555673741);
74
     DK(KP126329378, +0.126329378446108174786050455341811215027378105);
75
     DK(KP904730450, +0.904730450839922351881287709692877908104763647);
76
     DK(KP831864738, +0.831864738706457140726048799369896829771167132);
77
     DK(KP871714437, +0.871714437527667770979999223229522602943903653);
78
     DK(KP549754652, +0.549754652192770074288023275540779861653779767);
79
     DK(KP634619297, +0.634619297544148100711287640319130485732531031);
80
     DK(KP939062505, +0.939062505817492352556001843133229685779824606);
81
     DK(KP256756360, +0.256756360367726783319498520922669048172391148);
82
     DK(KP951056516, +0.951056516295153572116439333379382143405698634);
83
     DK(KP559016994, +0.559016994374947424102293417182819058860154590);
84
     DK(KP250000000, +0.250000000000000000000000000000000000000000000);
85
     DK(KP618033988, +0.618033988749894848204586834365638117720309180);
86
     {
87
          INT m;
88
          for (m = mb, W = W + (mb * 8); m < me; m = m + 1, ri = ri + ms, ii = ii + ms, W = W + 8, MAKE_VOLATILE_STRIDE(50, rs)) {
89
               E T2, T8, T3, T6, Tk, Tm, T5, T7, T19, Tb, T1b, Tc, Tw, TT, T1j;
90
               E TE, T2p, T1c, T2U, TI, T11, T15, T2Q, T2M, T2m, T2i, T2e, Tn, Tr, TX;
91
               E T31, T35, T1l, T1m, T1q, TA, T1K, T1O, T2a, T27, T1g, T2x, T2t, Th, Td;
92
               E T1S, T2X, T1W;
93
               {
94
                    E TS, TD, T2L, T10, TH, T2P, T14, T9, T1a, Tz, TW, T4, Ta, Tv, T1J;
95
                    E T1N;
96
                    T2 = W[0];
97
                    T8 = W[4];
98
                    T3 = W[2];
99
                    T6 = W[3];
100
                    T4 = T2 * T3;
101
                    TS = T3 * T8;
102
                    Ta = T2 * T6;
103
                    Tv = T2 * T8;
104
                    Tk = W[6];
105
                    TD = T8 * Tk;
106
                    T2L = T2 * Tk;
107
                    T10 = T3 * Tk;
108
                    Tm = W[7];
109
                    TH = T8 * Tm;
110
                    T2P = T2 * Tm;
111
                    T14 = T3 * Tm;
112
                    T5 = W[1];
113
                    T7 = FNMS(T5, T6, T4);
114
                    T19 = FMA(T5, T6, T4);
115
                    T9 = T7 * T8;
116
                    T1a = T19 * T8;
117
                    Tb = FMA(T5, T3, Ta);
118
                    T1b = FNMS(T5, T3, Ta);
119
                    Tc = W[5];
120
                    Tz = T2 * Tc;
121
                    TW = T3 * Tc;
122
                    Tw = FNMS(T5, Tc, Tv);
123
                    TT = FMA(T6, Tc, TS);
124
                    T1j = FMA(T5, Tc, Tv);
125
                    TE = FMA(Tc, Tm, TD);
126
                    T2p = FMA(T6, T8, TW);
127
                    T1c = FNMS(T1b, Tc, T1a);
128
                    T2U = FNMS(Tb, Tc, T9);
129
                    TI = FNMS(Tc, Tk, TH);
130
                    T11 = FMA(T6, Tm, T10);
131
                    T15 = FNMS(T6, Tk, T14);
132
                    T2Q = FNMS(T5, Tk, T2P);
133
                    T2M = FMA(T5, Tm, T2L);
134
                    {
135
                         E T2h, T2d, Tl, Tq;
136
                         T2m = FNMS(T6, Tc, TS);
137
                         T2h = T19 * Tm;
138
                         T2i = FNMS(T1b, Tk, T2h);
139
                         T2d = T19 * Tk;
140
                         T2e = FMA(T1b, Tm, T2d);
141
                         Tl = T7 * Tk;
142
                         Tn = FMA(Tb, Tm, Tl);
143
                         Tq = T7 * Tm;
144
                         Tr = FNMS(Tb, Tk, Tq);
145
                    }
146
                    {
147
                         E T30, T34, T1k, T1p;
148
                         T30 = TT * Tk;
149
                         T34 = TT * Tm;
150
                         TX = FNMS(T6, T8, TW);
151
                         T31 = FMA(TX, Tm, T30);
152
                         T35 = FNMS(TX, Tk, T34);
153
                         T1k = T1j * Tk;
154
                         T1p = T1j * Tm;
155
                         T1l = FNMS(T5, T8, Tz);
156
                         T1m = FMA(T1l, Tm, T1k);
157
                         T1q = FNMS(T1l, Tk, T1p);
158
                    }
159
                    T1J = Tw * Tk;
160
                    T1N = Tw * Tm;
161
                    TA = FMA(T5, T8, Tz);
162
                    T1K = FMA(TA, Tm, T1J);
163
                    T1O = FNMS(TA, Tk, T1N);
164
                    {
165
                         E T1f, T2s, T2w, Tg, T1R, T1V;
166
                         T1f = T19 * Tc;
167
                         T2a = FNMS(T1b, T8, T1f);
168
                         T27 = FMA(T1b, Tc, T1a);
169
                         T2s = T27 * Tk;
170
                         T2w = T27 * Tm;
171
                         T1g = FMA(T1b, T8, T1f);
172
                         T2x = FNMS(T2a, Tk, T2w);
173
                         T2t = FMA(T2a, Tm, T2s);
174
                         Tg = T7 * Tc;
175
                         Th = FNMS(Tb, T8, Tg);
176
                         Td = FMA(Tb, Tc, T9);
177
                         T1R = Td * Tk;
178
                         T1V = Td * Tm;
179
                         T1S = FMA(Th, Tm, T1R);
180
                         T2X = FMA(Tb, T8, Tg);
181
                         T1W = FNMS(Th, Tk, T1V);
182
                    }
183
               }
184
               {
185
                    E T1, T7r, T4s, T6a, T7G, T86, TM, T4f, T4g, T7q, T7B, T7C, T5j, T6n, T5q;
186
                    E T6k, T3a, T6m, T5g, T4a, T6j, T5n, T4z, T6z, T4G, T6C, T1v, T6y, T4w, T3t;
187
                    E T6B, T4D, T4O, T6v, T4V, T6s, T21, T6r, T4S, T3H, T6u, T4L, T54, T6g, T5b;
188
                    E T6d, T2C, T6f, T51, T3W, T6c, T58;
189
                    {
190
                         E Tj, T4j, TK, T4q, TC, T4o, Tt, T4l;
191
                         T1 = ri[0];
192
                         T7r = ii[0];
193
                         {
194
                              E Te, Tf, Ti, T4i;
195
                              Te = ri[WS(rs, 5)];
196
                              Tf = Td * Te;
197
                              Ti = ii[WS(rs, 5)];
198
                              T4i = Td * Ti;
199
                              Tj = FMA(Th, Ti, Tf);
200
                              T4j = FNMS(Th, Te, T4i);
201
                         }
202
                         {
203
                              E TF, TG, TJ, T4p;
204
                              TF = ri[WS(rs, 15)];
205
                              TG = TE * TF;
206
                              TJ = ii[WS(rs, 15)];
207
                              T4p = TE * TJ;
208
                              TK = FMA(TI, TJ, TG);
209
                              T4q = FNMS(TI, TF, T4p);
210
                         }
211
                         {
212
                              E Tx, Ty, TB, T4n;
213
                              Tx = ri[WS(rs, 10)];
214
                              Ty = Tw * Tx;
215
                              TB = ii[WS(rs, 10)];
216
                              T4n = Tw * TB;
217
                              TC = FMA(TA, TB, Ty);
218
                              T4o = FNMS(TA, Tx, T4n);
219
                         }
220
                         {
221
                              E To, Tp, Ts, T4k;
222
                              To = ri[WS(rs, 20)];
223
                              Tp = Tn * To;
224
                              Ts = ii[WS(rs, 20)];
225
                              T4k = Tn * Ts;
226
                              Tt = FMA(Tr, Ts, Tp);
227
                              T4l = FNMS(Tr, To, T4k);
228
                         }
229
                         {
230
                              E T4m, T4r, T7E, T7F;
231
                              T4m = T4j - T4l;
232
                              T4r = T4o - T4q;
233
                              T4s = FMA(KP618033988, T4r, T4m);
234
                              T6a = FNMS(KP618033988, T4m, T4r);
235
                              T7E = Tj - Tt;
236
                              T7F = TC - TK;
237
                              T7G = FMA(KP618033988, T7F, T7E);
238
                              T86 = FNMS(KP618033988, T7E, T7F);
239
                         }
240
                         {
241
                              E Tu, TL, T7o, T7p;
242
                              Tu = Tj + Tt;
243
                              TL = TC + TK;
244
                              TM = Tu + TL;
245
                              T4f = FNMS(KP250000000, TM, T1);
246
                              T4g = Tu - TL;
247
                              T7o = T4j + T4l;
248
                              T7p = T4o + T4q;
249
                              T7q = T7o + T7p;
250
                              T7B = FNMS(KP250000000, T7q, T7r);
251
                              T7C = T7o - T7p;
252
                         }
253
                    }
254
                    {
255
                         E T2G, T3Y, T2Z, T37, T38, T45, T47, T48, T2K, T2S, T2T, T40, T42, T43;
256
                         {
257
                              E T2D, T2E, T2F, T3X;
258
                              T2D = ri[WS(rs, 3)];
259
                              T2E = T3 * T2D;
260
                              T2F = ii[WS(rs, 3)];
261
                              T3X = T3 * T2F;
262
                              T2G = FMA(T6, T2F, T2E);
263
                              T3Y = FNMS(T6, T2D, T3X);
264
                         }
265
                         {
266
                              E T2V, T2W, T2Y, T44, T32, T33, T36, T46;
267
                              T2V = ri[WS(rs, 13)];
268
                              T2W = T2U * T2V;
269
                              T2Y = ii[WS(rs, 13)];
270
                              T44 = T2U * T2Y;
271
                              T32 = ri[WS(rs, 18)];
272
                              T33 = T31 * T32;
273
                              T36 = ii[WS(rs, 18)];
274
                              T46 = T31 * T36;
275
                              T2Z = FMA(T2X, T2Y, T2W);
276
                              T37 = FMA(T35, T36, T33);
277
                              T38 = T2Z + T37;
278
                              T45 = FNMS(T2X, T2V, T44);
279
                              T47 = FNMS(T35, T32, T46);
280
                              T48 = T45 + T47;
281
                         }
282
                         {
283
                              E T2H, T2I, T2J, T3Z, T2N, T2O, T2R, T41;
284
                              T2H = ri[WS(rs, 8)];
285
                              T2I = T1j * T2H;
286
                              T2J = ii[WS(rs, 8)];
287
                              T3Z = T1j * T2J;
288
                              T2N = ri[WS(rs, 23)];
289
                              T2O = T2M * T2N;
290
                              T2R = ii[WS(rs, 23)];
291
                              T41 = T2M * T2R;
292
                              T2K = FMA(T1l, T2J, T2I);
293
                              T2S = FMA(T2Q, T2R, T2O);
294
                              T2T = T2K + T2S;
295
                              T40 = FNMS(T1l, T2H, T3Z);
296
                              T42 = FNMS(T2Q, T2N, T41);
297
                              T43 = T40 + T42;
298
                         }
299
                         {
300
                              E T5h, T5i, T5o, T5p;
301
                              T5h = T42 - T40;
302
                              T5i = T47 - T45;
303
                              T5j = FMA(KP618033988, T5i, T5h);
304
                              T6n = FNMS(KP618033988, T5h, T5i);
305
                              T5o = T2K - T2S;
306
                              T5p = T2Z - T37;
307
                              T5q = FMA(KP618033988, T5p, T5o);
308
                              T6k = FNMS(KP618033988, T5o, T5p);
309
                         }
310
                         {
311
                              E T5f, T39, T5e, T5m, T49, T5l;
312
                              T5f = T38 - T2T;
313
                              T39 = T2T + T38;
314
                              T5e = FNMS(KP250000000, T39, T2G);
315
                              T3a = T2G + T39;
316
                              T6m = FMA(KP559016994, T5f, T5e);
317
                              T5g = FNMS(KP559016994, T5f, T5e);
318
                              T5m = T48 - T43;
319
                              T49 = T43 + T48;
320
                              T5l = FNMS(KP250000000, T49, T3Y);
321
                              T4a = T3Y + T49;
322
                              T6j = FMA(KP559016994, T5m, T5l);
323
                              T5n = FNMS(KP559016994, T5m, T5l);
324
                         }
325
                    }
326
                    {
327
                         E TR, T3h, T1i, T1s, T1t, T3o, T3q, T3r, TZ, T17, T18, T3j, T3l, T3m;
328
                         {
329
                              E TO, TP, TQ, T3g;
330
                              TO = ri[WS(rs, 1)];
331
                              TP = T2 * TO;
332
                              TQ = ii[WS(rs, 1)];
333
                              T3g = T2 * TQ;
334
                              TR = FMA(T5, TQ, TP);
335
                              T3h = FNMS(T5, TO, T3g);
336
                         }
337
                         {
338
                              E T1d, T1e, T1h, T3n, T1n, T1o, T1r, T3p;
339
                              T1d = ri[WS(rs, 11)];
340
                              T1e = T1c * T1d;
341
                              T1h = ii[WS(rs, 11)];
342
                              T3n = T1c * T1h;
343
                              T1n = ri[WS(rs, 16)];
344
                              T1o = T1m * T1n;
345
                              T1r = ii[WS(rs, 16)];
346
                              T3p = T1m * T1r;
347
                              T1i = FMA(T1g, T1h, T1e);
348
                              T1s = FMA(T1q, T1r, T1o);
349
                              T1t = T1i + T1s;
350
                              T3o = FNMS(T1g, T1d, T3n);
351
                              T3q = FNMS(T1q, T1n, T3p);
352
                              T3r = T3o + T3q;
353
                         }
354
                         {
355
                              E TU, TV, TY, T3i, T12, T13, T16, T3k;
356
                              TU = ri[WS(rs, 6)];
357
                              TV = TT * TU;
358
                              TY = ii[WS(rs, 6)];
359
                              T3i = TT * TY;
360
                              T12 = ri[WS(rs, 21)];
361
                              T13 = T11 * T12;
362
                              T16 = ii[WS(rs, 21)];
363
                              T3k = T11 * T16;
364
                              TZ = FMA(TX, TY, TV);
365
                              T17 = FMA(T15, T16, T13);
366
                              T18 = TZ + T17;
367
                              T3j = FNMS(TX, TU, T3i);
368
                              T3l = FNMS(T15, T12, T3k);
369
                              T3m = T3j + T3l;
370
                         }
371
                         {
372
                              E T4x, T4y, T4E, T4F;
373
                              T4x = T3j - T3l;
374
                              T4y = T3q - T3o;
375
                              T4z = FNMS(KP618033988, T4y, T4x);
376
                              T6z = FMA(KP618033988, T4x, T4y);
377
                              T4E = T17 - TZ;
378
                              T4F = T1s - T1i;
379
                              T4G = FMA(KP618033988, T4F, T4E);
380
                              T6C = FNMS(KP618033988, T4E, T4F);
381
                         }
382
                         {
383
                              E T4v, T1u, T4u, T4C, T3s, T4B;
384
                              T4v = T18 - T1t;
385
                              T1u = T18 + T1t;
386
                              T4u = FNMS(KP250000000, T1u, TR);
387
                              T1v = TR + T1u;
388
                              T6y = FNMS(KP559016994, T4v, T4u);
389
                              T4w = FMA(KP559016994, T4v, T4u);
390
                              T4C = T3m - T3r;
391
                              T3s = T3m + T3r;
392
                              T4B = FNMS(KP250000000, T3s, T3h);
393
                              T3t = T3h + T3s;
394
                              T6B = FNMS(KP559016994, T4C, T4B);
395
                              T4D = FMA(KP559016994, T4C, T4B);
396
                         }
397
                    }
398
                    {
399
                         E T1z, T3v, T1Q, T1Y, T1Z, T3C, T3E, T3F, T1D, T1H, T1I, T3x, T3z, T3A;
400
                         {
401
                              E T1w, T1x, T1y, T3u;
402
                              T1w = ri[WS(rs, 4)];
403
                              T1x = T7 * T1w;
404
                              T1y = ii[WS(rs, 4)];
405
                              T3u = T7 * T1y;
406
                              T1z = FMA(Tb, T1y, T1x);
407
                              T3v = FNMS(Tb, T1w, T3u);
408
                         }
409
                         {
410
                              E T1L, T1M, T1P, T3B, T1T, T1U, T1X, T3D;
411
                              T1L = ri[WS(rs, 14)];
412
                              T1M = T1K * T1L;
413
                              T1P = ii[WS(rs, 14)];
414
                              T3B = T1K * T1P;
415
                              T1T = ri[WS(rs, 19)];
416
                              T1U = T1S * T1T;
417
                              T1X = ii[WS(rs, 19)];
418
                              T3D = T1S * T1X;
419
                              T1Q = FMA(T1O, T1P, T1M);
420
                              T1Y = FMA(T1W, T1X, T1U);
421
                              T1Z = T1Q + T1Y;
422
                              T3C = FNMS(T1O, T1L, T3B);
423
                              T3E = FNMS(T1W, T1T, T3D);
424
                              T3F = T3C + T3E;
425
                         }
426
                         {
427
                              E T1A, T1B, T1C, T3w, T1E, T1F, T1G, T3y;
428
                              T1A = ri[WS(rs, 9)];
429
                              T1B = T8 * T1A;
430
                              T1C = ii[WS(rs, 9)];
431
                              T3w = T8 * T1C;
432
                              T1E = ri[WS(rs, 24)];
433
                              T1F = Tk * T1E;
434
                              T1G = ii[WS(rs, 24)];
435
                              T3y = Tk * T1G;
436
                              T1D = FMA(Tc, T1C, T1B);
437
                              T1H = FMA(Tm, T1G, T1F);
438
                              T1I = T1D + T1H;
439
                              T3x = FNMS(Tc, T1A, T3w);
440
                              T3z = FNMS(Tm, T1E, T3y);
441
                              T3A = T3x + T3z;
442
                         }
443
                         {
444
                              E T4M, T4N, T4T, T4U;
445
                              T4M = T1H - T1D;
446
                              T4N = T1Y - T1Q;
447
                              T4O = FMA(KP618033988, T4N, T4M);
448
                              T6v = FNMS(KP618033988, T4M, T4N);
449
                              T4T = T3z - T3x;
450
                              T4U = T3E - T3C;
451
                              T4V = FMA(KP618033988, T4U, T4T);
452
                              T6s = FNMS(KP618033988, T4T, T4U);
453
                         }
454
                         {
455
                              E T4R, T20, T4Q, T4K, T3G, T4J;
456
                              T4R = T1I - T1Z;
457
                              T20 = T1I + T1Z;
458
                              T4Q = FNMS(KP250000000, T20, T1z);
459
                              T21 = T1z + T20;
460
                              T6r = FNMS(KP559016994, T4R, T4Q);
461
                              T4S = FMA(KP559016994, T4R, T4Q);
462
                              T4K = T3F - T3A;
463
                              T3G = T3A + T3F;
464
                              T4J = FNMS(KP250000000, T3G, T3v);
465
                              T3H = T3v + T3G;
466
                              T6u = FMA(KP559016994, T4K, T4J);
467
                              T4L = FNMS(KP559016994, T4K, T4J);
468
                         }
469
                    }
470
                    {
471
                         E T26, T3K, T2r, T2z, T2A, T3R, T3T, T3U, T2c, T2k, T2l, T3M, T3O, T3P;
472
                         {
473
                              E T23, T24, T25, T3J;
474
                              T23 = ri[WS(rs, 2)];
475
                              T24 = T19 * T23;
476
                              T25 = ii[WS(rs, 2)];
477
                              T3J = T19 * T25;
478
                              T26 = FMA(T1b, T25, T24);
479
                              T3K = FNMS(T1b, T23, T3J);
480
                         }
481
                         {
482
                              E T2n, T2o, T2q, T3Q, T2u, T2v, T2y, T3S;
483
                              T2n = ri[WS(rs, 12)];
484
                              T2o = T2m * T2n;
485
                              T2q = ii[WS(rs, 12)];
486
                              T3Q = T2m * T2q;
487
                              T2u = ri[WS(rs, 17)];
488
                              T2v = T2t * T2u;
489
                              T2y = ii[WS(rs, 17)];
490
                              T3S = T2t * T2y;
491
                              T2r = FMA(T2p, T2q, T2o);
492
                              T2z = FMA(T2x, T2y, T2v);
493
                              T2A = T2r + T2z;
494
                              T3R = FNMS(T2p, T2n, T3Q);
495
                              T3T = FNMS(T2x, T2u, T3S);
496
                              T3U = T3R + T3T;
497
                         }
498
                         {
499
                              E T28, T29, T2b, T3L, T2f, T2g, T2j, T3N;
500
                              T28 = ri[WS(rs, 7)];
501
                              T29 = T27 * T28;
502
                              T2b = ii[WS(rs, 7)];
503
                              T3L = T27 * T2b;
504
                              T2f = ri[WS(rs, 22)];
505
                              T2g = T2e * T2f;
506
                              T2j = ii[WS(rs, 22)];
507
                              T3N = T2e * T2j;
508
                              T2c = FMA(T2a, T2b, T29);
509
                              T2k = FMA(T2i, T2j, T2g);
510
                              T2l = T2c + T2k;
511
                              T3M = FNMS(T2a, T28, T3L);
512
                              T3O = FNMS(T2i, T2f, T3N);
513
                              T3P = T3M + T3O;
514
                         }
515
                         {
516
                              E T52, T53, T59, T5a;
517
                              T52 = T3O - T3M;
518
                              T53 = T3R - T3T;
519
                              T54 = FNMS(KP618033988, T53, T52);
520
                              T6g = FMA(KP618033988, T52, T53);
521
                              T59 = T2k - T2c;
522
                              T5a = T2z - T2r;
523
                              T5b = FMA(KP618033988, T5a, T59);
524
                              T6d = FNMS(KP618033988, T59, T5a);
525
                         }
526
                         {
527
                              E T50, T2B, T4Z, T57, T3V, T56;
528
                              T50 = T2A - T2l;
529
                              T2B = T2l + T2A;
530
                              T4Z = FNMS(KP250000000, T2B, T26);
531
                              T2C = T26 + T2B;
532
                              T6f = FMA(KP559016994, T50, T4Z);
533
                              T51 = FNMS(KP559016994, T50, T4Z);
534
                              T57 = T3U - T3P;
535
                              T3V = T3P + T3U;
536
                              T56 = FNMS(KP250000000, T3V, T3K);
537
                              T3W = T3K + T3V;
538
                              T6c = FMA(KP559016994, T57, T56);
539
                              T58 = FNMS(KP559016994, T57, T56);
540
                         }
541
                    }
542
                    {
543
                         E T4c, T4e, TN, T3c, T3d, T3e, T4d, T3f;
544
                         {
545
                              E T3I, T4b, T22, T3b;
546
                              T3I = T3t - T3H;
547
                              T4b = T3W - T4a;
548
                              T4c = FMA(KP618033988, T4b, T3I);
549
                              T4e = FNMS(KP618033988, T3I, T4b);
550
                              TN = T1 + TM;
551
                              T22 = T1v + T21;
552
                              T3b = T2C + T3a;
553
                              T3c = T22 + T3b;
554
                              T3d = FNMS(KP250000000, T3c, TN);
555
                              T3e = T22 - T3b;
556
                         }
557
                         ri[0] = TN + T3c;
558
                         T4d = FNMS(KP559016994, T3e, T3d);
559
                         ri[WS(rs, 10)] = FNMS(KP951056516, T4e, T4d);
560
                         ri[WS(rs, 15)] = FMA(KP951056516, T4e, T4d);
561
                         T3f = FMA(KP559016994, T3e, T3d);
562
                         ri[WS(rs, 20)] = FNMS(KP951056516, T4c, T3f);
563
                         ri[WS(rs, 5)] = FMA(KP951056516, T4c, T3f);
564
                    }
565
                    {
566
                         E T7y, T7A, T7s, T7n, T7t, T7u, T7z, T7v;
567
                         {
568
                              E T7w, T7x, T7l, T7m;
569
                              T7w = T1v - T21;
570
                              T7x = T2C - T3a;
571
                              T7y = FMA(KP618033988, T7x, T7w);
572
                              T7A = FNMS(KP618033988, T7w, T7x);
573
                              T7s = T7q + T7r;
574
                              T7l = T3t + T3H;
575
                              T7m = T3W + T4a;
576
                              T7n = T7l + T7m;
577
                              T7t = FNMS(KP250000000, T7n, T7s);
578
                              T7u = T7l - T7m;
579
                         }
580
                         ii[0] = T7n + T7s;
581
                         T7z = FNMS(KP559016994, T7u, T7t);
582
                         ii[WS(rs, 10)] = FMA(KP951056516, T7A, T7z);
583
                         ii[WS(rs, 15)] = FNMS(KP951056516, T7A, T7z);
584
                         T7v = FMA(KP559016994, T7u, T7t);
585
                         ii[WS(rs, 5)] = FNMS(KP951056516, T7y, T7v);
586
                         ii[WS(rs, 20)] = FMA(KP951056516, T7y, T7v);
587
                    }
588
                    {
589
                         E T4t, T5H, T7H, T7T, T5A, T5D, T7P, T7O, T7I, T7J, T7K, T4Y, T5t, T5u, T62;
590
                         E T65, T81, T80, T7U, T7V, T7W, T5O, T5V, T5W, T4h, T7D;
591
                         T4h = FMA(KP559016994, T4g, T4f);
592
                         T4t = FMA(KP951056516, T4s, T4h);
593
                         T5H = FNMS(KP951056516, T4s, T4h);
594
                         T7D = FMA(KP559016994, T7C, T7B);
595
                         T7H = FNMS(KP951056516, T7G, T7D);
596
                         T7T = FMA(KP951056516, T7G, T7D);
597
                         {
598
                              E T4I, T5y, T5s, T5C, T4X, T5z, T5d, T5B;
599
                              {
600
                                   E T4A, T4H, T5k, T5r;
601
                                   T4A = FMA(KP951056516, T4z, T4w);
602
                                   T4H = FMA(KP951056516, T4G, T4D);
603
                                   T4I = FMA(KP256756360, T4H, T4A);
604
                                   T5y = FNMS(KP256756360, T4A, T4H);
605
                                   T5k = FNMS(KP951056516, T5j, T5g);
606
                                   T5r = FNMS(KP951056516, T5q, T5n);
607
                                   T5s = FMA(KP939062505, T5r, T5k);
608
                                   T5C = FNMS(KP939062505, T5k, T5r);
609
                              }
610
                              {
611
                                   E T4P, T4W, T55, T5c;
612
                                   T4P = FMA(KP951056516, T4O, T4L);
613
                                   T4W = FNMS(KP951056516, T4V, T4S);
614
                                   T4X = FMA(KP634619297, T4W, T4P);
615
                                   T5z = FNMS(KP634619297, T4P, T4W);
616
                                   T55 = FNMS(KP951056516, T54, T51);
617
                                   T5c = FMA(KP951056516, T5b, T58);
618
                                   T5d = FMA(KP549754652, T5c, T55);
619
                                   T5B = FNMS(KP549754652, T55, T5c);
620
                              }
621
                              T5A = FMA(KP871714437, T5z, T5y);
622
                              T5D = FNMS(KP831864738, T5C, T5B);
623
                              T7P = FNMS(KP831864738, T5s, T5d);
624
                              T7O = FNMS(KP871714437, T4X, T4I);
625
                              T7I = FNMS(KP871714437, T5z, T5y);
626
                              T7J = FMA(KP831864738, T5C, T5B);
627
                              T7K = FMA(KP904730450, T7J, T7I);
628
                              T4Y = FMA(KP871714437, T4X, T4I);
629
                              T5t = FMA(KP831864738, T5s, T5d);
630
                              T5u = FMA(KP904730450, T5t, T4Y);
631
                         }
632
                         {
633
                              E T5K, T63, T5U, T61, T5N, T64, T5R, T60;
634
                              {
635
                                   E T5I, T5J, T5S, T5T;
636
                                   T5I = FMA(KP951056516, T5j, T5g);
637
                                   T5J = FMA(KP951056516, T5q, T5n);
638
                                   T5K = FNMS(KP126329378, T5J, T5I);
639
                                   T63 = FMA(KP126329378, T5I, T5J);
640
                                   T5S = FNMS(KP951056516, T4O, T4L);
641
                                   T5T = FMA(KP951056516, T4V, T4S);
642
                                   T5U = FMA(KP827271945, T5T, T5S);
643
                                   T61 = FNMS(KP827271945, T5S, T5T);
644
                              }
645
                              {
646
                                   E T5L, T5M, T5P, T5Q;
647
                                   T5L = FNMS(KP951056516, T5b, T58);
648
                                   T5M = FMA(KP951056516, T54, T51);
649
                                   T5N = FNMS(KP470564281, T5M, T5L);
650
                                   T64 = FMA(KP470564281, T5L, T5M);
651
                                   T5P = FNMS(KP951056516, T4G, T4D);
652
                                   T5Q = FNMS(KP951056516, T4z, T4w);
653
                                   T5R = FMA(KP634619297, T5Q, T5P);
654
                                   T60 = FNMS(KP634619297, T5P, T5Q);
655
                              }
656
                              T62 = FMA(KP912575812, T61, T60);
657
                              T65 = FNMS(KP912018591, T64, T63);
658
                              T81 = FMA(KP912018591, T5N, T5K);
659
                              T80 = FMA(KP912575812, T5U, T5R);
660
                              T7U = FMA(KP912018591, T64, T63);
661
                              T7V = FNMS(KP912575812, T61, T60);
662
                              T7W = FMA(KP851038619, T7V, T7U);
663
                              T5O = FNMS(KP912018591, T5N, T5K);
664
                              T5V = FNMS(KP912575812, T5U, T5R);
665
                              T5W = FNMS(KP851038619, T5V, T5O);
666
                         }
667
                         ri[WS(rs, 1)] = FMA(KP968583161, T5u, T4t);
668
                         ii[WS(rs, 1)] = FMA(KP968583161, T7K, T7H);
669
                         ri[WS(rs, 4)] = FNMS(KP992114701, T5W, T5H);
670
                         ii[WS(rs, 4)] = FNMS(KP992114701, T7W, T7T);
671
                         {
672
                              E T5E, T5G, T5x, T5F, T5v, T5w;
673
                              T5E = FMA(KP559154169, T5D, T5A);
674
                              T5G = FNMS(KP683113946, T5A, T5D);
675
                              T5v = FNMS(KP242145790, T5u, T4t);
676
                              T5w = FNMS(KP904730450, T5t, T4Y);
677
                              T5x = FMA(KP541454447, T5w, T5v);
678
                              T5F = FNMS(KP541454447, T5w, T5v);
679
                              ri[WS(rs, 6)] = FMA(KP921177326, T5E, T5x);
680
                              ri[WS(rs, 16)] = FMA(KP833417178, T5G, T5F);
681
                              ri[WS(rs, 21)] = FNMS(KP921177326, T5E, T5x);
682
                              ri[WS(rs, 11)] = FNMS(KP833417178, T5G, T5F);
683
                         }
684
                         {
685
                              E T7Q, T7S, T7N, T7R, T7L, T7M;
686
                              T7Q = FMA(KP559154169, T7P, T7O);
687
                              T7S = FNMS(KP683113946, T7O, T7P);
688
                              T7L = FNMS(KP242145790, T7K, T7H);
689
                              T7M = FNMS(KP904730450, T7J, T7I);
690
                              T7N = FMA(KP541454447, T7M, T7L);
691
                              T7R = FNMS(KP541454447, T7M, T7L);
692
                              ii[WS(rs, 6)] = FNMS(KP921177326, T7Q, T7N);
693
                              ii[WS(rs, 16)] = FNMS(KP833417178, T7S, T7R);
694
                              ii[WS(rs, 21)] = FMA(KP921177326, T7Q, T7N);
695
                              ii[WS(rs, 11)] = FMA(KP833417178, T7S, T7R);
696
                         }
697
                         {
698
                              E T66, T68, T5Z, T67, T5X, T5Y;
699
                              T66 = FNMS(KP726211448, T65, T62);
700
                              T68 = FMA(KP525970792, T62, T65);
701
                              T5X = FMA(KP248028675, T5W, T5H);
702
                              T5Y = FMA(KP851038619, T5V, T5O);
703
                              T5Z = FMA(KP554608978, T5Y, T5X);
704
                              T67 = FNMS(KP554608978, T5Y, T5X);
705
                              ri[WS(rs, 9)] = FNMS(KP803003575, T66, T5Z);
706
                              ri[WS(rs, 19)] = FMA(KP943557151, T68, T67);
707
                              ri[WS(rs, 24)] = FMA(KP803003575, T66, T5Z);
708
                              ri[WS(rs, 14)] = FNMS(KP943557151, T68, T67);
709
                         }
710
                         {
711
                              E T82, T84, T7Z, T83, T7X, T7Y;
712
                              T82 = FMA(KP726211448, T81, T80);
713
                              T84 = FNMS(KP525970792, T80, T81);
714
                              T7X = FMA(KP248028675, T7W, T7T);
715
                              T7Y = FNMS(KP851038619, T7V, T7U);
716
                              T7Z = FMA(KP554608978, T7Y, T7X);
717
                              T83 = FNMS(KP554608978, T7Y, T7X);
718
                              ii[WS(rs, 9)] = FNMS(KP803003575, T82, T7Z);
719
                              ii[WS(rs, 19)] = FNMS(KP943557151, T84, T83);
720
                              ii[WS(rs, 24)] = FMA(KP803003575, T82, T7Z);
721
                              ii[WS(rs, 14)] = FMA(KP943557151, T84, T83);
722
                         }
723
                    }
724
                    {
725
                         E T6b, T6T, T87, T8j, T6M, T6P, T8r, T8q, T8k, T8l, T8m, T6q, T6F, T6G, T7e;
726
                         E T7h, T8f, T8e, T88, T89, T8a, T70, T77, T78, T69, T85;
727
                         T69 = FNMS(KP559016994, T4g, T4f);
728
                         T6b = FMA(KP951056516, T6a, T69);
729
                         T6T = FNMS(KP951056516, T6a, T69);
730
                         T85 = FNMS(KP559016994, T7C, T7B);
731
                         T87 = FMA(KP951056516, T86, T85);
732
                         T8j = FNMS(KP951056516, T86, T85);
733
                         {
734
                              E T6i, T6N, T6E, T6L, T6p, T6O, T6x, T6K;
735
                              {
736
                                   E T6e, T6h, T6A, T6D;
737
                                   T6e = FMA(KP951056516, T6d, T6c);
738
                                   T6h = FMA(KP951056516, T6g, T6f);
739
                                   T6i = FMA(KP062914667, T6h, T6e);
740
                                   T6N = FNMS(KP062914667, T6e, T6h);
741
                                   T6A = FNMS(KP951056516, T6z, T6y);
742
                                   T6D = FMA(KP951056516, T6C, T6B);
743
                                   T6E = FMA(KP939062505, T6D, T6A);
744
                                   T6L = FNMS(KP939062505, T6A, T6D);
745
                              }
746
                              {
747
                                   E T6l, T6o, T6t, T6w;
748
                                   T6l = FNMS(KP951056516, T6k, T6j);
749
                                   T6o = FNMS(KP951056516, T6n, T6m);
750
                                   T6p = FNMS(KP827271945, T6o, T6l);
751
                                   T6O = FMA(KP827271945, T6l, T6o);
752
                                   T6t = FNMS(KP951056516, T6s, T6r);
753
                                   T6w = FMA(KP951056516, T6v, T6u);
754
                                   T6x = FNMS(KP126329378, T6w, T6t);
755
                                   T6K = FMA(KP126329378, T6t, T6w);
756
                              }
757
                              T6M = FMA(KP734762448, T6L, T6K);
758
                              T6P = FNMS(KP772036680, T6O, T6N);
759
                              T8r = FNMS(KP772036680, T6p, T6i);
760
                              T8q = FMA(KP734762448, T6E, T6x);
761
                              T8k = FMA(KP772036680, T6O, T6N);
762
                              T8l = FNMS(KP734762448, T6L, T6K);
763
                              T8m = FMA(KP994076283, T8l, T8k);
764
                              T6q = FMA(KP772036680, T6p, T6i);
765
                              T6F = FNMS(KP734762448, T6E, T6x);
766
                              T6G = FNMS(KP994076283, T6F, T6q);
767
                         }
768
                         {
769
                              E T6W, T7f, T76, T7d, T6Z, T7g, T73, T7c;
770
                              {
771
                                   E T6U, T6V, T74, T75;
772
                                   T6U = FMA(KP951056516, T6k, T6j);
773
                                   T6V = FMA(KP951056516, T6n, T6m);
774
                                   T6W = FMA(KP062914667, T6V, T6U);
775
                                   T7f = FNMS(KP062914667, T6U, T6V);
776
                                   T74 = FMA(KP951056516, T6z, T6y);
777
                                   T75 = FNMS(KP951056516, T6C, T6B);
778
                                   T76 = FMA(KP549754652, T75, T74);
779
                                   T7d = FNMS(KP549754652, T74, T75);
780
                              }
781
                              {
782
                                   E T6X, T6Y, T71, T72;
783
                                   T6X = FNMS(KP951056516, T6d, T6c);
784
                                   T6Y = FNMS(KP951056516, T6g, T6f);
785
                                   T6Z = FMA(KP634619297, T6Y, T6X);
786
                                   T7g = FNMS(KP634619297, T6X, T6Y);
787
                                   T71 = FNMS(KP951056516, T6v, T6u);
788
                                   T72 = FMA(KP951056516, T6s, T6r);
789
                                   T73 = FNMS(KP470564281, T72, T71);
790
                                   T7c = FMA(KP470564281, T71, T72);
791
                              }
792
                              T7e = FMA(KP968479752, T7d, T7c);
793
                              T7h = FNMS(KP845997307, T7g, T7f);
794
                              T8f = FNMS(KP845997307, T6Z, T6W);
795
                              T8e = FNMS(KP968479752, T76, T73);
796
                              T88 = FMA(KP845997307, T7g, T7f);
797
                              T89 = FNMS(KP968479752, T7d, T7c);
798
                              T8a = FMA(KP906616052, T89, T88);
799
                              T70 = FMA(KP845997307, T6Z, T6W);
800
                              T77 = FMA(KP968479752, T76, T73);
801
                              T78 = FMA(KP906616052, T77, T70);
802
                         }
803
                         ri[WS(rs, 3)] = FMA(KP998026728, T6G, T6b);
804
                         ii[WS(rs, 3)] = FNMS(KP998026728, T8m, T8j);
805
                         ri[WS(rs, 2)] = FMA(KP998026728, T78, T6T);
806
                         ii[WS(rs, 2)] = FNMS(KP998026728, T8a, T87);
807
                         {
808
                              E T6Q, T6S, T6J, T6R, T6H, T6I;
809
                              T6Q = FNMS(KP621716863, T6P, T6M);
810
                              T6S = FMA(KP614372930, T6M, T6P);
811
                              T6H = FNMS(KP249506682, T6G, T6b);
812
                              T6I = FMA(KP994076283, T6F, T6q);
813
                              T6J = FNMS(KP557913902, T6I, T6H);
814
                              T6R = FMA(KP557913902, T6I, T6H);
815
                              ri[WS(rs, 23)] = FNMS(KP943557151, T6Q, T6J);
816
                              ri[WS(rs, 13)] = FMA(KP949179823, T6S, T6R);
817
                              ri[WS(rs, 8)] = FMA(KP943557151, T6Q, T6J);
818
                              ri[WS(rs, 18)] = FNMS(KP949179823, T6S, T6R);
819
                         }
820
                         {
821
                              E T8s, T8u, T8p, T8t, T8n, T8o;
822
                              T8s = FMA(KP621716863, T8r, T8q);
823
                              T8u = FNMS(KP614372930, T8q, T8r);
824
                              T8n = FMA(KP249506682, T8m, T8j);
825
                              T8o = FNMS(KP994076283, T8l, T8k);
826
                              T8p = FMA(KP557913902, T8o, T8n);
827
                              T8t = FNMS(KP557913902, T8o, T8n);
828
                              ii[WS(rs, 8)] = FNMS(KP943557151, T8s, T8p);
829
                              ii[WS(rs, 18)] = FNMS(KP949179823, T8u, T8t);
830
                              ii[WS(rs, 23)] = FMA(KP943557151, T8s, T8p);
831
                              ii[WS(rs, 13)] = FMA(KP949179823, T8u, T8t);
832
                         }
833
                         {
834
                              E T7i, T7k, T7b, T7j, T79, T7a;
835
                              T7i = FMA(KP681693190, T7h, T7e);
836
                              T7k = FNMS(KP560319534, T7e, T7h);
837
                              T79 = FNMS(KP249506682, T78, T6T);
838
                              T7a = FNMS(KP906616052, T77, T70);
839
                              T7b = FNMS(KP557913902, T7a, T79);
840
                              T7j = FMA(KP557913902, T7a, T79);
841
                              ri[WS(rs, 22)] = FNMS(KP860541664, T7i, T7b);
842
                              ri[WS(rs, 17)] = FMA(KP949179823, T7k, T7j);
843
                              ri[WS(rs, 7)] = FMA(KP860541664, T7i, T7b);
844
                              ri[WS(rs, 12)] = FNMS(KP949179823, T7k, T7j);
845
                         }
846
                         {
847
                              E T8g, T8i, T8d, T8h, T8b, T8c;
848
                              T8g = FMA(KP681693190, T8f, T8e);
849
                              T8i = FNMS(KP560319534, T8e, T8f);
850
                              T8b = FMA(KP249506682, T8a, T87);
851
                              T8c = FNMS(KP906616052, T89, T88);
852
                              T8d = FMA(KP557913902, T8c, T8b);
853
                              T8h = FNMS(KP557913902, T8c, T8b);
854
                              ii[WS(rs, 7)] = FMA(KP860541664, T8g, T8d);
855
                              ii[WS(rs, 17)] = FMA(KP949179823, T8i, T8h);
856
                              ii[WS(rs, 22)] = FNMS(KP860541664, T8g, T8d);
857
                              ii[WS(rs, 12)] = FNMS(KP949179823, T8i, T8h);
858
                         }
859
                    }
860
               }
861
          }
862
     }
863
}
864

    
865
static const tw_instr twinstr[] = {
866
     {TW_CEXP, 0, 1},
867
     {TW_CEXP, 0, 3},
868
     {TW_CEXP, 0, 9},
869
     {TW_CEXP, 0, 24},
870
     {TW_NEXT, 1, 0}
871
};
872

    
873
static const ct_desc desc = { 25, "t2_25", twinstr, &GENUS, {84, 78, 356, 0}, 0, 0, 0 };
874

    
875
void X(codelet_t2_25) (planner *p) {
876
     X(kdft_dit_register) (p, t2_25, &desc);
877
}
878
#else
879

    
880
/* Generated by: ../../../genfft/gen_twiddle.native -compact -variables 4 -pipeline-latency 4 -twiddle-log3 -precompute-twiddles -n 25 -name t2_25 -include dft/scalar/t.h */
881

    
882
/*
883
 * This function contains 440 FP additions, 340 FP multiplications,
884
 * (or, 280 additions, 180 multiplications, 160 fused multiply/add),
885
 * 149 stack variables, 20 constants, and 100 memory accesses
886
 */
887
#include "dft/scalar/t.h"
888

    
889
static void t2_25(R *ri, R *ii, const R *W, stride rs, INT mb, INT me, INT ms)
890
{
891
     DK(KP998026728, +0.998026728428271561952336806863450553336905220);
892
     DK(KP062790519, +0.062790519529313376076178224565631133122484832);
893
     DK(KP425779291, +0.425779291565072648862502445744251703979973042);
894
     DK(KP904827052, +0.904827052466019527713668647932697593970413911);
895
     DK(KP992114701, +0.992114701314477831049793042785778521453036709);
896
     DK(KP125333233, +0.125333233564304245373118759816508793942918247);
897
     DK(KP637423989, +0.637423989748689710176712811676016195434917298);
898
     DK(KP770513242, +0.770513242775789230803009636396177847271667672);
899
     DK(KP684547105, +0.684547105928688673732283357621209269889519233);
900
     DK(KP728968627, +0.728968627421411523146730319055259111372571664);
901
     DK(KP481753674, +0.481753674101715274987191502872129653528542010);
902
     DK(KP876306680, +0.876306680043863587308115903922062583399064238);
903
     DK(KP844327925, +0.844327925502015078548558063966681505381659241);
904
     DK(KP535826794, +0.535826794978996618271308767867639978063575346);
905
     DK(KP248689887, +0.248689887164854788242283746006447968417567406);
906
     DK(KP968583161, +0.968583161128631119490168375464735813836012403);
907
     DK(KP587785252, +0.587785252292473129168705954639072768597652438);
908
     DK(KP951056516, +0.951056516295153572116439333379382143405698634);
909
     DK(KP250000000, +0.250000000000000000000000000000000000000000000);
910
     DK(KP559016994, +0.559016994374947424102293417182819058860154590);
911
     {
912
          INT m;
913
          for (m = mb, W = W + (mb * 8); m < me; m = m + 1, ri = ri + ms, ii = ii + ms, W = W + 8, MAKE_VOLATILE_STRIDE(50, rs)) {
914
               E T2, T5, T3, T6, T8, Td, T16, T14, Te, T9, T21, T23, Tx, TR, T1g;
915
               E TB, T1f, TV, T1Q, Tg, T1S, Tk, T18, T2s, T1c, T2q, Tn, To, Tp, Tr;
916
               E T28, T2x, TY, T2k, T2m, T2v, TG, TE, T10, T1h, T1E, T26, T1B, T1G, T1V;
917
               E T1X, T1z, T1j;
918
               {
919
                    E Tw, TT, Tz, TQ, Tv, TU, TA, TP;
920
                    {
921
                         E T4, Tc, T7, Tb;
922
                         T2 = W[0];
923
                         T5 = W[1];
924
                         T3 = W[2];
925
                         T6 = W[3];
926
                         T4 = T2 * T3;
927
                         Tc = T5 * T3;
928
                         T7 = T5 * T6;
929
                         Tb = T2 * T6;
930
                         T8 = T4 - T7;
931
                         Td = Tb + Tc;
932
                         T16 = Tb - Tc;
933
                         T14 = T4 + T7;
934
                         Te = W[5];
935
                         Tw = T5 * Te;
936
                         TT = T3 * Te;
937
                         Tz = T2 * Te;
938
                         TQ = T6 * Te;
939
                         T9 = W[4];
940
                         Tv = T2 * T9;
941
                         TU = T6 * T9;
942
                         TA = T5 * T9;
943
                         TP = T3 * T9;
944
                    }
945
                    T21 = TP - TQ;
946
                    T23 = TT + TU;
947
                    {
948
                         E T15, T17, Ta, Tf, T1a, T1b, Ti, Tj;
949
                         Tx = Tv - Tw;
950
                         TR = TP + TQ;
951
                         T1g = Tz - TA;
952
                         TB = Tz + TA;
953
                         T1f = Tv + Tw;
954
                         TV = TT - TU;
955
                         T15 = T14 * T9;
956
                         T17 = T16 * Te;
957
                         T1Q = T15 + T17;
958
                         Ta = T8 * T9;
959
                         Tf = Td * Te;
960
                         Tg = Ta + Tf;
961
                         T1a = T14 * Te;
962
                         T1b = T16 * T9;
963
                         T1S = T1a - T1b;
964
                         Ti = T8 * Te;
965
                         Tj = Td * T9;
966
                         Tk = Ti - Tj;
967
                         T18 = T15 - T17;
968
                         T2s = Ti + Tj;
969
                         T1c = T1a + T1b;
970
                         T2q = Ta - Tf;
971
                         Tn = W[6];
972
                         To = W[7];
973
                         Tp = FMA(T8, Tn, Td * To);
974
                         Tr = FNMS(Td, Tn, T8 * To);
975
                         T28 = FNMS(T1S, Tn, T1Q * To);
976
                         T2x = FNMS(TV, Tn, TR * To);
977
                         TY = FMA(T3, Tn, T6 * To);
978
                         T2k = FMA(T2, Tn, T5 * To);
979
                         T2m = FNMS(T5, Tn, T2 * To);
980
                         T2v = FMA(TR, Tn, TV * To);
981
                         TG = FNMS(Te, Tn, T9 * To);
982
                         TE = FMA(T9, Tn, Te * To);
983
                         T10 = FNMS(T6, Tn, T3 * To);
984
                         T1h = FMA(T1f, Tn, T1g * To);
985
                         T1E = FMA(Tg, Tn, Tk * To);
986
                         T26 = FMA(T1Q, Tn, T1S * To);
987
                         T1B = FNMS(TB, Tn, Tx * To);
988
                         T1G = FNMS(Tk, Tn, Tg * To);
989
                         T1V = FMA(T14, Tn, T16 * To);
990
                         T1X = FNMS(T16, Tn, T14 * To);
991
                         T1z = FMA(Tx, Tn, TB * To);
992
                         T1j = FNMS(T1g, Tn, T1f * To);
993
                    }
994
               }
995
               {
996
                    E T1, T6v, T2F, T6I, TK, T2G, T6u, T6J, T6N, T7c, T2O, T52, T2C, T6k, T48;
997
                    E T5X, T4L, T5s, T4j, T5W, T4K, T5v, T1o, T6g, T30, T5M, T4A, T56, T3b, T5N;
998
                    E T4B, T59, T1L, T6h, T3n, T5Q, T4D, T5g, T3y, T5P, T4E, T5d, T2d, T6j, T3L;
999
                    E T5T, T4I, T5l, T3W, T5U, T4H, T5o;
1000
                    {
1001
                         E Tm, T2I, Tt, T2J, Tu, T6s, TD, T2L, TI, T2M, TJ, T6t;
1002
                         T1 = ri[0];
1003
                         T6v = ii[0];
1004
                         {
1005
                              E Th, Tl, Tq, Ts;
1006
                              Th = ri[WS(rs, 5)];
1007
                              Tl = ii[WS(rs, 5)];
1008
                              Tm = FMA(Tg, Th, Tk * Tl);
1009
                              T2I = FNMS(Tk, Th, Tg * Tl);
1010
                              Tq = ri[WS(rs, 20)];
1011
                              Ts = ii[WS(rs, 20)];
1012
                              Tt = FMA(Tp, Tq, Tr * Ts);
1013
                              T2J = FNMS(Tr, Tq, Tp * Ts);
1014
                         }
1015
                         Tu = Tm + Tt;
1016
                         T6s = T2I + T2J;
1017
                         {
1018
                              E Ty, TC, TF, TH;
1019
                              Ty = ri[WS(rs, 10)];
1020
                              TC = ii[WS(rs, 10)];
1021
                              TD = FMA(Tx, Ty, TB * TC);
1022
                              T2L = FNMS(TB, Ty, Tx * TC);
1023
                              TF = ri[WS(rs, 15)];
1024
                              TH = ii[WS(rs, 15)];
1025
                              TI = FMA(TE, TF, TG * TH);
1026
                              T2M = FNMS(TG, TF, TE * TH);
1027
                         }
1028
                         TJ = TD + TI;
1029
                         T6t = T2L + T2M;
1030
                         T2F = KP559016994 * (Tu - TJ);
1031
                         T6I = KP559016994 * (T6s - T6t);
1032
                         TK = Tu + TJ;
1033
                         T2G = FNMS(KP250000000, TK, T1);
1034
                         T6u = T6s + T6t;
1035
                         T6J = FNMS(KP250000000, T6u, T6v);
1036
                         {
1037
                              E T6L, T6M, T2K, T2N;
1038
                              T6L = Tm - Tt;
1039
                              T6M = TD - TI;
1040
                              T6N = FMA(KP951056516, T6L, KP587785252 * T6M);
1041
                              T7c = FNMS(KP587785252, T6L, KP951056516 * T6M);
1042
                              T2K = T2I - T2J;
1043
                              T2N = T2L - T2M;
1044
                              T2O = FMA(KP951056516, T2K, KP587785252 * T2N);
1045
                              T52 = FNMS(KP587785252, T2K, KP951056516 * T2N);
1046
                         }
1047
                    }
1048
                    {
1049
                         E T2g, T4c, T43, T46, T4h, T4g, T49, T4a, T4d, T2p, T2A, T2B, T2e, T2f;
1050
                         T2e = ri[WS(rs, 3)];
1051
                         T2f = ii[WS(rs, 3)];
1052
                         T2g = FMA(T3, T2e, T6 * T2f);
1053
                         T4c = FNMS(T6, T2e, T3 * T2f);
1054
                         {
1055
                              E T2j, T41, T2z, T45, T2o, T42, T2u, T44;
1056
                              {
1057
                                   E T2h, T2i, T2w, T2y;
1058
                                   T2h = ri[WS(rs, 8)];
1059
                                   T2i = ii[WS(rs, 8)];
1060
                                   T2j = FMA(T1f, T2h, T1g * T2i);
1061
                                   T41 = FNMS(T1g, T2h, T1f * T2i);
1062
                                   T2w = ri[WS(rs, 18)];
1063
                                   T2y = ii[WS(rs, 18)];
1064
                                   T2z = FMA(T2v, T2w, T2x * T2y);
1065
                                   T45 = FNMS(T2x, T2w, T2v * T2y);
1066
                              }
1067
                              {
1068
                                   E T2l, T2n, T2r, T2t;
1069
                                   T2l = ri[WS(rs, 23)];
1070
                                   T2n = ii[WS(rs, 23)];
1071
                                   T2o = FMA(T2k, T2l, T2m * T2n);
1072
                                   T42 = FNMS(T2m, T2l, T2k * T2n);
1073
                                   T2r = ri[WS(rs, 13)];
1074
                                   T2t = ii[WS(rs, 13)];
1075
                                   T2u = FMA(T2q, T2r, T2s * T2t);
1076
                                   T44 = FNMS(T2s, T2r, T2q * T2t);
1077
                              }
1078
                              T43 = T41 - T42;
1079
                              T46 = T44 - T45;
1080
                              T4h = T2u - T2z;
1081
                              T4g = T2j - T2o;
1082
                              T49 = T41 + T42;
1083
                              T4a = T44 + T45;
1084
                              T4d = T49 + T4a;
1085
                              T2p = T2j + T2o;
1086
                              T2A = T2u + T2z;
1087
                              T2B = T2p + T2A;
1088
                         }
1089
                         T2C = T2g + T2B;
1090
                         T6k = T4c + T4d;
1091
                         {
1092
                              E T47, T5r, T40, T5q, T3Y, T3Z;
1093
                              T47 = FMA(KP951056516, T43, KP587785252 * T46);
1094
                              T5r = FNMS(KP587785252, T43, KP951056516 * T46);
1095
                              T3Y = KP559016994 * (T2p - T2A);
1096
                              T3Z = FNMS(KP250000000, T2B, T2g);
1097
                              T40 = T3Y + T3Z;
1098
                              T5q = T3Z - T3Y;
1099
                              T48 = T40 + T47;
1100
                              T5X = T5q + T5r;
1101
                              T4L = T40 - T47;
1102
                              T5s = T5q - T5r;
1103
                         }
1104
                         {
1105
                              E T4i, T5t, T4f, T5u, T4b, T4e;
1106
                              T4i = FMA(KP951056516, T4g, KP587785252 * T4h);
1107
                              T5t = FNMS(KP587785252, T4g, KP951056516 * T4h);
1108
                              T4b = KP559016994 * (T49 - T4a);
1109
                              T4e = FNMS(KP250000000, T4d, T4c);
1110
                              T4f = T4b + T4e;
1111
                              T5u = T4e - T4b;
1112
                              T4j = T4f - T4i;
1113
                              T5W = T5u - T5t;
1114
                              T4K = T4i + T4f;
1115
                              T5v = T5t + T5u;
1116
                         }
1117
                    }
1118
                    {
1119
                         E TO, T34, T2V, T2Y, T39, T38, T31, T32, T35, T13, T1m, T1n, TM, TN;
1120
                         TM = ri[WS(rs, 1)];
1121
                         TN = ii[WS(rs, 1)];
1122
                         TO = FMA(T2, TM, T5 * TN);
1123
                         T34 = FNMS(T5, TM, T2 * TN);
1124
                         {
1125
                              E TX, T2T, T1l, T2X, T12, T2U, T1e, T2W;
1126
                              {
1127
                                   E TS, TW, T1i, T1k;
1128
                                   TS = ri[WS(rs, 6)];
1129
                                   TW = ii[WS(rs, 6)];
1130
                                   TX = FMA(TR, TS, TV * TW);
1131
                                   T2T = FNMS(TV, TS, TR * TW);
1132
                                   T1i = ri[WS(rs, 16)];
1133
                                   T1k = ii[WS(rs, 16)];
1134
                                   T1l = FMA(T1h, T1i, T1j * T1k);
1135
                                   T2X = FNMS(T1j, T1i, T1h * T1k);
1136
                              }
1137
                              {
1138
                                   E TZ, T11, T19, T1d;
1139
                                   TZ = ri[WS(rs, 21)];
1140
                                   T11 = ii[WS(rs, 21)];
1141
                                   T12 = FMA(TY, TZ, T10 * T11);
1142
                                   T2U = FNMS(T10, TZ, TY * T11);
1143
                                   T19 = ri[WS(rs, 11)];
1144
                                   T1d = ii[WS(rs, 11)];
1145
                                   T1e = FMA(T18, T19, T1c * T1d);
1146
                                   T2W = FNMS(T1c, T19, T18 * T1d);
1147
                              }
1148
                              T2V = T2T - T2U;
1149
                              T2Y = T2W - T2X;
1150
                              T39 = T1e - T1l;
1151
                              T38 = TX - T12;
1152
                              T31 = T2T + T2U;
1153
                              T32 = T2W + T2X;
1154
                              T35 = T31 + T32;
1155
                              T13 = TX + T12;
1156
                              T1m = T1e + T1l;
1157
                              T1n = T13 + T1m;
1158
                         }
1159
                         T1o = TO + T1n;
1160
                         T6g = T34 + T35;
1161
                         {
1162
                              E T2Z, T55, T2S, T54, T2Q, T2R;
1163
                              T2Z = FMA(KP951056516, T2V, KP587785252 * T2Y);
1164
                              T55 = FNMS(KP587785252, T2V, KP951056516 * T2Y);
1165
                              T2Q = KP559016994 * (T13 - T1m);
1166
                              T2R = FNMS(KP250000000, T1n, TO);
1167
                              T2S = T2Q + T2R;
1168
                              T54 = T2R - T2Q;
1169
                              T30 = T2S + T2Z;
1170
                              T5M = T54 + T55;
1171
                              T4A = T2S - T2Z;
1172
                              T56 = T54 - T55;
1173
                         }
1174
                         {
1175
                              E T3a, T57, T37, T58, T33, T36;
1176
                              T3a = FMA(KP951056516, T38, KP587785252 * T39);
1177
                              T57 = FNMS(KP587785252, T38, KP951056516 * T39);
1178
                              T33 = KP559016994 * (T31 - T32);
1179
                              T36 = FNMS(KP250000000, T35, T34);
1180
                              T37 = T33 + T36;
1181
                              T58 = T36 - T33;
1182
                              T3b = T37 - T3a;
1183
                              T5N = T58 - T57;
1184
                              T4B = T3a + T37;
1185
                              T59 = T57 + T58;
1186
                         }
1187
                    }
1188
                    {
1189
                         E T1r, T3r, T3i, T3l, T3w, T3v, T3o, T3p, T3s, T1y, T1J, T1K, T1p, T1q;
1190
                         T1p = ri[WS(rs, 4)];
1191
                         T1q = ii[WS(rs, 4)];
1192
                         T1r = FMA(T8, T1p, Td * T1q);
1193
                         T3r = FNMS(Td, T1p, T8 * T1q);
1194
                         {
1195
                              E T1u, T3g, T1I, T3k, T1x, T3h, T1D, T3j;
1196
                              {
1197
                                   E T1s, T1t, T1F, T1H;
1198
                                   T1s = ri[WS(rs, 9)];
1199
                                   T1t = ii[WS(rs, 9)];
1200
                                   T1u = FMA(T9, T1s, Te * T1t);
1201
                                   T3g = FNMS(Te, T1s, T9 * T1t);
1202
                                   T1F = ri[WS(rs, 19)];
1203
                                   T1H = ii[WS(rs, 19)];
1204
                                   T1I = FMA(T1E, T1F, T1G * T1H);
1205
                                   T3k = FNMS(T1G, T1F, T1E * T1H);
1206
                              }
1207
                              {
1208
                                   E T1v, T1w, T1A, T1C;
1209
                                   T1v = ri[WS(rs, 24)];
1210
                                   T1w = ii[WS(rs, 24)];
1211
                                   T1x = FMA(Tn, T1v, To * T1w);
1212
                                   T3h = FNMS(To, T1v, Tn * T1w);
1213
                                   T1A = ri[WS(rs, 14)];
1214
                                   T1C = ii[WS(rs, 14)];
1215
                                   T1D = FMA(T1z, T1A, T1B * T1C);
1216
                                   T3j = FNMS(T1B, T1A, T1z * T1C);
1217
                              }
1218
                              T3i = T3g - T3h;
1219
                              T3l = T3j - T3k;
1220
                              T3w = T1D - T1I;
1221
                              T3v = T1u - T1x;
1222
                              T3o = T3g + T3h;
1223
                              T3p = T3j + T3k;
1224
                              T3s = T3o + T3p;
1225
                              T1y = T1u + T1x;
1226
                              T1J = T1D + T1I;
1227
                              T1K = T1y + T1J;
1228
                         }
1229
                         T1L = T1r + T1K;
1230
                         T6h = T3r + T3s;
1231
                         {
1232
                              E T3m, T5f, T3f, T5e, T3d, T3e;
1233
                              T3m = FMA(KP951056516, T3i, KP587785252 * T3l);
1234
                              T5f = FNMS(KP587785252, T3i, KP951056516 * T3l);
1235
                              T3d = KP559016994 * (T1y - T1J);
1236
                              T3e = FNMS(KP250000000, T1K, T1r);
1237
                              T3f = T3d + T3e;
1238
                              T5e = T3e - T3d;
1239
                              T3n = T3f + T3m;
1240
                              T5Q = T5e + T5f;
1241
                              T4D = T3f - T3m;
1242
                              T5g = T5e - T5f;
1243
                         }
1244
                         {
1245
                              E T3x, T5b, T3u, T5c, T3q, T3t;
1246
                              T3x = FMA(KP951056516, T3v, KP587785252 * T3w);
1247
                              T5b = FNMS(KP587785252, T3v, KP951056516 * T3w);
1248
                              T3q = KP559016994 * (T3o - T3p);
1249
                              T3t = FNMS(KP250000000, T3s, T3r);
1250
                              T3u = T3q + T3t;
1251
                              T5c = T3t - T3q;
1252
                              T3y = T3u - T3x;
1253
                              T5P = T5c - T5b;
1254
                              T4E = T3x + T3u;
1255
                              T5d = T5b + T5c;
1256
                         }
1257
                    }
1258
                    {
1259
                         E T1P, T3P, T3G, T3J, T3U, T3T, T3M, T3N, T3Q, T20, T2b, T2c, T1N, T1O;
1260
                         T1N = ri[WS(rs, 2)];
1261
                         T1O = ii[WS(rs, 2)];
1262
                         T1P = FMA(T14, T1N, T16 * T1O);
1263
                         T3P = FNMS(T16, T1N, T14 * T1O);
1264
                         {
1265
                              E T1U, T3E, T2a, T3I, T1Z, T3F, T25, T3H;
1266
                              {
1267
                                   E T1R, T1T, T27, T29;
1268
                                   T1R = ri[WS(rs, 7)];
1269
                                   T1T = ii[WS(rs, 7)];
1270
                                   T1U = FMA(T1Q, T1R, T1S * T1T);
1271
                                   T3E = FNMS(T1S, T1R, T1Q * T1T);
1272
                                   T27 = ri[WS(rs, 17)];
1273
                                   T29 = ii[WS(rs, 17)];
1274
                                   T2a = FMA(T26, T27, T28 * T29);
1275
                                   T3I = FNMS(T28, T27, T26 * T29);
1276
                              }
1277
                              {
1278
                                   E T1W, T1Y, T22, T24;
1279
                                   T1W = ri[WS(rs, 22)];
1280
                                   T1Y = ii[WS(rs, 22)];
1281
                                   T1Z = FMA(T1V, T1W, T1X * T1Y);
1282
                                   T3F = FNMS(T1X, T1W, T1V * T1Y);
1283
                                   T22 = ri[WS(rs, 12)];
1284
                                   T24 = ii[WS(rs, 12)];
1285
                                   T25 = FMA(T21, T22, T23 * T24);
1286
                                   T3H = FNMS(T23, T22, T21 * T24);
1287
                              }
1288
                              T3G = T3E - T3F;
1289
                              T3J = T3H - T3I;
1290
                              T3U = T25 - T2a;
1291
                              T3T = T1U - T1Z;
1292
                              T3M = T3E + T3F;
1293
                              T3N = T3H + T3I;
1294
                              T3Q = T3M + T3N;
1295
                              T20 = T1U + T1Z;
1296
                              T2b = T25 + T2a;
1297
                              T2c = T20 + T2b;
1298
                         }
1299
                         T2d = T1P + T2c;
1300
                         T6j = T3P + T3Q;
1301
                         {
1302
                              E T3K, T5k, T3D, T5j, T3B, T3C;
1303
                              T3K = FMA(KP951056516, T3G, KP587785252 * T3J);
1304
                              T5k = FNMS(KP587785252, T3G, KP951056516 * T3J);
1305
                              T3B = KP559016994 * (T20 - T2b);
1306
                              T3C = FNMS(KP250000000, T2c, T1P);
1307
                              T3D = T3B + T3C;
1308
                              T5j = T3C - T3B;
1309
                              T3L = T3D + T3K;
1310
                              T5T = T5j + T5k;
1311
                              T4I = T3D - T3K;
1312
                              T5l = T5j - T5k;
1313
                         }
1314
                         {
1315
                              E T3V, T5m, T3S, T5n, T3O, T3R;
1316
                              T3V = FMA(KP951056516, T3T, KP587785252 * T3U);
1317
                              T5m = FNMS(KP587785252, T3T, KP951056516 * T3U);
1318
                              T3O = KP559016994 * (T3M - T3N);
1319
                              T3R = FNMS(KP250000000, T3Q, T3P);
1320
                              T3S = T3O + T3R;
1321
                              T5n = T3R - T3O;
1322
                              T3W = T3S - T3V;
1323
                              T5U = T5n - T5m;
1324
                              T4H = T3V + T3S;
1325
                              T5o = T5m + T5n;
1326
                         }
1327
                    }
1328
                    {
1329
                         E T6m, T6o, TL, T2E, T6d, T6e, T6n, T6f;
1330
                         {
1331
                              E T6i, T6l, T1M, T2D;
1332
                              T6i = T6g - T6h;
1333
                              T6l = T6j - T6k;
1334
                              T6m = FMA(KP951056516, T6i, KP587785252 * T6l);
1335
                              T6o = FNMS(KP587785252, T6i, KP951056516 * T6l);
1336
                              TL = T1 + TK;
1337
                              T1M = T1o + T1L;
1338
                              T2D = T2d + T2C;
1339
                              T2E = T1M + T2D;
1340
                              T6d = KP559016994 * (T1M - T2D);
1341
                              T6e = FNMS(KP250000000, T2E, TL);
1342
                         }
1343
                         ri[0] = TL + T2E;
1344
                         T6n = T6e - T6d;
1345
                         ri[WS(rs, 10)] = T6n - T6o;
1346
                         ri[WS(rs, 15)] = T6n + T6o;
1347
                         T6f = T6d + T6e;
1348
                         ri[WS(rs, 20)] = T6f - T6m;
1349
                         ri[WS(rs, 5)] = T6f + T6m;
1350
                    }
1351
                    {
1352
                         E T6C, T6D, T6w, T6r, T6x, T6y, T6E, T6z;
1353
                         {
1354
                              E T6A, T6B, T6p, T6q;
1355
                              T6A = T1o - T1L;
1356
                              T6B = T2d - T2C;
1357
                              T6C = FMA(KP951056516, T6A, KP587785252 * T6B);
1358
                              T6D = FNMS(KP587785252, T6A, KP951056516 * T6B);
1359
                              T6w = T6u + T6v;
1360
                              T6p = T6g + T6h;
1361
                              T6q = T6j + T6k;
1362
                              T6r = T6p + T6q;
1363
                              T6x = KP559016994 * (T6p - T6q);
1364
                              T6y = FNMS(KP250000000, T6r, T6w);
1365
                         }
1366
                         ii[0] = T6r + T6w;
1367
                         T6E = T6y - T6x;
1368
                         ii[WS(rs, 10)] = T6D + T6E;
1369
                         ii[WS(rs, 15)] = T6E - T6D;
1370
                         T6z = T6x + T6y;
1371
                         ii[WS(rs, 5)] = T6z - T6C;
1372
                         ii[WS(rs, 20)] = T6C + T6z;
1373
                    }
1374
                    {
1375
                         E T2P, T4z, T6O, T70, T4m, T6T, T4n, T6S, T4U, T71, T4X, T6Z, T4O, T75, T4P;
1376
                         E T74, T4s, T6P, T4v, T6H, T2H, T6K;
1377
                         T2H = T2F + T2G;
1378
                         T2P = T2H + T2O;
1379
                         T4z = T2H - T2O;
1380
                         T6K = T6I + T6J;
1381
                         T6O = T6K - T6N;
1382
                         T70 = T6N + T6K;
1383
                         {
1384
                              E T3c, T3z, T3A, T3X, T4k, T4l;
1385
                              T3c = FMA(KP968583161, T30, KP248689887 * T3b);
1386
                              T3z = FMA(KP535826794, T3n, KP844327925 * T3y);
1387
                              T3A = T3c + T3z;
1388
                              T3X = FMA(KP876306680, T3L, KP481753674 * T3W);
1389
                              T4k = FMA(KP728968627, T48, KP684547105 * T4j);
1390
                              T4l = T3X + T4k;
1391
                              T4m = T3A + T4l;
1392
                              T6T = T3X - T4k;
1393
                              T4n = KP559016994 * (T3A - T4l);
1394
                              T6S = T3c - T3z;
1395
                         }
1396
                         {
1397
                              E T4S, T4T, T6X, T4V, T4W, T6Y;
1398
                              T4S = FNMS(KP844327925, T4A, KP535826794 * T4B);
1399
                              T4T = FNMS(KP637423989, T4E, KP770513242 * T4D);
1400
                              T6X = T4S + T4T;
1401
                              T4V = FMA(KP125333233, T4L, KP992114701 * T4K);
1402
                              T4W = FMA(KP904827052, T4I, KP425779291 * T4H);
1403
                              T6Y = T4W + T4V;
1404
                              T4U = T4S - T4T;
1405
                              T71 = KP559016994 * (T6X + T6Y);
1406
                              T4X = T4V - T4W;
1407
                              T6Z = T6X - T6Y;
1408
                         }
1409
                         {
1410
                              E T4C, T4F, T4G, T4J, T4M, T4N;
1411
                              T4C = FMA(KP535826794, T4A, KP844327925 * T4B);
1412
                              T4F = FMA(KP637423989, T4D, KP770513242 * T4E);
1413
                              T4G = T4C - T4F;
1414
                              T4J = FNMS(KP425779291, T4I, KP904827052 * T4H);
1415
                              T4M = FNMS(KP992114701, T4L, KP125333233 * T4K);
1416
                              T4N = T4J + T4M;
1417
                              T4O = T4G + T4N;
1418
                              T75 = T4J - T4M;
1419
                              T4P = KP559016994 * (T4G - T4N);
1420
                              T74 = T4C + T4F;
1421
                         }
1422
                         {
1423
                              E T4q, T4r, T6F, T4t, T4u, T6G;
1424
                              T4q = FNMS(KP248689887, T30, KP968583161 * T3b);
1425
                              T4r = FNMS(KP844327925, T3n, KP535826794 * T3y);
1426
                              T6F = T4q + T4r;
1427
                              T4t = FNMS(KP481753674, T3L, KP876306680 * T3W);
1428
                              T4u = FNMS(KP684547105, T48, KP728968627 * T4j);
1429
                              T6G = T4t + T4u;
1430
                              T4s = T4q - T4r;
1431
                              T6P = KP559016994 * (T6F - T6G);
1432
                              T4v = T4t - T4u;
1433
                              T6H = T6F + T6G;
1434
                         }
1435
                         ri[WS(rs, 1)] = T2P + T4m;
1436
                         ii[WS(rs, 1)] = T6H + T6O;
1437
                         ri[WS(rs, 4)] = T4z + T4O;
1438
                         ii[WS(rs, 4)] = T6Z + T70;
1439
                         {
1440
                              E T4w, T4y, T4p, T4x, T4o;
1441
                              T4w = FMA(KP951056516, T4s, KP587785252 * T4v);
1442
                              T4y = FNMS(KP587785252, T4s, KP951056516 * T4v);
1443
                              T4o = FNMS(KP250000000, T4m, T2P);
1444
                              T4p = T4n + T4o;
1445
                              T4x = T4o - T4n;
1446
                              ri[WS(rs, 21)] = T4p - T4w;
1447
                              ri[WS(rs, 16)] = T4x + T4y;
1448
                              ri[WS(rs, 6)] = T4p + T4w;
1449
                              ri[WS(rs, 11)] = T4x - T4y;
1450
                         }
1451
                         {
1452
                              E T6U, T6V, T6R, T6W, T6Q;
1453
                              T6U = FMA(KP951056516, T6S, KP587785252 * T6T);
1454
                              T6V = FNMS(KP587785252, T6S, KP951056516 * T6T);
1455
                              T6Q = FNMS(KP250000000, T6H, T6O);
1456
                              T6R = T6P + T6Q;
1457
                              T6W = T6Q - T6P;
1458
                              ii[WS(rs, 6)] = T6R - T6U;
1459
                              ii[WS(rs, 16)] = T6W - T6V;
1460
                              ii[WS(rs, 21)] = T6U + T6R;
1461
                              ii[WS(rs, 11)] = T6V + T6W;
1462
                         }
1463
                         {
1464
                              E T4Y, T50, T4R, T4Z, T4Q;
1465
                              T4Y = FMA(KP951056516, T4U, KP587785252 * T4X);
1466
                              T50 = FNMS(KP587785252, T4U, KP951056516 * T4X);
1467
                              T4Q = FNMS(KP250000000, T4O, T4z);
1468
                              T4R = T4P + T4Q;
1469
                              T4Z = T4Q - T4P;
1470
                              ri[WS(rs, 24)] = T4R - T4Y;
1471
                              ri[WS(rs, 19)] = T4Z + T50;
1472
                              ri[WS(rs, 9)] = T4R + T4Y;
1473
                              ri[WS(rs, 14)] = T4Z - T50;
1474
                         }
1475
                         {
1476
                              E T76, T77, T73, T78, T72;
1477
                              T76 = FMA(KP951056516, T74, KP587785252 * T75);
1478
                              T77 = FNMS(KP587785252, T74, KP951056516 * T75);
1479
                              T72 = FNMS(KP250000000, T6Z, T70);
1480
                              T73 = T71 + T72;
1481
                              T78 = T72 - T71;
1482
                              ii[WS(rs, 9)] = T73 - T76;
1483
                              ii[WS(rs, 19)] = T78 - T77;
1484
                              ii[WS(rs, 24)] = T76 + T73;
1485
                              ii[WS(rs, 14)] = T77 + T78;
1486
                         }
1487
                    }
1488
                    {
1489
                         E T53, T5L, T7e, T7q, T5y, T7j, T5z, T7i, T66, T7r, T69, T7p, T60, T7v, T61;
1490
                         E T7u, T5E, T7f, T5H, T7b, T51, T7d;
1491
                         T51 = T2G - T2F;
1492
                         T53 = T51 - T52;
1493
                         T5L = T51 + T52;
1494
                         T7d = T6J - T6I;
1495
                         T7e = T7c + T7d;
1496
                         T7q = T7d - T7c;
1497
                         {
1498
                              E T5a, T5h, T5i, T5p, T5w, T5x;
1499
                              T5a = FMA(KP876306680, T56, KP481753674 * T59);
1500
                              T5h = FNMS(KP425779291, T5g, KP904827052 * T5d);
1501
                              T5i = T5a + T5h;
1502
                              T5p = FMA(KP535826794, T5l, KP844327925 * T5o);
1503
                              T5w = FMA(KP062790519, T5s, KP998026728 * T5v);
1504
                              T5x = T5p + T5w;
1505
                              T5y = T5i + T5x;
1506
                              T7j = T5p - T5w;
1507
                              T5z = KP559016994 * (T5i - T5x);
1508
                              T7i = T5a - T5h;
1509
                         }
1510
                         {
1511
                              E T64, T65, T7n, T67, T68, T7o;
1512
                              T64 = FNMS(KP684547105, T5M, KP728968627 * T5N);
1513
                              T65 = FMA(KP125333233, T5Q, KP992114701 * T5P);
1514
                              T7n = T64 - T65;
1515
                              T67 = FNMS(KP998026728, T5T, KP062790519 * T5U);
1516
                              T68 = FMA(KP770513242, T5X, KP637423989 * T5W);
1517
                              T7o = T67 - T68;
1518
                              T66 = T64 + T65;
1519
                              T7r = KP559016994 * (T7n - T7o);
1520
                              T69 = T67 + T68;
1521
                              T7p = T7n + T7o;
1522
                         }
1523
                         {
1524
                              E T5O, T5R, T5S, T5V, T5Y, T5Z;
1525
                              T5O = FMA(KP728968627, T5M, KP684547105 * T5N);
1526
                              T5R = FNMS(KP992114701, T5Q, KP125333233 * T5P);
1527
                              T5S = T5O + T5R;
1528
                              T5V = FMA(KP062790519, T5T, KP998026728 * T5U);
1529
                              T5Y = FNMS(KP637423989, T5X, KP770513242 * T5W);
1530
                              T5Z = T5V + T5Y;
1531
                              T60 = T5S + T5Z;
1532
                              T7v = T5V - T5Y;
1533
                              T61 = KP559016994 * (T5S - T5Z);
1534
                              T7u = T5O - T5R;
1535
                         }
1536
                         {
1537
                              E T5C, T5D, T79, T5F, T5G, T7a;
1538
                              T5C = FNMS(KP481753674, T56, KP876306680 * T59);
1539
                              T5D = FMA(KP904827052, T5g, KP425779291 * T5d);
1540
                              T79 = T5C - T5D;
1541
                              T5F = FNMS(KP844327925, T5l, KP535826794 * T5o);
1542
                              T5G = FNMS(KP998026728, T5s, KP062790519 * T5v);
1543
                              T7a = T5F + T5G;
1544
                              T5E = T5C + T5D;
1545
                              T7f = KP559016994 * (T79 - T7a);
1546
                              T5H = T5F - T5G;
1547
                              T7b = T79 + T7a;
1548
                         }
1549
                         ri[WS(rs, 2)] = T53 + T5y;
1550
                         ii[WS(rs, 2)] = T7b + T7e;
1551
                         ri[WS(rs, 3)] = T5L + T60;
1552
                         ii[WS(rs, 3)] = T7p + T7q;
1553
                         {
1554
                              E T5I, T5K, T5B, T5J, T5A;
1555
                              T5I = FMA(KP951056516, T5E, KP587785252 * T5H);
1556
                              T5K = FNMS(KP587785252, T5E, KP951056516 * T5H);
1557
                              T5A = FNMS(KP250000000, T5y, T53);
1558
                              T5B = T5z + T5A;
1559
                              T5J = T5A - T5z;
1560
                              ri[WS(rs, 22)] = T5B - T5I;
1561
                              ri[WS(rs, 17)] = T5J + T5K;
1562
                              ri[WS(rs, 7)] = T5B + T5I;
1563
                              ri[WS(rs, 12)] = T5J - T5K;
1564
                         }
1565
                         {
1566
                              E T7k, T7l, T7h, T7m, T7g;
1567
                              T7k = FMA(KP951056516, T7i, KP587785252 * T7j);
1568
                              T7l = FNMS(KP587785252, T7i, KP951056516 * T7j);
1569
                              T7g = FNMS(KP250000000, T7b, T7e);
1570
                              T7h = T7f + T7g;
1571
                              T7m = T7g - T7f;
1572
                              ii[WS(rs, 7)] = T7h - T7k;
1573
                              ii[WS(rs, 17)] = T7m - T7l;
1574
                              ii[WS(rs, 22)] = T7k + T7h;
1575
                              ii[WS(rs, 12)] = T7l + T7m;
1576
                         }
1577
                         {
1578
                              E T6a, T6c, T63, T6b, T62;
1579
                              T6a = FMA(KP951056516, T66, KP587785252 * T69);
1580
                              T6c = FNMS(KP587785252, T66, KP951056516 * T69);
1581
                              T62 = FNMS(KP250000000, T60, T5L);
1582
                              T63 = T61 + T62;
1583
                              T6b = T62 - T61;
1584
                              ri[WS(rs, 23)] = T63 - T6a;
1585
                              ri[WS(rs, 18)] = T6b + T6c;
1586
                              ri[WS(rs, 8)] = T63 + T6a;
1587
                              ri[WS(rs, 13)] = T6b - T6c;
1588
                         }
1589
                         {
1590
                              E T7w, T7x, T7t, T7y, T7s;
1591
                              T7w = FMA(KP951056516, T7u, KP587785252 * T7v);
1592
                              T7x = FNMS(KP587785252, T7u, KP951056516 * T7v);
1593
                              T7s = FNMS(KP250000000, T7p, T7q);
1594
                              T7t = T7r + T7s;
1595
                              T7y = T7s - T7r;
1596
                              ii[WS(rs, 8)] = T7t - T7w;
1597
                              ii[WS(rs, 18)] = T7y - T7x;
1598
                              ii[WS(rs, 23)] = T7w + T7t;
1599
                              ii[WS(rs, 13)] = T7x + T7y;
1600
                         }
1601
                    }
1602
               }
1603
          }
1604
     }
1605
}
1606

    
1607
static const tw_instr twinstr[] = {
1608
     {TW_CEXP, 0, 1},
1609
     {TW_CEXP, 0, 3},
1610
     {TW_CEXP, 0, 9},
1611
     {TW_CEXP, 0, 24},
1612
     {TW_NEXT, 1, 0}
1613
};
1614

    
1615
static const ct_desc desc = { 25, "t2_25", twinstr, &GENUS, {280, 180, 160, 0}, 0, 0, 0 };
1616

    
1617
void X(codelet_t2_25) (planner *p) {
1618
     X(kdft_dit_register) (p, t2_25, &desc);
1619
}
1620
#endif