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

History | View | Annotate | Download (16.6 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 15 -name n1_15 -include dft/scalar/n.h */
29

    
30
/*
31
 * This function contains 156 FP additions, 84 FP multiplications,
32
 * (or, 72 additions, 0 multiplications, 84 fused multiply/add),
33
 * 69 stack variables, 6 constants, and 60 memory accesses
34
 */
35
#include "dft/scalar/n.h"
36

    
37
static void n1_15(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, INT v, INT ivs, INT ovs)
38
{
39
     DK(KP951056516, +0.951056516295153572116439333379382143405698634);
40
     DK(KP559016994, +0.559016994374947424102293417182819058860154590);
41
     DK(KP618033988, +0.618033988749894848204586834365638117720309180);
42
     DK(KP250000000, +0.250000000000000000000000000000000000000000000);
43
     DK(KP866025403, +0.866025403784438646763723170752936183471402627);
44
     DK(KP500000000, +0.500000000000000000000000000000000000000000000);
45
     {
46
          INT i;
47
          for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs, MAKE_VOLATILE_STRIDE(60, is), MAKE_VOLATILE_STRIDE(60, os)) {
48
               E T5, T2l, Tx, TV, T1z, T1X, Tl, Tq, Tr, TN, TS, TT, T2c, T2d, T2n;
49
               E T1O, T1P, T1Z, T1l, T1q, T1B, TZ, T10, T11, Ta, Tf, Tg, TC, TH, TI;
50
               E T2f, T2g, T2m, T1R, T1S, T1Y, T1a, T1f, T1A, TW, TX, TY;
51
               {
52
                    E T1, T1v, T4, T1y, Tw, T1w, Tt, T1x;
53
                    T1 = ri[0];
54
                    T1v = ii[0];
55
                    {
56
                         E T2, T3, Tu, Tv;
57
                         T2 = ri[WS(is, 5)];
58
                         T3 = ri[WS(is, 10)];
59
                         T4 = T2 + T3;
60
                         T1y = T3 - T2;
61
                         Tu = ii[WS(is, 5)];
62
                         Tv = ii[WS(is, 10)];
63
                         Tw = Tu - Tv;
64
                         T1w = Tu + Tv;
65
                    }
66
                    T5 = T1 + T4;
67
                    T2l = T1v + T1w;
68
                    Tt = FNMS(KP500000000, T4, T1);
69
                    Tx = FNMS(KP866025403, Tw, Tt);
70
                    TV = FMA(KP866025403, Tw, Tt);
71
                    T1x = FNMS(KP500000000, T1w, T1v);
72
                    T1z = FMA(KP866025403, T1y, T1x);
73
                    T1X = FNMS(KP866025403, T1y, T1x);
74
               }
75
               {
76
                    E Th, Tk, TJ, T1k, T1h, T1i, TM, T1j, Tm, Tp, TO, T1p, T1m, T1n, TR;
77
                    E T1o;
78
                    {
79
                         E Ti, Tj, TK, TL;
80
                         Th = ri[WS(is, 6)];
81
                         Ti = ri[WS(is, 11)];
82
                         Tj = ri[WS(is, 1)];
83
                         Tk = Ti + Tj;
84
                         TJ = FNMS(KP500000000, Tk, Th);
85
                         T1k = Tj - Ti;
86
                         T1h = ii[WS(is, 6)];
87
                         TK = ii[WS(is, 11)];
88
                         TL = ii[WS(is, 1)];
89
                         T1i = TK + TL;
90
                         TM = TK - TL;
91
                         T1j = FNMS(KP500000000, T1i, T1h);
92
                    }
93
                    {
94
                         E Tn, To, TP, TQ;
95
                         Tm = ri[WS(is, 9)];
96
                         Tn = ri[WS(is, 14)];
97
                         To = ri[WS(is, 4)];
98
                         Tp = Tn + To;
99
                         TO = FNMS(KP500000000, Tp, Tm);
100
                         T1p = To - Tn;
101
                         T1m = ii[WS(is, 9)];
102
                         TP = ii[WS(is, 14)];
103
                         TQ = ii[WS(is, 4)];
104
                         T1n = TP + TQ;
105
                         TR = TP - TQ;
106
                         T1o = FNMS(KP500000000, T1n, T1m);
107
                    }
108
                    Tl = Th + Tk;
109
                    Tq = Tm + Tp;
110
                    Tr = Tl + Tq;
111
                    TN = FNMS(KP866025403, TM, TJ);
112
                    TS = FNMS(KP866025403, TR, TO);
113
                    TT = TN + TS;
114
                    T2c = T1h + T1i;
115
                    T2d = T1m + T1n;
116
                    T2n = T2c + T2d;
117
                    T1O = FNMS(KP866025403, T1k, T1j);
118
                    T1P = FNMS(KP866025403, T1p, T1o);
119
                    T1Z = T1O + T1P;
120
                    T1l = FMA(KP866025403, T1k, T1j);
121
                    T1q = FMA(KP866025403, T1p, T1o);
122
                    T1B = T1l + T1q;
123
                    TZ = FMA(KP866025403, TM, TJ);
124
                    T10 = FMA(KP866025403, TR, TO);
125
                    T11 = TZ + T10;
126
               }
127
               {
128
                    E T6, T9, Ty, T19, T16, T17, TB, T18, Tb, Te, TD, T1e, T1b, T1c, TG;
129
                    E T1d;
130
                    {
131
                         E T7, T8, Tz, TA;
132
                         T6 = ri[WS(is, 3)];
133
                         T7 = ri[WS(is, 8)];
134
                         T8 = ri[WS(is, 13)];
135
                         T9 = T7 + T8;
136
                         Ty = FNMS(KP500000000, T9, T6);
137
                         T19 = T8 - T7;
138
                         T16 = ii[WS(is, 3)];
139
                         Tz = ii[WS(is, 8)];
140
                         TA = ii[WS(is, 13)];
141
                         T17 = Tz + TA;
142
                         TB = Tz - TA;
143
                         T18 = FNMS(KP500000000, T17, T16);
144
                    }
145
                    {
146
                         E Tc, Td, TE, TF;
147
                         Tb = ri[WS(is, 12)];
148
                         Tc = ri[WS(is, 2)];
149
                         Td = ri[WS(is, 7)];
150
                         Te = Tc + Td;
151
                         TD = FNMS(KP500000000, Te, Tb);
152
                         T1e = Td - Tc;
153
                         T1b = ii[WS(is, 12)];
154
                         TE = ii[WS(is, 2)];
155
                         TF = ii[WS(is, 7)];
156
                         T1c = TE + TF;
157
                         TG = TE - TF;
158
                         T1d = FNMS(KP500000000, T1c, T1b);
159
                    }
160
                    Ta = T6 + T9;
161
                    Tf = Tb + Te;
162
                    Tg = Ta + Tf;
163
                    TC = FNMS(KP866025403, TB, Ty);
164
                    TH = FNMS(KP866025403, TG, TD);
165
                    TI = TC + TH;
166
                    T2f = T16 + T17;
167
                    T2g = T1b + T1c;
168
                    T2m = T2f + T2g;
169
                    T1R = FNMS(KP866025403, T19, T18);
170
                    T1S = FNMS(KP866025403, T1e, T1d);
171
                    T1Y = T1R + T1S;
172
                    T1a = FMA(KP866025403, T19, T18);
173
                    T1f = FMA(KP866025403, T1e, T1d);
174
                    T1A = T1a + T1f;
175
                    TW = FMA(KP866025403, TB, Ty);
176
                    TX = FMA(KP866025403, TG, TD);
177
                    TY = TW + TX;
178
               }
179
               {
180
                    E T2a, Ts, T29, T2i, T2k, T2e, T2h, T2j, T2b;
181
                    T2a = Tg - Tr;
182
                    Ts = Tg + Tr;
183
                    T29 = FNMS(KP250000000, Ts, T5);
184
                    T2e = T2c - T2d;
185
                    T2h = T2f - T2g;
186
                    T2i = FNMS(KP618033988, T2h, T2e);
187
                    T2k = FMA(KP618033988, T2e, T2h);
188
                    ro[0] = T5 + Ts;
189
                    T2j = FMA(KP559016994, T2a, T29);
190
                    ro[WS(os, 9)] = FNMS(KP951056516, T2k, T2j);
191
                    ro[WS(os, 6)] = FMA(KP951056516, T2k, T2j);
192
                    T2b = FNMS(KP559016994, T2a, T29);
193
                    ro[WS(os, 12)] = FNMS(KP951056516, T2i, T2b);
194
                    ro[WS(os, 3)] = FMA(KP951056516, T2i, T2b);
195
               }
196
               {
197
                    E T2q, T2o, T2p, T2u, T2w, T2s, T2t, T2v, T2r;
198
                    T2q = T2m - T2n;
199
                    T2o = T2m + T2n;
200
                    T2p = FNMS(KP250000000, T2o, T2l);
201
                    T2s = Tl - Tq;
202
                    T2t = Ta - Tf;
203
                    T2u = FNMS(KP618033988, T2t, T2s);
204
                    T2w = FMA(KP618033988, T2s, T2t);
205
                    io[0] = T2l + T2o;
206
                    T2v = FMA(KP559016994, T2q, T2p);
207
                    io[WS(os, 6)] = FNMS(KP951056516, T2w, T2v);
208
                    io[WS(os, 9)] = FMA(KP951056516, T2w, T2v);
209
                    T2r = FNMS(KP559016994, T2q, T2p);
210
                    io[WS(os, 3)] = FNMS(KP951056516, T2u, T2r);
211
                    io[WS(os, 12)] = FMA(KP951056516, T2u, T2r);
212
               }
213
               {
214
                    E T1M, TU, T1L, T1U, T1W, T1Q, T1T, T1V, T1N;
215
                    T1M = TI - TT;
216
                    TU = TI + TT;
217
                    T1L = FNMS(KP250000000, TU, Tx);
218
                    T1Q = T1O - T1P;
219
                    T1T = T1R - T1S;
220
                    T1U = FNMS(KP618033988, T1T, T1Q);
221
                    T1W = FMA(KP618033988, T1Q, T1T);
222
                    ro[WS(os, 5)] = Tx + TU;
223
                    T1V = FMA(KP559016994, T1M, T1L);
224
                    ro[WS(os, 14)] = FNMS(KP951056516, T1W, T1V);
225
                    ro[WS(os, 11)] = FMA(KP951056516, T1W, T1V);
226
                    T1N = FNMS(KP559016994, T1M, T1L);
227
                    ro[WS(os, 2)] = FNMS(KP951056516, T1U, T1N);
228
                    ro[WS(os, 8)] = FMA(KP951056516, T1U, T1N);
229
               }
230
               {
231
                    E T22, T20, T21, T26, T28, T24, T25, T27, T23;
232
                    T22 = T1Y - T1Z;
233
                    T20 = T1Y + T1Z;
234
                    T21 = FNMS(KP250000000, T20, T1X);
235
                    T24 = TN - TS;
236
                    T25 = TC - TH;
237
                    T26 = FNMS(KP618033988, T25, T24);
238
                    T28 = FMA(KP618033988, T24, T25);
239
                    io[WS(os, 5)] = T1X + T20;
240
                    T27 = FMA(KP559016994, T22, T21);
241
                    io[WS(os, 11)] = FNMS(KP951056516, T28, T27);
242
                    io[WS(os, 14)] = FMA(KP951056516, T28, T27);
243
                    T23 = FNMS(KP559016994, T22, T21);
244
                    io[WS(os, 2)] = FMA(KP951056516, T26, T23);
245
                    io[WS(os, 8)] = FNMS(KP951056516, T26, T23);
246
               }
247
               {
248
                    E T1E, T1C, T1D, T1I, T1K, T1G, T1H, T1J, T1F;
249
                    T1E = T1A - T1B;
250
                    T1C = T1A + T1B;
251
                    T1D = FNMS(KP250000000, T1C, T1z);
252
                    T1G = TW - TX;
253
                    T1H = TZ - T10;
254
                    T1I = FMA(KP618033988, T1H, T1G);
255
                    T1K = FNMS(KP618033988, T1G, T1H);
256
                    io[WS(os, 10)] = T1z + T1C;
257
                    T1J = FNMS(KP559016994, T1E, T1D);
258
                    io[WS(os, 7)] = FMA(KP951056516, T1K, T1J);
259
                    io[WS(os, 13)] = FNMS(KP951056516, T1K, T1J);
260
                    T1F = FMA(KP559016994, T1E, T1D);
261
                    io[WS(os, 1)] = FNMS(KP951056516, T1I, T1F);
262
                    io[WS(os, 4)] = FMA(KP951056516, T1I, T1F);
263
               }
264
               {
265
                    E T14, T12, T13, T1s, T1u, T1g, T1r, T1t, T15;
266
                    T14 = TY - T11;
267
                    T12 = TY + T11;
268
                    T13 = FNMS(KP250000000, T12, TV);
269
                    T1g = T1a - T1f;
270
                    T1r = T1l - T1q;
271
                    T1s = FMA(KP618033988, T1r, T1g);
272
                    T1u = FNMS(KP618033988, T1g, T1r);
273
                    ro[WS(os, 10)] = TV + T12;
274
                    T1t = FNMS(KP559016994, T14, T13);
275
                    ro[WS(os, 7)] = FNMS(KP951056516, T1u, T1t);
276
                    ro[WS(os, 13)] = FMA(KP951056516, T1u, T1t);
277
                    T15 = FMA(KP559016994, T14, T13);
278
                    ro[WS(os, 4)] = FNMS(KP951056516, T1s, T15);
279
                    ro[WS(os, 1)] = FMA(KP951056516, T1s, T15);
280
               }
281
          }
282
     }
283
}
284

    
285
static const kdft_desc desc = { 15, "n1_15", {72, 0, 84, 0}, &GENUS, 0, 0, 0, 0 };
286

    
287
void X(codelet_n1_15) (planner *p) {
288
     X(kdft_register) (p, n1_15, &desc);
289
}
290

    
291
#else
292

    
293
/* Generated by: ../../../genfft/gen_notw.native -compact -variables 4 -pipeline-latency 4 -n 15 -name n1_15 -include dft/scalar/n.h */
294

    
295
/*
296
 * This function contains 156 FP additions, 56 FP multiplications,
297
 * (or, 128 additions, 28 multiplications, 28 fused multiply/add),
298
 * 69 stack variables, 6 constants, and 60 memory accesses
299
 */
