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 / n1_13.c @ 167:bd3cc4d1df30

History | View | Annotate | Download (20.8 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:10 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_notw.native -fma -compact -variables 4 -pipeline-latency 4 -n 13 -name n1_13 -include dft/scalar/n.h */
29

    
30
/*
31
 * This function contains 176 FP additions, 114 FP multiplications,
32
 * (or, 62 additions, 0 multiplications, 114 fused multiply/add),
33
 * 76 stack variables, 25 constants, and 52 memory accesses
34
 */
35
#include "dft/scalar/n.h"
36

    
37
static void n1_13(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, INT v, INT ivs, INT ovs)
38
{
39
     DK(KP875502302, +0.875502302409147941146295545768755143177842006);
40
     DK(KP520028571, +0.520028571888864619117130500499232802493238139);
41
     DK(KP968287244, +0.968287244361984016049539446938120421179794516);
42
     DK(KP575140729, +0.575140729474003121368385547455453388461001608);
43
     DK(KP600477271, +0.600477271932665282925769253334763009352012849);
44
     DK(KP957805992, +0.957805992594665126462521754605754580515587217);
45
     DK(KP516520780, +0.516520780623489722840901288569017135705033622);
46
     DK(KP581704778, +0.581704778510515730456870384989698884939833902);
47
     DK(KP300462606, +0.300462606288665774426601772289207995520941381);
48
     DK(KP503537032, +0.503537032863766627246873853868466977093348562);
49
     DK(KP251768516, +0.251768516431883313623436926934233488546674281);
50
     DK(KP301479260, +0.301479260047709873958013540496673347309208464);
51
     DK(KP083333333, +0.083333333333333333333333333333333333333333333);
52
     DK(KP859542535, +0.859542535098774820163672132761689612766401925);
53
     DK(KP514918778, +0.514918778086315755491789696138117261566051239);
54
     DK(KP522026385, +0.522026385161275033714027226654165028300441940);
55
     DK(KP853480001, +0.853480001859823990758994934970528322872359049);
56
     DK(KP612264650, +0.612264650376756543746494474777125408779395514);
57
     DK(KP038632954, +0.038632954644348171955506895830342264440241080);
58
     DK(KP302775637, +0.302775637731994646559610633735247973125648287);
59
     DK(KP769338817, +0.769338817572980603471413688209101117038278899);
60
     DK(KP686558370, +0.686558370781754340655719594850823015421401653);
61
     DK(KP226109445, +0.226109445035782405468510155372505010481906348);
62
     DK(KP866025403, +0.866025403784438646763723170752936183471402627);
63
     DK(KP500000000, +0.500000000000000000000000000000000000000000000);
64
     {
65
          INT i;
66
          for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs, MAKE_VOLATILE_STRIDE(52, is), MAKE_VOLATILE_STRIDE(52, os)) {
67
               E T1, T1P, T2n, T2o, To, TH, T2h, T2k, TB, TE, Tw, TF, T2c, T2j, T1j;
68
               E T1m, T12, T1f, T21, T24, T1U, T27, T1d, T1g, T1Y, T25;
69
               T1 = ri[0];
70
               T1P = ii[0];
71
               {
72
                    E Tf, T2d, Tb, Ty, Tq, T6, Tx, Tr, Ti, Tt, Tl, Tu, Tm, T2e, Td;
73
                    E Te, Tc, Tn;
74
                    Td = ri[WS(is, 8)];
75
                    Te = ri[WS(is, 5)];
76
                    Tf = Td + Te;
77
                    T2d = Td - Te;
78
                    {
79
                         E T7, T8, T9, Ta;
80
                         T7 = ri[WS(is, 12)];
81
                         T8 = ri[WS(is, 10)];
82
                         T9 = ri[WS(is, 4)];
83
                         Ta = T8 + T9;
84
                         Tb = T7 + Ta;
85
                         Ty = FMS(KP500000000, Ta, T7);
86
                         Tq = T8 - T9;
87
                    }
88
                    {
89
                         E T2, T3, T4, T5;
90
                         T2 = ri[WS(is, 1)];
91
                         T3 = ri[WS(is, 3)];
92
                         T4 = ri[WS(is, 9)];
93
                         T5 = T3 + T4;
94
                         T6 = T2 + T5;
95
                         Tx = FNMS(KP500000000, T5, T2);
96
                         Tr = T4 - T3;
97
                    }
98
                    {
99
                         E Tg, Th, Tj, Tk;
100
                         Tg = ri[WS(is, 11)];
101
                         Th = ri[WS(is, 6)];
102
                         Ti = Tg + Th;
103
                         Tt = Tg - Th;
104
                         Tj = ri[WS(is, 7)];
105
                         Tk = ri[WS(is, 2)];
106
                         Tl = Tj + Tk;
107
                         Tu = Tj - Tk;
108
                    }
109
                    Tm = Ti + Tl;
110
                    T2e = Tt + Tu;
111
                    T2n = T6 - Tb;
112
                    T2o = T2d + T2e;
113
                    Tc = T6 + Tb;
114
                    Tn = Tf + Tm;
115
                    To = Tc + Tn;
116
                    TH = Tc - Tn;
117
                    {
118
                         E T2f, T2g, Tz, TA;
119
                         T2f = FNMS(KP500000000, T2e, T2d);
120
                         T2g = Tr + Tq;
121
                         T2h = FMA(KP866025403, T2g, T2f);
122
                         T2k = FNMS(KP866025403, T2g, T2f);
123
                         Tz = Tx - Ty;
124
                         TA = FNMS(KP500000000, Tm, Tf);
125
                         TB = Tz + TA;
126
                         TE = Tz - TA;
127
                    }
128
                    {
129
                         E Ts, Tv, T2a, T2b;
130
                         Ts = Tq - Tr;
131
                         Tv = Tt - Tu;
132
                         Tw = Ts + Tv;
133
                         TF = Ts - Tv;
134
                         T2a = Tx + Ty;
135
                         T2b = Ti - Tl;
136
                         T2c = FMA(KP866025403, T2b, T2a);
137
                         T2j = FNMS(KP866025403, T2b, T2a);
138
                    }
139
               }
140
               {
141
                    E TM, T1R, T10, T1l, T18, TX, T1k, T15, TP, T1a, TS, T1b, TT, T1S, TK;
142
                    E TL, TU, T11;
143
                    TK = ii[WS(is, 8)];
144
                    TL = ii[WS(is, 5)];
145
                    TM = TK - TL;
146
                    T1R = TK + TL;
147
                    {
148
                         E T16, TY, TZ, T17;
149
                         T16 = ii[WS(is, 12)];
150
                         TY = ii[WS(is, 10)];
151
                         TZ = ii[WS(is, 4)];
152
                         T17 = TY + TZ;
153
                         T10 = TY - TZ;
154
                         T1l = T16 + T17;
155
                         T18 = FMS(KP500000000, T17, T16);
156
                    }
157
                    {
158
                         E T13, TV, TW, T14;
159
                         T13 = ii[WS(is, 1)];
160
                         TV = ii[WS(is, 9)];
161
                         TW = ii[WS(is, 3)];
162
                         T14 = TW + TV;
163
                         TX = TV - TW;
164
                         T1k = T13 + T14;
165
                         T15 = FNMS(KP500000000, T14, T13);
166
                    }
167
                    {
168
                         E TN, TO, TQ, TR;
169
                         TN = ii[WS(is, 11)];
170
                         TO = ii[WS(is, 6)];
171
                         TP = TN - TO;
172
                         T1a = TN + TO;
173
                         TQ = ii[WS(is, 7)];
174
                         TR = ii[WS(is, 2)];
175
                         TS = TQ - TR;
176
                         T1b = TQ + TR;
177
                    }
178
                    TT = TP + TS;
179
                    T1S = T1a + T1b;
180
                    T1j = TM + TT;
181
                    T1m = T1k - T1l;
182
                    TU = FNMS(KP500000000, TT, TM);
183
                    T11 = TX + T10;
184
                    T12 = FMA(KP866025403, T11, TU);
185
                    T1f = FNMS(KP866025403, T11, TU);
186
                    {
187
                         E T1Z, T20, T1Q, T1T;
188
                         T1Z = T15 - T18;
189
                         T20 = FNMS(KP500000000, T1S, T1R);
190
                         T21 = T1Z + T20;
191
                         T24 = T1Z - T20;
192
                         T1Q = T1k + T1l;
193
                         T1T = T1R + T1S;
194
                         T1U = T1Q + T1T;
195
                         T27 = T1Q - T1T;
196
                    }
197
                    {
198
                         E T19, T1c, T1W, T1X;
199
                         T19 = T15 + T18;
200
                         T1c = T1a - T1b;
201
                         T1d = FMA(KP866025403, T1c, T19);
202
                         T1g = FNMS(KP866025403, T1c, T19);
203
                         T1W = T10 - TX;
204
                         T1X = TP - TS;
205
                         T1Y = T1W + T1X;
206
                         T25 = T1W - T1X;
207
                    }
208
               }
209
               ro[0] = T1 + To;
210
               io[0] = T1P + T1U;
211
               {
212
                    E T1z, T1J, T1G, T1H, T1w, T1I, T1n, T1i, T1s, T1E, TD, T1D, TI, T1r, T1e;
213
                    E T1h;
214
                    {
215
                         E T1x, T1y, T1u, T1v;
216
                         T1x = FNMS(KP226109445, Tw, TB);
217
                         T1y = FMA(KP686558370, TE, TF);
218
                         T1z = FNMS(KP769338817, T1y, T1x);
219
                         T1J = FMA(KP769338817, T1y, T1x);
220
                         T1G = FMA(KP302775637, T1j, T1m);
221
                         T1u = FNMS(KP038632954, T12, T1d);
222
                         T1v = FNMS(KP612264650, T1f, T1g);
223
                         T1H = FNMS(KP853480001, T1v, T1u);
224
                         T1w = FMA(KP853480001, T1v, T1u);
225
                         T1I = FNMS(KP522026385, T1H, T1G);
226
                    }
227
                    T1n = FNMS(KP302775637, T1m, T1j);
228
                    T1e = FMA(KP038632954, T1d, T12);
229
                    T1h = FMA(KP612264650, T1g, T1f);
230
                    T1i = FNMS(KP853480001, T1h, T1e);
231
                    T1s = FNMS(KP522026385, T1i, T1n);
232
                    T1E = FMA(KP853480001, T1h, T1e);
233
                    {
234
                         E TG, T1q, Tp, TC, T1p;
235
                         TG = FNMS(KP514918778, TF, TE);
236
                         T1q = FNMS(KP859542535, TG, TH);
237
                         Tp = FNMS(KP083333333, To, T1);
238
                         TC = FMA(KP301479260, TB, Tw);
239
                         T1p = FNMS(KP251768516, TC, Tp);
240
                         TD = FMA(KP503537032, TC, Tp);
241
                         T1D = FNMS(KP300462606, T1q, T1p);
242
                         TI = FMA(KP581704778, TH, TG);
243
                         T1r = FMA(KP300462606, T1q, T1p);
244
                    }
245
                    {
246
                         E TJ, T1o, T1L, T1M;
247
                         TJ = FMA(KP516520780, TI, TD);
248
                         T1o = FMA(KP957805992, T1n, T1i);
249
                         ro[WS(os, 1)] = FNMS(KP600477271, T1o, TJ);
250
                         ro[WS(os, 12)] = FMA(KP600477271, T1o, TJ);
251
                         {
252
                              E T1t, T1A, T1N, T1O;
253
                              T1t = FNMS(KP575140729, T1s, T1r);
254
                              T1A = FMA(KP968287244, T1z, T1w);
255
                              ro[WS(os, 9)] = FNMS(KP520028571, T1A, T1t);
256
                              ro[WS(os, 3)] = FMA(KP520028571, T1A, T1t);
257
                              T1N = FNMS(KP516520780, TI, TD);
258
                              T1O = FMA(KP957805992, T1G, T1H);
259
                              ro[WS(os, 8)] = FNMS(KP600477271, T1O, T1N);
260
                              ro[WS(os, 5)] = FMA(KP600477271, T1O, T1N);
261
                         }
262
                         T1L = FNMS(KP520028571, T1E, T1D);
263
                         T1M = FNMS(KP875502302, T1J, T1I);
264
                         ro[WS(os, 11)] = FNMS(KP575140729, T1M, T1L);
265
                         ro[WS(os, 6)] = FMA(KP575140729, T1M, T1L);
266
                         {
267
                              E T1F, T1K, T1B, T1C;
268
                              T1F = FMA(KP520028571, T1E, T1D);
269
                              T1K = FMA(KP875502302, T1J, T1I);
270
                              ro[WS(os, 7)] = FNMS(KP575140729, T1K, T1F);
271
                              ro[WS(os, 2)] = FMA(KP575140729, T1K, T1F);
272
                              T1B = FMA(KP575140729, T1s, T1r);
273
                              T1C = FNMS(KP968287244, T1z, T1w);
274
                              ro[WS(os, 10)] = FNMS(KP520028571, T1C, T1B);
275
                              ro[WS(os, 4)] = FMA(KP520028571, T1C, T1B);
276
                         }
277
                    }
278
               }
279
               {
280
                    E T2F, T2N, T2v, T2u, T2A, T2K, T2p, T2m, T2C, T2M, T23, T2J, T28, T2z, T2i;
281
                    E T2l;
282
                    {
283
                         E T2D, T2E, T2s, T2t;
284
                         T2D = FNMS(KP226109445, T1Y, T21);
285
                         T2E = FMA(KP686558370, T24, T25);
286
                         T2F = FNMS(KP769338817, T2E, T2D);
287
                         T2N = FMA(KP769338817, T2E, T2D);
288
                         T2v = FNMS(KP302775637, T2n, T2o);
289
                         T2s = FMA(KP038632954, T2c, T2h);
290
                         T2t = FMA(KP612264650, T2j, T2k);
291
                         T2u = FNMS(KP853480001, T2t, T2s);
292
                         T2A = FNMS(KP522026385, T2u, T2v);
293
                         T2K = FMA(KP853480001, T2t, T2s);
294
                    }
295
                    T2p = FMA(KP302775637, T2o, T2n);
296
                    T2i = FNMS(KP038632954, T2h, T2c);
297
                    T2l = FNMS(KP612264650, T2k, T2j);
298
                    T2m = FNMS(KP853480001, T2l, T2i);
299
                    T2C = FMA(KP853480001, T2l, T2i);
300
                    T2M = FNMS(KP522026385, T2m, T2p);
301
                    {
302
                         E T26, T2y, T1V, T22, T2x;
303
                         T26 = FNMS(KP514918778, T25, T24);
304
                         T2y = FNMS(KP859542535, T26, T27);
305
                         T1V = FNMS(KP083333333, T1U, T1P);
306
                         T22 = FMA(KP301479260, T21, T1Y);
307
                         T2x = FNMS(KP251768516, T22, T1V);
308
                         T23 = FMA(KP503537032, T22, T1V);
309
                         T2J = FNMS(KP300462606, T2y, T2x);
310
                         T28 = FMA(KP581704778, T27, T26);
311
                         T2z = FMA(KP300462606, T2y, T2x);
312
                    }
313
                    {
314
                         E T29, T2q, T2L, T2O;
315
                         T29 = FNMS(KP516520780, T28, T23);
316
                         T2q = FMA(KP957805992, T2p, T2m);
317
                         io[WS(os, 5)] = FNMS(KP600477271, T2q, T29);
318
                         io[WS(os, 8)] = FMA(KP600477271, T2q, T29);
319
                         {
320
                              E T2r, T2w, T2P, T2Q;
321
                              T2r = FMA(KP516520780, T28, T23);
322
                              T2w = FMA(KP957805992, T2v, T2u);
323
                              io[WS(os, 1)] = FMA(KP600477271, T2w, T2r);
324
                              io[WS(os, 12)] = FNMS(KP600477271, T2w, T2r);
325
                              T2P = FMA(KP520028571, T2K, T2J);
326
                              T2Q = FMA(KP875502302, T2N, T2M);
327
                              io[WS(os, 6)] = FNMS(KP575140729, T2Q, T2P);
328
                              io[WS(os, 11)] = FMA(KP575140729, T2Q, T2P);
329
                         }
330
                         T2L = FNMS(KP520028571, T2K, T2J);
331
                         T2O = FNMS(KP875502302, T2N, T2M);
332
                         io[WS(os, 2)] = FNMS(KP575140729, T2O, T2L);
333
                         io[WS(os, 7)] = FMA(KP575140729, T2O, T2L);
334
                         {
335
                              E T2H, T2I, T2B, T2G;
336
                              T2H = FNMS(KP575140729, T2A, T2z);
337
                              T2I = FMA(KP968287244, T2F, T2C);
338
                              io[WS(os, 4)] = FNMS(KP520028571, T2I, T2H);
339
                              io[WS(os, 10)] = FMA(KP520028571, T2I, T2H);
340
                              T2B = FMA(KP575140729, T2A, T2z);
341
                              T2G = FNMS(KP968287244, T2F, T2C);
342
                              io[WS(os, 3)] = FNMS(KP520028571, T2G, T2B);
343
                              io[WS(os, 9)] = FMA(KP520028571, T2G, T2B);
344
                         }
345
                    }
346
               }
347
          }
348
     }
349
}
350

    
351
static const kdft_desc desc = { 13, "n1_13", {62, 0, 114, 0}, &GENUS, 0, 0, 0, 0 };
352

    
353
void X(codelet_n1_13) (planner *p) {
354
     X(kdft_register) (p, n1_13, &desc);
355
}
356

    
357
#else
358

    
359
/* Generated by: ../../../genfft/gen_notw.native -compact -variables 4 -pipeline-latency 4 -n 13 -name n1_13 -include dft/scalar/n.h */
360

    
361
/*
362
 * This function contains 176 FP additions, 68 FP multiplications,
363
 * (or, 138 additions, 30 multiplications, 38 fused multiply/add),
364
 * 71 stack variables, 20 constants, and 52 memory accesses
365
 */