300
#include "dft/scalar/n.h"
301

    
302
static void n1_15(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, INT v, INT ivs, INT ovs)
303
{
304
     DK(KP587785252, +0.587785252292473129168705954639072768597652438);
305
     DK(KP951056516, +0.951056516295153572116439333379382143405698634);
306
     DK(KP250000000, +0.250000000000000000000000000000000000000000000);
307
     DK(KP559016994, +0.559016994374947424102293417182819058860154590);
308
     DK(KP500000000, +0.500000000000000000000000000000000000000000000);
309
     DK(KP866025403, +0.866025403784438646763723170752936183471402627);
310
     {
311
          INT i;
312
          for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs, MAKE_VOLATILE_STRIDE(60, is), MAKE_VOLATILE_STRIDE(60, os)) {
313
               E T5, T2l, Tx, TV, T1C, T20, Tl, Tq, Tr, TN, TS, TT, T2c, T2d, T2n;
314
               E T1O, T1P, T22, T1l, T1q, T1w, TZ, T10, T11, Ta, Tf, Tg, TC, TH, TI;
315
               E T2f, T2g, T2m, T1R, T1S, T21, T1a, T1f, T1v, TW, TX, TY;
316
               {
317
                    E T1, T1z, T4, T1y, Tw, T1A, Tt, T1B;
318
                    T1 = ri[0];
319
                    T1z = ii[0];
320
                    {
321
                         E T2, T3, Tu, Tv;
322
                         T2 = ri[WS(is, 5)];
323
                         T3 = ri[WS(is, 10)];
324
                         T4 = T2 + T3;
325
                         T1y = KP866025403 * (T3 - T2);
326
                         Tu = ii[WS(is, 5)];
327
                         Tv = ii[WS(is, 10)];
328
                         Tw = KP866025403 * (Tu - Tv);
329
                         T1A = Tu + Tv;
330
                    }
331
                    T5 = T1 + T4;
332
                    T2l = T1z + T1A;
333
                    Tt = FNMS(KP500000000, T4, T1);
334
                    Tx = Tt - Tw;
335
                    TV = Tt + Tw;
336
                    T1B = FNMS(KP500000000, T1A, T1z);
337
                    T1C = T1y + T1B;
338
                    T20 = T1B - T1y;
339
               }
340
               {
341
                    E Th, Tk, TJ, T1h, T1i, T1j, TM, T1k, Tm, Tp, TO, T1m, T1n, T1o, TR;
342
                    E T1p;
343
                    {
344
                         E Ti, Tj, TK, TL;
345
                         Th = ri[WS(is, 6)];
346
                         Ti = ri[WS(is, 11)];
347
                         Tj = ri[WS(is, 1)];
348
                         Tk = Ti + Tj;
349
                         TJ = FNMS(KP500000000, Tk, Th);
350
                         T1h = KP866025403 * (Tj - Ti);
351
                         T1i = ii[WS(is, 6)];
352
                         TK = ii[WS(is, 11)];
353
                         TL = ii[WS(is, 1)];
354
                         T1j = TK + TL;
355
                         TM = KP866025403 * (TK - TL);
356
                         T1k = FNMS(KP500000000, T1j, T1i);
357
                    }
358
                    {
359
                         E Tn, To, TP, TQ;
360
                         Tm = ri[WS(is, 9)];
361
                         Tn = ri[WS(is, 14)];
362
                         To = ri[WS(is, 4)];
363
                         Tp = Tn + To;
364
                         TO = FNMS(KP500000000, Tp, Tm);
365
                         T1m = KP866025403 * (To - Tn);
366
                         T1n = ii[WS(is, 9)];
367
                         TP = ii[WS(is, 14)];
368
                         TQ = ii[WS(is, 4)];
369
                         T1o = TP + TQ;
370
                         TR = KP866025403 * (TP - TQ);
371
                         T1p = FNMS(KP500000000, T1o, T1n);
372
                    }
373
                    Tl = Th + Tk;
374
                    Tq = Tm + Tp;
375
                    Tr = Tl + Tq;
376
                    TN = TJ - TM;
377
                    TS = TO - TR;
378
                    TT = TN + TS;
379
                    T2c = T1i + T1j;
380
                    T2d = T1n + T1o;
381
                    T2n = T2c + T2d;
382
                    T1O = T1k - T1h;
383
                    T1P = T1p - T1m;
384
                    T22 = T1O + T1P;
385
                    T1l = T1h + T1k;
386
                    T1q = T1m + T1p;
387
                    T1w = T1l + T1q;
388
                    TZ = TJ + TM;
389
                    T10 = TO + TR;
390
                    T11 = TZ + T10;
391
               }
392
               {
393
                    E T6, T9, Ty, T16, T17, T18, TB, T19, Tb, Te, TD, T1b, T1c, T1d, TG;
394
                    E T1e;
395
                    {
396
                         E T7, T8, Tz, TA;
397
                         T6 = ri[WS(is, 3)];
398
                         T7 = ri[WS(is, 8)];
399
                         T8 = ri[WS(is, 13)];
400
                         T9 = T7 + T8;
401
                         Ty = FNMS(KP500000000, T9, T6);
402
                         T16 = KP866025403 * (T8 - T7);
403
                         T17 = ii[WS(is, 3)];
404
                         Tz = ii[WS(is, 8)];
405
                         TA = ii[WS(is, 13)];
406
                         T18 = Tz + TA;
407
                         TB = KP866025403 * (Tz - TA);
408
                         T19 = FNMS(KP500000000, T18, T17);
409
                    }
410
                    {
411
                         E Tc, Td, TE, TF;
412
                         Tb = ri[WS(is, 12)];
413
                         Tc = ri[WS(is, 2)];
414
                         Td = ri[WS(is, 7)];
415
                         Te = Tc + Td;
416
                         TD = FNMS(KP500000000, Te, Tb);
417
                         T1b = KP866025403 * (Td - Tc);
418
                         T1c = ii[WS(is, 12)];
419
                         TE = ii[WS(is, 2)];
420
                         TF = ii[WS(is, 7)];
421
                         T1d = TE + TF;
422
                         TG = KP866025403 * (TE - TF);
423
                         T1e = FNMS(KP500000000, T1d, T1c);
424
                    }
425
                    Ta = T6 + T9;
426
                    Tf = Tb + Te;
427
                    Tg = Ta + Tf;
428
                    TC = Ty - TB;
429
                    TH = TD - TG;
430
                    TI = TC + TH;
431
                    T2f = T17 + T18;
432
                    T2g = T1c + T1d;
433
                    T2m = T2f + T2g;
434
                    T1R = T19 - T16;
435
                    T1S = T1e - T1b;
436
                    T21 = T1R + T1S;
437
                    T1a = T16 + T19;
438
                    T1f = T1b + T1e;
439
                    T1v = T1a + T1f;
440
                    TW = Ty + TB;
441
                    TX = TD + TG;
442
                    TY = TW + TX;
443
               }
444
               {
445
                    E T2a, Ts, T29, T2i, T2k, T2e, T2h, T2j, T2b;
446
                    T2a = KP559016994 * (Tg - Tr);
447
                    Ts = Tg + Tr;
448
                    T29 = FNMS(KP250000000, Ts, T5);
449
                    T2e = T2c - T2d;
450
                    T2h = T2f - T2g;
451
                    T2i = FNMS(KP587785252, T2h, KP951056516 * T2e);
452
                    T2k = FMA(KP951056516, T2h, KP587785252 * T2e);
453
                    ro[0] = T5 + Ts;
454
                    T2j = T2a + T29;
455
                    ro[WS(os, 9)] = T2j - T2k;
456
                    ro[WS(os, 6)] = T2j + T2k;
457
                    T2b = T29 - T2a;
458
                    ro[WS(os, 12)] = T2b - T2i;
459
                    ro[WS(os, 3)] = T2b + T2i;
460
               }
461
               {
462
                    E T2q, T2o, T2p, T2u, T2w, T2s, T2t, T2v, T2r;
463
                    T2q = KP559016994 * (T2m - T2n);
464
                    T2o = T2m + T2n;
465
                    T2p = FNMS(KP250000000, T2o, T2l);
466
                    T2s = Tl - Tq;
467
                    T2t = Ta - Tf;
468
                    T2u = FNMS(KP587785252, T2t, KP951056516 * T2s);
469
                    T2w = FMA(KP951056516, T2t, KP587785252 * T2s);
470
                    io[0] = T2l + T2o;
471
                    T2v = T2q + T2p;
472
                    io[WS(os, 6)] = T2v - T2w;
473
                    io[WS(os, 9)] = T2w + T2v;
474
                    T2r = T2p - T2q;
475
                    io[WS(os, 3)] = T2r - T2u;
476
                    io[WS(os, 12)] = T2u + T2r;
477
               }
478
               {
479
                    E T1M, TU, T1L, T1U, T1W, T1Q, T1T, T1V, T1N;
480
                    T1M = KP559016994 * (TI - TT);
481
                    TU = TI + TT;
482
                    T1L = FNMS(KP250000000, TU, Tx);
483
                    T1Q = T1O - T1P;
484
                    T1T = T1R - T1S;
485
                    T1U = FNMS(KP587785252, T1T, KP951056516 * T1Q);
486
                    T1W = FMA(KP951056516, T1T, KP587785252 * T1Q);
487
                    ro[WS(os, 5)] = Tx + TU;
488
                    T1V = T1M + T1L;
489
                    ro[WS(os, 14)] = T1V - T1W;
490
                    ro[WS(os, 11)] = T1V + T1W;
491
                    T1N = T1L - T1M;
492
                    ro[WS(os, 2)] = T1N - T1U;
493
                    ro[WS(os, 8)] = T1N + T1U;
494
               }
495
               {
496
                    E T25, T23, T24, T1Z, T28, T1X, T1Y, T27, T26;
497
                    T25 = KP559016994 * (T21 - T22);
498
                    T23 = T21 + T22;
499
                    T24 = FNMS(KP250000000, T23, T20);
500
                    T1X = TN - TS;
501
                    T1Y = TC - TH;
502
                    T1Z = FNMS(KP587785252, T1Y, KP951056516 * T1X);
503
                    T28 = FMA(KP951056516, T1Y, KP587785252 * T1X);
504
                    io[WS(os, 5)] = T20 + T23;
505
                    T27 = T25 + T24;
506
                    io[WS(os, 11)] = T27 - T28;
507
                    io[WS(os, 14)] = T28 + T27;
508
                    T26 = T24 - T25;
509
                    io[WS(os, 2)] = T1Z + T26;
510
                    io[WS(os, 8)] = T26 - T1Z;
511
               }
512
               {
513
                    E T1x, T1D, T1E, T1I, T1J, T1G, T1H, T1K, T1F;
514
                    T1x = KP559016994 * (T1v - T1w);
515
                    T1D = T1v + T1w;
516
                    T1E = FNMS(KP250000000, T1D, T1C);
517
                    T1G = TW - TX;
518
                    T1H = TZ - T10;
519
                    T1I = FMA(KP951056516, T1G, KP587785252 * T1H);
520
                    T1J = FNMS(KP587785252, T1G, KP951056516 * T1H);
521
                    io[WS(os, 10)] = T1C + T1D;
522
                    T1K = T1E - T1x;
523
                    io[WS(os, 7)] = T1J + T1K;
524
                    io[WS(os, 13)] = T1K - T1J;
525
                    T1F = T1x + T1E;
526
                    io[WS(os, 1)] = T1F - T1I;
527
                    io[WS(os, 4)] = T1I + T1F;
528
               }
529
               {
530
                    E T13, T12, T14, T1s, T1u, T1g, T1r, T1t, T15;
531
                    T13 = KP559016994 * (TY - T11);
532
                    T12 = TY + T11;
533
                    T14 = FNMS(KP250000000, T12, TV);
534
                    T1g = T1a - T1f;
535
                    T1r = T1l - T1q;
536
                    T1s = FMA(KP951056516, T1g, KP587785252 * T1r);
537
                    T1u = FNMS(KP587785252, T1g, KP951056516 * T1r);
538
                    ro[WS(os, 10)] = TV + T12;
539
                    T1t = T14 - T13;
540
                    ro[WS(os, 7)] = T1t - T1u;
541
                    ro[WS(os, 13)] = T1t + T1u;
542
                    T15 = T13 + T14;
543
                    ro[WS(os, 4)] = T15 - T1s;
544
                    ro[WS(os, 1)] = T15 + T1s;
545
               }
546
          }
547
     }
548
}
549

    
550
static const kdft_desc desc = { 15, "n1_15", {128, 28, 28, 0}, &GENUS, 0, 0, 0, 0 };
551

    
552
void X(codelet_n1_15) (planner *p) {
553
     X(kdft_register) (p, n1_15, &desc);
554
}
555

    
556
#endif