366
#include "dft/scalar/n.h"
367

    
368
static void n1_13(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, INT v, INT ivs, INT ovs)
369
{
370
     DK(KP2_000000000, +2.000000000000000000000000000000000000000000000);
371
     DK(KP083333333, +0.083333333333333333333333333333333333333333333);
372
     DK(KP251768516, +0.251768516431883313623436926934233488546674281);
373
     DK(KP075902986, +0.075902986037193865983102897245103540356428373);
374
     DK(KP132983124, +0.132983124607418643793760531921092974399165133);
375
     DK(KP258260390, +0.258260390311744861420450644284508567852516811);
376
     DK(KP1_732050807, +1.732050807568877293527446341505872366942805254);
377
     DK(KP300238635, +0.300238635966332641462884626667381504676006424);
378
     DK(KP011599105, +0.011599105605768290721655456654083252189827041);
379
     DK(KP156891391, +0.156891391051584611046832726756003269660212636);
380
     DK(KP256247671, +0.256247671582936600958684654061725059144125175);
381
     DK(KP174138601, +0.174138601152135905005660794929264742616964676);
382
     DK(KP575140729, +0.575140729474003121368385547455453388461001608);
383
     DK(KP503537032, +0.503537032863766627246873853868466977093348562);
384
     DK(KP113854479, +0.113854479055790798974654345867655310534642560);
385
     DK(KP265966249, +0.265966249214837287587521063842185948798330267);
386
     DK(KP387390585, +0.387390585467617292130675966426762851778775217);
387
     DK(KP866025403, +0.866025403784438646763723170752936183471402627);
388
     DK(KP300462606, +0.300462606288665774426601772289207995520941381);
389
     DK(KP500000000, +0.500000000000000000000000000000000000000000000);
390
     {
391
          INT i;
392
          for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs, MAKE_VOLATILE_STRIDE(52, is), MAKE_VOLATILE_STRIDE(52, os)) {
393
               E T1, T1q, Tt, Tu, To, T22, T20, T24, TF, TH, TA, TI, T1X, T25, T2a;
394
               E T2d, T18, T1n, T2k, T2n, T1l, T1r, T1f, T1o, T2h, T2m;
395
               T1 = ri[0];
396
               T1q = ii[0];
397
               {
398
                    E Tf, Tp, Tb, TC, Tx, T6, TB, Tw, Ti, Tq, Tl, Tr, Tm, Ts, Td;
399
                    E Te, Tc, Tn;
400
                    Td = ri[WS(is, 8)];
401
                    Te = ri[WS(is, 5)];
402
                    Tf = Td + Te;
403
                    Tp = Td - Te;
404
                    {
405
                         E T7, T8, T9, Ta;
406
                         T7 = ri[WS(is, 12)];
407
                         T8 = ri[WS(is, 10)];
408
                         T9 = ri[WS(is, 4)];
409
                         Ta = T8 + T9;
410
                         Tb = T7 + Ta;
411
                         TC = T8 - T9;
412
                         Tx = FNMS(KP500000000, Ta, T7);
413
                    }
414
                    {
415
                         E T2, T3, T4, T5;
416
                         T2 = ri[WS(is, 1)];
417
                         T3 = ri[WS(is, 3)];
418
                         T4 = ri[WS(is, 9)];
419
                         T5 = T3 + T4;
420
                         T6 = T2 + T5;
421
                         TB = T3 - T4;
422
                         Tw = FNMS(KP500000000, T5, T2);
423
                    }
424
                    {
425
                         E Tg, Th, Tj, Tk;
426
                         Tg = ri[WS(is, 11)];
427
                         Th = ri[WS(is, 6)];
428
                         Ti = Tg + Th;
429
                         Tq = Tg - Th;
430
                         Tj = ri[WS(is, 7)];
431
                         Tk = ri[WS(is, 2)];
432
                         Tl = Tj + Tk;
433
                         Tr = Tj - Tk;
434
                    }
435
                    Tm = Ti + Tl;
436
                    Ts = Tq + Tr;
437
                    Tt = Tp + Ts;
438
                    Tu = T6 - Tb;
439
                    Tc = T6 + Tb;
440
                    Tn = Tf + Tm;
441
                    To = Tc + Tn;
442
                    T22 = KP300462606 * (Tc - Tn);
443
                    {
444
                         E T1Y, T1Z, TD, TE;
445
                         T1Y = TB + TC;
446
                         T1Z = Tq - Tr;
447
                         T20 = T1Y - T1Z;
448
                         T24 = T1Y + T1Z;
449
                         TD = KP866025403 * (TB - TC);
450
                         TE = FNMS(KP500000000, Ts, Tp);
451
                         TF = TD - TE;
452
                         TH = TD + TE;
453
                    }
454
                    {
455
                         E Ty, Tz, T1V, T1W;
456
                         Ty = Tw - Tx;
457
                         Tz = KP866025403 * (Ti - Tl);
458
                         TA = Ty + Tz;
459
                         TI = Ty - Tz;
460
                         T1V = Tw + Tx;
461
                         T1W = FNMS(KP500000000, Tm, Tf);
462
                         T1X = T1V - T1W;
463
                         T25 = T1V + T1W;
464
                    }
465
               }
466
               {
467
                    E TZ, T2b, TV, T1i, T1a, TQ, T1h, T19, T12, T1d, T15, T1c, T16, T2c, TX;
468
                    E TY, TW, T17;
469
                    TX = ii[WS(is, 8)];
470
                    TY = ii[WS(is, 5)];
471
                    TZ = TX + TY;
472
                    T2b = TX - TY;
473
                    {
474
                         E TR, TS, TT, TU;
475
                         TR = ii[WS(is, 12)];
476
                         TS = ii[WS(is, 10)];
477
                         TT = ii[WS(is, 4)];
478
                         TU = TS + TT;
479
                         TV = FNMS(KP500000000, TU, TR);
480
                         T1i = TR + TU;
481
                         T1a = TS - TT;
482
                    }
483
                    {
484
                         E TM, TN, TO, TP;
485
                         TM = ii[WS(is, 1)];
486
                         TN = ii[WS(is, 3)];
487
                         TO = ii[WS(is, 9)];
488
                         TP = TN + TO;
489
                         TQ = FNMS(KP500000000, TP, TM);
490
                         T1h = TM + TP;
491
                         T19 = TN - TO;
492
                    }
493
                    {
494
                         E T10, T11, T13, T14;
495
                         T10 = ii[WS(is, 11)];
496
                         T11 = ii[WS(is, 6)];
497
                         T12 = T10 + T11;
498
                         T1d = T10 - T11;
499
                         T13 = ii[WS(is, 7)];
500
                         T14 = ii[WS(is, 2)];
501
                         T15 = T13 + T14;
502
                         T1c = T13 - T14;
503
                    }
504
                    T16 = T12 + T15;
505
                    T2c = T1d + T1c;
506
                    T2a = T1h - T1i;
507
                    T2d = T2b + T2c;
508
                    TW = TQ + TV;
509
                    T17 = FNMS(KP500000000, T16, TZ);
510
                    T18 = TW - T17;
511
                    T1n = TW + T17;
512
                    {
513
                         E T2i, T2j, T1j, T1k;
514
                         T2i = TQ - TV;
515
                         T2j = KP866025403 * (T15 - T12);
516
                         T2k = T2i + T2j;
517
                         T2n = T2i - T2j;
518
                         T1j = T1h + T1i;
519
                         T1k = TZ + T16;
520
                         T1l = KP300462606 * (T1j - T1k);
521
                         T1r = T1j + T1k;
522
                    }
523
                    {
524
                         E T1b, T1e, T2f, T2g;
525
                         T1b = T19 + T1a;
526
                         T1e = T1c - T1d;
527
                         T1f = T1b + T1e;
528
                         T1o = T1e - T1b;
529
                         T2f = FNMS(KP500000000, T2c, T2b);
530
                         T2g = KP866025403 * (T1a - T19);
531
                         T2h = T2f - T2g;
532
                         T2m = T2g + T2f;
533
                    }
534
               }
535
               ro[0] = T1 + To;
536
               io[0] = T1q + T1r;
537
               {
538
                    E T1D, T1N, T1y, T1x, T1E, T1O, Tv, TK, T1J, T1Q, T1m, T1R, T1t, T1I, TG;
539
                    E TJ;
540
                    {
541
                         E T1B, T1C, T1v, T1w;
542
                         T1B = FMA(KP387390585, T1f, KP265966249 * T18);
543
                         T1C = FMA(KP113854479, T1o, KP503537032 * T1n);
544
                         T1D = T1B + T1C;
545
                         T1N = T1C - T1B;
546
                         T1y = FMA(KP575140729, Tu, KP174138601 * Tt);
547
                         T1v = FNMS(KP156891391, TH, KP256247671 * TI);
548
                         T1w = FMA(KP011599105, TF, KP300238635 * TA);
549
                         T1x = T1v - T1w;
550
                         T1E = T1y + T1x;
551
                         T1O = KP1_732050807 * (T1v + T1w);
552
                    }
553
                    Tv = FNMS(KP174138601, Tu, KP575140729 * Tt);
554
                    TG = FNMS(KP300238635, TF, KP011599105 * TA);
555
                    TJ = FMA(KP256247671, TH, KP156891391 * TI);
556
                    TK = TG - TJ;
557
                    T1J = KP1_732050807 * (TJ + TG);
558
                    T1Q = Tv - TK;
559
                    {
560
                         E T1g, T1H, T1p, T1s, T1G;
561
                         T1g = FNMS(KP132983124, T1f, KP258260390 * T18);
562
                         T1H = T1l - T1g;
563
                         T1p = FNMS(KP251768516, T1o, KP075902986 * T1n);
564
                         T1s = FNMS(KP083333333, T1r, T1q);
565
                         T1G = T1s - T1p;
566
                         T1m = FMA(KP2_000000000, T1g, T1l);
567
                         T1R = T1H + T1G;
568
                         T1t = FMA(KP2_000000000, T1p, T1s);
569
                         T1I = T1G - T1H;
570
                    }
571
                    {
572
                         E TL, T1u, T1P, T1S;
573
                         TL = FMA(KP2_000000000, TK, Tv);
574
                         T1u = T1m + T1t;
575
                         io[WS(os, 1)] = TL + T1u;
576
                         io[WS(os, 12)] = T1u - TL;
577
                         {
578
                              E T1z, T1A, T1T, T1U;
579
                              T1z = FMS(KP2_000000000, T1x, T1y);
580
                              T1A = T1t - T1m;
581
                              io[WS(os, 5)] = T1z + T1A;
582
                              io[WS(os, 8)] = T1A - T1z;
583
                              T1T = T1R - T1Q;
584
                              T1U = T1O + T1N;
585
                              io[WS(os, 4)] = T1T - T1U;
586
                              io[WS(os, 10)] = T1U + T1T;
587
                         }
588
                         T1P = T1N - T1O;
589
                         T1S = T1Q + T1R;
590
                         io[WS(os, 3)] = T1P + T1S;
591
                         io[WS(os, 9)] = T1S - T1P;
592
                         {
593
                              E T1L, T1M, T1F, T1K;
594
                              T1L = T1J + T1I;
595
                              T1M = T1E + T1D;
596
                              io[WS(os, 6)] = T1L - T1M;
597
                              io[WS(os, 11)] = T1M + T1L;
598
                              T1F = T1D - T1E;
599
                              T1K = T1I - T1J;
600
                              io[WS(os, 2)] = T1F + T1K;
601
                              io[WS(os, 7)] = T1K - T1F;
602
                         }
603
                    }
604
               }
605
               {
606
                    E T2y, T2I, T2J, T2K, T2B, T2L, T2e, T2p, T2u, T2G, T23, T2F, T28, T2t, T2l;
607
                    E T2o;
608
                    {
609
                         E T2w, T2x, T2z, T2A;
610
                         T2w = FMA(KP387390585, T20, KP265966249 * T1X);
611
                         T2x = FNMS(KP503537032, T25, KP113854479 * T24);
612
                         T2y = T2w + T2x;
613
                         T2I = T2w - T2x;
614
                         T2J = FMA(KP575140729, T2a, KP174138601 * T2d);
615
                         T2z = FNMS(KP300238635, T2n, KP011599105 * T2m);
616
                         T2A = FNMS(KP156891391, T2h, KP256247671 * T2k);
617
                         T2K = T2z + T2A;
618
                         T2B = KP1_732050807 * (T2z - T2A);
619
                         T2L = T2J + T2K;
620
                    }
621
                    T2e = FNMS(KP575140729, T2d, KP174138601 * T2a);
622
                    T2l = FMA(KP256247671, T2h, KP156891391 * T2k);
623
                    T2o = FMA(KP300238635, T2m, KP011599105 * T2n);
624
                    T2p = T2l - T2o;
625
                    T2u = T2e - T2p;
626
                    T2G = KP1_732050807 * (T2o + T2l);
627
                    {
628
                         E T21, T2r, T26, T27, T2s;
629
                         T21 = FNMS(KP132983124, T20, KP258260390 * T1X);
630
                         T2r = T22 - T21;
631
                         T26 = FMA(KP251768516, T24, KP075902986 * T25);
632
                         T27 = FNMS(KP083333333, To, T1);
633
                         T2s = T27 - T26;
634
                         T23 = FMA(KP2_000000000, T21, T22);
635
                         T2F = T2s - T2r;
636
                         T28 = FMA(KP2_000000000, T26, T27);
637
                         T2t = T2r + T2s;
638
                    }
639
                    {
640
                         E T29, T2q, T2N, T2O;
641
                         T29 = T23 + T28;
642
                         T2q = FMA(KP2_000000000, T2p, T2e);
643
                         ro[WS(os, 12)] = T29 - T2q;
644
                         ro[WS(os, 1)] = T29 + T2q;
645
                         {
646
                              E T2v, T2C, T2P, T2Q;
647
                              T2v = T2t - T2u;
648
                              T2C = T2y - T2B;
649
                              ro[WS(os, 10)] = T2v - T2C;
650
                              ro[WS(os, 4)] = T2v + T2C;
651
                              T2P = T28 - T23;
652
                              T2Q = FMS(KP2_000000000, T2K, T2J);
653
                              ro[WS(os, 5)] = T2P - T2Q;
654
                              ro[WS(os, 8)] = T2P + T2Q;
655
                         }
656
                         T2N = T2F - T2G;
657
                         T2O = T2L - T2I;
658
                         ro[WS(os, 11)] = T2N - T2O;
659
                         ro[WS(os, 6)] = T2N + T2O;
660
                         {
661
                              E T2H, T2M, T2D, T2E;
662
                              T2H = T2F + T2G;
663
                              T2M = T2I + T2L;
664
                              ro[WS(os, 7)] = T2H - T2M;
665
                              ro[WS(os, 2)] = T2H + T2M;
666
                              T2D = T2t + T2u;
667
                              T2E = T2y + T2B;
668
                              ro[WS(os, 3)] = T2D - T2E;
669
                              ro[WS(os, 9)] = T2D + T2E;
670
                         }
671
                    }
672
               }
673
          }
674
     }
675
}
676

    
677
static const kdft_desc desc = { 13, "n1_13", {138, 30, 38, 0}, &GENUS, 0, 0, 0, 0 };
678

    
679
void X(codelet_n1_13) (planner *p) {
680
     X(kdft_register) (p, n1_13, &desc);
681
}
682

    
683
#endif