summaryrefslogtreecommitdiff
path: root/src/fftw3/dft/codelets/standard
diff options
context:
space:
mode:
Diffstat (limited to 'src/fftw3/dft/codelets/standard')
-rw-r--r--src/fftw3/dft/codelets/standard/m1_16.c305
-rw-r--r--src/fftw3/dft/codelets/standard/m1_32.c684
-rw-r--r--src/fftw3/dft/codelets/standard/m1_64.c1568
-rw-r--r--src/fftw3/dft/codelets/standard/n1_10.c195
-rw-r--r--src/fftw3/dft/codelets/standard/n1_11.c178
-rw-r--r--src/fftw3/dft/codelets/standard/n1_12.c224
-rw-r--r--src/fftw3/dft/codelets/standard/n1_13.c352
-rw-r--r--src/fftw3/dft/codelets/standard/n1_14.c249
-rw-r--r--src/fftw3/dft/codelets/standard/n1_15.c291
-rw-r--r--src/fftw3/dft/codelets/standard/n1_16.c294
-rw-r--r--src/fftw3/dft/codelets/standard/n1_2.c61
-rw-r--r--src/fftw3/dft/codelets/standard/n1_3.c76
-rw-r--r--src/fftw3/dft/codelets/standard/n1_4.c83
-rw-r--r--src/fftw3/dft/codelets/standard/n1_5.c111
-rw-r--r--src/fftw3/dft/codelets/standard/n1_6.c119
-rw-r--r--src/fftw3/dft/codelets/standard/n1_7.c129
-rw-r--r--src/fftw3/dft/codelets/standard/n1_8.c147
-rw-r--r--src/fftw3/dft/codelets/standard/n1_9.c193
-rw-r--r--src/fftw3/dft/codelets/standard/scodlist.c82
-rw-r--r--src/fftw3/dft/codelets/standard/t1_10.c253
-rw-r--r--src/fftw3/dft/codelets/standard/t1_12.c300
-rw-r--r--src/fftw3/dft/codelets/standard/t1_15.c405
-rw-r--r--src/fftw3/dft/codelets/standard/t1_16.c406
-rw-r--r--src/fftw3/dft/codelets/standard/t1_2.c75
-rw-r--r--src/fftw3/dft/codelets/standard/t1_3.c97
-rw-r--r--src/fftw3/dft/codelets/standard/t1_32.c892
-rw-r--r--src/fftw3/dft/codelets/standard/t1_4.c111
-rw-r--r--src/fftw3/dft/codelets/standard/t1_5.c143
-rw-r--r--src/fftw3/dft/codelets/standard/t1_6.c160
-rw-r--r--src/fftw3/dft/codelets/standard/t1_64.c2001
-rw-r--r--src/fftw3/dft/codelets/standard/t1_7.c178
-rw-r--r--src/fftw3/dft/codelets/standard/t1_8.c203
-rw-r--r--src/fftw3/dft/codelets/standard/t1_9.c256
-rw-r--r--src/fftw3/dft/codelets/standard/t2_16.c411
-rw-r--r--src/fftw3/dft/codelets/standard/t2_32.c853
-rw-r--r--src/fftw3/dft/codelets/standard/t2_4.c108
-rw-r--r--src/fftw3/dft/codelets/standard/t2_64.c1906
-rw-r--r--src/fftw3/dft/codelets/standard/t2_8.c192
38 files changed, 14291 insertions, 0 deletions
diff --git a/src/fftw3/dft/codelets/standard/m1_16.c b/src/fftw3/dft/codelets/standard/m1_16.c
new file mode 100644
index 0000000..9882bce
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/m1_16.c
@@ -0,0 +1,305 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:37 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw_noinline -compact -variables 4 -n 16 -name m1_16 -include n.h */
+
+/*
+ * This function contains 144 FP additions, 24 FP multiplications,
+ * (or, 136 additions, 16 multiplications, 8 fused multiply/add),
+ * 49 stack variables, and 64 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: m1_16.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: m1_16.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: m1_16.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void m1_16_0(const R *ri, const R *ii, R *ro, R *io, stride is, stride os)
+{
+ DK(KP382683432, +0.382683432365089771728459984030398866761344562);
+ DK(KP923879532, +0.923879532511286756128183189396788286822416626);
+ DK(KP707106781, +0.707106781186547524400844362104849039284835938);
+ {
+ E T7, T1R, T25, TC, TN, T1x, T1H, T1l, Tt, T22, T2h, T1b, T1g, T1E, T1Z;
+ E T1D, Te, T1S, T26, TJ, TQ, T1m, T1n, TT, Tm, T1X, T2g, T10, T15, T1B;
+ E T1U, T1A;
+ {
+ E T3, TL, Ty, T1k, T6, T1j, TB, TM;
+ {
+ E T1, T2, Tw, Tx;
+ T1 = ri[0];
+ T2 = ri[WS(is, 8)];
+ T3 = T1 + T2;
+ TL = T1 - T2;
+ Tw = ii[0];
+ Tx = ii[WS(is, 8)];
+ Ty = Tw + Tx;
+ T1k = Tw - Tx;
+ }
+ {
+ E T4, T5, Tz, TA;
+ T4 = ri[WS(is, 4)];
+ T5 = ri[WS(is, 12)];
+ T6 = T4 + T5;
+ T1j = T4 - T5;
+ Tz = ii[WS(is, 4)];
+ TA = ii[WS(is, 12)];
+ TB = Tz + TA;
+ TM = Tz - TA;
+ }
+ T7 = T3 + T6;
+ T1R = T3 - T6;
+ T25 = Ty - TB;
+ TC = Ty + TB;
+ TN = TL - TM;
+ T1x = TL + TM;
+ T1H = T1k - T1j;
+ T1l = T1j + T1k;
+ }
+ {
+ E Tp, T17, T1f, T20, Ts, T1c, T1a, T21;
+ {
+ E Tn, To, T1d, T1e;
+ Tn = ri[WS(is, 15)];
+ To = ri[WS(is, 7)];
+ Tp = Tn + To;
+ T17 = Tn - To;
+ T1d = ii[WS(is, 15)];
+ T1e = ii[WS(is, 7)];
+ T1f = T1d - T1e;
+ T20 = T1d + T1e;
+ }
+ {
+ E Tq, Tr, T18, T19;
+ Tq = ri[WS(is, 3)];
+ Tr = ri[WS(is, 11)];
+ Ts = Tq + Tr;
+ T1c = Tq - Tr;
+ T18 = ii[WS(is, 3)];
+ T19 = ii[WS(is, 11)];
+ T1a = T18 - T19;
+ T21 = T18 + T19;
+ }
+ Tt = Tp + Ts;
+ T22 = T20 - T21;
+ T2h = T20 + T21;
+ T1b = T17 - T1a;
+ T1g = T1c + T1f;
+ T1E = T1f - T1c;
+ T1Z = Tp - Ts;
+ T1D = T17 + T1a;
+ }
+ {
+ E Ta, TP, TF, TO, Td, TR, TI, TS;
+ {
+ E T8, T9, TD, TE;
+ T8 = ri[WS(is, 2)];
+ T9 = ri[WS(is, 10)];
+ Ta = T8 + T9;
+ TP = T8 - T9;
+ TD = ii[WS(is, 2)];
+ TE = ii[WS(is, 10)];
+ TF = TD + TE;
+ TO = TD - TE;
+ }
+ {
+ E Tb, Tc, TG, TH;
+ Tb = ri[WS(is, 14)];
+ Tc = ri[WS(is, 6)];
+ Td = Tb + Tc;
+ TR = Tb - Tc;
+ TG = ii[WS(is, 14)];
+ TH = ii[WS(is, 6)];
+ TI = TG + TH;
+ TS = TG - TH;
+ }
+ Te = Ta + Td;
+ T1S = TF - TI;
+ T26 = Td - Ta;
+ TJ = TF + TI;
+ TQ = TO - TP;
+ T1m = TR - TS;
+ T1n = TP + TO;
+ TT = TR + TS;
+ }
+ {
+ E Ti, T11, TZ, T1V, Tl, TW, T14, T1W;
+ {
+ E Tg, Th, TX, TY;
+ Tg = ri[WS(is, 1)];
+ Th = ri[WS(is, 9)];
+ Ti = Tg + Th;
+ T11 = Tg - Th;
+ TX = ii[WS(is, 1)];
+ TY = ii[WS(is, 9)];
+ TZ = TX - TY;
+ T1V = TX + TY;
+ }
+ {
+ E Tj, Tk, T12, T13;
+ Tj = ri[WS(is, 5)];
+ Tk = ri[WS(is, 13)];
+ Tl = Tj + Tk;
+ TW = Tj - Tk;
+ T12 = ii[WS(is, 5)];
+ T13 = ii[WS(is, 13)];
+ T14 = T12 - T13;
+ T1W = T12 + T13;
+ }
+ Tm = Ti + Tl;
+ T1X = T1V - T1W;
+ T2g = T1V + T1W;
+ T10 = TW + TZ;
+ T15 = T11 - T14;
+ T1B = T11 + T14;
+ T1U = Ti - Tl;
+ T1A = TZ - TW;
+ }
+ {
+ E Tf, Tu, T2j, T2k;
+ Tf = T7 + Te;
+ Tu = Tm + Tt;
+ ro[WS(os, 8)] = Tf - Tu;
+ ro[0] = Tf + Tu;
+ T2j = TC + TJ;
+ T2k = T2g + T2h;
+ io[WS(os, 8)] = T2j - T2k;
+ io[0] = T2j + T2k;
+ }
+ {
+ E Tv, TK, T2f, T2i;
+ Tv = Tt - Tm;
+ TK = TC - TJ;
+ io[WS(os, 4)] = Tv + TK;
+ io[WS(os, 12)] = TK - Tv;
+ T2f = T7 - Te;
+ T2i = T2g - T2h;
+ ro[WS(os, 12)] = T2f - T2i;
+ ro[WS(os, 4)] = T2f + T2i;
+ }
+ {
+ E T1T, T27, T24, T28, T1Y, T23;
+ T1T = T1R + T1S;
+ T27 = T25 - T26;
+ T1Y = T1U + T1X;
+ T23 = T1Z - T22;
+ T24 = KP707106781 * (T1Y + T23);
+ T28 = KP707106781 * (T23 - T1Y);
+ ro[WS(os, 10)] = T1T - T24;
+ io[WS(os, 6)] = T27 + T28;
+ ro[WS(os, 2)] = T1T + T24;
+ io[WS(os, 14)] = T27 - T28;
+ }
+ {
+ E T29, T2d, T2c, T2e, T2a, T2b;
+ T29 = T1R - T1S;
+ T2d = T26 + T25;
+ T2a = T1X - T1U;
+ T2b = T1Z + T22;
+ T2c = KP707106781 * (T2a - T2b);
+ T2e = KP707106781 * (T2a + T2b);
+ ro[WS(os, 14)] = T29 - T2c;
+ io[WS(os, 2)] = T2d + T2e;
+ ro[WS(os, 6)] = T29 + T2c;
+ io[WS(os, 10)] = T2d - T2e;
+ }
+ {
+ E TV, T1r, T1p, T1v, T1i, T1q, T1u, T1w, TU, T1o;
+ TU = KP707106781 * (TQ - TT);
+ TV = TN + TU;
+ T1r = TN - TU;
+ T1o = KP707106781 * (T1m - T1n);
+ T1p = T1l - T1o;
+ T1v = T1l + T1o;
+ {
+ E T16, T1h, T1s, T1t;
+ T16 = FMA(KP923879532, T10, KP382683432 * T15);
+ T1h = FNMS(KP923879532, T1g, KP382683432 * T1b);
+ T1i = T16 + T1h;
+ T1q = T1h - T16;
+ T1s = FNMS(KP923879532, T15, KP382683432 * T10);
+ T1t = FMA(KP382683432, T1g, KP923879532 * T1b);
+ T1u = T1s - T1t;
+ T1w = T1s + T1t;
+ }
+ ro[WS(os, 11)] = TV - T1i;
+ io[WS(os, 11)] = T1v - T1w;
+ ro[WS(os, 3)] = TV + T1i;
+ io[WS(os, 3)] = T1v + T1w;
+ io[WS(os, 15)] = T1p - T1q;
+ ro[WS(os, 15)] = T1r - T1u;
+ io[WS(os, 7)] = T1p + T1q;
+ ro[WS(os, 7)] = T1r + T1u;
+ }
+ {
+ E T1z, T1L, T1J, T1P, T1G, T1K, T1O, T1Q, T1y, T1I;
+ T1y = KP707106781 * (T1n + T1m);
+ T1z = T1x + T1y;
+ T1L = T1x - T1y;
+ T1I = KP707106781 * (TQ + TT);
+ T1J = T1H - T1I;
+ T1P = T1H + T1I;
+ {
+ E T1C, T1F, T1M, T1N;
+ T1C = FMA(KP382683432, T1A, KP923879532 * T1B);
+ T1F = FNMS(KP382683432, T1E, KP923879532 * T1D);
+ T1G = T1C + T1F;
+ T1K = T1F - T1C;
+ T1M = FNMS(KP382683432, T1B, KP923879532 * T1A);
+ T1N = FMA(KP923879532, T1E, KP382683432 * T1D);
+ T1O = T1M - T1N;
+ T1Q = T1M + T1N;
+ }
+ ro[WS(os, 9)] = T1z - T1G;
+ io[WS(os, 9)] = T1P - T1Q;
+ ro[WS(os, 1)] = T1z + T1G;
+ io[WS(os, 1)] = T1P + T1Q;
+ io[WS(os, 13)] = T1J - T1K;
+ ro[WS(os, 13)] = T1L - T1O;
+ io[WS(os, 5)] = T1J + T1K;
+ ro[WS(os, 5)] = T1L + T1O;
+ }
+ }
+}
+
+static void m1_16(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ int i;
+ for (i = v; i > 0; i -= 1) {
+ m1_16_0(ri, ii, ro, io, is, os);
+ ri += ivs;
+ ii += ivs;
+ ro += ovs;
+ io += ovs;
+ }
+}
+
+static const kdft_desc desc = { 16, "m1_16", {136, 16, 8, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_m1_16) (planner *p) {
+ X(kdft_register) (p, m1_16, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/m1_32.c b/src/fftw3/dft/codelets/standard/m1_32.c
new file mode 100644
index 0000000..aa75d21
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/m1_32.c
@@ -0,0 +1,684 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:38 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw_noinline -compact -variables 4 -n 32 -name m1_32 -include n.h */
+
+/*
+ * This function contains 372 FP additions, 84 FP multiplications,
+ * (or, 340 additions, 52 multiplications, 32 fused multiply/add),
+ * 99 stack variables, and 128 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: m1_32.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: m1_32.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: m1_32.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void m1_32_0(const R *ri, const R *ii, R *ro, R *io, stride is, stride os)
+{
+ DK(KP831469612, +0.831469612302545237078788377617905756738560812);
+ DK(KP555570233, +0.555570233019602224742830813948532874374937191);
+ DK(KP195090322, +0.195090322016128267848284868477022240927691618);
+ DK(KP980785280, +0.980785280403230449126182236134239036973933731);
+ DK(KP923879532, +0.923879532511286756128183189396788286822416626);
+ DK(KP382683432, +0.382683432365089771728459984030398866761344562);
+ DK(KP707106781, +0.707106781186547524400844362104849039284835938);
+ {
+ E T7, T4r, T4Z, T18, T1z, T3t, T3T, T2T, Te, T1f, T50, T4s, T2W, T3u, T1G;
+ E T3U, Tm, T1n, T1O, T2Z, T3y, T3X, T4w, T53, Tt, T1u, T1V, T2Y, T3B, T3W;
+ E T4z, T52, T2t, T3L, T3O, T2K, TR, TY, T5F, T5G, T5H, T5I, T4R, T5j, T2E;
+ E T3P, T4W, T5k, T2N, T3M, T22, T3E, T3H, T2j, TC, TJ, T5A, T5B, T5C, T5D;
+ E T4G, T5g, T2d, T3F, T4L, T5h, T2m, T3I;
+ {
+ E T3, T1x, T14, T2S, T6, T2R, T17, T1y;
+ {
+ E T1, T2, T12, T13;
+ T1 = ri[0];
+ T2 = ri[WS(is, 16)];
+ T3 = T1 + T2;
+ T1x = T1 - T2;
+ T12 = ii[0];
+ T13 = ii[WS(is, 16)];
+ T14 = T12 + T13;
+ T2S = T12 - T13;
+ }
+ {
+ E T4, T5, T15, T16;
+ T4 = ri[WS(is, 8)];
+ T5 = ri[WS(is, 24)];
+ T6 = T4 + T5;
+ T2R = T4 - T5;
+ T15 = ii[WS(is, 8)];
+ T16 = ii[WS(is, 24)];
+ T17 = T15 + T16;
+ T1y = T15 - T16;
+ }
+ T7 = T3 + T6;
+ T4r = T3 - T6;
+ T4Z = T14 - T17;
+ T18 = T14 + T17;
+ T1z = T1x - T1y;
+ T3t = T1x + T1y;
+ T3T = T2S - T2R;
+ T2T = T2R + T2S;
+ }
+ {
+ E Ta, T1B, T1b, T1A, Td, T1D, T1e, T1E;
+ {
+ E T8, T9, T19, T1a;
+ T8 = ri[WS(is, 4)];
+ T9 = ri[WS(is, 20)];
+ Ta = T8 + T9;
+ T1B = T8 - T9;
+ T19 = ii[WS(is, 4)];
+ T1a = ii[WS(is, 20)];
+ T1b = T19 + T1a;
+ T1A = T19 - T1a;
+ }
+ {
+ E Tb, Tc, T1c, T1d;
+ Tb = ri[WS(is, 28)];
+ Tc = ri[WS(is, 12)];
+ Td = Tb + Tc;
+ T1D = Tb - Tc;
+ T1c = ii[WS(is, 28)];
+ T1d = ii[WS(is, 12)];
+ T1e = T1c + T1d;
+ T1E = T1c - T1d;
+ }
+ Te = Ta + Td;
+ T1f = T1b + T1e;
+ T50 = Td - Ta;
+ T4s = T1b - T1e;
+ {
+ E T2U, T2V, T1C, T1F;
+ T2U = T1D - T1E;
+ T2V = T1B + T1A;
+ T2W = KP707106781 * (T2U - T2V);
+ T3u = KP707106781 * (T2V + T2U);
+ T1C = T1A - T1B;
+ T1F = T1D + T1E;
+ T1G = KP707106781 * (T1C - T1F);
+ T3U = KP707106781 * (T1C + T1F);
+ }
+ }
+ {
+ E Ti, T1L, T1j, T1J, Tl, T1I, T1m, T1M, T1K, T1N;
+ {
+ E Tg, Th, T1h, T1i;
+ Tg = ri[WS(is, 2)];
+ Th = ri[WS(is, 18)];
+ Ti = Tg + Th;
+ T1L = Tg - Th;
+ T1h = ii[WS(is, 2)];
+ T1i = ii[WS(is, 18)];
+ T1j = T1h + T1i;
+ T1J = T1h - T1i;
+ }
+ {
+ E Tj, Tk, T1k, T1l;
+ Tj = ri[WS(is, 10)];
+ Tk = ri[WS(is, 26)];
+ Tl = Tj + Tk;
+ T1I = Tj - Tk;
+ T1k = ii[WS(is, 10)];
+ T1l = ii[WS(is, 26)];
+ T1m = T1k + T1l;
+ T1M = T1k - T1l;
+ }
+ Tm = Ti + Tl;
+ T1n = T1j + T1m;
+ T1K = T1I + T1J;
+ T1N = T1L - T1M;
+ T1O = FNMS(KP923879532, T1N, KP382683432 * T1K);
+ T2Z = FMA(KP923879532, T1K, KP382683432 * T1N);
+ {
+ E T3w, T3x, T4u, T4v;
+ T3w = T1J - T1I;
+ T3x = T1L + T1M;
+ T3y = FNMS(KP382683432, T3x, KP923879532 * T3w);
+ T3X = FMA(KP382683432, T3w, KP923879532 * T3x);
+ T4u = T1j - T1m;
+ T4v = Ti - Tl;
+ T4w = T4u - T4v;
+ T53 = T4v + T4u;
+ }
+ }
+ {
+ E Tp, T1S, T1q, T1Q, Ts, T1P, T1t, T1T, T1R, T1U;
+ {
+ E Tn, To, T1o, T1p;
+ Tn = ri[WS(is, 30)];
+ To = ri[WS(is, 14)];
+ Tp = Tn + To;
+ T1S = Tn - To;
+ T1o = ii[WS(is, 30)];
+ T1p = ii[WS(is, 14)];
+ T1q = T1o + T1p;
+ T1Q = T1o - T1p;
+ }
+ {
+ E Tq, Tr, T1r, T1s;
+ Tq = ri[WS(is, 6)];
+ Tr = ri[WS(is, 22)];
+ Ts = Tq + Tr;
+ T1P = Tq - Tr;
+ T1r = ii[WS(is, 6)];
+ T1s = ii[WS(is, 22)];
+ T1t = T1r + T1s;
+ T1T = T1r - T1s;
+ }
+ Tt = Tp + Ts;
+ T1u = T1q + T1t;
+ T1R = T1P + T1Q;
+ T1U = T1S - T1T;
+ T1V = FMA(KP382683432, T1R, KP923879532 * T1U);
+ T2Y = FNMS(KP923879532, T1R, KP382683432 * T1U);
+ {
+ E T3z, T3A, T4x, T4y;
+ T3z = T1Q - T1P;
+ T3A = T1S + T1T;
+ T3B = FMA(KP923879532, T3z, KP382683432 * T3A);
+ T3W = FNMS(KP382683432, T3z, KP923879532 * T3A);
+ T4x = Tp - Ts;
+ T4y = T1q - T1t;
+ T4z = T4x + T4y;
+ T52 = T4x - T4y;
+ }
+ }
+ {
+ E TN, T2p, T2J, T4S, TQ, T2G, T2s, T4T, TU, T2x, T2w, T4O, TX, T2z, T2C;
+ E T4P;
+ {
+ E TL, TM, T2H, T2I;
+ TL = ri[WS(is, 31)];
+ TM = ri[WS(is, 15)];
+ TN = TL + TM;
+ T2p = TL - TM;
+ T2H = ii[WS(is, 31)];
+ T2I = ii[WS(is, 15)];
+ T2J = T2H - T2I;
+ T4S = T2H + T2I;
+ }
+ {
+ E TO, TP, T2q, T2r;
+ TO = ri[WS(is, 7)];
+ TP = ri[WS(is, 23)];
+ TQ = TO + TP;
+ T2G = TO - TP;
+ T2q = ii[WS(is, 7)];
+ T2r = ii[WS(is, 23)];
+ T2s = T2q - T2r;
+ T4T = T2q + T2r;
+ }
+ {
+ E TS, TT, T2u, T2v;
+ TS = ri[WS(is, 3)];
+ TT = ri[WS(is, 19)];
+ TU = TS + TT;
+ T2x = TS - TT;
+ T2u = ii[WS(is, 3)];
+ T2v = ii[WS(is, 19)];
+ T2w = T2u - T2v;
+ T4O = T2u + T2v;
+ }
+ {
+ E TV, TW, T2A, T2B;
+ TV = ri[WS(is, 27)];
+ TW = ri[WS(is, 11)];
+ TX = TV + TW;
+ T2z = TV - TW;
+ T2A = ii[WS(is, 27)];
+ T2B = ii[WS(is, 11)];
+ T2C = T2A - T2B;
+ T4P = T2A + T2B;
+ }
+ T2t = T2p - T2s;
+ T3L = T2p + T2s;
+ T3O = T2J - T2G;
+ T2K = T2G + T2J;
+ TR = TN + TQ;
+ TY = TU + TX;
+ T5F = TR - TY;
+ {
+ E T4N, T4Q, T2y, T2D;
+ T5G = T4S + T4T;
+ T5H = T4O + T4P;
+ T5I = T5G - T5H;
+ T4N = TN - TQ;
+ T4Q = T4O - T4P;
+ T4R = T4N - T4Q;
+ T5j = T4N + T4Q;
+ T2y = T2w - T2x;
+ T2D = T2z + T2C;
+ T2E = KP707106781 * (T2y - T2D);
+ T3P = KP707106781 * (T2y + T2D);
+ {
+ E T4U, T4V, T2L, T2M;
+ T4U = T4S - T4T;
+ T4V = TX - TU;
+ T4W = T4U - T4V;
+ T5k = T4V + T4U;
+ T2L = T2z - T2C;
+ T2M = T2x + T2w;
+ T2N = KP707106781 * (T2L - T2M);
+ T3M = KP707106781 * (T2M + T2L);
+ }
+ }
+ }
+ {
+ E Ty, T2f, T21, T4C, TB, T1Y, T2i, T4D, TF, T28, T2b, T4I, TI, T23, T26;
+ E T4J;
+ {
+ E Tw, Tx, T1Z, T20;
+ Tw = ri[WS(is, 1)];
+ Tx = ri[WS(is, 17)];
+ Ty = Tw + Tx;
+ T2f = Tw - Tx;
+ T1Z = ii[WS(is, 1)];
+ T20 = ii[WS(is, 17)];
+ T21 = T1Z - T20;
+ T4C = T1Z + T20;
+ }
+ {
+ E Tz, TA, T2g, T2h;
+ Tz = ri[WS(is, 9)];
+ TA = ri[WS(is, 25)];
+ TB = Tz + TA;
+ T1Y = Tz - TA;
+ T2g = ii[WS(is, 9)];
+ T2h = ii[WS(is, 25)];
+ T2i = T2g - T2h;
+ T4D = T2g + T2h;
+ }
+ {
+ E TD, TE, T29, T2a;
+ TD = ri[WS(is, 5)];
+ TE = ri[WS(is, 21)];
+ TF = TD + TE;
+ T28 = TD - TE;
+ T29 = ii[WS(is, 5)];
+ T2a = ii[WS(is, 21)];
+ T2b = T29 - T2a;
+ T4I = T29 + T2a;
+ }
+ {
+ E TG, TH, T24, T25;
+ TG = ri[WS(is, 29)];
+ TH = ri[WS(is, 13)];
+ TI = TG + TH;
+ T23 = TG - TH;
+ T24 = ii[WS(is, 29)];
+ T25 = ii[WS(is, 13)];
+ T26 = T24 - T25;
+ T4J = T24 + T25;
+ }
+ T22 = T1Y + T21;
+ T3E = T2f + T2i;
+ T3H = T21 - T1Y;
+ T2j = T2f - T2i;
+ TC = Ty + TB;
+ TJ = TF + TI;
+ T5A = TC - TJ;
+ {
+ E T4E, T4F, T27, T2c;
+ T5B = T4C + T4D;
+ T5C = T4I + T4J;
+ T5D = T5B - T5C;
+ T4E = T4C - T4D;
+ T4F = TI - TF;
+ T4G = T4E - T4F;
+ T5g = T4F + T4E;
+ T27 = T23 - T26;
+ T2c = T28 + T2b;
+ T2d = KP707106781 * (T27 - T2c);
+ T3F = KP707106781 * (T2c + T27);
+ {
+ E T4H, T4K, T2k, T2l;
+ T4H = Ty - TB;
+ T4K = T4I - T4J;
+ T4L = T4H - T4K;
+ T5h = T4H + T4K;
+ T2k = T2b - T28;
+ T2l = T23 + T26;
+ T2m = KP707106781 * (T2k - T2l);
+ T3I = KP707106781 * (T2k + T2l);
+ }
+ }
+ }
+ {
+ E T4B, T57, T5a, T5c, T4Y, T56, T55, T5b;
+ {
+ E T4t, T4A, T58, T59;
+ T4t = T4r - T4s;
+ T4A = KP707106781 * (T4w - T4z);
+ T4B = T4t + T4A;
+ T57 = T4t - T4A;
+ T58 = FNMS(KP923879532, T4L, KP382683432 * T4G);
+ T59 = FMA(KP382683432, T4W, KP923879532 * T4R);
+ T5a = T58 - T59;
+ T5c = T58 + T59;
+ }
+ {
+ E T4M, T4X, T51, T54;
+ T4M = FMA(KP923879532, T4G, KP382683432 * T4L);
+ T4X = FNMS(KP923879532, T4W, KP382683432 * T4R);
+ T4Y = T4M + T4X;
+ T56 = T4X - T4M;
+ T51 = T4Z - T50;
+ T54 = KP707106781 * (T52 - T53);
+ T55 = T51 - T54;
+ T5b = T51 + T54;
+ }
+ ro[WS(os, 22)] = T4B - T4Y;
+ io[WS(os, 22)] = T5b - T5c;
+ ro[WS(os, 6)] = T4B + T4Y;
+ io[WS(os, 6)] = T5b + T5c;
+ io[WS(os, 30)] = T55 - T56;
+ ro[WS(os, 30)] = T57 - T5a;
+ io[WS(os, 14)] = T55 + T56;
+ ro[WS(os, 14)] = T57 + T5a;
+ }
+ {
+ E T5f, T5r, T5u, T5w, T5m, T5q, T5p, T5v;
+ {
+ E T5d, T5e, T5s, T5t;
+ T5d = T4r + T4s;
+ T5e = KP707106781 * (T53 + T52);
+ T5f = T5d + T5e;
+ T5r = T5d - T5e;
+ T5s = FNMS(KP382683432, T5h, KP923879532 * T5g);
+ T5t = FMA(KP923879532, T5k, KP382683432 * T5j);
+ T5u = T5s - T5t;
+ T5w = T5s + T5t;
+ }
+ {
+ E T5i, T5l, T5n, T5o;
+ T5i = FMA(KP382683432, T5g, KP923879532 * T5h);
+ T5l = FNMS(KP382683432, T5k, KP923879532 * T5j);
+ T5m = T5i + T5l;
+ T5q = T5l - T5i;
+ T5n = T50 + T4Z;
+ T5o = KP707106781 * (T4w + T4z);
+ T5p = T5n - T5o;
+ T5v = T5n + T5o;
+ }
+ ro[WS(os, 18)] = T5f - T5m;
+ io[WS(os, 18)] = T5v - T5w;
+ ro[WS(os, 2)] = T5f + T5m;
+ io[WS(os, 2)] = T5v + T5w;
+ io[WS(os, 26)] = T5p - T5q;
+ ro[WS(os, 26)] = T5r - T5u;
+ io[WS(os, 10)] = T5p + T5q;
+ ro[WS(os, 10)] = T5r + T5u;
+ }
+ {
+ E T5z, T5P, T5S, T5U, T5K, T5O, T5N, T5T;
+ {
+ E T5x, T5y, T5Q, T5R;
+ T5x = T7 - Te;
+ T5y = T1n - T1u;
+ T5z = T5x + T5y;
+ T5P = T5x - T5y;
+ T5Q = T5D - T5A;
+ T5R = T5F + T5I;
+ T5S = KP707106781 * (T5Q - T5R);
+ T5U = KP707106781 * (T5Q + T5R);
+ }
+ {
+ E T5E, T5J, T5L, T5M;
+ T5E = T5A + T5D;
+ T5J = T5F - T5I;
+ T5K = KP707106781 * (T5E + T5J);
+ T5O = KP707106781 * (T5J - T5E);
+ T5L = T18 - T1f;
+ T5M = Tt - Tm;
+ T5N = T5L - T5M;
+ T5T = T5M + T5L;
+ }
+ ro[WS(os, 20)] = T5z - T5K;
+ io[WS(os, 20)] = T5T - T5U;
+ ro[WS(os, 4)] = T5z + T5K;
+ io[WS(os, 4)] = T5T + T5U;
+ io[WS(os, 28)] = T5N - T5O;
+ ro[WS(os, 28)] = T5P - T5S;
+ io[WS(os, 12)] = T5N + T5O;
+ ro[WS(os, 12)] = T5P + T5S;
+ }
+ {
+ E Tv, T5V, T5Y, T60, T10, T11, T1w, T5Z;
+ {
+ E Tf, Tu, T5W, T5X;
+ Tf = T7 + Te;
+ Tu = Tm + Tt;
+ Tv = Tf + Tu;
+ T5V = Tf - Tu;
+ T5W = T5B + T5C;
+ T5X = T5G + T5H;
+ T5Y = T5W - T5X;
+ T60 = T5W + T5X;
+ }
+ {
+ E TK, TZ, T1g, T1v;
+ TK = TC + TJ;
+ TZ = TR + TY;
+ T10 = TK + TZ;
+ T11 = TZ - TK;
+ T1g = T18 + T1f;
+ T1v = T1n + T1u;
+ T1w = T1g - T1v;
+ T5Z = T1g + T1v;
+ }
+ ro[WS(os, 16)] = Tv - T10;
+ io[WS(os, 16)] = T5Z - T60;
+ ro[0] = Tv + T10;
+ io[0] = T5Z + T60;
+ io[WS(os, 8)] = T11 + T1w;
+ ro[WS(os, 8)] = T5V + T5Y;
+ io[WS(os, 24)] = T1w - T11;
+ ro[WS(os, 24)] = T5V - T5Y;
+ }
+ {
+ E T1X, T33, T31, T37, T2o, T34, T2P, T35;
+ {
+ E T1H, T1W, T2X, T30;
+ T1H = T1z - T1G;
+ T1W = T1O - T1V;
+ T1X = T1H + T1W;
+ T33 = T1H - T1W;
+ T2X = T2T - T2W;
+ T30 = T2Y - T2Z;
+ T31 = T2X - T30;
+ T37 = T2X + T30;
+ }
+ {
+ E T2e, T2n, T2F, T2O;
+ T2e = T22 - T2d;
+ T2n = T2j - T2m;
+ T2o = FMA(KP980785280, T2e, KP195090322 * T2n);
+ T34 = FNMS(KP980785280, T2n, KP195090322 * T2e);
+ T2F = T2t - T2E;
+ T2O = T2K - T2N;
+ T2P = FNMS(KP980785280, T2O, KP195090322 * T2F);
+ T35 = FMA(KP195090322, T2O, KP980785280 * T2F);
+ }
+ {
+ E T2Q, T38, T32, T36;
+ T2Q = T2o + T2P;
+ ro[WS(os, 23)] = T1X - T2Q;
+ ro[WS(os, 7)] = T1X + T2Q;
+ T38 = T34 + T35;
+ io[WS(os, 23)] = T37 - T38;
+ io[WS(os, 7)] = T37 + T38;
+ T32 = T2P - T2o;
+ io[WS(os, 31)] = T31 - T32;
+ io[WS(os, 15)] = T31 + T32;
+ T36 = T34 - T35;
+ ro[WS(os, 31)] = T33 - T36;
+ ro[WS(os, 15)] = T33 + T36;
+ }
+ }
+ {
+ E T3D, T41, T3Z, T45, T3K, T42, T3R, T43;
+ {
+ E T3v, T3C, T3V, T3Y;
+ T3v = T3t - T3u;
+ T3C = T3y - T3B;
+ T3D = T3v + T3C;
+ T41 = T3v - T3C;
+ T3V = T3T - T3U;
+ T3Y = T3W - T3X;
+ T3Z = T3V - T3Y;
+ T45 = T3V + T3Y;
+ }
+ {
+ E T3G, T3J, T3N, T3Q;
+ T3G = T3E - T3F;
+ T3J = T3H - T3I;
+ T3K = FMA(KP555570233, T3G, KP831469612 * T3J);
+ T42 = FNMS(KP831469612, T3G, KP555570233 * T3J);
+ T3N = T3L - T3M;
+ T3Q = T3O - T3P;
+ T3R = FNMS(KP831469612, T3Q, KP555570233 * T3N);
+ T43 = FMA(KP831469612, T3N, KP555570233 * T3Q);
+ }
+ {
+ E T3S, T46, T40, T44;
+ T3S = T3K + T3R;
+ ro[WS(os, 21)] = T3D - T3S;
+ ro[WS(os, 5)] = T3D + T3S;
+ T46 = T42 + T43;
+ io[WS(os, 21)] = T45 - T46;
+ io[WS(os, 5)] = T45 + T46;
+ T40 = T3R - T3K;
+ io[WS(os, 29)] = T3Z - T40;
+ io[WS(os, 13)] = T3Z + T40;
+ T44 = T42 - T43;
+ ro[WS(os, 29)] = T41 - T44;
+ ro[WS(os, 13)] = T41 + T44;
+ }
+ }
+ {
+ E T49, T4l, T4j, T4p, T4c, T4m, T4f, T4n;
+ {
+ E T47, T48, T4h, T4i;
+ T47 = T3t + T3u;
+ T48 = T3X + T3W;
+ T49 = T47 + T48;
+ T4l = T47 - T48;
+ T4h = T3T + T3U;
+ T4i = T3y + T3B;
+ T4j = T4h - T4i;
+ T4p = T4h + T4i;
+ }
+ {
+ E T4a, T4b, T4d, T4e;
+ T4a = T3E + T3F;
+ T4b = T3H + T3I;
+ T4c = FMA(KP980785280, T4a, KP195090322 * T4b);
+ T4m = FNMS(KP195090322, T4a, KP980785280 * T4b);
+ T4d = T3L + T3M;
+ T4e = T3O + T3P;
+ T4f = FNMS(KP195090322, T4e, KP980785280 * T4d);
+ T4n = FMA(KP195090322, T4d, KP980785280 * T4e);
+ }
+ {
+ E T4g, T4q, T4k, T4o;
+ T4g = T4c + T4f;
+ ro[WS(os, 17)] = T49 - T4g;
+ ro[WS(os, 1)] = T49 + T4g;
+ T4q = T4m + T4n;
+ io[WS(os, 17)] = T4p - T4q;
+ io[WS(os, 1)] = T4p + T4q;
+ T4k = T4f - T4c;
+ io[WS(os, 25)] = T4j - T4k;
+ io[WS(os, 9)] = T4j + T4k;
+ T4o = T4m - T4n;
+ ro[WS(os, 25)] = T4l - T4o;
+ ro[WS(os, 9)] = T4l + T4o;
+ }
+ }
+ {
+ E T3b, T3n, T3l, T3r, T3e, T3o, T3h, T3p;
+ {
+ E T39, T3a, T3j, T3k;
+ T39 = T1z + T1G;
+ T3a = T2Z + T2Y;
+ T3b = T39 + T3a;
+ T3n = T39 - T3a;
+ T3j = T2T + T2W;
+ T3k = T1O + T1V;
+ T3l = T3j - T3k;
+ T3r = T3j + T3k;
+ }
+ {
+ E T3c, T3d, T3f, T3g;
+ T3c = T22 + T2d;
+ T3d = T2j + T2m;
+ T3e = FMA(KP555570233, T3c, KP831469612 * T3d);
+ T3o = FNMS(KP555570233, T3d, KP831469612 * T3c);
+ T3f = T2t + T2E;
+ T3g = T2K + T2N;
+ T3h = FNMS(KP555570233, T3g, KP831469612 * T3f);
+ T3p = FMA(KP831469612, T3g, KP555570233 * T3f);
+ }
+ {
+ E T3i, T3s, T3m, T3q;
+ T3i = T3e + T3h;
+ ro[WS(os, 19)] = T3b - T3i;
+ ro[WS(os, 3)] = T3b + T3i;
+ T3s = T3o + T3p;
+ io[WS(os, 19)] = T3r - T3s;
+ io[WS(os, 3)] = T3r + T3s;
+ T3m = T3h - T3e;
+ io[WS(os, 27)] = T3l - T3m;
+ io[WS(os, 11)] = T3l + T3m;
+ T3q = T3o - T3p;
+ ro[WS(os, 27)] = T3n - T3q;
+ ro[WS(os, 11)] = T3n + T3q;
+ }
+ }
+ }
+}
+
+static void m1_32(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ int i;
+ for (i = v; i > 0; i -= 1) {
+ m1_32_0(ri, ii, ro, io, is, os);
+ ri += ivs;
+ ii += ivs;
+ ro += ovs;
+ io += ovs;
+ }
+}
+
+static const kdft_desc desc = { 32, "m1_32", {340, 52, 32, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_m1_32) (planner *p) {
+ X(kdft_register) (p, m1_32, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/m1_64.c b/src/fftw3/dft/codelets/standard/m1_64.c
new file mode 100644
index 0000000..72047bf
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/m1_64.c
@@ -0,0 +1,1568 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:42 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw_noinline -compact -variables 4 -n 64 -name m1_64 -include n.h */
+
+/*
+ * This function contains 912 FP additions, 248 FP multiplications,
+ * (or, 808 additions, 144 multiplications, 104 fused multiply/add),
+ * 171 stack variables, and 256 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: m1_64.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: m1_64.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: m1_64.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void m1_64_0(const R *ri, const R *ii, R *ro, R *io, stride is, stride os)
+{
+ DK(KP773010453, +0.773010453362736960810906609758469800971041293);
+ DK(KP634393284, +0.634393284163645498215171613225493370675687095);
+ DK(KP098017140, +0.098017140329560601994195563888641845861136673);
+ DK(KP995184726, +0.995184726672196886244836953109479921575474869);
+ DK(KP881921264, +0.881921264348355029712756863660388349508442621);
+ DK(KP471396736, +0.471396736825997648556387625905254377657460319);
+ DK(KP290284677, +0.290284677254462367636192375817395274691476278);
+ DK(KP956940335, +0.956940335732208864935797886980269969482849206);
+ DK(KP831469612, +0.831469612302545237078788377617905756738560812);
+ DK(KP555570233, +0.555570233019602224742830813948532874374937191);
+ DK(KP195090322, +0.195090322016128267848284868477022240927691618);
+ DK(KP980785280, +0.980785280403230449126182236134239036973933731);
+ DK(KP923879532, +0.923879532511286756128183189396788286822416626);
+ DK(KP382683432, +0.382683432365089771728459984030398866761344562);
+ DK(KP707106781, +0.707106781186547524400844362104849039284835938);
+ {
+ E T37, T7B, T8F, T5Z, Tf, Td9, TbB, TcB, T62, T7C, T2i, TdH, Tah, Tcb, T3e;
+ E T8G, Tu, TdI, Tak, TbD, Tan, TbC, T2x, Tda, T3m, T65, T7G, T8J, T7J, T8I;
+ E T3t, T64, TK, Tdd, Tas, Tce, Tav, Tcf, T2N, Tdc, T3G, T6G, T7O, T9k, T7R;
+ E T9l, T3N, T6H, T1L, Tdv, Tbs, Tcw, TdC, Teo, T5j, T6V, T5Q, T6Y, T8y, T9C;
+ E Tbb, Tct, T8n, T9z, TZ, Tdf, Taz, Tch, TaC, Tci, T32, Tdg, T3Z, T6J, T7V;
+ E T9n, T7Y, T9o, T46, T6K, T1g, Tdp, Tb1, Tcm, Tdm, Tej, T4q, T6R, T4X, T6O;
+ E T8f, T9s, TaK, Tcp, T84, T9v, T1v, Tdn, Tb4, Tcq, Tds, Tek, T4N, T6P, T50;
+ E T6S, T8i, T9w, TaV, Tcn, T8b, T9t, T20, TdD, Tbv, Tcu, Tdy, Tep, T5G, T6Z;
+ E T5T, T6W, T8B, T9A, Tbm, Tcx, T8u, T9D;
+ {
+ E T3, T35, T26, T5Y, T6, T5X, T29, T36, Ta, T39, T2d, T38, Td, T3b, T2g;
+ E T3c;
+ {
+ E T1, T2, T24, T25;
+ T1 = ri[0];
+ T2 = ri[WS(is, 32)];
+ T3 = T1 + T2;
+ T35 = T1 - T2;
+ T24 = ii[0];
+ T25 = ii[WS(is, 32)];
+ T26 = T24 + T25;
+ T5Y = T24 - T25;
+ }
+ {
+ E T4, T5, T27, T28;
+ T4 = ri[WS(is, 16)];
+ T5 = ri[WS(is, 48)];
+ T6 = T4 + T5;
+ T5X = T4 - T5;
+ T27 = ii[WS(is, 16)];
+ T28 = ii[WS(is, 48)];
+ T29 = T27 + T28;
+ T36 = T27 - T28;
+ }
+ {
+ E T8, T9, T2b, T2c;
+ T8 = ri[WS(is, 8)];
+ T9 = ri[WS(is, 40)];
+ Ta = T8 + T9;
+ T39 = T8 - T9;
+ T2b = ii[WS(is, 8)];
+ T2c = ii[WS(is, 40)];
+ T2d = T2b + T2c;
+ T38 = T2b - T2c;
+ }
+ {
+ E Tb, Tc, T2e, T2f;
+ Tb = ri[WS(is, 56)];
+ Tc = ri[WS(is, 24)];
+ Td = Tb + Tc;
+ T3b = Tb - Tc;
+ T2e = ii[WS(is, 56)];
+ T2f = ii[WS(is, 24)];
+ T2g = T2e + T2f;
+ T3c = T2e - T2f;
+ }
+ {
+ E T7, Te, T2a, T2h;
+ T37 = T35 - T36;
+ T7B = T35 + T36;
+ T8F = T5Y - T5X;
+ T5Z = T5X + T5Y;
+ T7 = T3 + T6;
+ Te = Ta + Td;
+ Tf = T7 + Te;
+ Td9 = T7 - Te;
+ {
+ E Tbz, TbA, T60, T61;
+ Tbz = T26 - T29;
+ TbA = Td - Ta;
+ TbB = Tbz - TbA;
+ TcB = TbA + Tbz;
+ T60 = T3b - T3c;
+ T61 = T39 + T38;
+ T62 = KP707106781 * (T60 - T61);
+ T7C = KP707106781 * (T61 + T60);
+ }
+ T2a = T26 + T29;
+ T2h = T2d + T2g;
+ T2i = T2a + T2h;
+ TdH = T2a - T2h;
+ {
+ E Taf, Tag, T3a, T3d;
+ Taf = T3 - T6;
+ Tag = T2d - T2g;
+ Tah = Taf - Tag;
+ Tcb = Taf + Tag;
+ T3a = T38 - T39;
+ T3d = T3b + T3c;
+ T3e = KP707106781 * (T3a - T3d);
+ T8G = KP707106781 * (T3a + T3d);
+ }
+ }
+ }
+ {
+ E Ti, T3j, T2l, T3h, Tl, T3g, T2o, T3k, Tp, T3q, T2s, T3o, Ts, T3n, T2v;
+ E T3r;
+ {
+ E Tg, Th, T2j, T2k;
+ Tg = ri[WS(is, 4)];
+ Th = ri[WS(is, 36)];
+ Ti = Tg + Th;
+ T3j = Tg - Th;
+ T2j = ii[WS(is, 4)];
+ T2k = ii[WS(is, 36)];
+ T2l = T2j + T2k;
+ T3h = T2j - T2k;
+ }
+ {
+ E Tj, Tk, T2m, T2n;
+ Tj = ri[WS(is, 20)];
+ Tk = ri[WS(is, 52)];
+ Tl = Tj + Tk;
+ T3g = Tj - Tk;
+ T2m = ii[WS(is, 20)];
+ T2n = ii[WS(is, 52)];
+ T2o = T2m + T2n;
+ T3k = T2m - T2n;
+ }
+ {
+ E Tn, To, T2q, T2r;
+ Tn = ri[WS(is, 60)];
+ To = ri[WS(is, 28)];
+ Tp = Tn + To;
+ T3q = Tn - To;
+ T2q = ii[WS(is, 60)];
+ T2r = ii[WS(is, 28)];
+ T2s = T2q + T2r;
+ T3o = T2q - T2r;
+ }
+ {
+ E Tq, Tr, T2t, T2u;
+ Tq = ri[WS(is, 12)];
+ Tr = ri[WS(is, 44)];
+ Ts = Tq + Tr;
+ T3n = Tq - Tr;
+ T2t = ii[WS(is, 12)];
+ T2u = ii[WS(is, 44)];
+ T2v = T2t + T2u;
+ T3r = T2t - T2u;
+ }
+ {
+ E Tm, Tt, Tai, Taj;
+ Tm = Ti + Tl;
+ Tt = Tp + Ts;
+ Tu = Tm + Tt;
+ TdI = Tt - Tm;
+ Tai = T2l - T2o;
+ Taj = Ti - Tl;
+ Tak = Tai - Taj;
+ TbD = Taj + Tai;
+ }
+ {
+ E Tal, Tam, T2p, T2w;
+ Tal = Tp - Ts;
+ Tam = T2s - T2v;
+ Tan = Tal + Tam;
+ TbC = Tal - Tam;
+ T2p = T2l + T2o;
+ T2w = T2s + T2v;
+ T2x = T2p + T2w;
+ Tda = T2p - T2w;
+ }
+ {
+ E T3i, T3l, T7E, T7F;
+ T3i = T3g + T3h;
+ T3l = T3j - T3k;
+ T3m = FNMS(KP923879532, T3l, KP382683432 * T3i);
+ T65 = FMA(KP923879532, T3i, KP382683432 * T3l);
+ T7E = T3h - T3g;
+ T7F = T3j + T3k;
+ T7G = FNMS(KP382683432, T7F, KP923879532 * T7E);
+ T8J = FMA(KP382683432, T7E, KP923879532 * T7F);
+ }
+ {
+ E T7H, T7I, T3p, T3s;
+ T7H = T3o - T3n;
+ T7I = T3q + T3r;
+ T7J = FMA(KP923879532, T7H, KP382683432 * T7I);
+ T8I = FNMS(KP382683432, T7H, KP923879532 * T7I);
+ T3p = T3n + T3o;
+ T3s = T3q - T3r;
+ T3t = FMA(KP382683432, T3p, KP923879532 * T3s);
+ T64 = FNMS(KP923879532, T3p, KP382683432 * T3s);
+ }
+ }
+ {
+ E Ty, T3H, T2B, T3x, TB, T3w, T2E, T3I, TI, T3L, T2L, T3B, TF, T3K, T2I;
+ E T3E;
+ {
+ E Tw, Tx, T2C, T2D;
+ Tw = ri[WS(is, 2)];
+ Tx = ri[WS(is, 34)];
+ Ty = Tw + Tx;
+ T3H = Tw - Tx;
+ {
+ E T2z, T2A, Tz, TA;
+ T2z = ii[WS(is, 2)];
+ T2A = ii[WS(is, 34)];
+ T2B = T2z + T2A;
+ T3x = T2z - T2A;
+ Tz = ri[WS(is, 18)];
+ TA = ri[WS(is, 50)];
+ TB = Tz + TA;
+ T3w = Tz - TA;
+ }
+ T2C = ii[WS(is, 18)];
+ T2D = ii[WS(is, 50)];
+ T2E = T2C + T2D;
+ T3I = T2C - T2D;
+ {
+ E TG, TH, T3z, T2J, T2K, T3A;
+ TG = ri[WS(is, 58)];
+ TH = ri[WS(is, 26)];
+ T3z = TG - TH;
+ T2J = ii[WS(is, 58)];
+ T2K = ii[WS(is, 26)];
+ T3A = T2J - T2K;
+ TI = TG + TH;
+ T3L = T3z + T3A;
+ T2L = T2J + T2K;
+ T3B = T3z - T3A;
+ }
+ {
+ E TD, TE, T3C, T2G, T2H, T3D;
+ TD = ri[WS(is, 10)];
+ TE = ri[WS(is, 42)];
+ T3C = TD - TE;
+ T2G = ii[WS(is, 10)];
+ T2H = ii[WS(is, 42)];
+ T3D = T2G - T2H;
+ TF = TD + TE;
+ T3K = T3D - T3C;
+ T2I = T2G + T2H;
+ T3E = T3C + T3D;
+ }
+ }
+ {
+ E TC, TJ, Taq, Tar;
+ TC = Ty + TB;
+ TJ = TF + TI;
+ TK = TC + TJ;
+ Tdd = TC - TJ;
+ Taq = T2B - T2E;
+ Tar = TI - TF;
+ Tas = Taq - Tar;
+ Tce = Tar + Taq;
+ }
+ {
+ E Tat, Tau, T2F, T2M;
+ Tat = Ty - TB;
+ Tau = T2I - T2L;
+ Tav = Tat - Tau;
+ Tcf = Tat + Tau;
+ T2F = T2B + T2E;
+ T2M = T2I + T2L;
+ T2N = T2F + T2M;
+ Tdc = T2F - T2M;
+ }
+ {
+ E T3y, T3F, T7M, T7N;
+ T3y = T3w + T3x;
+ T3F = KP707106781 * (T3B - T3E);
+ T3G = T3y - T3F;
+ T6G = T3y + T3F;
+ T7M = T3x - T3w;
+ T7N = KP707106781 * (T3K + T3L);
+ T7O = T7M - T7N;
+ T9k = T7M + T7N;
+ }
+ {
+ E T7P, T7Q, T3J, T3M;
+ T7P = T3H + T3I;
+ T7Q = KP707106781 * (T3E + T3B);
+ T7R = T7P - T7Q;
+ T9l = T7P + T7Q;
+ T3J = T3H - T3I;
+ T3M = KP707106781 * (T3K - T3L);
+ T3N = T3J - T3M;
+ T6H = T3J + T3M;
+ }
+ }
+ {
+ E T1z, T53, T5L, Tbo, T1C, T5I, T56, Tbp, T1J, Tb9, T5h, T5N, T1G, Tb8, T5c;
+ E T5O;
+ {
+ E T1x, T1y, T54, T55;
+ T1x = ri[WS(is, 63)];
+ T1y = ri[WS(is, 31)];
+ T1z = T1x + T1y;
+ T53 = T1x - T1y;
+ {
+ E T5J, T5K, T1A, T1B;
+ T5J = ii[WS(is, 63)];
+ T5K = ii[WS(is, 31)];
+ T5L = T5J - T5K;
+ Tbo = T5J + T5K;
+ T1A = ri[WS(is, 15)];
+ T1B = ri[WS(is, 47)];
+ T1C = T1A + T1B;
+ T5I = T1A - T1B;
+ }
+ T54 = ii[WS(is, 15)];
+ T55 = ii[WS(is, 47)];
+ T56 = T54 - T55;
+ Tbp = T54 + T55;
+ {
+ E T1H, T1I, T5d, T5e, T5f, T5g;
+ T1H = ri[WS(is, 55)];
+ T1I = ri[WS(is, 23)];
+ T5d = T1H - T1I;
+ T5e = ii[WS(is, 55)];
+ T5f = ii[WS(is, 23)];
+ T5g = T5e - T5f;
+ T1J = T1H + T1I;
+ Tb9 = T5e + T5f;
+ T5h = T5d + T5g;
+ T5N = T5d - T5g;
+ }
+ {
+ E T1E, T1F, T5b, T58, T59, T5a;
+ T1E = ri[WS(is, 7)];
+ T1F = ri[WS(is, 39)];
+ T5b = T1E - T1F;
+ T58 = ii[WS(is, 7)];
+ T59 = ii[WS(is, 39)];
+ T5a = T58 - T59;
+ T1G = T1E + T1F;
+ Tb8 = T58 + T59;
+ T5c = T5a - T5b;
+ T5O = T5b + T5a;
+ }
+ }
+ {
+ E T1D, T1K, Tbq, Tbr;
+ T1D = T1z + T1C;
+ T1K = T1G + T1J;
+ T1L = T1D + T1K;
+ Tdv = T1D - T1K;
+ Tbq = Tbo - Tbp;
+ Tbr = T1J - T1G;
+ Tbs = Tbq - Tbr;
+ Tcw = Tbr + Tbq;
+ }
+ {
+ E TdA, TdB, T57, T5i;
+ TdA = Tbo + Tbp;
+ TdB = Tb8 + Tb9;
+ TdC = TdA - TdB;
+ Teo = TdA + TdB;
+ T57 = T53 - T56;
+ T5i = KP707106781 * (T5c - T5h);
+ T5j = T57 - T5i;
+ T6V = T57 + T5i;
+ }
+ {
+ E T5M, T5P, T8w, T8x;
+ T5M = T5I + T5L;
+ T5P = KP707106781 * (T5N - T5O);
+ T5Q = T5M - T5P;
+ T6Y = T5M + T5P;
+ T8w = T5L - T5I;
+ T8x = KP707106781 * (T5c + T5h);
+ T8y = T8w - T8x;
+ T9C = T8w + T8x;
+ }
+ {
+ E Tb7, Tba, T8l, T8m;
+ Tb7 = T1z - T1C;
+ Tba = Tb8 - Tb9;
+ Tbb = Tb7 - Tba;
+ Tct = Tb7 + Tba;
+ T8l = T53 + T56;
+ T8m = KP707106781 * (T5O + T5N);
+ T8n = T8l - T8m;
+ T9z = T8l + T8m;
+ }
+ }
+ {
+ E TN, T40, T2Q, T3Q, TQ, T3P, T2T, T41, TX, T44, T30, T3U, TU, T43, T2X;
+ E T3X;
+ {
+ E TL, TM, T2R, T2S;
+ TL = ri[WS(is, 62)];
+ TM = ri[WS(is, 30)];
+ TN = TL + TM;
+ T40 = TL - TM;
+ {
+ E T2O, T2P, TO, TP;
+ T2O = ii[WS(is, 62)];
+ T2P = ii[WS(is, 30)];
+ T2Q = T2O + T2P;
+ T3Q = T2O - T2P;
+ TO = ri[WS(is, 14)];
+ TP = ri[WS(is, 46)];
+ TQ = TO + TP;
+ T3P = TO - TP;
+ }
+ T2R = ii[WS(is, 14)];
+ T2S = ii[WS(is, 46)];
+ T2T = T2R + T2S;
+ T41 = T2R - T2S;
+ {
+ E TV, TW, T3S, T2Y, T2Z, T3T;
+ TV = ri[WS(is, 54)];
+ TW = ri[WS(is, 22)];
+ T3S = TV - TW;
+ T2Y = ii[WS(is, 54)];
+ T2Z = ii[WS(is, 22)];
+ T3T = T2Y - T2Z;
+ TX = TV + TW;
+ T44 = T3S + T3T;
+ T30 = T2Y + T2Z;
+ T3U = T3S - T3T;
+ }
+ {
+ E TS, TT, T3V, T2V, T2W, T3W;
+ TS = ri[WS(is, 6)];
+ TT = ri[WS(is, 38)];
+ T3V = TS - TT;
+ T2V = ii[WS(is, 6)];
+ T2W = ii[WS(is, 38)];
+ T3W = T2V - T2W;
+ TU = TS + TT;
+ T43 = T3W - T3V;
+ T2X = T2V + T2W;
+ T3X = T3V + T3W;
+ }
+ }
+ {
+ E TR, TY, Tax, Tay;
+ TR = TN + TQ;
+ TY = TU + TX;
+ TZ = TR + TY;
+ Tdf = TR - TY;
+ Tax = T2Q - T2T;
+ Tay = TX - TU;
+ Taz = Tax - Tay;
+ Tch = Tay + Tax;
+ }
+ {
+ E TaA, TaB, T2U, T31;
+ TaA = TN - TQ;
+ TaB = T2X - T30;
+ TaC = TaA - TaB;
+ Tci = TaA + TaB;
+ T2U = T2Q + T2T;
+ T31 = T2X + T30;
+ T32 = T2U + T31;
+ Tdg = T2U - T31;
+ }
+ {
+ E T3R, T3Y, T7T, T7U;
+ T3R = T3P + T3Q;
+ T3Y = KP707106781 * (T3U - T3X);
+ T3Z = T3R - T3Y;
+ T6J = T3R + T3Y;
+ T7T = T40 + T41;
+ T7U = KP707106781 * (T3X + T3U);
+ T7V = T7T - T7U;
+ T9n = T7T + T7U;
+ }
+ {
+ E T7W, T7X, T42, T45;
+ T7W = T3Q - T3P;
+ T7X = KP707106781 * (T43 + T44);
+ T7Y = T7W - T7X;
+ T9o = T7W + T7X;
+ T42 = T40 - T41;
+ T45 = KP707106781 * (T43 - T44);
+ T46 = T42 - T45;
+ T6K = T42 + T45;
+ }
+ }
+ {
+ E T14, T4P, T4d, TaG, T17, T4a, T4S, TaH, T1e, TaZ, T4j, T4V, T1b, TaY, T4o;
+ E T4U;
+ {
+ E T12, T13, T4Q, T4R;
+ T12 = ri[WS(is, 1)];
+ T13 = ri[WS(is, 33)];
+ T14 = T12 + T13;
+ T4P = T12 - T13;
+ {
+ E T4b, T4c, T15, T16;
+ T4b = ii[WS(is, 1)];
+ T4c = ii[WS(is, 33)];
+ T4d = T4b - T4c;
+ TaG = T4b + T4c;
+ T15 = ri[WS(is, 17)];
+ T16 = ri[WS(is, 49)];
+ T17 = T15 + T16;
+ T4a = T15 - T16;
+ }
+ T4Q = ii[WS(is, 17)];
+ T4R = ii[WS(is, 49)];
+ T4S = T4Q - T4R;
+ TaH = T4Q + T4R;
+ {
+ E T1c, T1d, T4f, T4g, T4h, T4i;
+ T1c = ri[WS(is, 57)];
+ T1d = ri[WS(is, 25)];
+ T4f = T1c - T1d;
+ T4g = ii[WS(is, 57)];
+ T4h = ii[WS(is, 25)];
+ T4i = T4g - T4h;
+ T1e = T1c + T1d;
+ TaZ = T4g + T4h;
+ T4j = T4f - T4i;
+ T4V = T4f + T4i;
+ }
+ {
+ E T19, T1a, T4k, T4l, T4m, T4n;
+ T19 = ri[WS(is, 9)];
+ T1a = ri[WS(is, 41)];
+ T4k = T19 - T1a;
+ T4l = ii[WS(is, 9)];
+ T4m = ii[WS(is, 41)];
+ T4n = T4l - T4m;
+ T1b = T19 + T1a;
+ TaY = T4l + T4m;
+ T4o = T4k + T4n;
+ T4U = T4n - T4k;
+ }
+ }
+ {
+ E T18, T1f, TaX, Tb0;
+ T18 = T14 + T17;
+ T1f = T1b + T1e;
+ T1g = T18 + T1f;
+ Tdp = T18 - T1f;
+ TaX = T14 - T17;
+ Tb0 = TaY - TaZ;
+ Tb1 = TaX - Tb0;
+ Tcm = TaX + Tb0;
+ }
+ {
+ E Tdk, Tdl, T4e, T4p;
+ Tdk = TaG + TaH;
+ Tdl = TaY + TaZ;
+ Tdm = Tdk - Tdl;
+ Tej = Tdk + Tdl;
+ T4e = T4a + T4d;
+ T4p = KP707106781 * (T4j - T4o);
+ T4q = T4e - T4p;
+ T6R = T4e + T4p;
+ }
+ {
+ E T4T, T4W, T8d, T8e;
+ T4T = T4P - T4S;
+ T4W = KP707106781 * (T4U - T4V);
+ T4X = T4T - T4W;
+ T6O = T4T + T4W;
+ T8d = T4P + T4S;
+ T8e = KP707106781 * (T4o + T4j);
+ T8f = T8d - T8e;
+ T9s = T8d + T8e;
+ }
+ {
+ E TaI, TaJ, T82, T83;
+ TaI = TaG - TaH;
+ TaJ = T1e - T1b;
+ TaK = TaI - TaJ;
+ Tcp = TaJ + TaI;
+ T82 = T4d - T4a;
+ T83 = KP707106781 * (T4U + T4V);
+ T84 = T82 - T83;
+ T9v = T82 + T83;
+ }
+ }
+ {
+ E T1j, TaR, T1m, TaS, T4G, T4L, TaT, TaQ, T89, T88, T1q, TaM, T1t, TaN, T4v;
+ E T4A, TaO, TaL, T86, T85;
+ {
+ E T4H, T4F, T4C, T4K;
+ {
+ E T1h, T1i, T4D, T4E;
+ T1h = ri[WS(is, 5)];
+ T1i = ri[WS(is, 37)];
+ T1j = T1h + T1i;
+ T4H = T1h - T1i;
+ T4D = ii[WS(is, 5)];
+ T4E = ii[WS(is, 37)];
+ T4F = T4D - T4E;
+ TaR = T4D + T4E;
+ }
+ {
+ E T1k, T1l, T4I, T4J;
+ T1k = ri[WS(is, 21)];
+ T1l = ri[WS(is, 53)];
+ T1m = T1k + T1l;
+ T4C = T1k - T1l;
+ T4I = ii[WS(is, 21)];
+ T4J = ii[WS(is, 53)];
+ T4K = T4I - T4J;
+ TaS = T4I + T4J;
+ }
+ T4G = T4C + T4F;
+ T4L = T4H - T4K;
+ TaT = TaR - TaS;
+ TaQ = T1j - T1m;
+ T89 = T4H + T4K;
+ T88 = T4F - T4C;
+ }
+ {
+ E T4r, T4z, T4w, T4u;
+ {
+ E T1o, T1p, T4x, T4y;
+ T1o = ri[WS(is, 61)];
+ T1p = ri[WS(is, 29)];
+ T1q = T1o + T1p;
+ T4r = T1o - T1p;
+ T4x = ii[WS(is, 61)];
+ T4y = ii[WS(is, 29)];
+ T4z = T4x - T4y;
+ TaM = T4x + T4y;
+ }
+ {
+ E T1r, T1s, T4s, T4t;
+ T1r = ri[WS(is, 13)];
+ T1s = ri[WS(is, 45)];
+ T1t = T1r + T1s;
+ T4w = T1r - T1s;
+ T4s = ii[WS(is, 13)];
+ T4t = ii[WS(is, 45)];
+ T4u = T4s - T4t;
+ TaN = T4s + T4t;
+ }
+ T4v = T4r - T4u;
+ T4A = T4w + T4z;
+ TaO = TaM - TaN;
+ TaL = T1q - T1t;
+ T86 = T4z - T4w;
+ T85 = T4r + T4u;
+ }
+ {
+ E T1n, T1u, Tb2, Tb3;
+ T1n = T1j + T1m;
+ T1u = T1q + T1t;
+ T1v = T1n + T1u;
+ Tdn = T1u - T1n;
+ Tb2 = TaT - TaQ;
+ Tb3 = TaL + TaO;
+ Tb4 = KP707106781 * (Tb2 - Tb3);
+ Tcq = KP707106781 * (Tb2 + Tb3);
+ }
+ {
+ E Tdq, Tdr, T4B, T4M;
+ Tdq = TaR + TaS;
+ Tdr = TaM + TaN;
+ Tds = Tdq - Tdr;
+ Tek = Tdq + Tdr;
+ T4B = FNMS(KP923879532, T4A, KP382683432 * T4v);
+ T4M = FMA(KP923879532, T4G, KP382683432 * T4L);
+ T4N = T4B - T4M;
+ T6P = T4M + T4B;
+ }
+ {
+ E T4Y, T4Z, T8g, T8h;
+ T4Y = FNMS(KP923879532, T4L, KP382683432 * T4G);
+ T4Z = FMA(KP382683432, T4A, KP923879532 * T4v);
+ T50 = T4Y - T4Z;
+ T6S = T4Y + T4Z;
+ T8g = FNMS(KP382683432, T89, KP923879532 * T88);
+ T8h = FMA(KP923879532, T86, KP382683432 * T85);
+ T8i = T8g - T8h;
+ T9w = T8g + T8h;
+ }
+ {
+ E TaP, TaU, T87, T8a;
+ TaP = TaL - TaO;
+ TaU = TaQ + TaT;
+ TaV = KP707106781 * (TaP - TaU);
+ Tcn = KP707106781 * (TaU + TaP);
+ T87 = FNMS(KP382683432, T86, KP923879532 * T85);
+ T8a = FMA(KP382683432, T88, KP923879532 * T89);
+ T8b = T87 - T8a;
+ T9t = T8a + T87;
+ }
+ }
+ {
+ E T1O, Tbc, T1R, Tbd, T5o, T5t, Tbf, Tbe, T8p, T8o, T1V, Tbi, T1Y, Tbj, T5z;
+ E T5E, Tbk, Tbh, T8s, T8r;
+ {
+ E T5p, T5n, T5k, T5s;
+ {
+ E T1M, T1N, T5l, T5m;
+ T1M = ri[WS(is, 3)];
+ T1N = ri[WS(is, 35)];
+ T1O = T1M + T1N;
+ T5p = T1M - T1N;
+ T5l = ii[WS(is, 3)];
+ T5m = ii[WS(is, 35)];
+ T5n = T5l - T5m;
+ Tbc = T5l + T5m;
+ }
+ {
+ E T1P, T1Q, T5q, T5r;
+ T1P = ri[WS(is, 19)];
+ T1Q = ri[WS(is, 51)];
+ T1R = T1P + T1Q;
+ T5k = T1P - T1Q;
+ T5q = ii[WS(is, 19)];
+ T5r = ii[WS(is, 51)];
+ T5s = T5q - T5r;
+ Tbd = T5q + T5r;
+ }
+ T5o = T5k + T5n;
+ T5t = T5p - T5s;
+ Tbf = T1O - T1R;
+ Tbe = Tbc - Tbd;
+ T8p = T5p + T5s;
+ T8o = T5n - T5k;
+ }
+ {
+ E T5A, T5y, T5v, T5D;
+ {
+ E T1T, T1U, T5w, T5x;
+ T1T = ri[WS(is, 59)];
+ T1U = ri[WS(is, 27)];
+ T1V = T1T + T1U;
+ T5A = T1T - T1U;
+ T5w = ii[WS(is, 59)];
+ T5x = ii[WS(is, 27)];
+ T5y = T5w - T5x;
+ Tbi = T5w + T5x;
+ }
+ {
+ E T1W, T1X, T5B, T5C;
+ T1W = ri[WS(is, 11)];
+ T1X = ri[WS(is, 43)];
+ T1Y = T1W + T1X;
+ T5v = T1W - T1X;
+ T5B = ii[WS(is, 11)];
+ T5C = ii[WS(is, 43)];
+ T5D = T5B - T5C;
+ Tbj = T5B + T5C;
+ }
+ T5z = T5v + T5y;
+ T5E = T5A - T5D;
+ Tbk = Tbi - Tbj;
+ Tbh = T1V - T1Y;
+ T8s = T5A + T5D;
+ T8r = T5y - T5v;
+ }
+ {
+ E T1S, T1Z, Tbt, Tbu;
+ T1S = T1O + T1R;
+ T1Z = T1V + T1Y;
+ T20 = T1S + T1Z;
+ TdD = T1Z - T1S;
+ Tbt = Tbh - Tbk;
+ Tbu = Tbf + Tbe;
+ Tbv = KP707106781 * (Tbt - Tbu);
+ Tcu = KP707106781 * (Tbu + Tbt);
+ }
+ {
+ E Tdw, Tdx, T5u, T5F;
+ Tdw = Tbc + Tbd;
+ Tdx = Tbi + Tbj;
+ Tdy = Tdw - Tdx;
+ Tep = Tdw + Tdx;
+ T5u = FNMS(KP923879532, T5t, KP382683432 * T5o);
+ T5F = FMA(KP382683432, T5z, KP923879532 * T5E);
+ T5G = T5u - T5F;
+ T6Z = T5u + T5F;
+ }
+ {
+ E T5R, T5S, T8z, T8A;
+ T5R = FNMS(KP923879532, T5z, KP382683432 * T5E);
+ T5S = FMA(KP923879532, T5o, KP382683432 * T5t);
+ T5T = T5R - T5S;
+ T6W = T5S + T5R;
+ T8z = FNMS(KP382683432, T8r, KP923879532 * T8s);
+ T8A = FMA(KP382683432, T8o, KP923879532 * T8p);
+ T8B = T8z - T8A;
+ T9A = T8A + T8z;
+ }
+ {
+ E Tbg, Tbl, T8q, T8t;
+ Tbg = Tbe - Tbf;
+ Tbl = Tbh + Tbk;
+ Tbm = KP707106781 * (Tbg - Tbl);
+ Tcx = KP707106781 * (Tbg + Tbl);
+ T8q = FNMS(KP382683432, T8p, KP923879532 * T8o);
+ T8t = FMA(KP923879532, T8r, KP382683432 * T8s);
+ T8u = T8q - T8t;
+ T9D = T8q + T8t;
+ }
+ }
+ {
+ E T11, TeD, TeG, TeI, T22, T23, T34, TeH;
+ {
+ E Tv, T10, TeE, TeF;
+ Tv = Tf + Tu;
+ T10 = TK + TZ;
+ T11 = Tv + T10;
+ TeD = Tv - T10;
+ TeE = Tej + Tek;
+ TeF = Teo + Tep;
+ TeG = TeE - TeF;
+ TeI = TeE + TeF;
+ }
+ {
+ E T1w, T21, T2y, T33;
+ T1w = T1g + T1v;
+ T21 = T1L + T20;
+ T22 = T1w + T21;
+ T23 = T21 - T1w;
+ T2y = T2i + T2x;
+ T33 = T2N + T32;
+ T34 = T2y - T33;
+ TeH = T2y + T33;
+ }
+ ro[WS(os, 32)] = T11 - T22;
+ io[WS(os, 32)] = TeH - TeI;
+ ro[0] = T11 + T22;
+ io[0] = TeH + TeI;
+ io[WS(os, 16)] = T23 + T34;
+ ro[WS(os, 16)] = TeD + TeG;
+ io[WS(os, 48)] = T34 - T23;
+ ro[WS(os, 48)] = TeD - TeG;
+ }
+ {
+ E Teh, Tex, Tev, TeB, Tem, Tey, Ter, Tez;
+ {
+ E Tef, Teg, Tet, Teu;
+ Tef = Tf - Tu;
+ Teg = T2N - T32;
+ Teh = Tef + Teg;
+ Tex = Tef - Teg;
+ Tet = T2i - T2x;
+ Teu = TZ - TK;
+ Tev = Tet - Teu;
+ TeB = Teu + Tet;
+ }
+ {
+ E Tei, Tel, Ten, Teq;
+ Tei = T1g - T1v;
+ Tel = Tej - Tek;
+ Tem = Tei + Tel;
+ Tey = Tel - Tei;
+ Ten = T1L - T20;
+ Teq = Teo - Tep;
+ Ter = Ten - Teq;
+ Tez = Ten + Teq;
+ }
+ {
+ E Tes, TeC, Tew, TeA;
+ Tes = KP707106781 * (Tem + Ter);
+ ro[WS(os, 40)] = Teh - Tes;
+ ro[WS(os, 8)] = Teh + Tes;
+ TeC = KP707106781 * (Tey + Tez);
+ io[WS(os, 40)] = TeB - TeC;
+ io[WS(os, 8)] = TeB + TeC;
+ Tew = KP707106781 * (Ter - Tem);
+ io[WS(os, 56)] = Tev - Tew;
+ io[WS(os, 24)] = Tev + Tew;
+ TeA = KP707106781 * (Tey - Tez);
+ ro[WS(os, 56)] = Tex - TeA;
+ ro[WS(os, 24)] = Tex + TeA;
+ }
+ }
+ {
+ E Tdb, TdV, Te5, TdJ, Tdi, Te6, Te3, Teb, TdM, TdW, Tdu, TdQ, Te0, Tea, TdF;
+ E TdR;
+ {
+ E Tde, Tdh, Tdo, Tdt;
+ Tdb = Td9 - Tda;
+ TdV = Td9 + Tda;
+ Te5 = TdI + TdH;
+ TdJ = TdH - TdI;
+ Tde = Tdc - Tdd;
+ Tdh = Tdf + Tdg;
+ Tdi = KP707106781 * (Tde - Tdh);
+ Te6 = KP707106781 * (Tde + Tdh);
+ {
+ E Te1, Te2, TdK, TdL;
+ Te1 = Tdv + Tdy;
+ Te2 = TdD + TdC;
+ Te3 = FNMS(KP382683432, Te2, KP923879532 * Te1);
+ Teb = FMA(KP923879532, Te2, KP382683432 * Te1);
+ TdK = Tdf - Tdg;
+ TdL = Tdd + Tdc;
+ TdM = KP707106781 * (TdK - TdL);
+ TdW = KP707106781 * (TdL + TdK);
+ }
+ Tdo = Tdm - Tdn;
+ Tdt = Tdp - Tds;
+ Tdu = FMA(KP923879532, Tdo, KP382683432 * Tdt);
+ TdQ = FNMS(KP923879532, Tdt, KP382683432 * Tdo);
+ {
+ E TdY, TdZ, Tdz, TdE;
+ TdY = Tdn + Tdm;
+ TdZ = Tdp + Tds;
+ Te0 = FMA(KP382683432, TdY, KP923879532 * TdZ);
+ Tea = FNMS(KP382683432, TdZ, KP923879532 * TdY);
+ Tdz = Tdv - Tdy;
+ TdE = TdC - TdD;
+ TdF = FNMS(KP923879532, TdE, KP382683432 * Tdz);
+ TdR = FMA(KP382683432, TdE, KP923879532 * Tdz);
+ }
+ }
+ {
+ E Tdj, TdG, TdT, TdU;
+ Tdj = Tdb + Tdi;
+ TdG = Tdu + TdF;
+ ro[WS(os, 44)] = Tdj - TdG;
+ ro[WS(os, 12)] = Tdj + TdG;
+ TdT = TdJ + TdM;
+ TdU = TdQ + TdR;
+ io[WS(os, 44)] = TdT - TdU;
+ io[WS(os, 12)] = TdT + TdU;
+ }
+ {
+ E TdN, TdO, TdP, TdS;
+ TdN = TdJ - TdM;
+ TdO = TdF - Tdu;
+ io[WS(os, 60)] = TdN - TdO;
+ io[WS(os, 28)] = TdN + TdO;
+ TdP = Tdb - Tdi;
+ TdS = TdQ - TdR;
+ ro[WS(os, 60)] = TdP - TdS;
+ ro[WS(os, 28)] = TdP + TdS;
+ }
+ {
+ E TdX, Te4, Ted, Tee;
+ TdX = TdV + TdW;
+ Te4 = Te0 + Te3;
+ ro[WS(os, 36)] = TdX - Te4;
+ ro[WS(os, 4)] = TdX + Te4;
+ Ted = Te5 + Te6;
+ Tee = Tea + Teb;
+ io[WS(os, 36)] = Ted - Tee;
+ io[WS(os, 4)] = Ted + Tee;
+ }
+ {
+ E Te7, Te8, Te9, Tec;
+ Te7 = Te5 - Te6;
+ Te8 = Te3 - Te0;
+ io[WS(os, 52)] = Te7 - Te8;
+ io[WS(os, 20)] = Te7 + Te8;
+ Te9 = TdV - TdW;
+ Tec = Tea - Teb;
+ ro[WS(os, 52)] = Te9 - Tec;
+ ro[WS(os, 20)] = Te9 + Tec;
+ }
+ }
+ {
+ E Tcd, TcP, TcD, TcZ, Tck, Td0, TcX, Td5, Tcs, TcK, TcG, TcQ, TcU, Td4, Tcz;
+ E TcL, Tcc, TcC;
+ Tcc = KP707106781 * (TbD + TbC);
+ Tcd = Tcb - Tcc;
+ TcP = Tcb + Tcc;
+ TcC = KP707106781 * (Tak + Tan);
+ TcD = TcB - TcC;
+ TcZ = TcB + TcC;
+ {
+ E Tcg, Tcj, TcV, TcW;
+ Tcg = FNMS(KP382683432, Tcf, KP923879532 * Tce);
+ Tcj = FMA(KP923879532, Tch, KP382683432 * Tci);
+ Tck = Tcg - Tcj;
+ Td0 = Tcg + Tcj;
+ TcV = Tct + Tcu;
+ TcW = Tcw + Tcx;
+ TcX = FNMS(KP195090322, TcW, KP980785280 * TcV);
+ Td5 = FMA(KP195090322, TcV, KP980785280 * TcW);
+ }
+ {
+ E Tco, Tcr, TcE, TcF;
+ Tco = Tcm - Tcn;
+ Tcr = Tcp - Tcq;
+ Tcs = FMA(KP555570233, Tco, KP831469612 * Tcr);
+ TcK = FNMS(KP831469612, Tco, KP555570233 * Tcr);
+ TcE = FNMS(KP382683432, Tch, KP923879532 * Tci);
+ TcF = FMA(KP382683432, Tce, KP923879532 * Tcf);
+ TcG = TcE - TcF;
+ TcQ = TcF + TcE;
+ }
+ {
+ E TcS, TcT, Tcv, Tcy;
+ TcS = Tcm + Tcn;
+ TcT = Tcp + Tcq;
+ TcU = FMA(KP980785280, TcS, KP195090322 * TcT);
+ Td4 = FNMS(KP195090322, TcS, KP980785280 * TcT);
+ Tcv = Tct - Tcu;
+ Tcy = Tcw - Tcx;
+ Tcz = FNMS(KP831469612, Tcy, KP555570233 * Tcv);
+ TcL = FMA(KP831469612, Tcv, KP555570233 * Tcy);
+ }
+ {
+ E Tcl, TcA, TcN, TcO;
+ Tcl = Tcd + Tck;
+ TcA = Tcs + Tcz;
+ ro[WS(os, 42)] = Tcl - TcA;
+ ro[WS(os, 10)] = Tcl + TcA;
+ TcN = TcD + TcG;
+ TcO = TcK + TcL;
+ io[WS(os, 42)] = TcN - TcO;
+ io[WS(os, 10)] = TcN + TcO;
+ }
+ {
+ E TcH, TcI, TcJ, TcM;
+ TcH = TcD - TcG;
+ TcI = Tcz - Tcs;
+ io[WS(os, 58)] = TcH - TcI;
+ io[WS(os, 26)] = TcH + TcI;
+ TcJ = Tcd - Tck;
+ TcM = TcK - TcL;
+ ro[WS(os, 58)] = TcJ - TcM;
+ ro[WS(os, 26)] = TcJ + TcM;
+ }
+ {
+ E TcR, TcY, Td7, Td8;
+ TcR = TcP + TcQ;
+ TcY = TcU + TcX;
+ ro[WS(os, 34)] = TcR - TcY;
+ ro[WS(os, 2)] = TcR + TcY;
+ Td7 = TcZ + Td0;
+ Td8 = Td4 + Td5;
+ io[WS(os, 34)] = Td7 - Td8;
+ io[WS(os, 2)] = Td7 + Td8;
+ }
+ {
+ E Td1, Td2, Td3, Td6;
+ Td1 = TcZ - Td0;
+ Td2 = TcX - TcU;
+ io[WS(os, 50)] = Td1 - Td2;
+ io[WS(os, 18)] = Td1 + Td2;
+ Td3 = TcP - TcQ;
+ Td6 = Td4 - Td5;
+ ro[WS(os, 50)] = Td3 - Td6;
+ ro[WS(os, 18)] = Td3 + Td6;
+ }
+ }
+ {
+ E Tap, TbR, TbF, Tc1, TaE, Tc2, TbZ, Tc7, Tb6, TbM, TbI, TbS, TbW, Tc6, Tbx;
+ E TbN, Tao, TbE;
+ Tao = KP707106781 * (Tak - Tan);
+ Tap = Tah - Tao;
+ TbR = Tah + Tao;
+ TbE = KP707106781 * (TbC - TbD);
+ TbF = TbB - TbE;
+ Tc1 = TbB + TbE;
+ {
+ E Taw, TaD, TbX, TbY;
+ Taw = FNMS(KP923879532, Tav, KP382683432 * Tas);
+ TaD = FMA(KP382683432, Taz, KP923879532 * TaC);
+ TaE = Taw - TaD;
+ Tc2 = Taw + TaD;
+ TbX = Tbb + Tbm;
+ TbY = Tbs + Tbv;
+ TbZ = FNMS(KP555570233, TbY, KP831469612 * TbX);
+ Tc7 = FMA(KP831469612, TbY, KP555570233 * TbX);
+ }
+ {
+ E TaW, Tb5, TbG, TbH;
+ TaW = TaK - TaV;
+ Tb5 = Tb1 - Tb4;
+ Tb6 = FMA(KP980785280, TaW, KP195090322 * Tb5);
+ TbM = FNMS(KP980785280, Tb5, KP195090322 * TaW);
+ TbG = FNMS(KP923879532, Taz, KP382683432 * TaC);
+ TbH = FMA(KP923879532, Tas, KP382683432 * Tav);
+ TbI = TbG - TbH;
+ TbS = TbH + TbG;
+ }
+ {
+ E TbU, TbV, Tbn, Tbw;
+ TbU = TaK + TaV;
+ TbV = Tb1 + Tb4;
+ TbW = FMA(KP555570233, TbU, KP831469612 * TbV);
+ Tc6 = FNMS(KP555570233, TbV, KP831469612 * TbU);
+ Tbn = Tbb - Tbm;
+ Tbw = Tbs - Tbv;
+ Tbx = FNMS(KP980785280, Tbw, KP195090322 * Tbn);
+ TbN = FMA(KP195090322, Tbw, KP980785280 * Tbn);
+ }
+ {
+ E TaF, Tby, TbP, TbQ;
+ TaF = Tap + TaE;
+ Tby = Tb6 + Tbx;
+ ro[WS(os, 46)] = TaF - Tby;
+ ro[WS(os, 14)] = TaF + Tby;
+ TbP = TbF + TbI;
+ TbQ = TbM + TbN;
+ io[WS(os, 46)] = TbP - TbQ;
+ io[WS(os, 14)] = TbP + TbQ;
+ }
+ {
+ E TbJ, TbK, TbL, TbO;
+ TbJ = TbF - TbI;
+ TbK = Tbx - Tb6;
+ io[WS(os, 62)] = TbJ - TbK;
+ io[WS(os, 30)] = TbJ + TbK;
+ TbL = Tap - TaE;
+ TbO = TbM - TbN;
+ ro[WS(os, 62)] = TbL - TbO;
+ ro[WS(os, 30)] = TbL + TbO;
+ }
+ {
+ E TbT, Tc0, Tc9, Tca;
+ TbT = TbR + TbS;
+ Tc0 = TbW + TbZ;
+ ro[WS(os, 38)] = TbT - Tc0;
+ ro[WS(os, 6)] = TbT + Tc0;
+ Tc9 = Tc1 + Tc2;
+ Tca = Tc6 + Tc7;
+ io[WS(os, 38)] = Tc9 - Tca;
+ io[WS(os, 6)] = Tc9 + Tca;
+ }
+ {
+ E Tc3, Tc4, Tc5, Tc8;
+ Tc3 = Tc1 - Tc2;
+ Tc4 = TbZ - TbW;
+ io[WS(os, 54)] = Tc3 - Tc4;
+ io[WS(os, 22)] = Tc3 + Tc4;
+ Tc5 = TbR - TbS;
+ Tc8 = Tc6 - Tc7;
+ ro[WS(os, 54)] = Tc5 - Tc8;
+ ro[WS(os, 22)] = Tc5 + Tc8;
+ }
+ }
+ {
+ E T6F, T7h, T7m, T7w, T7p, T7x, T6M, T7s, T6U, T7c, T75, T7r, T78, T7i, T71;
+ E T7d;
+ {
+ E T6D, T6E, T7k, T7l;
+ T6D = T37 + T3e;
+ T6E = T65 + T64;
+ T6F = T6D - T6E;
+ T7h = T6D + T6E;
+ T7k = T6O + T6P;
+ T7l = T6R + T6S;
+ T7m = FMA(KP956940335, T7k, KP290284677 * T7l);
+ T7w = FNMS(KP290284677, T7k, KP956940335 * T7l);
+ }
+ {
+ E T7n, T7o, T6I, T6L;
+ T7n = T6V + T6W;
+ T7o = T6Y + T6Z;
+ T7p = FNMS(KP290284677, T7o, KP956940335 * T7n);
+ T7x = FMA(KP290284677, T7n, KP956940335 * T7o);
+ T6I = FNMS(KP555570233, T6H, KP831469612 * T6G);
+ T6L = FMA(KP831469612, T6J, KP555570233 * T6K);
+ T6M = T6I - T6L;
+ T7s = T6I + T6L;
+ }
+ {
+ E T6Q, T6T, T73, T74;
+ T6Q = T6O - T6P;
+ T6T = T6R - T6S;
+ T6U = FMA(KP471396736, T6Q, KP881921264 * T6T);
+ T7c = FNMS(KP881921264, T6Q, KP471396736 * T6T);
+ T73 = T5Z + T62;
+ T74 = T3m + T3t;
+ T75 = T73 - T74;
+ T7r = T73 + T74;
+ }
+ {
+ E T76, T77, T6X, T70;
+ T76 = FNMS(KP555570233, T6J, KP831469612 * T6K);
+ T77 = FMA(KP555570233, T6G, KP831469612 * T6H);
+ T78 = T76 - T77;
+ T7i = T77 + T76;
+ T6X = T6V - T6W;
+ T70 = T6Y - T6Z;
+ T71 = FNMS(KP881921264, T70, KP471396736 * T6X);
+ T7d = FMA(KP881921264, T6X, KP471396736 * T70);
+ }
+ {
+ E T6N, T72, T7f, T7g;
+ T6N = T6F + T6M;
+ T72 = T6U + T71;
+ ro[WS(os, 43)] = T6N - T72;
+ ro[WS(os, 11)] = T6N + T72;
+ T7f = T75 + T78;
+ T7g = T7c + T7d;
+ io[WS(os, 43)] = T7f - T7g;
+ io[WS(os, 11)] = T7f + T7g;
+ }
+ {
+ E T79, T7a, T7b, T7e;
+ T79 = T75 - T78;
+ T7a = T71 - T6U;
+ io[WS(os, 59)] = T79 - T7a;
+ io[WS(os, 27)] = T79 + T7a;
+ T7b = T6F - T6M;
+ T7e = T7c - T7d;
+ ro[WS(os, 59)] = T7b - T7e;
+ ro[WS(os, 27)] = T7b + T7e;
+ }
+ {
+ E T7j, T7q, T7z, T7A;
+ T7j = T7h + T7i;
+ T7q = T7m + T7p;
+ ro[WS(os, 35)] = T7j - T7q;
+ ro[WS(os, 3)] = T7j + T7q;
+ T7z = T7r + T7s;
+ T7A = T7w + T7x;
+ io[WS(os, 35)] = T7z - T7A;
+ io[WS(os, 3)] = T7z + T7A;
+ }
+ {
+ E T7t, T7u, T7v, T7y;
+ T7t = T7r - T7s;
+ T7u = T7p - T7m;
+ io[WS(os, 51)] = T7t - T7u;
+ io[WS(os, 19)] = T7t + T7u;
+ T7v = T7h - T7i;
+ T7y = T7w - T7x;
+ ro[WS(os, 51)] = T7v - T7y;
+ ro[WS(os, 19)] = T7v + T7y;
+ }
+ }
+ {
+ E T9j, T9V, Ta0, Taa, Ta3, Tab, T9q, Ta6, T9y, T9Q, T9J, Ta5, T9M, T9W, T9F;
+ E T9R;
+ {
+ E T9h, T9i, T9Y, T9Z;
+ T9h = T7B + T7C;
+ T9i = T8J + T8I;
+ T9j = T9h - T9i;
+ T9V = T9h + T9i;
+ T9Y = T9s + T9t;
+ T9Z = T9v + T9w;
+ Ta0 = FMA(KP995184726, T9Y, KP098017140 * T9Z);
+ Taa = FNMS(KP098017140, T9Y, KP995184726 * T9Z);
+ }
+ {
+ E Ta1, Ta2, T9m, T9p;
+ Ta1 = T9z + T9A;
+ Ta2 = T9C + T9D;
+ Ta3 = FNMS(KP098017140, Ta2, KP995184726 * Ta1);
+ Tab = FMA(KP098017140, Ta1, KP995184726 * Ta2);
+ T9m = FNMS(KP195090322, T9l, KP980785280 * T9k);
+ T9p = FMA(KP195090322, T9n, KP980785280 * T9o);
+ T9q = T9m - T9p;
+ Ta6 = T9m + T9p;
+ }
+ {
+ E T9u, T9x, T9H, T9I;
+ T9u = T9s - T9t;
+ T9x = T9v - T9w;
+ T9y = FMA(KP634393284, T9u, KP773010453 * T9x);
+ T9Q = FNMS(KP773010453, T9u, KP634393284 * T9x);
+ T9H = T8F + T8G;
+ T9I = T7G + T7J;
+ T9J = T9H - T9I;
+ Ta5 = T9H + T9I;
+ }
+ {
+ E T9K, T9L, T9B, T9E;
+ T9K = FNMS(KP195090322, T9o, KP980785280 * T9n);
+ T9L = FMA(KP980785280, T9l, KP195090322 * T9k);
+ T9M = T9K - T9L;
+ T9W = T9L + T9K;
+ T9B = T9z - T9A;
+ T9E = T9C - T9D;
+ T9F = FNMS(KP773010453, T9E, KP634393284 * T9B);
+ T9R = FMA(KP773010453, T9B, KP634393284 * T9E);
+ }
+ {
+ E T9r, T9G, T9T, T9U;
+ T9r = T9j + T9q;
+ T9G = T9y + T9F;
+ ro[WS(os, 41)] = T9r - T9G;
+ ro[WS(os, 9)] = T9r + T9G;
+ T9T = T9J + T9M;
+ T9U = T9Q + T9R;
+ io[WS(os, 41)] = T9T - T9U;
+ io[WS(os, 9)] = T9T + T9U;
+ }
+ {
+ E T9N, T9O, T9P, T9S;
+ T9N = T9J - T9M;
+ T9O = T9F - T9y;
+ io[WS(os, 57)] = T9N - T9O;
+ io[WS(os, 25)] = T9N + T9O;
+ T9P = T9j - T9q;
+ T9S = T9Q - T9R;
+ ro[WS(os, 57)] = T9P - T9S;
+ ro[WS(os, 25)] = T9P + T9S;
+ }
+ {
+ E T9X, Ta4, Tad, Tae;
+ T9X = T9V + T9W;
+ Ta4 = Ta0 + Ta3;
+ ro[WS(os, 33)] = T9X - Ta4;
+ ro[WS(os, 1)] = T9X + Ta4;
+ Tad = Ta5 + Ta6;
+ Tae = Taa + Tab;
+ io[WS(os, 33)] = Tad - Tae;
+ io[WS(os, 1)] = Tad + Tae;
+ }
+ {
+ E Ta7, Ta8, Ta9, Tac;
+ Ta7 = Ta5 - Ta6;
+ Ta8 = Ta3 - Ta0;
+ io[WS(os, 49)] = Ta7 - Ta8;
+ io[WS(os, 17)] = Ta7 + Ta8;
+ Ta9 = T9V - T9W;
+ Tac = Taa - Tab;
+ ro[WS(os, 49)] = Ta9 - Tac;
+ ro[WS(os, 17)] = Ta9 + Tac;
+ }
+ }
+ {
+ E T3v, T6j, T6o, T6y, T6r, T6z, T48, T6u, T52, T6e, T67, T6t, T6a, T6k, T5V;
+ E T6f;
+ {
+ E T3f, T3u, T6m, T6n;
+ T3f = T37 - T3e;
+ T3u = T3m - T3t;
+ T3v = T3f - T3u;
+ T6j = T3f + T3u;
+ T6m = T4q + T4N;
+ T6n = T4X + T50;
+ T6o = FMA(KP634393284, T6m, KP773010453 * T6n);
+ T6y = FNMS(KP634393284, T6n, KP773010453 * T6m);
+ }
+ {
+ E T6p, T6q, T3O, T47;
+ T6p = T5j + T5G;
+ T6q = T5Q + T5T;
+ T6r = FNMS(KP634393284, T6q, KP773010453 * T6p);
+ T6z = FMA(KP773010453, T6q, KP634393284 * T6p);
+ T3O = FNMS(KP980785280, T3N, KP195090322 * T3G);
+ T47 = FMA(KP195090322, T3Z, KP980785280 * T46);
+ T48 = T3O - T47;
+ T6u = T3O + T47;
+ }
+ {
+ E T4O, T51, T63, T66;
+ T4O = T4q - T4N;
+ T51 = T4X - T50;
+ T52 = FMA(KP995184726, T4O, KP098017140 * T51);
+ T6e = FNMS(KP995184726, T51, KP098017140 * T4O);
+ T63 = T5Z - T62;
+ T66 = T64 - T65;
+ T67 = T63 - T66;
+ T6t = T63 + T66;
+ }
+ {
+ E T68, T69, T5H, T5U;
+ T68 = FNMS(KP980785280, T3Z, KP195090322 * T46);
+ T69 = FMA(KP980785280, T3G, KP195090322 * T3N);
+ T6a = T68 - T69;
+ T6k = T69 + T68;
+ T5H = T5j - T5G;
+ T5U = T5Q - T5T;
+ T5V = FNMS(KP995184726, T5U, KP098017140 * T5H);
+ T6f = FMA(KP098017140, T5U, KP995184726 * T5H);
+ }
+ {
+ E T49, T5W, T6h, T6i;
+ T49 = T3v + T48;
+ T5W = T52 + T5V;
+ ro[WS(os, 47)] = T49 - T5W;
+ ro[WS(os, 15)] = T49 + T5W;
+ T6h = T67 + T6a;
+ T6i = T6e + T6f;
+ io[WS(os, 47)] = T6h - T6i;
+ io[WS(os, 15)] = T6h + T6i;
+ }
+ {
+ E T6b, T6c, T6d, T6g;
+ T6b = T67 - T6a;
+ T6c = T5V - T52;
+ io[WS(os, 63)] = T6b - T6c;
+ io[WS(os, 31)] = T6b + T6c;
+ T6d = T3v - T48;
+ T6g = T6e - T6f;
+ ro[WS(os, 63)] = T6d - T6g;
+ ro[WS(os, 31)] = T6d + T6g;
+ }
+ {
+ E T6l, T6s, T6B, T6C;
+ T6l = T6j + T6k;
+ T6s = T6o + T6r;
+ ro[WS(os, 39)] = T6l - T6s;
+ ro[WS(os, 7)] = T6l + T6s;
+ T6B = T6t + T6u;
+ T6C = T6y + T6z;
+ io[WS(os, 39)] = T6B - T6C;
+ io[WS(os, 7)] = T6B + T6C;
+ }
+ {
+ E T6v, T6w, T6x, T6A;
+ T6v = T6t - T6u;
+ T6w = T6r - T6o;
+ io[WS(os, 55)] = T6v - T6w;
+ io[WS(os, 23)] = T6v + T6w;
+ T6x = T6j - T6k;
+ T6A = T6y - T6z;
+ ro[WS(os, 55)] = T6x - T6A;
+ ro[WS(os, 23)] = T6x + T6A;
+ }
+ }
+ {
+ E T7L, T8X, T92, T9c, T95, T9d, T80, T98, T8k, T8S, T8L, T97, T8O, T8Y, T8D;
+ E T8T;
+ {
+ E T7D, T7K, T90, T91;
+ T7D = T7B - T7C;
+ T7K = T7G - T7J;
+ T7L = T7D - T7K;
+ T8X = T7D + T7K;
+ T90 = T84 + T8b;
+ T91 = T8f + T8i;
+ T92 = FMA(KP471396736, T90, KP881921264 * T91);
+ T9c = FNMS(KP471396736, T91, KP881921264 * T90);
+ }
+ {
+ E T93, T94, T7S, T7Z;
+ T93 = T8n + T8u;
+ T94 = T8y + T8B;
+ T95 = FNMS(KP471396736, T94, KP881921264 * T93);
+ T9d = FMA(KP881921264, T94, KP471396736 * T93);
+ T7S = FNMS(KP831469612, T7R, KP555570233 * T7O);
+ T7Z = FMA(KP831469612, T7V, KP555570233 * T7Y);
+ T80 = T7S - T7Z;
+ T98 = T7S + T7Z;
+ }
+ {
+ E T8c, T8j, T8H, T8K;
+ T8c = T84 - T8b;
+ T8j = T8f - T8i;
+ T8k = FMA(KP956940335, T8c, KP290284677 * T8j);
+ T8S = FNMS(KP956940335, T8j, KP290284677 * T8c);
+ T8H = T8F - T8G;
+ T8K = T8I - T8J;
+ T8L = T8H - T8K;
+ T97 = T8H + T8K;
+ }
+ {
+ E T8M, T8N, T8v, T8C;
+ T8M = FNMS(KP831469612, T7Y, KP555570233 * T7V);
+ T8N = FMA(KP555570233, T7R, KP831469612 * T7O);
+ T8O = T8M - T8N;
+ T8Y = T8N + T8M;
+ T8v = T8n - T8u;
+ T8C = T8y - T8B;
+ T8D = FNMS(KP956940335, T8C, KP290284677 * T8v);
+ T8T = FMA(KP290284677, T8C, KP956940335 * T8v);
+ }
+ {
+ E T81, T8E, T8V, T8W;
+ T81 = T7L + T80;
+ T8E = T8k + T8D;
+ ro[WS(os, 45)] = T81 - T8E;
+ ro[WS(os, 13)] = T81 + T8E;
+ T8V = T8L + T8O;
+ T8W = T8S + T8T;
+ io[WS(os, 45)] = T8V - T8W;
+ io[WS(os, 13)] = T8V + T8W;
+ }
+ {
+ E T8P, T8Q, T8R, T8U;
+ T8P = T8L - T8O;
+ T8Q = T8D - T8k;
+ io[WS(os, 61)] = T8P - T8Q;
+ io[WS(os, 29)] = T8P + T8Q;
+ T8R = T7L - T80;
+ T8U = T8S - T8T;
+ ro[WS(os, 61)] = T8R - T8U;
+ ro[WS(os, 29)] = T8R + T8U;
+ }
+ {
+ E T8Z, T96, T9f, T9g;
+ T8Z = T8X + T8Y;
+ T96 = T92 + T95;
+ ro[WS(os, 37)] = T8Z - T96;
+ ro[WS(os, 5)] = T8Z + T96;
+ T9f = T97 + T98;
+ T9g = T9c + T9d;
+ io[WS(os, 37)] = T9f - T9g;
+ io[WS(os, 5)] = T9f + T9g;
+ }
+ {
+ E T99, T9a, T9b, T9e;
+ T99 = T97 - T98;
+ T9a = T95 - T92;
+ io[WS(os, 53)] = T99 - T9a;
+ io[WS(os, 21)] = T99 + T9a;
+ T9b = T8X - T8Y;
+ T9e = T9c - T9d;
+ ro[WS(os, 53)] = T9b - T9e;
+ ro[WS(os, 21)] = T9b + T9e;
+ }
+ }
+ }
+}
+
+static void m1_64(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ int i;
+ for (i = v; i > 0; i -= 1) {
+ m1_64_0(ri, ii, ro, io, is, os);
+ ri += ivs;
+ ii += ivs;
+ ro += ovs;
+ io += ovs;
+ }
+}
+
+static const kdft_desc desc = { 64, "m1_64", {808, 144, 104, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_m1_64) (planner *p) {
+ X(kdft_register) (p, m1_64, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/n1_10.c b/src/fftw3/dft/codelets/standard/n1_10.c
new file mode 100644
index 0000000..95fb984
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/n1_10.c
@@ -0,0 +1,195 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:32 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw -compact -variables 4 -n 10 -name n1_10 -include n.h */
+
+/*
+ * This function contains 84 FP additions, 24 FP multiplications,
+ * (or, 72 additions, 12 multiplications, 12 fused multiply/add),
+ * 41 stack variables, and 40 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: n1_10.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_10.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_10.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void n1_10(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ DK(KP250000000, +0.250000000000000000000000000000000000000000000);
+ DK(KP559016994, +0.559016994374947424102293417182819058860154590);
+ DK(KP587785252, +0.587785252292473129168705954639072768597652438);
+ DK(KP951056516, +0.951056516295153572116439333379382143405698634);
+ int i;
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs) {
+ E T3, Tj, TQ, T1e, TU, TV, T1c, T1b, Tm, Tp, Tq, Ta, Th, Ti, TA;
+ E TH, T17, T14, T1f, T1g, T1h, TL, TM, TR;
+ {
+ E T1, T2, TO, TP;
+ T1 = ri[0];
+ T2 = ri[WS(is, 5)];
+ T3 = T1 - T2;
+ Tj = T1 + T2;
+ TO = ii[0];
+ TP = ii[WS(is, 5)];
+ TQ = TO - TP;
+ T1e = TO + TP;
+ }
+ {
+ E T6, Tk, Tg, To, T9, Tl, Td, Tn;
+ {
+ E T4, T5, Te, Tf;
+ T4 = ri[WS(is, 2)];
+ T5 = ri[WS(is, 7)];
+ T6 = T4 - T5;
+ Tk = T4 + T5;
+ Te = ri[WS(is, 6)];
+ Tf = ri[WS(is, 1)];
+ Tg = Te - Tf;
+ To = Te + Tf;
+ }
+ {
+ E T7, T8, Tb, Tc;
+ T7 = ri[WS(is, 8)];
+ T8 = ri[WS(is, 3)];
+ T9 = T7 - T8;
+ Tl = T7 + T8;
+ Tb = ri[WS(is, 4)];
+ Tc = ri[WS(is, 9)];
+ Td = Tb - Tc;
+ Tn = Tb + Tc;
+ }
+ TU = T6 - T9;
+ TV = Td - Tg;
+ T1c = Tk - Tl;
+ T1b = Tn - To;
+ Tm = Tk + Tl;
+ Tp = Tn + To;
+ Tq = Tm + Tp;
+ Ta = T6 + T9;
+ Th = Td + Tg;
+ Ti = Ta + Th;
+ }
+ {
+ E Tw, T15, TG, T13, Tz, T16, TD, T12;
+ {
+ E Tu, Tv, TE, TF;
+ Tu = ii[WS(is, 2)];
+ Tv = ii[WS(is, 7)];
+ Tw = Tu - Tv;
+ T15 = Tu + Tv;
+ TE = ii[WS(is, 6)];
+ TF = ii[WS(is, 1)];
+ TG = TE - TF;
+ T13 = TE + TF;
+ }
+ {
+ E Tx, Ty, TB, TC;
+ Tx = ii[WS(is, 8)];
+ Ty = ii[WS(is, 3)];
+ Tz = Tx - Ty;
+ T16 = Tx + Ty;
+ TB = ii[WS(is, 4)];
+ TC = ii[WS(is, 9)];
+ TD = TB - TC;
+ T12 = TB + TC;
+ }
+ TA = Tw - Tz;
+ TH = TD - TG;
+ T17 = T15 - T16;
+ T14 = T12 - T13;
+ T1f = T15 + T16;
+ T1g = T12 + T13;
+ T1h = T1f + T1g;
+ TL = Tw + Tz;
+ TM = TD + TG;
+ TR = TL + TM;
+ }
+ ro[WS(os, 5)] = T3 + Ti;
+ io[WS(os, 5)] = TQ + TR;
+ ro[0] = Tj + Tq;
+ io[0] = T1e + T1h;
+ {
+ E TI, TK, Tt, TJ, Tr, Ts;
+ TI = FMA(KP951056516, TA, KP587785252 * TH);
+ TK = FNMS(KP587785252, TA, KP951056516 * TH);
+ Tr = KP559016994 * (Ta - Th);
+ Ts = FNMS(KP250000000, Ti, T3);
+ Tt = Tr + Ts;
+ TJ = Ts - Tr;
+ ro[WS(os, 9)] = Tt - TI;
+ ro[WS(os, 3)] = TJ + TK;
+ ro[WS(os, 1)] = Tt + TI;
+ ro[WS(os, 7)] = TJ - TK;
+ }
+ {
+ E TW, TY, TT, TX, TN, TS;
+ TW = FMA(KP951056516, TU, KP587785252 * TV);
+ TY = FNMS(KP587785252, TU, KP951056516 * TV);
+ TN = KP559016994 * (TL - TM);
+ TS = FNMS(KP250000000, TR, TQ);
+ TT = TN + TS;
+ TX = TS - TN;
+ io[WS(os, 1)] = TT - TW;
+ io[WS(os, 7)] = TY + TX;
+ io[WS(os, 9)] = TW + TT;
+ io[WS(os, 3)] = TX - TY;
+ }
+ {
+ E T18, T1a, T11, T19, TZ, T10;
+ T18 = FNMS(KP587785252, T17, KP951056516 * T14);
+ T1a = FMA(KP951056516, T17, KP587785252 * T14);
+ TZ = FNMS(KP250000000, Tq, Tj);
+ T10 = KP559016994 * (Tm - Tp);
+ T11 = TZ - T10;
+ T19 = T10 + TZ;
+ ro[WS(os, 2)] = T11 - T18;
+ ro[WS(os, 6)] = T19 + T1a;
+ ro[WS(os, 8)] = T11 + T18;
+ ro[WS(os, 4)] = T19 - T1a;
+ }
+ {
+ E T1d, T1l, T1k, T1m, T1i, T1j;
+ T1d = FNMS(KP587785252, T1c, KP951056516 * T1b);
+ T1l = FMA(KP951056516, T1c, KP587785252 * T1b);
+ T1i = FNMS(KP250000000, T1h, T1e);
+ T1j = KP559016994 * (T1f - T1g);
+ T1k = T1i - T1j;
+ T1m = T1j + T1i;
+ io[WS(os, 2)] = T1d + T1k;
+ io[WS(os, 6)] = T1m - T1l;
+ io[WS(os, 8)] = T1k - T1d;
+ io[WS(os, 4)] = T1l + T1m;
+ }
+ }
+}
+
+static const kdft_desc desc = { 10, "n1_10", {72, 12, 12, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_n1_10) (planner *p) {
+ X(kdft_register) (p, n1_10, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/n1_11.c b/src/fftw3/dft/codelets/standard/n1_11.c
new file mode 100644
index 0000000..29e8049
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/n1_11.c
@@ -0,0 +1,178 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:32 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw -compact -variables 4 -n 11 -name n1_11 -include n.h */
+
+/*
+ * This function contains 140 FP additions, 100 FP multiplications,
+ * (or, 60 additions, 20 multiplications, 80 fused multiply/add),
+ * 41 stack variables, and 44 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: n1_11.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_11.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_11.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void n1_11(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ DK(KP654860733, +0.654860733945285064056925072466293553183791199);
+ DK(KP142314838, +0.142314838273285140443792668616369668791051361);
+ DK(KP959492973, +0.959492973614497389890368057066327699062454848);
+ DK(KP415415013, +0.415415013001886425529274149229623203524004910);
+ DK(KP841253532, +0.841253532831181168861811648919367717513292498);
+ DK(KP989821441, +0.989821441880932732376092037776718787376519372);
+ DK(KP909631995, +0.909631995354518371411715383079028460060241051);
+ DK(KP281732556, +0.281732556841429697711417915346616899035777899);
+ DK(KP540640817, +0.540640817455597582107635954318691695431770608);
+ DK(KP755749574, +0.755749574354258283774035843972344420179717445);
+ int i;
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs) {
+ E T1, TM, T4, TG, Tk, TR, Tw, TN, T7, TK, Ta, TH, Tn, TQ, Td;
+ E TJ, Tq, TO, Tt, TP, Tg, TI;
+ {
+ E T2, T3, Ti, Tj;
+ T1 = ri[0];
+ TM = ii[0];
+ T2 = ri[WS(is, 1)];
+ T3 = ri[WS(is, 10)];
+ T4 = T2 + T3;
+ TG = T3 - T2;
+ Ti = ii[WS(is, 1)];
+ Tj = ii[WS(is, 10)];
+ Tk = Ti - Tj;
+ TR = Ti + Tj;
+ {
+ E Tu, Tv, T5, T6;
+ Tu = ii[WS(is, 2)];
+ Tv = ii[WS(is, 9)];
+ Tw = Tu - Tv;
+ TN = Tu + Tv;
+ T5 = ri[WS(is, 2)];
+ T6 = ri[WS(is, 9)];
+ T7 = T5 + T6;
+ TK = T6 - T5;
+ }
+ }
+ {
+ E T8, T9, To, Tp;
+ T8 = ri[WS(is, 3)];
+ T9 = ri[WS(is, 8)];
+ Ta = T8 + T9;
+ TH = T9 - T8;
+ {
+ E Tl, Tm, Tb, Tc;
+ Tl = ii[WS(is, 3)];
+ Tm = ii[WS(is, 8)];
+ Tn = Tl - Tm;
+ TQ = Tl + Tm;
+ Tb = ri[WS(is, 4)];
+ Tc = ri[WS(is, 7)];
+ Td = Tb + Tc;
+ TJ = Tc - Tb;
+ }
+ To = ii[WS(is, 4)];
+ Tp = ii[WS(is, 7)];
+ Tq = To - Tp;
+ TO = To + Tp;
+ {
+ E Tr, Ts, Te, Tf;
+ Tr = ii[WS(is, 5)];
+ Ts = ii[WS(is, 6)];
+ Tt = Tr - Ts;
+ TP = Tr + Ts;
+ Te = ri[WS(is, 5)];
+ Tf = ri[WS(is, 6)];
+ Tg = Te + Tf;
+ TI = Tf - Te;
+ }
+ }
+ {
+ E Tx, Th, TZ, T10;
+ ro[0] = T1 + T4 + T7 + Ta + Td + Tg;
+ io[0] = TM + TR + TN + TQ + TO + TP;
+ Tx = FMA(KP755749574, Tk, KP540640817 * Tn) + FNMS(KP909631995, Tt, KP281732556 * Tq) - (KP989821441 * Tw);
+ Th = FMA(KP841253532, Ta, T1) + FNMS(KP959492973, Td, KP415415013 * Tg) + FNMA(KP142314838, T7, KP654860733 * T4);
+ ro[WS(os, 7)] = Th - Tx;
+ ro[WS(os, 4)] = Th + Tx;
+ TZ = FMA(KP755749574, TG, KP540640817 * TH) + FNMS(KP909631995, TI, KP281732556 * TJ) - (KP989821441 * TK);
+ T10 = FMA(KP841253532, TQ, TM) + FNMS(KP959492973, TO, KP415415013 * TP) + FNMA(KP142314838, TN, KP654860733 * TR);
+ io[WS(os, 4)] = TZ + T10;
+ io[WS(os, 7)] = T10 - TZ;
+ {
+ E TX, TY, Tz, Ty;
+ TX = FMA(KP909631995, TG, KP755749574 * TK) + FNMA(KP540640817, TI, KP989821441 * TJ) - (KP281732556 * TH);
+ TY = FMA(KP415415013, TR, TM) + FNMS(KP142314838, TO, KP841253532 * TP) + FNMA(KP959492973, TQ, KP654860733 * TN);
+ io[WS(os, 2)] = TX + TY;
+ io[WS(os, 9)] = TY - TX;
+ Tz = FMA(KP909631995, Tk, KP755749574 * Tw) + FNMA(KP540640817, Tt, KP989821441 * Tq) - (KP281732556 * Tn);
+ Ty = FMA(KP415415013, T4, T1) + FNMS(KP142314838, Td, KP841253532 * Tg) + FNMA(KP959492973, Ta, KP654860733 * T7);
+ ro[WS(os, 9)] = Ty - Tz;
+ ro[WS(os, 2)] = Ty + Tz;
+ }
+ }
+ {
+ E TB, TA, TT, TU;
+ TB = FMA(KP540640817, Tk, KP909631995 * Tw) + FMA(KP989821441, Tn, KP755749574 * Tq) + (KP281732556 * Tt);
+ TA = FMA(KP841253532, T4, T1) + FNMS(KP959492973, Tg, KP415415013 * T7) + FNMA(KP654860733, Td, KP142314838 * Ta);
+ ro[WS(os, 10)] = TA - TB;
+ ro[WS(os, 1)] = TA + TB;
+ {
+ E TV, TW, TD, TC;
+ TV = FMA(KP540640817, TG, KP909631995 * TK) + FMA(KP989821441, TH, KP755749574 * TJ) + (KP281732556 * TI);
+ TW = FMA(KP841253532, TR, TM) + FNMS(KP959492973, TP, KP415415013 * TN) + FNMA(KP654860733, TO, KP142314838 * TQ);
+ io[WS(os, 1)] = TV + TW;
+ io[WS(os, 10)] = TW - TV;
+ TD = FMA(KP989821441, Tk, KP540640817 * Tq) + FNMS(KP909631995, Tn, KP755749574 * Tt) - (KP281732556 * Tw);
+ TC = FMA(KP415415013, Ta, T1) + FNMS(KP654860733, Tg, KP841253532 * Td) + FNMA(KP959492973, T7, KP142314838 * T4);
+ ro[WS(os, 8)] = TC - TD;
+ ro[WS(os, 3)] = TC + TD;
+ }
+ TT = FMA(KP989821441, TG, KP540640817 * TJ) + FNMS(KP909631995, TH, KP755749574 * TI) - (KP281732556 * TK);
+ TU = FMA(KP415415013, TQ, TM) + FNMS(KP654860733, TP, KP841253532 * TO) + FNMA(KP959492973, TN, KP142314838 * TR);
+ io[WS(os, 3)] = TT + TU;
+ io[WS(os, 8)] = TU - TT;
+ {
+ E TL, TS, TF, TE;
+ TL = FMA(KP281732556, TG, KP755749574 * TH) + FNMS(KP909631995, TJ, KP989821441 * TI) - (KP540640817 * TK);
+ TS = FMA(KP841253532, TN, TM) + FNMS(KP142314838, TP, KP415415013 * TO) + FNMA(KP654860733, TQ, KP959492973 * TR);
+ io[WS(os, 5)] = TL + TS;
+ io[WS(os, 6)] = TS - TL;
+ TF = FMA(KP281732556, Tk, KP755749574 * Tn) + FNMS(KP909631995, Tq, KP989821441 * Tt) - (KP540640817 * Tw);
+ TE = FMA(KP841253532, T7, T1) + FNMS(KP142314838, Tg, KP415415013 * Td) + FNMA(KP654860733, Ta, KP959492973 * T4);
+ ro[WS(os, 6)] = TE - TF;
+ ro[WS(os, 5)] = TE + TF;
+ }
+ }
+ }
+}
+
+static const kdft_desc desc = { 11, "n1_11", {60, 20, 80, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_n1_11) (planner *p) {
+ X(kdft_register) (p, n1_11, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/n1_12.c b/src/fftw3/dft/codelets/standard/n1_12.c
new file mode 100644
index 0000000..cced824
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/n1_12.c
@@ -0,0 +1,224 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:32 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw -compact -variables 4 -n 12 -name n1_12 -include n.h */
+
+/*
+ * This function contains 96 FP additions, 16 FP multiplications,
+ * (or, 88 additions, 8 multiplications, 8 fused multiply/add),
+ * 43 stack variables, and 48 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: n1_12.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_12.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_12.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void n1_12(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ DK(KP866025403, +0.866025403784438646763723170752936183471402627);
+ DK(KP500000000, +0.500000000000000000000000000000000000000000000);
+ int i;
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs) {
+ E T5, TR, TA, Ts, TS, Tz, Ta, TU, TD, Tx, TV, TC, Tg, T1a, TG;
+ E TJ, T1u, T1d, Tl, T1f, TL, TO, T1v, T1i;
+ {
+ E T1, T2, T3, T4;
+ T1 = ri[0];
+ T2 = ri[WS(is, 4)];
+ T3 = ri[WS(is, 8)];
+ T4 = T2 + T3;
+ T5 = T1 + T4;
+ TR = FNMS(KP500000000, T4, T1);
+ TA = KP866025403 * (T3 - T2);
+ }
+ {
+ E To, Tp, Tq, Tr;
+ To = ii[0];
+ Tp = ii[WS(is, 4)];
+ Tq = ii[WS(is, 8)];
+ Tr = Tp + Tq;
+ Ts = To + Tr;
+ TS = KP866025403 * (Tp - Tq);
+ Tz = FNMS(KP500000000, Tr, To);
+ }
+ {
+ E T6, T7, T8, T9;
+ T6 = ri[WS(is, 6)];
+ T7 = ri[WS(is, 10)];
+ T8 = ri[WS(is, 2)];
+ T9 = T7 + T8;
+ Ta = T6 + T9;
+ TU = FNMS(KP500000000, T9, T6);
+ TD = KP866025403 * (T8 - T7);
+ }
+ {
+ E Tt, Tu, Tv, Tw;
+ Tt = ii[WS(is, 6)];
+ Tu = ii[WS(is, 10)];
+ Tv = ii[WS(is, 2)];
+ Tw = Tu + Tv;
+ Tx = Tt + Tw;
+ TV = KP866025403 * (Tu - Tv);
+ TC = FNMS(KP500000000, Tw, Tt);
+ }
+ {
+ E Tc, Td, Te, Tf;
+ Tc = ri[WS(is, 3)];
+ Td = ri[WS(is, 7)];
+ Te = ri[WS(is, 11)];
+ Tf = Td + Te;
+ Tg = Tc + Tf;
+ T1a = KP866025403 * (Te - Td);
+ TG = FNMS(KP500000000, Tf, Tc);
+ }
+ {
+ E T1b, TH, TI, T1c;
+ T1b = ii[WS(is, 3)];
+ TH = ii[WS(is, 7)];
+ TI = ii[WS(is, 11)];
+ T1c = TH + TI;
+ TJ = KP866025403 * (TH - TI);
+ T1u = T1b + T1c;
+ T1d = FNMS(KP500000000, T1c, T1b);
+ }
+ {
+ E Th, Ti, Tj, Tk;
+ Th = ri[WS(is, 9)];
+ Ti = ri[WS(is, 1)];
+ Tj = ri[WS(is, 5)];
+ Tk = Ti + Tj;
+ Tl = Th + Tk;
+ T1f = KP866025403 * (Tj - Ti);
+ TL = FNMS(KP500000000, Tk, Th);
+ }
+ {
+ E T1g, TM, TN, T1h;
+ T1g = ii[WS(is, 9)];
+ TM = ii[WS(is, 1)];
+ TN = ii[WS(is, 5)];
+ T1h = TM + TN;
+ TO = KP866025403 * (TM - TN);
+ T1v = T1g + T1h;
+ T1i = FNMS(KP500000000, T1h, T1g);
+ }
+ {
+ E Tb, Tm, T1t, T1w;
+ Tb = T5 + Ta;
+ Tm = Tg + Tl;
+ ro[WS(os, 6)] = Tb - Tm;
+ ro[0] = Tb + Tm;
+ {
+ E T1x, T1y, Tn, Ty;
+ T1x = Ts + Tx;
+ T1y = T1u + T1v;
+ io[WS(os, 6)] = T1x - T1y;
+ io[0] = T1x + T1y;
+ Tn = Tg - Tl;
+ Ty = Ts - Tx;
+ io[WS(os, 3)] = Tn + Ty;
+ io[WS(os, 9)] = Ty - Tn;
+ }
+ T1t = T5 - Ta;
+ T1w = T1u - T1v;
+ ro[WS(os, 3)] = T1t - T1w;
+ ro[WS(os, 9)] = T1t + T1w;
+ {
+ E T11, T1l, T1k, T1m, T14, T18, T17, T19;
+ {
+ E TZ, T10, T1e, T1j;
+ TZ = TA + Tz;
+ T10 = TD + TC;
+ T11 = TZ - T10;
+ T1l = TZ + T10;
+ T1e = T1a + T1d;
+ T1j = T1f + T1i;
+ T1k = T1e - T1j;
+ T1m = T1e + T1j;
+ }
+ {
+ E T12, T13, T15, T16;
+ T12 = TG + TJ;
+ T13 = TL + TO;
+ T14 = T12 - T13;
+ T18 = T12 + T13;
+ T15 = TR + TS;
+ T16 = TU + TV;
+ T17 = T15 + T16;
+ T19 = T15 - T16;
+ }
+ io[WS(os, 1)] = T11 - T14;
+ ro[WS(os, 1)] = T19 + T1k;
+ io[WS(os, 7)] = T11 + T14;
+ ro[WS(os, 7)] = T19 - T1k;
+ ro[WS(os, 10)] = T17 - T18;
+ io[WS(os, 10)] = T1l - T1m;
+ ro[WS(os, 4)] = T17 + T18;
+ io[WS(os, 4)] = T1l + T1m;
+ }
+ {
+ E TF, T1r, T1q, T1s, TQ, TY, TX, T1n;
+ {
+ E TB, TE, T1o, T1p;
+ TB = Tz - TA;
+ TE = TC - TD;
+ TF = TB - TE;
+ T1r = TB + TE;
+ T1o = T1d - T1a;
+ T1p = T1i - T1f;
+ T1q = T1o - T1p;
+ T1s = T1o + T1p;
+ }
+ {
+ E TK, TP, TT, TW;
+ TK = TG - TJ;
+ TP = TL - TO;
+ TQ = TK - TP;
+ TY = TK + TP;
+ TT = TR - TS;
+ TW = TU - TV;
+ TX = TT + TW;
+ T1n = TT - TW;
+ }
+ io[WS(os, 5)] = TF - TQ;
+ ro[WS(os, 5)] = T1n + T1q;
+ io[WS(os, 11)] = TF + TQ;
+ ro[WS(os, 11)] = T1n - T1q;
+ ro[WS(os, 2)] = TX - TY;
+ io[WS(os, 2)] = T1r - T1s;
+ ro[WS(os, 8)] = TX + TY;
+ io[WS(os, 8)] = T1r + T1s;
+ }
+ }
+ }
+}
+
+static const kdft_desc desc = { 12, "n1_12", {88, 8, 8, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_n1_12) (planner *p) {
+ X(kdft_register) (p, n1_12, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/n1_13.c b/src/fftw3/dft/codelets/standard/n1_13.c
new file mode 100644
index 0000000..3f8c804
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/n1_13.c
@@ -0,0 +1,352 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:33 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw -compact -variables 4 -n 13 -name n1_13 -include n.h */
+
+/*
+ * This function contains 176 FP additions, 68 FP multiplications,
+ * (or, 138 additions, 30 multiplications, 38 fused multiply/add),
+ * 71 stack variables, and 52 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: n1_13.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_13.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_13.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void n1_13(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ DK(KP2_000000000, +2.000000000000000000000000000000000000000000000);
+ DK(KP083333333, +0.083333333333333333333333333333333333333333333);
+ DK(KP251768516, +0.251768516431883313623436926934233488546674281);
+ DK(KP075902986, +0.075902986037193865983102897245103540356428373);
+ DK(KP132983124, +0.132983124607418643793760531921092974399165133);
+ DK(KP258260390, +0.258260390311744861420450644284508567852516811);
+ DK(KP1_732050807, +1.732050807568877293527446341505872366942805254);
+ DK(KP300238635, +0.300238635966332641462884626667381504676006424);
+ DK(KP011599105, +0.011599105605768290721655456654083252189827041);
+ DK(KP156891391, +0.156891391051584611046832726756003269660212636);
+ DK(KP256247671, +0.256247671582936600958684654061725059144125175);
+ DK(KP174138601, +0.174138601152135905005660794929264742616964676);
+ DK(KP575140729, +0.575140729474003121368385547455453388461001608);
+ DK(KP503537032, +0.503537032863766627246873853868466977093348562);
+ DK(KP113854479, +0.113854479055790798974654345867655310534642560);
+ DK(KP265966249, +0.265966249214837287587521063842185948798330267);
+ DK(KP387390585, +0.387390585467617292130675966426762851778775217);
+ DK(KP866025403, +0.866025403784438646763723170752936183471402627);
+ DK(KP300462606, +0.300462606288665774426601772289207995520941381);
+ DK(KP500000000, +0.500000000000000000000000000000000000000000000);
+ int i;
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs) {
+ E T1, T1q, Tt, Tu, To, T22, T20, T24, TF, TH, TA, TI, T1X, T25, T2a;
+ E T2d, T18, T1n, T2k, T2n, T1l, T1r, T1f, T1o, T2h, T2m;
+ T1 = ri[0];
+ T1q = ii[0];
+ {
+ E Tf, Tp, Tb, TC, Tx, T6, TB, Tw, Ti, Tq, Tl, Tr, Tm, Ts, Td;
+ E Te, Tc, Tn;
+ Td = ri[WS(is, 8)];
+ Te = ri[WS(is, 5)];
+ Tf = Td + Te;
+ Tp = Td - Te;
+ {
+ E T7, T8, T9, Ta;
+ T7 = ri[WS(is, 12)];
+ T8 = ri[WS(is, 10)];
+ T9 = ri[WS(is, 4)];
+ Ta = T8 + T9;
+ Tb = T7 + Ta;
+ TC = T8 - T9;
+ Tx = FNMS(KP500000000, Ta, T7);
+ }
+ {
+ E T2, T3, T4, T5;
+ T2 = ri[WS(is, 1)];
+ T3 = ri[WS(is, 3)];
+ T4 = ri[WS(is, 9)];
+ T5 = T3 + T4;
+ T6 = T2 + T5;
+ TB = T3 - T4;
+ Tw = FNMS(KP500000000, T5, T2);
+ }
+ {
+ E Tg, Th, Tj, Tk;
+ Tg = ri[WS(is, 11)];
+ Th = ri[WS(is, 6)];
+ Ti = Tg + Th;
+ Tq = Tg - Th;
+ Tj = ri[WS(is, 7)];
+ Tk = ri[WS(is, 2)];
+ Tl = Tj + Tk;
+ Tr = Tj - Tk;
+ }
+ Tm = Ti + Tl;
+ Ts = Tq + Tr;
+ Tt = Tp + Ts;
+ Tu = T6 - Tb;
+ Tc = T6 + Tb;
+ Tn = Tf + Tm;
+ To = Tc + Tn;
+ T22 = KP300462606 * (Tc - Tn);
+ {
+ E T1Y, T1Z, TD, TE;
+ T1Y = TB + TC;
+ T1Z = Tq - Tr;
+ T20 = T1Y - T1Z;
+ T24 = T1Y + T1Z;
+ TD = KP866025403 * (TB - TC);
+ TE = FNMS(KP500000000, Ts, Tp);
+ TF = TD - TE;
+ TH = TD + TE;
+ }
+ {
+ E Ty, Tz, T1V, T1W;
+ Ty = Tw - Tx;
+ Tz = KP866025403 * (Ti - Tl);
+ TA = Ty + Tz;
+ TI = Ty - Tz;
+ T1V = Tw + Tx;
+ T1W = FNMS(KP500000000, Tm, Tf);
+ T1X = T1V - T1W;
+ T25 = T1V + T1W;
+ }
+ }
+ {
+ E TZ, T2b, TV, T1i, T1a, TQ, T1h, T19, T12, T1d, T15, T1c, T16, T2c, TX;
+ E TY, TW, T17;
+ TX = ii[WS(is, 8)];
+ TY = ii[WS(is, 5)];
+ TZ = TX + TY;
+ T2b = TX - TY;
+ {
+ E TR, TS, TT, TU;
+ TR = ii[WS(is, 12)];
+ TS = ii[WS(is, 10)];
+ TT = ii[WS(is, 4)];
+ TU = TS + TT;
+ TV = FNMS(KP500000000, TU, TR);
+ T1i = TR + TU;
+ T1a = TS - TT;
+ }
+ {
+ E TM, TN, TO, TP;
+ TM = ii[WS(is, 1)];
+ TN = ii[WS(is, 3)];
+ TO = ii[WS(is, 9)];
+ TP = TN + TO;
+ TQ = FNMS(KP500000000, TP, TM);
+ T1h = TM + TP;
+ T19 = TN - TO;
+ }
+ {
+ E T10, T11, T13, T14;
+ T10 = ii[WS(is, 11)];
+ T11 = ii[WS(is, 6)];
+ T12 = T10 + T11;
+ T1d = T10 - T11;
+ T13 = ii[WS(is, 7)];
+ T14 = ii[WS(is, 2)];
+ T15 = T13 + T14;
+ T1c = T13 - T14;
+ }
+ T16 = T12 + T15;
+ T2c = T1d + T1c;
+ T2a = T1h - T1i;
+ T2d = T2b + T2c;
+ TW = TQ + TV;
+ T17 = FNMS(KP500000000, T16, TZ);
+ T18 = TW - T17;
+ T1n = TW + T17;
+ {
+ E T2i, T2j, T1j, T1k;
+ T2i = TQ - TV;
+ T2j = KP866025403 * (T15 - T12);
+ T2k = T2i + T2j;
+ T2n = T2i - T2j;
+ T1j = T1h + T1i;
+ T1k = TZ + T16;
+ T1l = KP300462606 * (T1j - T1k);
+ T1r = T1j + T1k;
+ }
+ {
+ E T1b, T1e, T2f, T2g;
+ T1b = T19 + T1a;
+ T1e = T1c - T1d;
+ T1f = T1b + T1e;
+ T1o = T1e - T1b;
+ T2f = FNMS(KP500000000, T2c, T2b);
+ T2g = KP866025403 * (T1a - T19);
+ T2h = T2f - T2g;
+ T2m = T2g + T2f;
+ }
+ }
+ ro[0] = T1 + To;
+ io[0] = T1q + T1r;
+ {
+ E T1D, T1N, T1y, T1x, T1E, T1O, Tv, TK, T1J, T1Q, T1m, T1R, T1t, T1I, TG;
+ E TJ;
+ {
+ E T1B, T1C, T1v, T1w;
+ T1B = FMA(KP387390585, T1f, KP265966249 * T18);
+ T1C = FMA(KP113854479, T1o, KP503537032 * T1n);
+ T1D = T1B + T1C;
+ T1N = T1C - T1B;
+ T1y = FMA(KP575140729, Tu, KP174138601 * Tt);
+ T1v = FNMS(KP156891391, TH, KP256247671 * TI);
+ T1w = FMA(KP011599105, TF, KP300238635 * TA);
+ T1x = T1v - T1w;
+ T1E = T1y + T1x;
+ T1O = KP1_732050807 * (T1v + T1w);
+ }
+ Tv = FNMS(KP174138601, Tu, KP575140729 * Tt);
+ TG = FNMS(KP300238635, TF, KP011599105 * TA);
+ TJ = FMA(KP256247671, TH, KP156891391 * TI);
+ TK = TG - TJ;
+ T1J = KP1_732050807 * (TJ + TG);
+ T1Q = Tv - TK;
+ {
+ E T1g, T1H, T1p, T1s, T1G;
+ T1g = FNMS(KP132983124, T1f, KP258260390 * T18);
+ T1H = T1l - T1g;
+ T1p = FNMS(KP251768516, T1o, KP075902986 * T1n);
+ T1s = FNMS(KP083333333, T1r, T1q);
+ T1G = T1s - T1p;
+ T1m = FMA(KP2_000000000, T1g, T1l);
+ T1R = T1H + T1G;
+ T1t = FMA(KP2_000000000, T1p, T1s);
+ T1I = T1G - T1H;
+ }
+ {
+ E TL, T1u, T1P, T1S;
+ TL = FMA(KP2_000000000, TK, Tv);
+ T1u = T1m + T1t;
+ io[WS(os, 1)] = TL + T1u;
+ io[WS(os, 12)] = T1u - TL;
+ {
+ E T1z, T1A, T1T, T1U;
+ T1z = FMS(KP2_000000000, T1x, T1y);
+ T1A = T1t - T1m;
+ io[WS(os, 5)] = T1z + T1A;
+ io[WS(os, 8)] = T1A - T1z;
+ T1T = T1R - T1Q;
+ T1U = T1O + T1N;
+ io[WS(os, 4)] = T1T - T1U;
+ io[WS(os, 10)] = T1U + T1T;
+ }
+ T1P = T1N - T1O;
+ T1S = T1Q + T1R;
+ io[WS(os, 3)] = T1P + T1S;
+ io[WS(os, 9)] = T1S - T1P;
+ {
+ E T1L, T1M, T1F, T1K;
+ T1L = T1J + T1I;
+ T1M = T1E + T1D;
+ io[WS(os, 6)] = T1L - T1M;
+ io[WS(os, 11)] = T1M + T1L;
+ T1F = T1D - T1E;
+ T1K = T1I - T1J;
+ io[WS(os, 2)] = T1F + T1K;
+ io[WS(os, 7)] = T1K - T1F;
+ }
+ }
+ }
+ {
+ E T2y, T2I, T2J, T2K, T2B, T2L, T2e, T2p, T2u, T2G, T23, T2F, T28, T2t, T2l;
+ E T2o;
+ {
+ E T2w, T2x, T2z, T2A;
+ T2w = FMA(KP387390585, T20, KP265966249 * T1X);
+ T2x = FNMS(KP503537032, T25, KP113854479 * T24);
+ T2y = T2w + T2x;
+ T2I = T2w - T2x;
+ T2J = FMA(KP575140729, T2a, KP174138601 * T2d);
+ T2z = FNMS(KP300238635, T2n, KP011599105 * T2m);
+ T2A = FNMS(KP156891391, T2h, KP256247671 * T2k);
+ T2K = T2z + T2A;
+ T2B = KP1_732050807 * (T2z - T2A);
+ T2L = T2J + T2K;
+ }
+ T2e = FNMS(KP575140729, T2d, KP174138601 * T2a);
+ T2l = FMA(KP256247671, T2h, KP156891391 * T2k);
+ T2o = FMA(KP300238635, T2m, KP011599105 * T2n);
+ T2p = T2l - T2o;
+ T2u = T2e - T2p;
+ T2G = KP1_732050807 * (T2o + T2l);
+ {
+ E T21, T2r, T26, T27, T2s;
+ T21 = FNMS(KP132983124, T20, KP258260390 * T1X);
+ T2r = T22 - T21;
+ T26 = FMA(KP251768516, T24, KP075902986 * T25);
+ T27 = FNMS(KP083333333, To, T1);
+ T2s = T27 - T26;
+ T23 = FMA(KP2_000000000, T21, T22);
+ T2F = T2s - T2r;
+ T28 = FMA(KP2_000000000, T26, T27);
+ T2t = T2r + T2s;
+ }
+ {
+ E T29, T2q, T2N, T2O;
+ T29 = T23 + T28;
+ T2q = FMA(KP2_000000000, T2p, T2e);
+ ro[WS(os, 12)] = T29 - T2q;
+ ro[WS(os, 1)] = T29 + T2q;
+ {
+ E T2v, T2C, T2P, T2Q;
+ T2v = T2t - T2u;
+ T2C = T2y - T2B;
+ ro[WS(os, 10)] = T2v - T2C;
+ ro[WS(os, 4)] = T2v + T2C;
+ T2P = T28 - T23;
+ T2Q = FMS(KP2_000000000, T2K, T2J);
+ ro[WS(os, 5)] = T2P - T2Q;
+ ro[WS(os, 8)] = T2P + T2Q;
+ }
+ T2N = T2F - T2G;
+ T2O = T2L - T2I;
+ ro[WS(os, 11)] = T2N - T2O;
+ ro[WS(os, 6)] = T2N + T2O;
+ {
+ E T2H, T2M, T2D, T2E;
+ T2H = T2F + T2G;
+ T2M = T2I + T2L;
+ ro[WS(os, 7)] = T2H - T2M;
+ ro[WS(os, 2)] = T2H + T2M;
+ T2D = T2t + T2u;
+ T2E = T2y + T2B;
+ ro[WS(os, 3)] = T2D - T2E;
+ ro[WS(os, 9)] = T2D + T2E;
+ }
+ }
+ }
+ }
+}
+
+static const kdft_desc desc = { 13, "n1_13", {138, 30, 38, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_n1_13) (planner *p) {
+ X(kdft_register) (p, n1_13, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/n1_14.c b/src/fftw3/dft/codelets/standard/n1_14.c
new file mode 100644
index 0000000..a5d5928
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/n1_14.c
@@ -0,0 +1,249 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:34 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw -compact -variables 4 -n 14 -name n1_14 -include n.h */
+
+/*
+ * This function contains 148 FP additions, 72 FP multiplications,
+ * (or, 100 additions, 24 multiplications, 48 fused multiply/add),
+ * 43 stack variables, and 56 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: n1_14.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_14.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_14.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void n1_14(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ DK(KP222520933, +0.222520933956314404288902564496794759466355569);
+ DK(KP900968867, +0.900968867902419126236102319507445051165919162);
+ DK(KP623489801, +0.623489801858733530525004884004239810632274731);
+ DK(KP433883739, +0.433883739117558120475768332848358754609990728);
+ DK(KP781831482, +0.781831482468029808708444526674057750232334519);
+ DK(KP974927912, +0.974927912181823607018131682993931217232785801);
+ int i;
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs) {
+ E T3, Tp, T16, T1f, Ta, T1q, Ts, T10, TG, T1z, T19, T1i, Th, T1s, Tv;
+ E T12, TU, T1B, T17, T1o, To, T1r, Ty, T11, TN, T1A, T18, T1l;
+ {
+ E T1, T2, T14, T15;
+ T1 = ri[0];
+ T2 = ri[WS(is, 7)];
+ T3 = T1 - T2;
+ Tp = T1 + T2;
+ T14 = ii[0];
+ T15 = ii[WS(is, 7)];
+ T16 = T14 - T15;
+ T1f = T14 + T15;
+ }
+ {
+ E T6, Tq, T9, Tr;
+ {
+ E T4, T5, T7, T8;
+ T4 = ri[WS(is, 2)];
+ T5 = ri[WS(is, 9)];
+ T6 = T4 - T5;
+ Tq = T4 + T5;
+ T7 = ri[WS(is, 12)];
+ T8 = ri[WS(is, 5)];
+ T9 = T7 - T8;
+ Tr = T7 + T8;
+ }
+ Ta = T6 + T9;
+ T1q = Tr - Tq;
+ Ts = Tq + Tr;
+ T10 = T9 - T6;
+ }
+ {
+ E TC, T1g, TF, T1h;
+ {
+ E TA, TB, TD, TE;
+ TA = ii[WS(is, 2)];
+ TB = ii[WS(is, 9)];
+ TC = TA - TB;
+ T1g = TA + TB;
+ TD = ii[WS(is, 12)];
+ TE = ii[WS(is, 5)];
+ TF = TD - TE;
+ T1h = TD + TE;
+ }
+ TG = TC - TF;
+ T1z = T1g - T1h;
+ T19 = TC + TF;
+ T1i = T1g + T1h;
+ }
+ {
+ E Td, Tt, Tg, Tu;
+ {
+ E Tb, Tc, Te, Tf;
+ Tb = ri[WS(is, 4)];
+ Tc = ri[WS(is, 11)];
+ Td = Tb - Tc;
+ Tt = Tb + Tc;
+ Te = ri[WS(is, 10)];
+ Tf = ri[WS(is, 3)];
+ Tg = Te - Tf;
+ Tu = Te + Tf;
+ }
+ Th = Td + Tg;
+ T1s = Tt - Tu;
+ Tv = Tt + Tu;
+ T12 = Tg - Td;
+ }
+ {
+ E TQ, T1m, TT, T1n;
+ {
+ E TO, TP, TR, TS;
+ TO = ii[WS(is, 4)];
+ TP = ii[WS(is, 11)];
+ TQ = TO - TP;
+ T1m = TO + TP;
+ TR = ii[WS(is, 10)];
+ TS = ii[WS(is, 3)];
+ TT = TR - TS;
+ T1n = TR + TS;
+ }
+ TU = TQ - TT;
+ T1B = T1n - T1m;
+ T17 = TQ + TT;
+ T1o = T1m + T1n;
+ }
+ {
+ E Tk, Tw, Tn, Tx;
+ {
+ E Ti, Tj, Tl, Tm;
+ Ti = ri[WS(is, 6)];
+ Tj = ri[WS(is, 13)];
+ Tk = Ti - Tj;
+ Tw = Ti + Tj;
+ Tl = ri[WS(is, 8)];
+ Tm = ri[WS(is, 1)];
+ Tn = Tl - Tm;
+ Tx = Tl + Tm;
+ }
+ To = Tk + Tn;
+ T1r = Tw - Tx;
+ Ty = Tw + Tx;
+ T11 = Tn - Tk;
+ }
+ {
+ E TJ, T1j, TM, T1k;
+ {
+ E TH, TI, TK, TL;
+ TH = ii[WS(is, 6)];
+ TI = ii[WS(is, 13)];
+ TJ = TH - TI;
+ T1j = TH + TI;
+ TK = ii[WS(is, 8)];
+ TL = ii[WS(is, 1)];
+ TM = TK - TL;
+ T1k = TK + TL;
+ }
+ TN = TJ - TM;
+ T1A = T1k - T1j;
+ T18 = TJ + TM;
+ T1l = T1j + T1k;
+ }
+ ro[WS(os, 7)] = T3 + Ta + Th + To;
+ io[WS(os, 7)] = T16 + T19 + T17 + T18;
+ ro[0] = Tp + Ts + Tv + Ty;
+ io[0] = T1f + T1i + T1o + T1l;
+ {
+ E TV, Tz, T1e, T1d;
+ TV = FNMS(KP781831482, TN, KP974927912 * TG) - (KP433883739 * TU);
+ Tz = FMA(KP623489801, To, T3) + FNMA(KP900968867, Th, KP222520933 * Ta);
+ ro[WS(os, 5)] = Tz - TV;
+ ro[WS(os, 9)] = Tz + TV;
+ T1e = FNMS(KP781831482, T11, KP974927912 * T10) - (KP433883739 * T12);
+ T1d = FMA(KP623489801, T18, T16) + FNMA(KP900968867, T17, KP222520933 * T19);
+ io[WS(os, 5)] = T1d - T1e;
+ io[WS(os, 9)] = T1e + T1d;
+ }
+ {
+ E TX, TW, T1b, T1c;
+ TX = FMA(KP781831482, TG, KP974927912 * TU) + (KP433883739 * TN);
+ TW = FMA(KP623489801, Ta, T3) + FNMA(KP900968867, To, KP222520933 * Th);
+ ro[WS(os, 13)] = TW - TX;
+ ro[WS(os, 1)] = TW + TX;
+ T1b = FMA(KP781831482, T10, KP974927912 * T12) + (KP433883739 * T11);
+ T1c = FMA(KP623489801, T19, T16) + FNMA(KP900968867, T18, KP222520933 * T17);
+ io[WS(os, 1)] = T1b + T1c;
+ io[WS(os, 13)] = T1c - T1b;
+ }
+ {
+ E TZ, TY, T13, T1a;
+ TZ = FMA(KP433883739, TG, KP974927912 * TN) - (KP781831482 * TU);
+ TY = FMA(KP623489801, Th, T3) + FNMA(KP222520933, To, KP900968867 * Ta);
+ ro[WS(os, 11)] = TY - TZ;
+ ro[WS(os, 3)] = TY + TZ;
+ T13 = FMA(KP433883739, T10, KP974927912 * T11) - (KP781831482 * T12);
+ T1a = FMA(KP623489801, T17, T16) + FNMA(KP222520933, T18, KP900968867 * T19);
+ io[WS(os, 3)] = T13 + T1a;
+ io[WS(os, 11)] = T1a - T13;
+ }
+ {
+ E T1t, T1p, T1C, T1y;
+ T1t = FNMS(KP433883739, T1r, KP781831482 * T1q) - (KP974927912 * T1s);
+ T1p = FMA(KP623489801, T1i, T1f) + FNMA(KP900968867, T1l, KP222520933 * T1o);
+ io[WS(os, 6)] = T1p - T1t;
+ io[WS(os, 8)] = T1t + T1p;
+ T1C = FNMS(KP433883739, T1A, KP781831482 * T1z) - (KP974927912 * T1B);
+ T1y = FMA(KP623489801, Ts, Tp) + FNMA(KP900968867, Ty, KP222520933 * Tv);
+ ro[WS(os, 6)] = T1y - T1C;
+ ro[WS(os, 8)] = T1y + T1C;
+ }
+ {
+ E T1v, T1u, T1E, T1D;
+ T1v = FMA(KP433883739, T1q, KP781831482 * T1s) - (KP974927912 * T1r);
+ T1u = FMA(KP623489801, T1o, T1f) + FNMA(KP222520933, T1l, KP900968867 * T1i);
+ io[WS(os, 4)] = T1u - T1v;
+ io[WS(os, 10)] = T1v + T1u;
+ T1E = FMA(KP433883739, T1z, KP781831482 * T1B) - (KP974927912 * T1A);
+ T1D = FMA(KP623489801, Tv, Tp) + FNMA(KP222520933, Ty, KP900968867 * Ts);
+ ro[WS(os, 4)] = T1D - T1E;
+ ro[WS(os, 10)] = T1D + T1E;
+ }
+ {
+ E T1w, T1x, T1G, T1F;
+ T1w = FMA(KP974927912, T1q, KP433883739 * T1s) + (KP781831482 * T1r);
+ T1x = FMA(KP623489801, T1l, T1f) + FNMA(KP900968867, T1o, KP222520933 * T1i);
+ io[WS(os, 2)] = T1w + T1x;
+ io[WS(os, 12)] = T1x - T1w;
+ T1G = FMA(KP974927912, T1z, KP433883739 * T1B) + (KP781831482 * T1A);
+ T1F = FMA(KP623489801, Ty, Tp) + FNMA(KP900968867, Tv, KP222520933 * Ts);
+ ro[WS(os, 12)] = T1F - T1G;
+ ro[WS(os, 2)] = T1F + T1G;
+ }
+ }
+}
+
+static const kdft_desc desc = { 14, "n1_14", {100, 24, 48, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_n1_14) (planner *p) {
+ X(kdft_register) (p, n1_14, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/n1_15.c b/src/fftw3/dft/codelets/standard/n1_15.c
new file mode 100644
index 0000000..5fbb0f4
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/n1_15.c
@@ -0,0 +1,291 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:34 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw -compact -variables 4 -n 15 -name n1_15 -include n.h */
+
+/*
+ * This function contains 156 FP additions, 56 FP multiplications,
+ * (or, 128 additions, 28 multiplications, 28 fused multiply/add),
+ * 69 stack variables, and 60 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: n1_15.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_15.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_15.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void n1_15(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ DK(KP587785252, +0.587785252292473129168705954639072768597652438);
+ DK(KP951056516, +0.951056516295153572116439333379382143405698634);
+ DK(KP250000000, +0.250000000000000000000000000000000000000000000);
+ DK(KP559016994, +0.559016994374947424102293417182819058860154590);
+ DK(KP500000000, +0.500000000000000000000000000000000000000000000);
+ DK(KP866025403, +0.866025403784438646763723170752936183471402627);
+ int i;
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs) {
+ E T5, T2l, Tx, TV, T1C, T20, Tl, Tq, Tr, TN, TS, TT, T2c, T2d, T2n;
+ E T1O, T1P, T22, T1l, T1q, T1w, TZ, T10, T11, Ta, Tf, Tg, TC, TH, TI;
+ E T2f, T2g, T2m, T1R, T1S, T21, T1a, T1f, T1v, TW, TX, TY;
+ {
+ E T1, T1z, T4, T1y, Tw, T1A, Tt, T1B;
+ T1 = ri[0];
+ T1z = ii[0];
+ {
+ E T2, T3, Tu, Tv;
+ T2 = ri[WS(is, 5)];
+ T3 = ri[WS(is, 10)];
+ T4 = T2 + T3;
+ T1y = KP866025403 * (T3 - T2);
+ Tu = ii[WS(is, 5)];
+ Tv = ii[WS(is, 10)];
+ Tw = KP866025403 * (Tu - Tv);
+ T1A = Tu + Tv;
+ }
+ T5 = T1 + T4;
+ T2l = T1z + T1A;
+ Tt = FNMS(KP500000000, T4, T1);
+ Tx = Tt - Tw;
+ TV = Tt + Tw;
+ T1B = FNMS(KP500000000, T1A, T1z);
+ T1C = T1y + T1B;
+ T20 = T1B - T1y;
+ }
+ {
+ E Th, Tk, TJ, T1h, T1i, T1j, TM, T1k, Tm, Tp, TO, T1m, T1n, T1o, TR;
+ E T1p;
+ {
+ E Ti, Tj, TK, TL;
+ Th = ri[WS(is, 6)];
+ Ti = ri[WS(is, 11)];
+ Tj = ri[WS(is, 1)];
+ Tk = Ti + Tj;
+ TJ = FNMS(KP500000000, Tk, Th);
+ T1h = KP866025403 * (Tj - Ti);
+ T1i = ii[WS(is, 6)];
+ TK = ii[WS(is, 11)];
+ TL = ii[WS(is, 1)];
+ T1j = TK + TL;
+ TM = KP866025403 * (TK - TL);
+ T1k = FNMS(KP500000000, T1j, T1i);
+ }
+ {
+ E Tn, To, TP, TQ;
+ Tm = ri[WS(is, 9)];
+ Tn = ri[WS(is, 14)];
+ To = ri[WS(is, 4)];
+ Tp = Tn + To;
+ TO = FNMS(KP500000000, Tp, Tm);
+ T1m = KP866025403 * (To - Tn);
+ T1n = ii[WS(is, 9)];
+ TP = ii[WS(is, 14)];
+ TQ = ii[WS(is, 4)];
+ T1o = TP + TQ;
+ TR = KP866025403 * (TP - TQ);
+ T1p = FNMS(KP500000000, T1o, T1n);
+ }
+ Tl = Th + Tk;
+ Tq = Tm + Tp;
+ Tr = Tl + Tq;
+ TN = TJ - TM;
+ TS = TO - TR;
+ TT = TN + TS;
+ T2c = T1i + T1j;
+ T2d = T1n + T1o;
+ T2n = T2c + T2d;
+ T1O = T1k - T1h;
+ T1P = T1p - T1m;
+ T22 = T1O + T1P;
+ T1l = T1h + T1k;
+ T1q = T1m + T1p;
+ T1w = T1l + T1q;
+ TZ = TJ + TM;
+ T10 = TO + TR;
+ T11 = TZ + T10;
+ }
+ {
+ E T6, T9, Ty, T16, T17, T18, TB, T19, Tb, Te, TD, T1b, T1c, T1d, TG;
+ E T1e;
+ {
+ E T7, T8, Tz, TA;
+ T6 = ri[WS(is, 3)];
+ T7 = ri[WS(is, 8)];
+ T8 = ri[WS(is, 13)];
+ T9 = T7 + T8;
+ Ty = FNMS(KP500000000, T9, T6);
+ T16 = KP866025403 * (T8 - T7);
+ T17 = ii[WS(is, 3)];
+ Tz = ii[WS(is, 8)];
+ TA = ii[WS(is, 13)];
+ T18 = Tz + TA;
+ TB = KP866025403 * (Tz - TA);
+ T19 = FNMS(KP500000000, T18, T17);
+ }
+ {
+ E Tc, Td, TE, TF;
+ Tb = ri[WS(is, 12)];
+ Tc = ri[WS(is, 2)];
+ Td = ri[WS(is, 7)];
+ Te = Tc + Td;
+ TD = FNMS(KP500000000, Te, Tb);
+ T1b = KP866025403 * (Td - Tc);
+ T1c = ii[WS(is, 12)];
+ TE = ii[WS(is, 2)];
+ TF = ii[WS(is, 7)];
+ T1d = TE + TF;
+ TG = KP866025403 * (TE - TF);
+ T1e = FNMS(KP500000000, T1d, T1c);
+ }
+ Ta = T6 + T9;
+ Tf = Tb + Te;
+ Tg = Ta + Tf;
+ TC = Ty - TB;
+ TH = TD - TG;
+ TI = TC + TH;
+ T2f = T17 + T18;
+ T2g = T1c + T1d;
+ T2m = T2f + T2g;
+ T1R = T19 - T16;
+ T1S = T1e - T1b;
+ T21 = T1R + T1S;
+ T1a = T16 + T19;
+ T1f = T1b + T1e;
+ T1v = T1a + T1f;
+ TW = Ty + TB;
+ TX = TD + TG;
+ TY = TW + TX;
+ }
+ {
+ E T2a, Ts, T29, T2i, T2k, T2e, T2h, T2j, T2b;
+ T2a = KP559016994 * (Tg - Tr);
+ Ts = Tg + Tr;
+ T29 = FNMS(KP250000000, Ts, T5);
+ T2e = T2c - T2d;
+ T2h = T2f - T2g;
+ T2i = FNMS(KP587785252, T2h, KP951056516 * T2e);
+ T2k = FMA(KP951056516, T2h, KP587785252 * T2e);
+ ro[0] = T5 + Ts;
+ T2j = T2a + T29;
+ ro[WS(os, 9)] = T2j - T2k;
+ ro[WS(os, 6)] = T2j + T2k;
+ T2b = T29 - T2a;
+ ro[WS(os, 12)] = T2b - T2i;
+ ro[WS(os, 3)] = T2b + T2i;
+ }
+ {
+ E T2q, T2o, T2p, T2u, T2w, T2s, T2t, T2v, T2r;
+ T2q = KP559016994 * (T2m - T2n);
+ T2o = T2m + T2n;
+ T2p = FNMS(KP250000000, T2o, T2l);
+ T2s = Tl - Tq;
+ T2t = Ta - Tf;
+ T2u = FNMS(KP587785252, T2t, KP951056516 * T2s);
+ T2w = FMA(KP951056516, T2t, KP587785252 * T2s);
+ io[0] = T2l + T2o;
+ T2v = T2q + T2p;
+ io[WS(os, 6)] = T2v - T2w;
+ io[WS(os, 9)] = T2w + T2v;
+ T2r = T2p - T2q;
+ io[WS(os, 3)] = T2r - T2u;
+ io[WS(os, 12)] = T2u + T2r;
+ }
+ {
+ E T1M, TU, T1L, T1U, T1W, T1Q, T1T, T1V, T1N;
+ T1M = KP559016994 * (TI - TT);
+ TU = TI + TT;
+ T1L = FNMS(KP250000000, TU, Tx);
+ T1Q = T1O - T1P;
+ T1T = T1R - T1S;
+ T1U = FNMS(KP587785252, T1T, KP951056516 * T1Q);
+ T1W = FMA(KP951056516, T1T, KP587785252 * T1Q);
+ ro[WS(os, 5)] = Tx + TU;
+ T1V = T1M + T1L;
+ ro[WS(os, 14)] = T1V - T1W;
+ ro[WS(os, 11)] = T1V + T1W;
+ T1N = T1L - T1M;
+ ro[WS(os, 2)] = T1N - T1U;
+ ro[WS(os, 8)] = T1N + T1U;
+ }
+ {
+ E T25, T23, T24, T1Z, T28, T1X, T1Y, T27, T26;
+ T25 = KP559016994 * (T21 - T22);
+ T23 = T21 + T22;
+ T24 = FNMS(KP250000000, T23, T20);
+ T1X = TN - TS;
+ T1Y = TC - TH;
+ T1Z = FNMS(KP587785252, T1Y, KP951056516 * T1X);
+ T28 = FMA(KP951056516, T1Y, KP587785252 * T1X);
+ io[WS(os, 5)] = T20 + T23;
+ T27 = T25 + T24;
+ io[WS(os, 11)] = T27 - T28;
+ io[WS(os, 14)] = T28 + T27;
+ T26 = T24 - T25;
+ io[WS(os, 2)] = T1Z + T26;
+ io[WS(os, 8)] = T26 - T1Z;
+ }
+ {
+ E T1x, T1D, T1E, T1I, T1J, T1G, T1H, T1K, T1F;
+ T1x = KP559016994 * (T1v - T1w);
+ T1D = T1v + T1w;
+ T1E = FNMS(KP250000000, T1D, T1C);
+ T1G = TW - TX;
+ T1H = TZ - T10;
+ T1I = FMA(KP951056516, T1G, KP587785252 * T1H);
+ T1J = FNMS(KP587785252, T1G, KP951056516 * T1H);
+ io[WS(os, 10)] = T1C + T1D;
+ T1K = T1E - T1x;
+ io[WS(os, 7)] = T1J + T1K;
+ io[WS(os, 13)] = T1K - T1J;
+ T1F = T1x + T1E;
+ io[WS(os, 1)] = T1F - T1I;
+ io[WS(os, 4)] = T1I + T1F;
+ }
+ {
+ E T13, T12, T14, T1s, T1u, T1g, T1r, T1t, T15;
+ T13 = KP559016994 * (TY - T11);
+ T12 = TY + T11;
+ T14 = FNMS(KP250000000, T12, TV);
+ T1g = T1a - T1f;
+ T1r = T1l - T1q;
+ T1s = FMA(KP951056516, T1g, KP587785252 * T1r);
+ T1u = FNMS(KP587785252, T1g, KP951056516 * T1r);
+ ro[WS(os, 10)] = TV + T12;
+ T1t = T14 - T13;
+ ro[WS(os, 7)] = T1t - T1u;
+ ro[WS(os, 13)] = T1t + T1u;
+ T15 = T13 + T14;
+ ro[WS(os, 4)] = T15 - T1s;
+ ro[WS(os, 1)] = T15 + T1s;
+ }
+ }
+}
+
+static const kdft_desc desc = { 15, "n1_15", {128, 28, 28, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_n1_15) (planner *p) {
+ X(kdft_register) (p, n1_15, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/n1_16.c b/src/fftw3/dft/codelets/standard/n1_16.c
new file mode 100644
index 0000000..6c813a1
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/n1_16.c
@@ -0,0 +1,294 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:37 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw -compact -variables 4 -n 16 -name n1_16 -include n.h */
+
+/*
+ * This function contains 144 FP additions, 24 FP multiplications,
+ * (or, 136 additions, 16 multiplications, 8 fused multiply/add),
+ * 50 stack variables, and 64 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: n1_16.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_16.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_16.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void n1_16(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ DK(KP382683432, +0.382683432365089771728459984030398866761344562);
+ DK(KP923879532, +0.923879532511286756128183189396788286822416626);
+ DK(KP707106781, +0.707106781186547524400844362104849039284835938);
+ int i;
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs) {
+ E T7, T1R, T25, TC, TN, T1x, T1H, T1l, Tt, T22, T2h, T1b, T1g, T1E, T1Z;
+ E T1D, Te, T1S, T26, TJ, TQ, T1m, T1n, TT, Tm, T1X, T2g, T10, T15, T1B;
+ E T1U, T1A;
+ {
+ E T3, TL, Ty, T1k, T6, T1j, TB, TM;
+ {
+ E T1, T2, Tw, Tx;
+ T1 = ri[0];
+ T2 = ri[WS(is, 8)];
+ T3 = T1 + T2;
+ TL = T1 - T2;
+ Tw = ii[0];
+ Tx = ii[WS(is, 8)];
+ Ty = Tw + Tx;
+ T1k = Tw - Tx;
+ }
+ {
+ E T4, T5, Tz, TA;
+ T4 = ri[WS(is, 4)];
+ T5 = ri[WS(is, 12)];
+ T6 = T4 + T5;
+ T1j = T4 - T5;
+ Tz = ii[WS(is, 4)];
+ TA = ii[WS(is, 12)];
+ TB = Tz + TA;
+ TM = Tz - TA;
+ }
+ T7 = T3 + T6;
+ T1R = T3 - T6;
+ T25 = Ty - TB;
+ TC = Ty + TB;
+ TN = TL - TM;
+ T1x = TL + TM;
+ T1H = T1k - T1j;
+ T1l = T1j + T1k;
+ }
+ {
+ E Tp, T17, T1f, T20, Ts, T1c, T1a, T21;
+ {
+ E Tn, To, T1d, T1e;
+ Tn = ri[WS(is, 15)];
+ To = ri[WS(is, 7)];
+ Tp = Tn + To;
+ T17 = Tn - To;
+ T1d = ii[WS(is, 15)];
+ T1e = ii[WS(is, 7)];
+ T1f = T1d - T1e;
+ T20 = T1d + T1e;
+ }
+ {
+ E Tq, Tr, T18, T19;
+ Tq = ri[WS(is, 3)];
+ Tr = ri[WS(is, 11)];
+ Ts = Tq + Tr;
+ T1c = Tq - Tr;
+ T18 = ii[WS(is, 3)];
+ T19 = ii[WS(is, 11)];
+ T1a = T18 - T19;
+ T21 = T18 + T19;
+ }
+ Tt = Tp + Ts;
+ T22 = T20 - T21;
+ T2h = T20 + T21;
+ T1b = T17 - T1a;
+ T1g = T1c + T1f;
+ T1E = T1f - T1c;
+ T1Z = Tp - Ts;
+ T1D = T17 + T1a;
+ }
+ {
+ E Ta, TP, TF, TO, Td, TR, TI, TS;
+ {
+ E T8, T9, TD, TE;
+ T8 = ri[WS(is, 2)];
+ T9 = ri[WS(is, 10)];
+ Ta = T8 + T9;
+ TP = T8 - T9;
+ TD = ii[WS(is, 2)];
+ TE = ii[WS(is, 10)];
+ TF = TD + TE;
+ TO = TD - TE;
+ }
+ {
+ E Tb, Tc, TG, TH;
+ Tb = ri[WS(is, 14)];
+ Tc = ri[WS(is, 6)];
+ Td = Tb + Tc;
+ TR = Tb - Tc;
+ TG = ii[WS(is, 14)];
+ TH = ii[WS(is, 6)];
+ TI = TG + TH;
+ TS = TG - TH;
+ }
+ Te = Ta + Td;
+ T1S = TF - TI;
+ T26 = Td - Ta;
+ TJ = TF + TI;
+ TQ = TO - TP;
+ T1m = TR - TS;
+ T1n = TP + TO;
+ TT = TR + TS;
+ }
+ {
+ E Ti, T11, TZ, T1V, Tl, TW, T14, T1W;
+ {
+ E Tg, Th, TX, TY;
+ Tg = ri[WS(is, 1)];
+ Th = ri[WS(is, 9)];
+ Ti = Tg + Th;
+ T11 = Tg - Th;
+ TX = ii[WS(is, 1)];
+ TY = ii[WS(is, 9)];
+ TZ = TX - TY;
+ T1V = TX + TY;
+ }
+ {
+ E Tj, Tk, T12, T13;
+ Tj = ri[WS(is, 5)];
+ Tk = ri[WS(is, 13)];
+ Tl = Tj + Tk;
+ TW = Tj - Tk;
+ T12 = ii[WS(is, 5)];
+ T13 = ii[WS(is, 13)];
+ T14 = T12 - T13;
+ T1W = T12 + T13;
+ }
+ Tm = Ti + Tl;
+ T1X = T1V - T1W;
+ T2g = T1V + T1W;
+ T10 = TW + TZ;
+ T15 = T11 - T14;
+ T1B = T11 + T14;
+ T1U = Ti - Tl;
+ T1A = TZ - TW;
+ }
+ {
+ E Tf, Tu, T2j, T2k;
+ Tf = T7 + Te;
+ Tu = Tm + Tt;
+ ro[WS(os, 8)] = Tf - Tu;
+ ro[0] = Tf + Tu;
+ T2j = TC + TJ;
+ T2k = T2g + T2h;
+ io[WS(os, 8)] = T2j - T2k;
+ io[0] = T2j + T2k;
+ }
+ {
+ E Tv, TK, T2f, T2i;
+ Tv = Tt - Tm;
+ TK = TC - TJ;
+ io[WS(os, 4)] = Tv + TK;
+ io[WS(os, 12)] = TK - Tv;
+ T2f = T7 - Te;
+ T2i = T2g - T2h;
+ ro[WS(os, 12)] = T2f - T2i;
+ ro[WS(os, 4)] = T2f + T2i;
+ }
+ {
+ E T1T, T27, T24, T28, T1Y, T23;
+ T1T = T1R + T1S;
+ T27 = T25 - T26;
+ T1Y = T1U + T1X;
+ T23 = T1Z - T22;
+ T24 = KP707106781 * (T1Y + T23);
+ T28 = KP707106781 * (T23 - T1Y);
+ ro[WS(os, 10)] = T1T - T24;
+ io[WS(os, 6)] = T27 + T28;
+ ro[WS(os, 2)] = T1T + T24;
+ io[WS(os, 14)] = T27 - T28;
+ }
+ {
+ E T29, T2d, T2c, T2e, T2a, T2b;
+ T29 = T1R - T1S;
+ T2d = T26 + T25;
+ T2a = T1X - T1U;
+ T2b = T1Z + T22;
+ T2c = KP707106781 * (T2a - T2b);
+ T2e = KP707106781 * (T2a + T2b);
+ ro[WS(os, 14)] = T29 - T2c;
+ io[WS(os, 2)] = T2d + T2e;
+ ro[WS(os, 6)] = T29 + T2c;
+ io[WS(os, 10)] = T2d - T2e;
+ }
+ {
+ E TV, T1r, T1p, T1v, T1i, T1q, T1u, T1w, TU, T1o;
+ TU = KP707106781 * (TQ - TT);
+ TV = TN + TU;
+ T1r = TN - TU;
+ T1o = KP707106781 * (T1m - T1n);
+ T1p = T1l - T1o;
+ T1v = T1l + T1o;
+ {
+ E T16, T1h, T1s, T1t;
+ T16 = FMA(KP923879532, T10, KP382683432 * T15);
+ T1h = FNMS(KP923879532, T1g, KP382683432 * T1b);
+ T1i = T16 + T1h;
+ T1q = T1h - T16;
+ T1s = FNMS(KP923879532, T15, KP382683432 * T10);
+ T1t = FMA(KP382683432, T1g, KP923879532 * T1b);
+ T1u = T1s - T1t;
+ T1w = T1s + T1t;
+ }
+ ro[WS(os, 11)] = TV - T1i;
+ io[WS(os, 11)] = T1v - T1w;
+ ro[WS(os, 3)] = TV + T1i;
+ io[WS(os, 3)] = T1v + T1w;
+ io[WS(os, 15)] = T1p - T1q;
+ ro[WS(os, 15)] = T1r - T1u;
+ io[WS(os, 7)] = T1p + T1q;
+ ro[WS(os, 7)] = T1r + T1u;
+ }
+ {
+ E T1z, T1L, T1J, T1P, T1G, T1K, T1O, T1Q, T1y, T1I;
+ T1y = KP707106781 * (T1n + T1m);
+ T1z = T1x + T1y;
+ T1L = T1x - T1y;
+ T1I = KP707106781 * (TQ + TT);
+ T1J = T1H - T1I;
+ T1P = T1H + T1I;
+ {
+ E T1C, T1F, T1M, T1N;
+ T1C = FMA(KP382683432, T1A, KP923879532 * T1B);
+ T1F = FNMS(KP382683432, T1E, KP923879532 * T1D);
+ T1G = T1C + T1F;
+ T1K = T1F - T1C;
+ T1M = FNMS(KP382683432, T1B, KP923879532 * T1A);
+ T1N = FMA(KP923879532, T1E, KP382683432 * T1D);
+ T1O = T1M - T1N;
+ T1Q = T1M + T1N;
+ }
+ ro[WS(os, 9)] = T1z - T1G;
+ io[WS(os, 9)] = T1P - T1Q;
+ ro[WS(os, 1)] = T1z + T1G;
+ io[WS(os, 1)] = T1P + T1Q;
+ io[WS(os, 13)] = T1J - T1K;
+ ro[WS(os, 13)] = T1L - T1O;
+ io[WS(os, 5)] = T1J + T1K;
+ ro[WS(os, 5)] = T1L + T1O;
+ }
+ }
+}
+
+static const kdft_desc desc = { 16, "n1_16", {136, 16, 8, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_n1_16) (planner *p) {
+ X(kdft_register) (p, n1_16, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/n1_2.c b/src/fftw3/dft/codelets/standard/n1_2.c
new file mode 100644
index 0000000..8819b53
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/n1_2.c
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:31 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw -compact -variables 4 -n 2 -name n1_2 -include n.h */
+
+/*
+ * This function contains 4 FP additions, 0 FP multiplications,
+ * (or, 4 additions, 0 multiplications, 0 fused multiply/add),
+ * 5 stack variables, and 8 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: n1_2.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_2.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_2.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void n1_2(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ int i;
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs) {
+ E T1, T2, T3, T4;
+ T1 = ri[0];
+ T2 = ri[WS(is, 1)];
+ ro[WS(os, 1)] = T1 - T2;
+ ro[0] = T1 + T2;
+ T3 = ii[0];
+ T4 = ii[WS(is, 1)];
+ io[WS(os, 1)] = T3 - T4;
+ io[0] = T3 + T4;
+ }
+}
+
+static const kdft_desc desc = { 2, "n1_2", {4, 0, 0, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_n1_2) (planner *p) {
+ X(kdft_register) (p, n1_2, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/n1_3.c b/src/fftw3/dft/codelets/standard/n1_3.c
new file mode 100644
index 0000000..f639ac1
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/n1_3.c
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:32 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw -compact -variables 4 -n 3 -name n1_3 -include n.h */
+
+/*
+ * This function contains 12 FP additions, 4 FP multiplications,
+ * (or, 10 additions, 2 multiplications, 2 fused multiply/add),
+ * 15 stack variables, and 12 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: n1_3.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_3.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_3.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void n1_3(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ DK(KP500000000, +0.500000000000000000000000000000000000000000000);
+ DK(KP866025403, +0.866025403784438646763723170752936183471402627);
+ int i;
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs) {
+ E T1, Ta, T4, T9, T8, Tb, T5, Tc;
+ T1 = ri[0];
+ Ta = ii[0];
+ {
+ E T2, T3, T6, T7;
+ T2 = ri[WS(is, 1)];
+ T3 = ri[WS(is, 2)];
+ T4 = T2 + T3;
+ T9 = KP866025403 * (T3 - T2);
+ T6 = ii[WS(is, 1)];
+ T7 = ii[WS(is, 2)];
+ T8 = KP866025403 * (T6 - T7);
+ Tb = T6 + T7;
+ }
+ ro[0] = T1 + T4;
+ io[0] = Ta + Tb;
+ T5 = FNMS(KP500000000, T4, T1);
+ ro[WS(os, 2)] = T5 - T8;
+ ro[WS(os, 1)] = T5 + T8;
+ Tc = FNMS(KP500000000, Tb, Ta);
+ io[WS(os, 1)] = T9 + Tc;
+ io[WS(os, 2)] = Tc - T9;
+ }
+}
+
+static const kdft_desc desc = { 3, "n1_3", {10, 2, 2, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_n1_3) (planner *p) {
+ X(kdft_register) (p, n1_3, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/n1_4.c b/src/fftw3/dft/codelets/standard/n1_4.c
new file mode 100644
index 0000000..402046a
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/n1_4.c
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:32 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw -compact -variables 4 -n 4 -name n1_4 -include n.h */
+
+/*
+ * This function contains 16 FP additions, 0 FP multiplications,
+ * (or, 16 additions, 0 multiplications, 0 fused multiply/add),
+ * 13 stack variables, and 16 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: n1_4.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_4.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_4.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void n1_4(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ int i;
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs) {
+ E T3, Tb, T9, Tf, T6, Ta, Te, Tg;
+ {
+ E T1, T2, T7, T8;
+ T1 = ri[0];
+ T2 = ri[WS(is, 2)];
+ T3 = T1 + T2;
+ Tb = T1 - T2;
+ T7 = ii[0];
+ T8 = ii[WS(is, 2)];
+ T9 = T7 - T8;
+ Tf = T7 + T8;
+ }
+ {
+ E T4, T5, Tc, Td;
+ T4 = ri[WS(is, 1)];
+ T5 = ri[WS(is, 3)];
+ T6 = T4 + T5;
+ Ta = T4 - T5;
+ Tc = ii[WS(is, 1)];
+ Td = ii[WS(is, 3)];
+ Te = Tc - Td;
+ Tg = Tc + Td;
+ }
+ ro[WS(os, 2)] = T3 - T6;
+ io[WS(os, 2)] = Tf - Tg;
+ ro[0] = T3 + T6;
+ io[0] = Tf + Tg;
+ io[WS(os, 1)] = T9 - Ta;
+ ro[WS(os, 1)] = Tb + Te;
+ io[WS(os, 3)] = Ta + T9;
+ ro[WS(os, 3)] = Tb - Te;
+ }
+}
+
+static const kdft_desc desc = { 4, "n1_4", {16, 0, 0, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_n1_4) (planner *p) {
+ X(kdft_register) (p, n1_4, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/n1_5.c b/src/fftw3/dft/codelets/standard/n1_5.c
new file mode 100644
index 0000000..8ac5abc
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/n1_5.c
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:32 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw -compact -variables 4 -n 5 -name n1_5 -include n.h */
+
+/*
+ * This function contains 32 FP additions, 12 FP multiplications,
+ * (or, 26 additions, 6 multiplications, 6 fused multiply/add),
+ * 21 stack variables, and 20 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: n1_5.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_5.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_5.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void n1_5(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ DK(KP250000000, +0.250000000000000000000000000000000000000000000);
+ DK(KP587785252, +0.587785252292473129168705954639072768597652438);
+ DK(KP951056516, +0.951056516295153572116439333379382143405698634);
+ DK(KP559016994, +0.559016994374947424102293417182819058860154590);
+ int i;
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs) {
+ E T1, To, T8, Tt, T9, Ts, Te, Tp, Th, Tn;
+ T1 = ri[0];
+ To = ii[0];
+ {
+ E T2, T3, T4, T5, T6, T7;
+ T2 = ri[WS(is, 1)];
+ T3 = ri[WS(is, 4)];
+ T4 = T2 + T3;
+ T5 = ri[WS(is, 2)];
+ T6 = ri[WS(is, 3)];
+ T7 = T5 + T6;
+ T8 = T4 + T7;
+ Tt = T5 - T6;
+ T9 = KP559016994 * (T4 - T7);
+ Ts = T2 - T3;
+ }
+ {
+ E Tc, Td, Tl, Tf, Tg, Tm;
+ Tc = ii[WS(is, 1)];
+ Td = ii[WS(is, 4)];
+ Tl = Tc + Td;
+ Tf = ii[WS(is, 2)];
+ Tg = ii[WS(is, 3)];
+ Tm = Tf + Tg;
+ Te = Tc - Td;
+ Tp = Tl + Tm;
+ Th = Tf - Tg;
+ Tn = KP559016994 * (Tl - Tm);
+ }
+ ro[0] = T1 + T8;
+ io[0] = To + Tp;
+ {
+ E Ti, Tk, Tb, Tj, Ta;
+ Ti = FMA(KP951056516, Te, KP587785252 * Th);
+ Tk = FNMS(KP587785252, Te, KP951056516 * Th);
+ Ta = FNMS(KP250000000, T8, T1);
+ Tb = T9 + Ta;
+ Tj = Ta - T9;
+ ro[WS(os, 4)] = Tb - Ti;
+ ro[WS(os, 3)] = Tj + Tk;
+ ro[WS(os, 1)] = Tb + Ti;
+ ro[WS(os, 2)] = Tj - Tk;
+ }
+ {
+ E Tu, Tv, Tr, Tw, Tq;
+ Tu = FMA(KP951056516, Ts, KP587785252 * Tt);
+ Tv = FNMS(KP587785252, Ts, KP951056516 * Tt);
+ Tq = FNMS(KP250000000, Tp, To);
+ Tr = Tn + Tq;
+ Tw = Tq - Tn;
+ io[WS(os, 1)] = Tr - Tu;
+ io[WS(os, 3)] = Tw - Tv;
+ io[WS(os, 4)] = Tu + Tr;
+ io[WS(os, 2)] = Tv + Tw;
+ }
+ }
+}
+
+static const kdft_desc desc = { 5, "n1_5", {26, 6, 6, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_n1_5) (planner *p) {
+ X(kdft_register) (p, n1_5, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/n1_6.c b/src/fftw3/dft/codelets/standard/n1_6.c
new file mode 100644
index 0000000..114679d
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/n1_6.c
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:32 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw -compact -variables 4 -n 6 -name n1_6 -include n.h */
+
+/*
+ * This function contains 36 FP additions, 8 FP multiplications,
+ * (or, 32 additions, 4 multiplications, 4 fused multiply/add),
+ * 23 stack variables, and 24 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: n1_6.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_6.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_6.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void n1_6(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ DK(KP866025403, +0.866025403784438646763723170752936183471402627);
+ DK(KP500000000, +0.500000000000000000000000000000000000000000000);
+ int i;
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs) {
+ E T3, Tb, Tq, Tx, T6, Tc, T9, Td, Ta, Te, Ti, Tu, Tl, Tv, Tr;
+ E Ty;
+ {
+ E T1, T2, To, Tp;
+ T1 = ri[0];
+ T2 = ri[WS(is, 3)];
+ T3 = T1 - T2;
+ Tb = T1 + T2;
+ To = ii[0];
+ Tp = ii[WS(is, 3)];
+ Tq = To - Tp;
+ Tx = To + Tp;
+ }
+ {
+ E T4, T5, T7, T8;
+ T4 = ri[WS(is, 2)];
+ T5 = ri[WS(is, 5)];
+ T6 = T4 - T5;
+ Tc = T4 + T5;
+ T7 = ri[WS(is, 4)];
+ T8 = ri[WS(is, 1)];
+ T9 = T7 - T8;
+ Td = T7 + T8;
+ }
+ Ta = T6 + T9;
+ Te = Tc + Td;
+ {
+ E Tg, Th, Tj, Tk;
+ Tg = ii[WS(is, 2)];
+ Th = ii[WS(is, 5)];
+ Ti = Tg - Th;
+ Tu = Tg + Th;
+ Tj = ii[WS(is, 4)];
+ Tk = ii[WS(is, 1)];
+ Tl = Tj - Tk;
+ Tv = Tj + Tk;
+ }
+ Tr = Ti + Tl;
+ Ty = Tu + Tv;
+ ro[WS(os, 3)] = T3 + Ta;
+ io[WS(os, 3)] = Tq + Tr;
+ ro[0] = Tb + Te;
+ io[0] = Tx + Ty;
+ {
+ E Tf, Tm, Tn, Ts;
+ Tf = FNMS(KP500000000, Ta, T3);
+ Tm = KP866025403 * (Ti - Tl);
+ ro[WS(os, 5)] = Tf - Tm;
+ ro[WS(os, 1)] = Tf + Tm;
+ Tn = KP866025403 * (T9 - T6);
+ Ts = FNMS(KP500000000, Tr, Tq);
+ io[WS(os, 1)] = Tn + Ts;
+ io[WS(os, 5)] = Ts - Tn;
+ }
+ {
+ E Tt, Tw, Tz, TA;
+ Tt = FNMS(KP500000000, Te, Tb);
+ Tw = KP866025403 * (Tu - Tv);
+ ro[WS(os, 2)] = Tt - Tw;
+ ro[WS(os, 4)] = Tt + Tw;
+ Tz = FNMS(KP500000000, Ty, Tx);
+ TA = KP866025403 * (Td - Tc);
+ io[WS(os, 2)] = Tz - TA;
+ io[WS(os, 4)] = TA + Tz;
+ }
+ }
+}
+
+static const kdft_desc desc = { 6, "n1_6", {32, 4, 4, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_n1_6) (planner *p) {
+ X(kdft_register) (p, n1_6, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/n1_7.c b/src/fftw3/dft/codelets/standard/n1_7.c
new file mode 100644
index 0000000..03c892d
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/n1_7.c
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:32 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw -compact -variables 4 -n 7 -name n1_7 -include n.h */
+
+/*
+ * This function contains 60 FP additions, 36 FP multiplications,
+ * (or, 36 additions, 12 multiplications, 24 fused multiply/add),
+ * 25 stack variables, and 28 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: n1_7.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_7.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_7.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void n1_7(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ DK(KP222520933, +0.222520933956314404288902564496794759466355569);
+ DK(KP900968867, +0.900968867902419126236102319507445051165919162);
+ DK(KP623489801, +0.623489801858733530525004884004239810632274731);
+ DK(KP433883739, +0.433883739117558120475768332848358754609990728);
+ DK(KP781831482, +0.781831482468029808708444526674057750232334519);
+ DK(KP974927912, +0.974927912181823607018131682993931217232785801);
+ int i;
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs) {
+ E T1, Tu, T4, Tq, Te, Tx, T7, Ts, Tk, Tv, Ta, Tr, Th, Tw;
+ T1 = ri[0];
+ Tu = ii[0];
+ {
+ E T2, T3, Tc, Td;
+ T2 = ri[WS(is, 1)];
+ T3 = ri[WS(is, 6)];
+ T4 = T2 + T3;
+ Tq = T3 - T2;
+ Tc = ii[WS(is, 1)];
+ Td = ii[WS(is, 6)];
+ Te = Tc - Td;
+ Tx = Tc + Td;
+ }
+ {
+ E T5, T6, Ti, Tj;
+ T5 = ri[WS(is, 2)];
+ T6 = ri[WS(is, 5)];
+ T7 = T5 + T6;
+ Ts = T6 - T5;
+ Ti = ii[WS(is, 2)];
+ Tj = ii[WS(is, 5)];
+ Tk = Ti - Tj;
+ Tv = Ti + Tj;
+ }
+ {
+ E T8, T9, Tf, Tg;
+ T8 = ri[WS(is, 3)];
+ T9 = ri[WS(is, 4)];
+ Ta = T8 + T9;
+ Tr = T9 - T8;
+ Tf = ii[WS(is, 3)];
+ Tg = ii[WS(is, 4)];
+ Th = Tf - Tg;
+ Tw = Tf + Tg;
+ }
+ ro[0] = T1 + T4 + T7 + Ta;
+ io[0] = Tu + Tx + Tv + Tw;
+ {
+ E Tl, Tb, TB, TC;
+ Tl = FNMS(KP781831482, Th, KP974927912 * Te) - (KP433883739 * Tk);
+ Tb = FMA(KP623489801, Ta, T1) + FNMA(KP900968867, T7, KP222520933 * T4);
+ ro[WS(os, 5)] = Tb - Tl;
+ ro[WS(os, 2)] = Tb + Tl;
+ TB = FNMS(KP781831482, Tr, KP974927912 * Tq) - (KP433883739 * Ts);
+ TC = FMA(KP623489801, Tw, Tu) + FNMA(KP900968867, Tv, KP222520933 * Tx);
+ io[WS(os, 2)] = TB + TC;
+ io[WS(os, 5)] = TC - TB;
+ }
+ {
+ E Tn, Tm, Tz, TA;
+ Tn = FMA(KP781831482, Te, KP974927912 * Tk) + (KP433883739 * Th);
+ Tm = FMA(KP623489801, T4, T1) + FNMA(KP900968867, Ta, KP222520933 * T7);
+ ro[WS(os, 6)] = Tm - Tn;
+ ro[WS(os, 1)] = Tm + Tn;
+ Tz = FMA(KP781831482, Tq, KP974927912 * Ts) + (KP433883739 * Tr);
+ TA = FMA(KP623489801, Tx, Tu) + FNMA(KP900968867, Tw, KP222520933 * Tv);
+ io[WS(os, 1)] = Tz + TA;
+ io[WS(os, 6)] = TA - Tz;
+ }
+ {
+ E Tp, To, Tt, Ty;
+ Tp = FMA(KP433883739, Te, KP974927912 * Th) - (KP781831482 * Tk);
+ To = FMA(KP623489801, T7, T1) + FNMA(KP222520933, Ta, KP900968867 * T4);
+ ro[WS(os, 4)] = To - Tp;
+ ro[WS(os, 3)] = To + Tp;
+ Tt = FMA(KP433883739, Tq, KP974927912 * Tr) - (KP781831482 * Ts);
+ Ty = FMA(KP623489801, Tv, Tu) + FNMA(KP222520933, Tw, KP900968867 * Tx);
+ io[WS(os, 3)] = Tt + Ty;
+ io[WS(os, 4)] = Ty - Tt;
+ }
+ }
+}
+
+static const kdft_desc desc = { 7, "n1_7", {36, 12, 24, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_n1_7) (planner *p) {
+ X(kdft_register) (p, n1_7, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/n1_8.c b/src/fftw3/dft/codelets/standard/n1_8.c
new file mode 100644
index 0000000..114592d
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/n1_8.c
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:32 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw -compact -variables 4 -n 8 -name n1_8 -include n.h */
+
+/*
+ * This function contains 52 FP additions, 4 FP multiplications,
+ * (or, 52 additions, 4 multiplications, 0 fused multiply/add),
+ * 28 stack variables, and 32 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: n1_8.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_8.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_8.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void n1_8(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ DK(KP707106781, +0.707106781186547524400844362104849039284835938);
+ int i;
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs) {
+ E T3, Tn, Ti, TC, T6, TB, Tl, To, Td, TN, Tz, TH, Ta, TM, Tu;
+ E TG;
+ {
+ E T1, T2, Tj, Tk;
+ T1 = ri[0];
+ T2 = ri[WS(is, 4)];
+ T3 = T1 + T2;
+ Tn = T1 - T2;
+ {
+ E Tg, Th, T4, T5;
+ Tg = ii[0];
+ Th = ii[WS(is, 4)];
+ Ti = Tg + Th;
+ TC = Tg - Th;
+ T4 = ri[WS(is, 2)];
+ T5 = ri[WS(is, 6)];
+ T6 = T4 + T5;
+ TB = T4 - T5;
+ }
+ Tj = ii[WS(is, 2)];
+ Tk = ii[WS(is, 6)];
+ Tl = Tj + Tk;
+ To = Tj - Tk;
+ {
+ E Tb, Tc, Tv, Tw, Tx, Ty;
+ Tb = ri[WS(is, 7)];
+ Tc = ri[WS(is, 3)];
+ Tv = Tb - Tc;
+ Tw = ii[WS(is, 7)];
+ Tx = ii[WS(is, 3)];
+ Ty = Tw - Tx;
+ Td = Tb + Tc;
+ TN = Tw + Tx;
+ Tz = Tv - Ty;
+ TH = Tv + Ty;
+ }
+ {
+ E T8, T9, Tq, Tr, Ts, Tt;
+ T8 = ri[WS(is, 1)];
+ T9 = ri[WS(is, 5)];
+ Tq = T8 - T9;
+ Tr = ii[WS(is, 1)];
+ Ts = ii[WS(is, 5)];
+ Tt = Tr - Ts;
+ Ta = T8 + T9;
+ TM = Tr + Ts;
+ Tu = Tq + Tt;
+ TG = Tt - Tq;
+ }
+ }
+ {
+ E T7, Te, TP, TQ;
+ T7 = T3 + T6;
+ Te = Ta + Td;
+ ro[WS(os, 4)] = T7 - Te;
+ ro[0] = T7 + Te;
+ TP = Ti + Tl;
+ TQ = TM + TN;
+ io[WS(os, 4)] = TP - TQ;
+ io[0] = TP + TQ;
+ }
+ {
+ E Tf, Tm, TL, TO;
+ Tf = Td - Ta;
+ Tm = Ti - Tl;
+ io[WS(os, 2)] = Tf + Tm;
+ io[WS(os, 6)] = Tm - Tf;
+ TL = T3 - T6;
+ TO = TM - TN;
+ ro[WS(os, 6)] = TL - TO;
+ ro[WS(os, 2)] = TL + TO;
+ }
+ {
+ E Tp, TA, TJ, TK;
+ Tp = Tn + To;
+ TA = KP707106781 * (Tu + Tz);
+ ro[WS(os, 5)] = Tp - TA;
+ ro[WS(os, 1)] = Tp + TA;
+ TJ = TC - TB;
+ TK = KP707106781 * (TG + TH);
+ io[WS(os, 5)] = TJ - TK;
+ io[WS(os, 1)] = TJ + TK;
+ }
+ {
+ E TD, TE, TF, TI;
+ TD = TB + TC;
+ TE = KP707106781 * (Tz - Tu);
+ io[WS(os, 7)] = TD - TE;
+ io[WS(os, 3)] = TD + TE;
+ TF = Tn - To;
+ TI = KP707106781 * (TG - TH);
+ ro[WS(os, 7)] = TF - TI;
+ ro[WS(os, 3)] = TF + TI;
+ }
+ }
+}
+
+static const kdft_desc desc = { 8, "n1_8", {52, 4, 0, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_n1_8) (planner *p) {
+ X(kdft_register) (p, n1_8, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/n1_9.c b/src/fftw3/dft/codelets/standard/n1_9.c
new file mode 100644
index 0000000..07308dc
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/n1_9.c
@@ -0,0 +1,193 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:32 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_notw -compact -variables 4 -n 9 -name n1_9 -include n.h */
+
+/*
+ * This function contains 80 FP additions, 40 FP multiplications,
+ * (or, 60 additions, 20 multiplications, 20 fused multiply/add),
+ * 39 stack variables, and 36 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: n1_9.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_9.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: n1_9.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "n.h"
+
+static void n1_9(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs)
+{
+ DK(KP939692620, +0.939692620785908384054109277324731469936208134);
+ DK(KP342020143, +0.342020143325668733044099614682259580763083368);
+ DK(KP984807753, +0.984807753012208059366743024589523013670643252);
+ DK(KP173648177, +0.173648177666930348851716626769314796000375677);
+ DK(KP642787609, +0.642787609686539326322643409907263432907559884);
+ DK(KP766044443, +0.766044443118978035202392650555416673935832457);
+ DK(KP500000000, +0.500000000000000000000000000000000000000000000);
+ DK(KP866025403, +0.866025403784438646763723170752936183471402627);
+ int i;
+ for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs) {
+ E T5, TO, Th, Tk, T1g, TR, Ta, T1c, Tq, TW, Tv, TX, Tf, T1d, TB;
+ E T10, TG, TZ;
+ {
+ E T1, T2, T3, T4;
+ T1 = ri[0];
+ T2 = ri[WS(is, 3)];
+ T3 = ri[WS(is, 6)];
+ T4 = T2 + T3;
+ T5 = T1 + T4;
+ TO = KP866025403 * (T3 - T2);
+ Th = FNMS(KP500000000, T4, T1);
+ }
+ {
+ E TP, Ti, Tj, TQ;
+ TP = ii[0];
+ Ti = ii[WS(is, 3)];
+ Tj = ii[WS(is, 6)];
+ TQ = Ti + Tj;
+ Tk = KP866025403 * (Ti - Tj);
+ T1g = TP + TQ;
+ TR = FNMS(KP500000000, TQ, TP);
+ }
+ {
+ E T6, Ts, T9, Tr, Tp, Tt, Tm, Tu;
+ T6 = ri[WS(is, 1)];
+ Ts = ii[WS(is, 1)];
+ {
+ E T7, T8, Tn, To;
+ T7 = ri[WS(is, 4)];
+ T8 = ri[WS(is, 7)];
+ T9 = T7 + T8;
+ Tr = KP866025403 * (T8 - T7);
+ Tn = ii[WS(is, 4)];
+ To = ii[WS(is, 7)];
+ Tp = KP866025403 * (Tn - To);
+ Tt = Tn + To;
+ }
+ Ta = T6 + T9;
+ T1c = Ts + Tt;
+ Tm = FNMS(KP500000000, T9, T6);
+ Tq = Tm + Tp;
+ TW = Tm - Tp;
+ Tu = FNMS(KP500000000, Tt, Ts);
+ Tv = Tr + Tu;
+ TX = Tu - Tr;
+ }
+ {
+ E Tb, TD, Te, TC, TA, TE, Tx, TF;
+ Tb = ri[WS(is, 2)];
+ TD = ii[WS(is, 2)];
+ {
+ E Tc, Td, Ty, Tz;
+ Tc = ri[WS(is, 5)];
+ Td = ri[WS(is, 8)];
+ Te = Tc + Td;
+ TC = KP866025403 * (Td - Tc);
+ Ty = ii[WS(is, 5)];
+ Tz = ii[WS(is, 8)];
+ TA = KP866025403 * (Ty - Tz);
+ TE = Ty + Tz;
+ }
+ Tf = Tb + Te;
+ T1d = TD + TE;
+ Tx = FNMS(KP500000000, Te, Tb);
+ TB = Tx + TA;
+ T10 = Tx - TA;
+ TF = FNMS(KP500000000, TE, TD);
+ TG = TC + TF;
+ TZ = TF - TC;
+ }
+ {
+ E T1e, Tg, T1b, T1f, T1h, T1i;
+ T1e = KP866025403 * (T1c - T1d);
+ Tg = Ta + Tf;
+ T1b = FNMS(KP500000000, Tg, T5);
+ ro[0] = T5 + Tg;
+ ro[WS(os, 3)] = T1b + T1e;
+ ro[WS(os, 6)] = T1b - T1e;
+ T1f = KP866025403 * (Tf - Ta);
+ T1h = T1c + T1d;
+ T1i = FNMS(KP500000000, T1h, T1g);
+ io[WS(os, 3)] = T1f + T1i;
+ io[0] = T1g + T1h;
+ io[WS(os, 6)] = T1i - T1f;
+ }
+ {
+ E Tl, TS, TI, TN, TM, TT, TJ, TU;
+ Tl = Th + Tk;
+ TS = TO + TR;
+ {
+ E Tw, TH, TK, TL;
+ Tw = FMA(KP766044443, Tq, KP642787609 * Tv);
+ TH = FMA(KP173648177, TB, KP984807753 * TG);
+ TI = Tw + TH;
+ TN = KP866025403 * (TH - Tw);
+ TK = FNMS(KP642787609, Tq, KP766044443 * Tv);
+ TL = FNMS(KP984807753, TB, KP173648177 * TG);
+ TM = KP866025403 * (TK - TL);
+ TT = TK + TL;
+ }
+ ro[WS(os, 1)] = Tl + TI;
+ io[WS(os, 1)] = TS + TT;
+ TJ = FNMS(KP500000000, TI, Tl);
+ ro[WS(os, 7)] = TJ - TM;
+ ro[WS(os, 4)] = TJ + TM;
+ TU = FNMS(KP500000000, TT, TS);
+ io[WS(os, 4)] = TN + TU;
+ io[WS(os, 7)] = TU - TN;
+ }
+ {
+ E TV, T14, T12, T13, T17, T1a, T18, T19;
+ TV = Th - Tk;
+ T14 = TR - TO;
+ {
+ E TY, T11, T15, T16;
+ TY = FMA(KP173648177, TW, KP984807753 * TX);
+ T11 = FNMS(KP939692620, T10, KP342020143 * TZ);
+ T12 = TY + T11;
+ T13 = KP866025403 * (T11 - TY);
+ T15 = FNMS(KP984807753, TW, KP173648177 * TX);
+ T16 = FMA(KP342020143, T10, KP939692620 * TZ);
+ T17 = T15 - T16;
+ T1a = KP866025403 * (T15 + T16);
+ }
+ ro[WS(os, 2)] = TV + T12;
+ io[WS(os, 2)] = T14 + T17;
+ T18 = FNMS(KP500000000, T17, T14);
+ io[WS(os, 5)] = T13 + T18;
+ io[WS(os, 8)] = T18 - T13;
+ T19 = FNMS(KP500000000, T12, TV);
+ ro[WS(os, 8)] = T19 - T1a;
+ ro[WS(os, 5)] = T19 + T1a;
+ }
+ }
+}
+
+static const kdft_desc desc = { 9, "n1_9", {60, 20, 20, 0}, &GENUS, 0, 0, 0, 0 };
+void X(codelet_n1_9) (planner *p) {
+ X(kdft_register) (p, n1_9, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/scodlist.c b/src/fftw3/dft/codelets/standard/scodlist.c
new file mode 100644
index 0000000..9524d36
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/scodlist.c
@@ -0,0 +1,82 @@
+#include "ifftw.h"
+
+extern void X(codelet_n1_2)(planner *);
+extern void X(codelet_n1_3)(planner *);
+extern void X(codelet_n1_4)(planner *);
+extern void X(codelet_n1_5)(planner *);
+extern void X(codelet_n1_6)(planner *);
+extern void X(codelet_n1_7)(planner *);
+extern void X(codelet_n1_8)(planner *);
+extern void X(codelet_n1_9)(planner *);
+extern void X(codelet_n1_10)(planner *);
+extern void X(codelet_n1_11)(planner *);
+extern void X(codelet_n1_12)(planner *);
+extern void X(codelet_n1_13)(planner *);
+extern void X(codelet_n1_14)(planner *);
+extern void X(codelet_n1_15)(planner *);
+extern void X(codelet_n1_16)(planner *);
+extern void X(codelet_m1_16)(planner *);
+extern void X(codelet_m1_32)(planner *);
+extern void X(codelet_m1_64)(planner *);
+extern void X(codelet_t1_2)(planner *);
+extern void X(codelet_t1_3)(planner *);
+extern void X(codelet_t1_4)(planner *);
+extern void X(codelet_t1_5)(planner *);
+extern void X(codelet_t1_6)(planner *);
+extern void X(codelet_t1_7)(planner *);
+extern void X(codelet_t1_8)(planner *);
+extern void X(codelet_t1_9)(planner *);
+extern void X(codelet_t1_10)(planner *);
+extern void X(codelet_t1_12)(planner *);
+extern void X(codelet_t1_15)(planner *);
+extern void X(codelet_t1_16)(planner *);
+extern void X(codelet_t1_32)(planner *);
+extern void X(codelet_t1_64)(planner *);
+extern void X(codelet_t2_4)(planner *);
+extern void X(codelet_t2_8)(planner *);
+extern void X(codelet_t2_16)(planner *);
+extern void X(codelet_t2_32)(planner *);
+extern void X(codelet_t2_64)(planner *);
+
+
+extern const solvtab X(solvtab_dft_standard);
+const solvtab X(solvtab_dft_standard) = {
+ SOLVTAB(X(codelet_n1_2)),
+ SOLVTAB(X(codelet_n1_3)),
+ SOLVTAB(X(codelet_n1_4)),
+ SOLVTAB(X(codelet_n1_5)),
+ SOLVTAB(X(codelet_n1_6)),
+ SOLVTAB(X(codelet_n1_7)),
+ SOLVTAB(X(codelet_n1_8)),
+ SOLVTAB(X(codelet_n1_9)),
+ SOLVTAB(X(codelet_n1_10)),
+ SOLVTAB(X(codelet_n1_11)),
+ SOLVTAB(X(codelet_n1_12)),
+ SOLVTAB(X(codelet_n1_13)),
+ SOLVTAB(X(codelet_n1_14)),
+ SOLVTAB(X(codelet_n1_15)),
+ SOLVTAB(X(codelet_n1_16)),
+ SOLVTAB(X(codelet_m1_16)),
+ SOLVTAB(X(codelet_m1_32)),
+ SOLVTAB(X(codelet_m1_64)),
+ SOLVTAB(X(codelet_t1_2)),
+ SOLVTAB(X(codelet_t1_3)),
+ SOLVTAB(X(codelet_t1_4)),
+ SOLVTAB(X(codelet_t1_5)),
+ SOLVTAB(X(codelet_t1_6)),
+ SOLVTAB(X(codelet_t1_7)),
+ SOLVTAB(X(codelet_t1_8)),
+ SOLVTAB(X(codelet_t1_9)),
+ SOLVTAB(X(codelet_t1_10)),
+ SOLVTAB(X(codelet_t1_12)),
+ SOLVTAB(X(codelet_t1_15)),
+ SOLVTAB(X(codelet_t1_16)),
+ SOLVTAB(X(codelet_t1_32)),
+ SOLVTAB(X(codelet_t1_64)),
+ SOLVTAB(X(codelet_t2_4)),
+ SOLVTAB(X(codelet_t2_8)),
+ SOLVTAB(X(codelet_t2_16)),
+ SOLVTAB(X(codelet_t2_32)),
+ SOLVTAB(X(codelet_t2_64)),
+ SOLVTAB_END
+};
diff --git a/src/fftw3/dft/codelets/standard/t1_10.c b/src/fftw3/dft/codelets/standard/t1_10.c
new file mode 100644
index 0000000..cd11522
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t1_10.c
@@ -0,0 +1,253 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:30:00 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -n 10 -name t1_10 -include t.h */
+
+/*
+ * This function contains 102 FP additions, 60 FP multiplications,
+ * (or, 72 additions, 30 multiplications, 30 fused multiply/add),
+ * 45 stack variables, and 40 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t1_10.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_10.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_10.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t1_10(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ DK(KP587785252, +0.587785252292473129168705954639072768597652438);
+ DK(KP951056516, +0.951056516295153572116439333379382143405698634);
+ DK(KP250000000, +0.250000000000000000000000000000000000000000000);
+ DK(KP559016994, +0.559016994374947424102293417182819058860154590);
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 18) {
+ E T7, T1O, TT, T1C, TF, TQ, TR, T1o, T1p, T1y, TX, TY, TZ, T1d, T1g;
+ E T1M, Ti, Tt, Tu, T1r, T1s, T1x, TU, TV, TW, T16, T19, T1L;
+ {
+ E T1, T1B, T6, T1A;
+ T1 = ri[0];
+ T1B = ii[0];
+ {
+ E T3, T5, T2, T4;
+ T3 = ri[WS(ios, 5)];
+ T5 = ii[WS(ios, 5)];
+ T2 = W[8];
+ T4 = W[9];
+ T6 = FMA(T2, T3, T4 * T5);
+ T1A = FNMS(T4, T3, T2 * T5);
+ }
+ T7 = T1 - T6;
+ T1O = T1B - T1A;
+ TT = T1 + T6;
+ T1C = T1A + T1B;
+ }
+ {
+ E Tz, T1b, TP, T1f, TE, T1c, TK, T1e;
+ {
+ E Tw, Ty, Tv, Tx;
+ Tw = ri[WS(ios, 4)];
+ Ty = ii[WS(ios, 4)];
+ Tv = W[6];
+ Tx = W[7];
+ Tz = FMA(Tv, Tw, Tx * Ty);
+ T1b = FNMS(Tx, Tw, Tv * Ty);
+ }
+ {
+ E TM, TO, TL, TN;
+ TM = ri[WS(ios, 1)];
+ TO = ii[WS(ios, 1)];
+ TL = W[0];
+ TN = W[1];
+ TP = FMA(TL, TM, TN * TO);
+ T1f = FNMS(TN, TM, TL * TO);
+ }
+ {
+ E TB, TD, TA, TC;
+ TB = ri[WS(ios, 9)];
+ TD = ii[WS(ios, 9)];
+ TA = W[16];
+ TC = W[17];
+ TE = FMA(TA, TB, TC * TD);
+ T1c = FNMS(TC, TB, TA * TD);
+ }
+ {
+ E TH, TJ, TG, TI;
+ TH = ri[WS(ios, 6)];
+ TJ = ii[WS(ios, 6)];
+ TG = W[10];
+ TI = W[11];
+ TK = FMA(TG, TH, TI * TJ);
+ T1e = FNMS(TI, TH, TG * TJ);
+ }
+ TF = Tz - TE;
+ TQ = TK - TP;
+ TR = TF + TQ;
+ T1o = T1b + T1c;
+ T1p = T1e + T1f;
+ T1y = T1o + T1p;
+ TX = Tz + TE;
+ TY = TK + TP;
+ TZ = TX + TY;
+ T1d = T1b - T1c;
+ T1g = T1e - T1f;
+ T1M = T1d + T1g;
+ }
+ {
+ E Tc, T14, Ts, T18, Th, T15, Tn, T17;
+ {
+ E T9, Tb, T8, Ta;
+ T9 = ri[WS(ios, 2)];
+ Tb = ii[WS(ios, 2)];
+ T8 = W[2];
+ Ta = W[3];
+ Tc = FMA(T8, T9, Ta * Tb);
+ T14 = FNMS(Ta, T9, T8 * Tb);
+ }
+ {
+ E Tp, Tr, To, Tq;
+ Tp = ri[WS(ios, 3)];
+ Tr = ii[WS(ios, 3)];
+ To = W[4];
+ Tq = W[5];
+ Ts = FMA(To, Tp, Tq * Tr);
+ T18 = FNMS(Tq, Tp, To * Tr);
+ }
+ {
+ E Te, Tg, Td, Tf;
+ Te = ri[WS(ios, 7)];
+ Tg = ii[WS(ios, 7)];
+ Td = W[12];
+ Tf = W[13];
+ Th = FMA(Td, Te, Tf * Tg);
+ T15 = FNMS(Tf, Te, Td * Tg);
+ }
+ {
+ E Tk, Tm, Tj, Tl;
+ Tk = ri[WS(ios, 8)];
+ Tm = ii[WS(ios, 8)];
+ Tj = W[14];
+ Tl = W[15];
+ Tn = FMA(Tj, Tk, Tl * Tm);
+ T17 = FNMS(Tl, Tk, Tj * Tm);
+ }
+ Ti = Tc - Th;
+ Tt = Tn - Ts;
+ Tu = Ti + Tt;
+ T1r = T14 + T15;
+ T1s = T17 + T18;
+ T1x = T1r + T1s;
+ TU = Tc + Th;
+ TV = Tn + Ts;
+ TW = TU + TV;
+ T16 = T14 - T15;
+ T19 = T17 - T18;
+ T1L = T16 + T19;
+ }
+ {
+ E T11, TS, T12, T1i, T1k, T1a, T1h, T1j, T13;
+ T11 = KP559016994 * (Tu - TR);
+ TS = Tu + TR;
+ T12 = FNMS(KP250000000, TS, T7);
+ T1a = T16 - T19;
+ T1h = T1d - T1g;
+ T1i = FMA(KP951056516, T1a, KP587785252 * T1h);
+ T1k = FNMS(KP587785252, T1a, KP951056516 * T1h);
+ ri[WS(ios, 5)] = T7 + TS;
+ T1j = T12 - T11;
+ ri[WS(ios, 7)] = T1j - T1k;
+ ri[WS(ios, 3)] = T1j + T1k;
+ T13 = T11 + T12;
+ ri[WS(ios, 9)] = T13 - T1i;
+ ri[WS(ios, 1)] = T13 + T1i;
+ }
+ {
+ E T1N, T1P, T1Q, T1U, T1W, T1S, T1T, T1V, T1R;
+ T1N = KP559016994 * (T1L - T1M);
+ T1P = T1L + T1M;
+ T1Q = FNMS(KP250000000, T1P, T1O);
+ T1S = Ti - Tt;
+ T1T = TF - TQ;
+ T1U = FMA(KP951056516, T1S, KP587785252 * T1T);
+ T1W = FNMS(KP587785252, T1S, KP951056516 * T1T);
+ ii[WS(ios, 5)] = T1P + T1O;
+ T1V = T1Q - T1N;
+ ii[WS(ios, 3)] = T1V - T1W;
+ ii[WS(ios, 7)] = T1W + T1V;
+ T1R = T1N + T1Q;
+ ii[WS(ios, 1)] = T1R - T1U;
+ ii[WS(ios, 9)] = T1U + T1R;
+ }
+ {
+ E T1m, T10, T1l, T1u, T1w, T1q, T1t, T1v, T1n;
+ T1m = KP559016994 * (TW - TZ);
+ T10 = TW + TZ;
+ T1l = FNMS(KP250000000, T10, TT);
+ T1q = T1o - T1p;
+ T1t = T1r - T1s;
+ T1u = FNMS(KP587785252, T1t, KP951056516 * T1q);
+ T1w = FMA(KP951056516, T1t, KP587785252 * T1q);
+ ri[0] = TT + T10;
+ T1v = T1m + T1l;
+ ri[WS(ios, 4)] = T1v - T1w;
+ ri[WS(ios, 6)] = T1v + T1w;
+ T1n = T1l - T1m;
+ ri[WS(ios, 2)] = T1n - T1u;
+ ri[WS(ios, 8)] = T1n + T1u;
+ }
+ {
+ E T1H, T1z, T1G, T1F, T1J, T1D, T1E, T1K, T1I;
+ T1H = KP559016994 * (T1x - T1y);
+ T1z = T1x + T1y;
+ T1G = FNMS(KP250000000, T1z, T1C);
+ T1D = TX - TY;
+ T1E = TU - TV;
+ T1F = FNMS(KP587785252, T1E, KP951056516 * T1D);
+ T1J = FMA(KP951056516, T1E, KP587785252 * T1D);
+ ii[0] = T1z + T1C;
+ T1K = T1H + T1G;
+ ii[WS(ios, 4)] = T1J + T1K;
+ ii[WS(ios, 6)] = T1K - T1J;
+ T1I = T1G - T1H;
+ ii[WS(ios, 2)] = T1F + T1I;
+ ii[WS(ios, 8)] = T1I - T1F;
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_FULL, 0, 10},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 10, "t1_10", twinstr, {72, 30, 30, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t1_10) (planner *p) {
+ X(kdft_dit_register) (p, t1_10, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t1_12.c b/src/fftw3/dft/codelets/standard/t1_12.c
new file mode 100644
index 0000000..e0ea2eb
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t1_12.c
@@ -0,0 +1,300 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:30:03 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -n 12 -name t1_12 -include t.h */
+
+/*
+ * This function contains 118 FP additions, 60 FP multiplications,
+ * (or, 88 additions, 30 multiplications, 30 fused multiply/add),
+ * 47 stack variables, and 48 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t1_12.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_12.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_12.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t1_12(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ DK(KP500000000, +0.500000000000000000000000000000000000000000000);
+ DK(KP866025403, +0.866025403784438646763723170752936183471402627);
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 22) {
+ E T1, T1W, T18, T21, Tc, T15, T1V, T22, TR, T1E, T1o, T1D, T12, T1l, T1F;
+ E T1G, Ti, T1S, T1d, T24, Tt, T1a, T1T, T25, TA, T1z, T1j, T1y, TL, T1g;
+ E T1A, T1B;
+ {
+ E T6, T16, Tb, T17;
+ T1 = ri[0];
+ T1W = ii[0];
+ {
+ E T3, T5, T2, T4;
+ T3 = ri[WS(ios, 4)];
+ T5 = ii[WS(ios, 4)];
+ T2 = W[6];
+ T4 = W[7];
+ T6 = FMA(T2, T3, T4 * T5);
+ T16 = FNMS(T4, T3, T2 * T5);
+ }
+ {
+ E T8, Ta, T7, T9;
+ T8 = ri[WS(ios, 8)];
+ Ta = ii[WS(ios, 8)];
+ T7 = W[14];
+ T9 = W[15];
+ Tb = FMA(T7, T8, T9 * Ta);
+ T17 = FNMS(T9, T8, T7 * Ta);
+ }
+ T18 = KP866025403 * (T16 - T17);
+ T21 = KP866025403 * (Tb - T6);
+ Tc = T6 + Tb;
+ T15 = FNMS(KP500000000, Tc, T1);
+ T1V = T16 + T17;
+ T22 = FNMS(KP500000000, T1V, T1W);
+ }
+ {
+ E T11, T1n, TW, T1m;
+ {
+ E TO, TQ, TN, TP;
+ TO = ri[WS(ios, 9)];
+ TQ = ii[WS(ios, 9)];
+ TN = W[16];
+ TP = W[17];
+ TR = FMA(TN, TO, TP * TQ);
+ T1E = FNMS(TP, TO, TN * TQ);
+ }
+ {
+ E TY, T10, TX, TZ;
+ TY = ri[WS(ios, 5)];
+ T10 = ii[WS(ios, 5)];
+ TX = W[8];
+ TZ = W[9];
+ T11 = FMA(TX, TY, TZ * T10);
+ T1n = FNMS(TZ, TY, TX * T10);
+ }
+ {
+ E TT, TV, TS, TU;
+ TT = ri[WS(ios, 1)];
+ TV = ii[WS(ios, 1)];
+ TS = W[0];
+ TU = W[1];
+ TW = FMA(TS, TT, TU * TV);
+ T1m = FNMS(TU, TT, TS * TV);
+ }
+ T1o = KP866025403 * (T1m - T1n);
+ T1D = KP866025403 * (T11 - TW);
+ T12 = TW + T11;
+ T1l = FNMS(KP500000000, T12, TR);
+ T1F = T1m + T1n;
+ T1G = FNMS(KP500000000, T1F, T1E);
+ }
+ {
+ E Ts, T1c, Tn, T1b;
+ {
+ E Tf, Th, Te, Tg;
+ Tf = ri[WS(ios, 6)];
+ Th = ii[WS(ios, 6)];
+ Te = W[10];
+ Tg = W[11];
+ Ti = FMA(Te, Tf, Tg * Th);
+ T1S = FNMS(Tg, Tf, Te * Th);
+ }
+ {
+ E Tp, Tr, To, Tq;
+ Tp = ri[WS(ios, 2)];
+ Tr = ii[WS(ios, 2)];
+ To = W[2];
+ Tq = W[3];
+ Ts = FMA(To, Tp, Tq * Tr);
+ T1c = FNMS(Tq, Tp, To * Tr);
+ }
+ {
+ E Tk, Tm, Tj, Tl;
+ Tk = ri[WS(ios, 10)];
+ Tm = ii[WS(ios, 10)];
+ Tj = W[18];
+ Tl = W[19];
+ Tn = FMA(Tj, Tk, Tl * Tm);
+ T1b = FNMS(Tl, Tk, Tj * Tm);
+ }
+ T1d = KP866025403 * (T1b - T1c);
+ T24 = KP866025403 * (Ts - Tn);
+ Tt = Tn + Ts;
+ T1a = FNMS(KP500000000, Tt, Ti);
+ T1T = T1b + T1c;
+ T25 = FNMS(KP500000000, T1T, T1S);
+ }
+ {
+ E TK, T1i, TF, T1h;
+ {
+ E Tx, Tz, Tw, Ty;
+ Tx = ri[WS(ios, 3)];
+ Tz = ii[WS(ios, 3)];
+ Tw = W[4];
+ Ty = W[5];
+ TA = FMA(Tw, Tx, Ty * Tz);
+ T1z = FNMS(Ty, Tx, Tw * Tz);
+ }
+ {
+ E TH, TJ, TG, TI;
+ TH = ri[WS(ios, 11)];
+ TJ = ii[WS(ios, 11)];
+ TG = W[20];
+ TI = W[21];
+ TK = FMA(TG, TH, TI * TJ);
+ T1i = FNMS(TI, TH, TG * TJ);
+ }
+ {
+ E TC, TE, TB, TD;
+ TC = ri[WS(ios, 7)];
+ TE = ii[WS(ios, 7)];
+ TB = W[12];
+ TD = W[13];
+ TF = FMA(TB, TC, TD * TE);
+ T1h = FNMS(TD, TC, TB * TE);
+ }
+ T1j = KP866025403 * (T1h - T1i);
+ T1y = KP866025403 * (TK - TF);
+ TL = TF + TK;
+ T1g = FNMS(KP500000000, TL, TA);
+ T1A = T1h + T1i;
+ T1B = FNMS(KP500000000, T1A, T1z);
+ }
+ {
+ E Tv, T1N, T1Y, T20, T14, T1Z, T1Q, T1R;
+ {
+ E Td, Tu, T1U, T1X;
+ Td = T1 + Tc;
+ Tu = Ti + Tt;
+ Tv = Td + Tu;
+ T1N = Td - Tu;
+ T1U = T1S + T1T;
+ T1X = T1V + T1W;
+ T1Y = T1U + T1X;
+ T20 = T1X - T1U;
+ }
+ {
+ E TM, T13, T1O, T1P;
+ TM = TA + TL;
+ T13 = TR + T12;
+ T14 = TM + T13;
+ T1Z = TM - T13;
+ T1O = T1z + T1A;
+ T1P = T1E + T1F;
+ T1Q = T1O - T1P;
+ T1R = T1O + T1P;
+ }
+ ri[WS(ios, 6)] = Tv - T14;
+ ii[WS(ios, 6)] = T1Y - T1R;
+ ri[0] = Tv + T14;
+ ii[0] = T1R + T1Y;
+ ri[WS(ios, 3)] = T1N - T1Q;
+ ii[WS(ios, 3)] = T1Z + T20;
+ ri[WS(ios, 9)] = T1N + T1Q;
+ ii[WS(ios, 9)] = T20 - T1Z;
+ }
+ {
+ E T1t, T1x, T27, T2a, T1w, T28, T1I, T29;
+ {
+ E T1r, T1s, T23, T26;
+ T1r = T15 + T18;
+ T1s = T1a + T1d;
+ T1t = T1r + T1s;
+ T1x = T1r - T1s;
+ T23 = T21 + T22;
+ T26 = T24 + T25;
+ T27 = T23 - T26;
+ T2a = T26 + T23;
+ }
+ {
+ E T1u, T1v, T1C, T1H;
+ T1u = T1g + T1j;
+ T1v = T1l + T1o;
+ T1w = T1u + T1v;
+ T28 = T1u - T1v;
+ T1C = T1y + T1B;
+ T1H = T1D + T1G;
+ T1I = T1C - T1H;
+ T29 = T1C + T1H;
+ }
+ ri[WS(ios, 10)] = T1t - T1w;
+ ii[WS(ios, 10)] = T2a - T29;
+ ri[WS(ios, 4)] = T1t + T1w;
+ ii[WS(ios, 4)] = T29 + T2a;
+ ri[WS(ios, 7)] = T1x - T1I;
+ ii[WS(ios, 7)] = T28 + T27;
+ ri[WS(ios, 1)] = T1x + T1I;
+ ii[WS(ios, 1)] = T27 - T28;
+ }
+ {
+ E T1f, T1J, T2d, T2f, T1q, T2g, T1M, T2e;
+ {
+ E T19, T1e, T2b, T2c;
+ T19 = T15 - T18;
+ T1e = T1a - T1d;
+ T1f = T19 + T1e;
+ T1J = T19 - T1e;
+ T2b = T25 - T24;
+ T2c = T22 - T21;
+ T2d = T2b + T2c;
+ T2f = T2c - T2b;
+ }
+ {
+ E T1k, T1p, T1K, T1L;
+ T1k = T1g - T1j;
+ T1p = T1l - T1o;
+ T1q = T1k + T1p;
+ T2g = T1k - T1p;
+ T1K = T1B - T1y;
+ T1L = T1G - T1D;
+ T1M = T1K - T1L;
+ T2e = T1K + T1L;
+ }
+ ri[WS(ios, 2)] = T1f - T1q;
+ ii[WS(ios, 2)] = T2d - T2e;
+ ri[WS(ios, 8)] = T1f + T1q;
+ ii[WS(ios, 8)] = T2e + T2d;
+ ri[WS(ios, 11)] = T1J - T1M;
+ ii[WS(ios, 11)] = T2g + T2f;
+ ri[WS(ios, 5)] = T1J + T1M;
+ ii[WS(ios, 5)] = T2f - T2g;
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_FULL, 0, 12},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 12, "t1_12", twinstr, {88, 30, 30, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t1_12) (planner *p) {
+ X(kdft_dit_register) (p, t1_12, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t1_15.c b/src/fftw3/dft/codelets/standard/t1_15.c
new file mode 100644
index 0000000..1c721cc
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t1_15.c
@@ -0,0 +1,405 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:30:07 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -n 15 -name t1_15 -include t.h */
+
+/*
+ * This function contains 184 FP additions, 112 FP multiplications,
+ * (or, 128 additions, 56 multiplications, 56 fused multiply/add),
+ * 65 stack variables, and 60 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t1_15.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_15.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_15.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t1_15(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ DK(KP587785252, +0.587785252292473129168705954639072768597652438);
+ DK(KP951056516, +0.951056516295153572116439333379382143405698634);
+ DK(KP250000000, +0.250000000000000000000000000000000000000000000);
+ DK(KP559016994, +0.559016994374947424102293417182819058860154590);
+ DK(KP500000000, +0.500000000000000000000000000000000000000000000);
+ DK(KP866025403, +0.866025403784438646763723170752936183471402627);
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 28) {
+ E T1q, T34, Td, T1n, T2S, T35, T13, T1k, T1l, T2E, T2F, T2O, T1H, T1T, T2k;
+ E T2t, T2f, T2s, T1M, T1U, Tu, TL, TM, T2H, T2I, T2N, T1w, T1Q, T29, T2w;
+ E T24, T2v, T1B, T1R;
+ {
+ E T1, T2R, T6, T1o, Tb, T1p, Tc, T2Q;
+ T1 = ri[0];
+ T2R = ii[0];
+ {
+ E T3, T5, T2, T4;
+ T3 = ri[WS(ios, 5)];
+ T5 = ii[WS(ios, 5)];
+ T2 = W[8];
+ T4 = W[9];
+ T6 = FMA(T2, T3, T4 * T5);
+ T1o = FNMS(T4, T3, T2 * T5);
+ }
+ {
+ E T8, Ta, T7, T9;
+ T8 = ri[WS(ios, 10)];
+ Ta = ii[WS(ios, 10)];
+ T7 = W[18];
+ T9 = W[19];
+ Tb = FMA(T7, T8, T9 * Ta);
+ T1p = FNMS(T9, T8, T7 * Ta);
+ }
+ T1q = KP866025403 * (T1o - T1p);
+ T34 = KP866025403 * (Tb - T6);
+ Tc = T6 + Tb;
+ Td = T1 + Tc;
+ T1n = FNMS(KP500000000, Tc, T1);
+ T2Q = T1o + T1p;
+ T2S = T2Q + T2R;
+ T35 = FNMS(KP500000000, T2Q, T2R);
+ }
+ {
+ E TR, T2c, T18, T2h, TW, T1E, T11, T1F, T12, T2d, T1d, T1J, T1i, T1K, T1j;
+ E T2i;
+ {
+ E TO, TQ, TN, TP;
+ TO = ri[WS(ios, 6)];
+ TQ = ii[WS(ios, 6)];
+ TN = W[10];
+ TP = W[11];
+ TR = FMA(TN, TO, TP * TQ);
+ T2c = FNMS(TP, TO, TN * TQ);
+ }
+ {
+ E T15, T17, T14, T16;
+ T15 = ri[WS(ios, 9)];
+ T17 = ii[WS(ios, 9)];
+ T14 = W[16];
+ T16 = W[17];
+ T18 = FMA(T14, T15, T16 * T17);
+ T2h = FNMS(T16, T15, T14 * T17);
+ }
+ {
+ E TT, TV, TS, TU;
+ TT = ri[WS(ios, 11)];
+ TV = ii[WS(ios, 11)];
+ TS = W[20];
+ TU = W[21];
+ TW = FMA(TS, TT, TU * TV);
+ T1E = FNMS(TU, TT, TS * TV);
+ }
+ {
+ E TY, T10, TX, TZ;
+ TY = ri[WS(ios, 1)];
+ T10 = ii[WS(ios, 1)];
+ TX = W[0];
+ TZ = W[1];
+ T11 = FMA(TX, TY, TZ * T10);
+ T1F = FNMS(TZ, TY, TX * T10);
+ }
+ T12 = TW + T11;
+ T2d = T1E + T1F;
+ {
+ E T1a, T1c, T19, T1b;
+ T1a = ri[WS(ios, 14)];
+ T1c = ii[WS(ios, 14)];
+ T19 = W[26];
+ T1b = W[27];
+ T1d = FMA(T19, T1a, T1b * T1c);
+ T1J = FNMS(T1b, T1a, T19 * T1c);
+ }
+ {
+ E T1f, T1h, T1e, T1g;
+ T1f = ri[WS(ios, 4)];
+ T1h = ii[WS(ios, 4)];
+ T1e = W[6];
+ T1g = W[7];
+ T1i = FMA(T1e, T1f, T1g * T1h);
+ T1K = FNMS(T1g, T1f, T1e * T1h);
+ }
+ T1j = T1d + T1i;
+ T2i = T1J + T1K;
+ {
+ E T1D, T1G, T2g, T2j;
+ T13 = TR + T12;
+ T1k = T18 + T1j;
+ T1l = T13 + T1k;
+ T2E = T2c + T2d;
+ T2F = T2h + T2i;
+ T2O = T2E + T2F;
+ T1D = FNMS(KP500000000, T12, TR);
+ T1G = KP866025403 * (T1E - T1F);
+ T1H = T1D - T1G;
+ T1T = T1D + T1G;
+ T2g = KP866025403 * (T1i - T1d);
+ T2j = FNMS(KP500000000, T2i, T2h);
+ T2k = T2g + T2j;
+ T2t = T2j - T2g;
+ {
+ E T2b, T2e, T1I, T1L;
+ T2b = KP866025403 * (T11 - TW);
+ T2e = FNMS(KP500000000, T2d, T2c);
+ T2f = T2b + T2e;
+ T2s = T2e - T2b;
+ T1I = FNMS(KP500000000, T1j, T18);
+ T1L = KP866025403 * (T1J - T1K);
+ T1M = T1I - T1L;
+ T1U = T1I + T1L;
+ }
+ }
+ }
+ {
+ E Ti, T21, Tz, T26, Tn, T1t, Ts, T1u, Tt, T22, TE, T1y, TJ, T1z, TK;
+ E T27;
+ {
+ E Tf, Th, Te, Tg;
+ Tf = ri[WS(ios, 3)];
+ Th = ii[WS(ios, 3)];
+ Te = W[4];
+ Tg = W[5];
+ Ti = FMA(Te, Tf, Tg * Th);
+ T21 = FNMS(Tg, Tf, Te * Th);
+ }
+ {
+ E Tw, Ty, Tv, Tx;
+ Tw = ri[WS(ios, 12)];
+ Ty = ii[WS(ios, 12)];
+ Tv = W[22];
+ Tx = W[23];
+ Tz = FMA(Tv, Tw, Tx * Ty);
+ T26 = FNMS(Tx, Tw, Tv * Ty);
+ }
+ {
+ E Tk, Tm, Tj, Tl;
+ Tk = ri[WS(ios, 8)];
+ Tm = ii[WS(ios, 8)];
+ Tj = W[14];
+ Tl = W[15];
+ Tn = FMA(Tj, Tk, Tl * Tm);
+ T1t = FNMS(Tl, Tk, Tj * Tm);
+ }
+ {
+ E Tp, Tr, To, Tq;
+ Tp = ri[WS(ios, 13)];
+ Tr = ii[WS(ios, 13)];
+ To = W[24];
+ Tq = W[25];
+ Ts = FMA(To, Tp, Tq * Tr);
+ T1u = FNMS(Tq, Tp, To * Tr);
+ }
+ Tt = Tn + Ts;
+ T22 = T1t + T1u;
+ {
+ E TB, TD, TA, TC;
+ TB = ri[WS(ios, 2)];
+ TD = ii[WS(ios, 2)];
+ TA = W[2];
+ TC = W[3];
+ TE = FMA(TA, TB, TC * TD);
+ T1y = FNMS(TC, TB, TA * TD);
+ }
+ {
+ E TG, TI, TF, TH;
+ TG = ri[WS(ios, 7)];
+ TI = ii[WS(ios, 7)];
+ TF = W[12];
+ TH = W[13];
+ TJ = FMA(TF, TG, TH * TI);
+ T1z = FNMS(TH, TG, TF * TI);
+ }
+ TK = TE + TJ;
+ T27 = T1y + T1z;
+ {
+ E T1s, T1v, T25, T28;
+ Tu = Ti + Tt;
+ TL = Tz + TK;
+ TM = Tu + TL;
+ T2H = T21 + T22;
+ T2I = T26 + T27;
+ T2N = T2H + T2I;
+ T1s = FNMS(KP500000000, Tt, Ti);
+ T1v = KP866025403 * (T1t - T1u);
+ T1w = T1s - T1v;
+ T1Q = T1s + T1v;
+ T25 = KP866025403 * (TJ - TE);
+ T28 = FNMS(KP500000000, T27, T26);
+ T29 = T25 + T28;
+ T2w = T28 - T25;
+ {
+ E T20, T23, T1x, T1A;
+ T20 = KP866025403 * (Ts - Tn);
+ T23 = FNMS(KP500000000, T22, T21);
+ T24 = T20 + T23;
+ T2v = T23 - T20;
+ T1x = FNMS(KP500000000, TK, Tz);
+ T1A = KP866025403 * (T1y - T1z);
+ T1B = T1x - T1A;
+ T1R = T1x + T1A;
+ }
+ }
+ }
+ {
+ E T2C, T1m, T2B, T2K, T2M, T2G, T2J, T2L, T2D;
+ T2C = KP559016994 * (TM - T1l);
+ T1m = TM + T1l;
+ T2B = FNMS(KP250000000, T1m, Td);
+ T2G = T2E - T2F;
+ T2J = T2H - T2I;
+ T2K = FNMS(KP587785252, T2J, KP951056516 * T2G);
+ T2M = FMA(KP951056516, T2J, KP587785252 * T2G);
+ ri[0] = Td + T1m;
+ T2L = T2C + T2B;
+ ri[WS(ios, 9)] = T2L - T2M;
+ ri[WS(ios, 6)] = T2L + T2M;
+ T2D = T2B - T2C;
+ ri[WS(ios, 12)] = T2D - T2K;
+ ri[WS(ios, 3)] = T2D + T2K;
+ }
+ {
+ E T2U, T2P, T2T, T2Y, T30, T2W, T2X, T2Z, T2V;
+ T2U = KP559016994 * (T2N - T2O);
+ T2P = T2N + T2O;
+ T2T = FNMS(KP250000000, T2P, T2S);
+ T2W = T13 - T1k;
+ T2X = Tu - TL;
+ T2Y = FNMS(KP587785252, T2X, KP951056516 * T2W);
+ T30 = FMA(KP951056516, T2X, KP587785252 * T2W);
+ ii[0] = T2P + T2S;
+ T2Z = T2U + T2T;
+ ii[WS(ios, 6)] = T2Z - T30;
+ ii[WS(ios, 9)] = T30 + T2Z;
+ T2V = T2T - T2U;
+ ii[WS(ios, 3)] = T2V - T2Y;
+ ii[WS(ios, 12)] = T2Y + T2V;
+ }
+ {
+ E T2y, T2A, T1r, T1O, T2p, T2q, T2z, T2r;
+ {
+ E T2u, T2x, T1C, T1N;
+ T2u = T2s - T2t;
+ T2x = T2v - T2w;
+ T2y = FNMS(KP587785252, T2x, KP951056516 * T2u);
+ T2A = FMA(KP951056516, T2x, KP587785252 * T2u);
+ T1r = T1n - T1q;
+ T1C = T1w + T1B;
+ T1N = T1H + T1M;
+ T1O = T1C + T1N;
+ T2p = FNMS(KP250000000, T1O, T1r);
+ T2q = KP559016994 * (T1C - T1N);
+ }
+ ri[WS(ios, 5)] = T1r + T1O;
+ T2z = T2q + T2p;
+ ri[WS(ios, 14)] = T2z - T2A;
+ ri[WS(ios, 11)] = T2z + T2A;
+ T2r = T2p - T2q;
+ ri[WS(ios, 2)] = T2r - T2y;
+ ri[WS(ios, 8)] = T2r + T2y;
+ }
+ {
+ E T3h, T3q, T3i, T3l, T3m, T3n, T3p, T3o;
+ {
+ E T3f, T3g, T3j, T3k;
+ T3f = T1H - T1M;
+ T3g = T1w - T1B;
+ T3h = FNMS(KP587785252, T3g, KP951056516 * T3f);
+ T3q = FMA(KP951056516, T3g, KP587785252 * T3f);
+ T3i = T35 - T34;
+ T3j = T2v + T2w;
+ T3k = T2s + T2t;
+ T3l = T3j + T3k;
+ T3m = FNMS(KP250000000, T3l, T3i);
+ T3n = KP559016994 * (T3j - T3k);
+ }
+ ii[WS(ios, 5)] = T3l + T3i;
+ T3p = T3n + T3m;
+ ii[WS(ios, 11)] = T3p - T3q;
+ ii[WS(ios, 14)] = T3q + T3p;
+ T3o = T3m - T3n;
+ ii[WS(ios, 2)] = T3h + T3o;
+ ii[WS(ios, 8)] = T3o - T3h;
+ }
+ {
+ E T3c, T3d, T36, T37, T33, T38, T3e, T39;
+ {
+ E T3a, T3b, T31, T32;
+ T3a = T1Q - T1R;
+ T3b = T1T - T1U;
+ T3c = FMA(KP951056516, T3a, KP587785252 * T3b);
+ T3d = FNMS(KP587785252, T3a, KP951056516 * T3b);
+ T36 = T34 + T35;
+ T31 = T24 + T29;
+ T32 = T2f + T2k;
+ T37 = T31 + T32;
+ T33 = KP559016994 * (T31 - T32);
+ T38 = FNMS(KP250000000, T37, T36);
+ }
+ ii[WS(ios, 10)] = T37 + T36;
+ T3e = T38 - T33;
+ ii[WS(ios, 7)] = T3d + T3e;
+ ii[WS(ios, 13)] = T3e - T3d;
+ T39 = T33 + T38;
+ ii[WS(ios, 1)] = T39 - T3c;
+ ii[WS(ios, 4)] = T3c + T39;
+ }
+ {
+ E T2m, T2o, T1P, T1W, T1X, T1Y, T2n, T1Z;
+ {
+ E T2a, T2l, T1S, T1V;
+ T2a = T24 - T29;
+ T2l = T2f - T2k;
+ T2m = FMA(KP951056516, T2a, KP587785252 * T2l);
+ T2o = FNMS(KP587785252, T2a, KP951056516 * T2l);
+ T1P = T1n + T1q;
+ T1S = T1Q + T1R;
+ T1V = T1T + T1U;
+ T1W = T1S + T1V;
+ T1X = KP559016994 * (T1S - T1V);
+ T1Y = FNMS(KP250000000, T1W, T1P);
+ }
+ ri[WS(ios, 10)] = T1P + T1W;
+ T2n = T1Y - T1X;
+ ri[WS(ios, 7)] = T2n - T2o;
+ ri[WS(ios, 13)] = T2n + T2o;
+ T1Z = T1X + T1Y;
+ ri[WS(ios, 4)] = T1Z - T2m;
+ ri[WS(ios, 1)] = T1Z + T2m;
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_FULL, 0, 15},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 15, "t1_15", twinstr, {128, 56, 56, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t1_15) (planner *p) {
+ X(kdft_dit_register) (p, t1_15, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t1_16.c b/src/fftw3/dft/codelets/standard/t1_16.c
new file mode 100644
index 0000000..6dc13f9
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t1_16.c
@@ -0,0 +1,406 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:30:07 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -n 16 -name t1_16 -include t.h */
+
+/*
+ * This function contains 174 FP additions, 84 FP multiplications,
+ * (or, 136 additions, 46 multiplications, 38 fused multiply/add),
+ * 52 stack variables, and 64 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t1_16.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_16.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_16.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t1_16(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ DK(KP382683432, +0.382683432365089771728459984030398866761344562);
+ DK(KP923879532, +0.923879532511286756128183189396788286822416626);
+ DK(KP707106781, +0.707106781186547524400844362104849039284835938);
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 30) {
+ E T7, T37, T1t, T2U, Ti, T38, T1w, T2R, Tu, T2s, T1C, T2c, TF, T2t, T1H;
+ E T2d, T1f, T1q, T2B, T2C, T2D, T2E, T1Z, T2j, T24, T2k, TS, T13, T2w, T2x;
+ E T2y, T2z, T1O, T2g, T1T, T2h;
+ {
+ E T1, T2T, T6, T2S;
+ T1 = ri[0];
+ T2T = ii[0];
+ {
+ E T3, T5, T2, T4;
+ T3 = ri[WS(ios, 8)];
+ T5 = ii[WS(ios, 8)];
+ T2 = W[14];
+ T4 = W[15];
+ T6 = FMA(T2, T3, T4 * T5);
+ T2S = FNMS(T4, T3, T2 * T5);
+ }
+ T7 = T1 + T6;
+ T37 = T2T - T2S;
+ T1t = T1 - T6;
+ T2U = T2S + T2T;
+ }
+ {
+ E Tc, T1u, Th, T1v;
+ {
+ E T9, Tb, T8, Ta;
+ T9 = ri[WS(ios, 4)];
+ Tb = ii[WS(ios, 4)];
+ T8 = W[6];
+ Ta = W[7];
+ Tc = FMA(T8, T9, Ta * Tb);
+ T1u = FNMS(Ta, T9, T8 * Tb);
+ }
+ {
+ E Te, Tg, Td, Tf;
+ Te = ri[WS(ios, 12)];
+ Tg = ii[WS(ios, 12)];
+ Td = W[22];
+ Tf = W[23];
+ Th = FMA(Td, Te, Tf * Tg);
+ T1v = FNMS(Tf, Te, Td * Tg);
+ }
+ Ti = Tc + Th;
+ T38 = Tc - Th;
+ T1w = T1u - T1v;
+ T2R = T1u + T1v;
+ }
+ {
+ E To, T1y, Tt, T1z, T1A, T1B;
+ {
+ E Tl, Tn, Tk, Tm;
+ Tl = ri[WS(ios, 2)];
+ Tn = ii[WS(ios, 2)];
+ Tk = W[2];
+ Tm = W[3];
+ To = FMA(Tk, Tl, Tm * Tn);
+ T1y = FNMS(Tm, Tl, Tk * Tn);
+ }
+ {
+ E Tq, Ts, Tp, Tr;
+ Tq = ri[WS(ios, 10)];
+ Ts = ii[WS(ios, 10)];
+ Tp = W[18];
+ Tr = W[19];
+ Tt = FMA(Tp, Tq, Tr * Ts);
+ T1z = FNMS(Tr, Tq, Tp * Ts);
+ }
+ Tu = To + Tt;
+ T2s = T1y + T1z;
+ T1A = T1y - T1z;
+ T1B = To - Tt;
+ T1C = T1A - T1B;
+ T2c = T1B + T1A;
+ }
+ {
+ E Tz, T1E, TE, T1F, T1D, T1G;
+ {
+ E Tw, Ty, Tv, Tx;
+ Tw = ri[WS(ios, 14)];
+ Ty = ii[WS(ios, 14)];
+ Tv = W[26];
+ Tx = W[27];
+ Tz = FMA(Tv, Tw, Tx * Ty);
+ T1E = FNMS(Tx, Tw, Tv * Ty);
+ }
+ {
+ E TB, TD, TA, TC;
+ TB = ri[WS(ios, 6)];
+ TD = ii[WS(ios, 6)];
+ TA = W[10];
+ TC = W[11];
+ TE = FMA(TA, TB, TC * TD);
+ T1F = FNMS(TC, TB, TA * TD);
+ }
+ TF = Tz + TE;
+ T2t = T1E + T1F;
+ T1D = Tz - TE;
+ T1G = T1E - T1F;
+ T1H = T1D + T1G;
+ T2d = T1D - T1G;
+ }
+ {
+ E T19, T20, T1p, T1X, T1e, T21, T1k, T1W;
+ {
+ E T16, T18, T15, T17;
+ T16 = ri[WS(ios, 15)];
+ T18 = ii[WS(ios, 15)];
+ T15 = W[28];
+ T17 = W[29];
+ T19 = FMA(T15, T16, T17 * T18);
+ T20 = FNMS(T17, T16, T15 * T18);
+ }
+ {
+ E T1m, T1o, T1l, T1n;
+ T1m = ri[WS(ios, 11)];
+ T1o = ii[WS(ios, 11)];
+ T1l = W[20];
+ T1n = W[21];
+ T1p = FMA(T1l, T1m, T1n * T1o);
+ T1X = FNMS(T1n, T1m, T1l * T1o);
+ }
+ {
+ E T1b, T1d, T1a, T1c;
+ T1b = ri[WS(ios, 7)];
+ T1d = ii[WS(ios, 7)];
+ T1a = W[12];
+ T1c = W[13];
+ T1e = FMA(T1a, T1b, T1c * T1d);
+ T21 = FNMS(T1c, T1b, T1a * T1d);
+ }
+ {
+ E T1h, T1j, T1g, T1i;
+ T1h = ri[WS(ios, 3)];
+ T1j = ii[WS(ios, 3)];
+ T1g = W[4];
+ T1i = W[5];
+ T1k = FMA(T1g, T1h, T1i * T1j);
+ T1W = FNMS(T1i, T1h, T1g * T1j);
+ }
+ T1f = T19 + T1e;
+ T1q = T1k + T1p;
+ T2B = T1f - T1q;
+ T2C = T20 + T21;
+ T2D = T1W + T1X;
+ T2E = T2C - T2D;
+ {
+ E T1V, T1Y, T22, T23;
+ T1V = T19 - T1e;
+ T1Y = T1W - T1X;
+ T1Z = T1V - T1Y;
+ T2j = T1V + T1Y;
+ T22 = T20 - T21;
+ T23 = T1k - T1p;
+ T24 = T22 + T23;
+ T2k = T22 - T23;
+ }
+ }
+ {
+ E TM, T1K, T12, T1R, TR, T1L, TX, T1Q;
+ {
+ E TJ, TL, TI, TK;
+ TJ = ri[WS(ios, 1)];
+ TL = ii[WS(ios, 1)];
+ TI = W[0];
+ TK = W[1];
+ TM = FMA(TI, TJ, TK * TL);
+ T1K = FNMS(TK, TJ, TI * TL);
+ }
+ {
+ E TZ, T11, TY, T10;
+ TZ = ri[WS(ios, 13)];
+ T11 = ii[WS(ios, 13)];
+ TY = W[24];
+ T10 = W[25];
+ T12 = FMA(TY, TZ, T10 * T11);
+ T1R = FNMS(T10, TZ, TY * T11);
+ }
+ {
+ E TO, TQ, TN, TP;
+ TO = ri[WS(ios, 9)];
+ TQ = ii[WS(ios, 9)];
+ TN = W[16];
+ TP = W[17];
+ TR = FMA(TN, TO, TP * TQ);
+ T1L = FNMS(TP, TO, TN * TQ);
+ }
+ {
+ E TU, TW, TT, TV;
+ TU = ri[WS(ios, 5)];
+ TW = ii[WS(ios, 5)];
+ TT = W[8];
+ TV = W[9];
+ TX = FMA(TT, TU, TV * TW);
+ T1Q = FNMS(TV, TU, TT * TW);
+ }
+ TS = TM + TR;
+ T13 = TX + T12;
+ T2w = TS - T13;
+ T2x = T1K + T1L;
+ T2y = T1Q + T1R;
+ T2z = T2x - T2y;
+ {
+ E T1M, T1N, T1P, T1S;
+ T1M = T1K - T1L;
+ T1N = TX - T12;
+ T1O = T1M + T1N;
+ T2g = T1M - T1N;
+ T1P = TM - TR;
+ T1S = T1Q - T1R;
+ T1T = T1P - T1S;
+ T2h = T1P + T1S;
+ }
+ }
+ {
+ E T1J, T27, T3g, T3i, T26, T3h, T2a, T3d;
+ {
+ E T1x, T1I, T3e, T3f;
+ T1x = T1t - T1w;
+ T1I = KP707106781 * (T1C - T1H);
+ T1J = T1x + T1I;
+ T27 = T1x - T1I;
+ T3e = KP707106781 * (T2d - T2c);
+ T3f = T38 + T37;
+ T3g = T3e + T3f;
+ T3i = T3f - T3e;
+ }
+ {
+ E T1U, T25, T28, T29;
+ T1U = FMA(KP923879532, T1O, KP382683432 * T1T);
+ T25 = FNMS(KP923879532, T24, KP382683432 * T1Z);
+ T26 = T1U + T25;
+ T3h = T25 - T1U;
+ T28 = FNMS(KP923879532, T1T, KP382683432 * T1O);
+ T29 = FMA(KP382683432, T24, KP923879532 * T1Z);
+ T2a = T28 - T29;
+ T3d = T28 + T29;
+ }
+ ri[WS(ios, 11)] = T1J - T26;
+ ii[WS(ios, 11)] = T3g - T3d;
+ ri[WS(ios, 3)] = T1J + T26;
+ ii[WS(ios, 3)] = T3d + T3g;
+ ri[WS(ios, 15)] = T27 - T2a;
+ ii[WS(ios, 15)] = T3i - T3h;
+ ri[WS(ios, 7)] = T27 + T2a;
+ ii[WS(ios, 7)] = T3h + T3i;
+ }
+ {
+ E T2v, T2H, T32, T34, T2G, T33, T2K, T2Z;
+ {
+ E T2r, T2u, T30, T31;
+ T2r = T7 - Ti;
+ T2u = T2s - T2t;
+ T2v = T2r + T2u;
+ T2H = T2r - T2u;
+ T30 = TF - Tu;
+ T31 = T2U - T2R;
+ T32 = T30 + T31;
+ T34 = T31 - T30;
+ }
+ {
+ E T2A, T2F, T2I, T2J;
+ T2A = T2w + T2z;
+ T2F = T2B - T2E;
+ T2G = KP707106781 * (T2A + T2F);
+ T33 = KP707106781 * (T2F - T2A);
+ T2I = T2z - T2w;
+ T2J = T2B + T2E;
+ T2K = KP707106781 * (T2I - T2J);
+ T2Z = KP707106781 * (T2I + T2J);
+ }
+ ri[WS(ios, 10)] = T2v - T2G;
+ ii[WS(ios, 10)] = T32 - T2Z;
+ ri[WS(ios, 2)] = T2v + T2G;
+ ii[WS(ios, 2)] = T2Z + T32;
+ ri[WS(ios, 14)] = T2H - T2K;
+ ii[WS(ios, 14)] = T34 - T33;
+ ri[WS(ios, 6)] = T2H + T2K;
+ ii[WS(ios, 6)] = T33 + T34;
+ }
+ {
+ E T2f, T2n, T3a, T3c, T2m, T3b, T2q, T35;
+ {
+ E T2b, T2e, T36, T39;
+ T2b = T1t + T1w;
+ T2e = KP707106781 * (T2c + T2d);
+ T2f = T2b + T2e;
+ T2n = T2b - T2e;
+ T36 = KP707106781 * (T1C + T1H);
+ T39 = T37 - T38;
+ T3a = T36 + T39;
+ T3c = T39 - T36;
+ }
+ {
+ E T2i, T2l, T2o, T2p;
+ T2i = FMA(KP382683432, T2g, KP923879532 * T2h);
+ T2l = FNMS(KP382683432, T2k, KP923879532 * T2j);
+ T2m = T2i + T2l;
+ T3b = T2l - T2i;
+ T2o = FNMS(KP382683432, T2h, KP923879532 * T2g);
+ T2p = FMA(KP923879532, T2k, KP382683432 * T2j);
+ T2q = T2o - T2p;
+ T35 = T2o + T2p;
+ }
+ ri[WS(ios, 9)] = T2f - T2m;
+ ii[WS(ios, 9)] = T3a - T35;
+ ri[WS(ios, 1)] = T2f + T2m;
+ ii[WS(ios, 1)] = T35 + T3a;
+ ri[WS(ios, 13)] = T2n - T2q;
+ ii[WS(ios, 13)] = T3c - T3b;
+ ri[WS(ios, 5)] = T2n + T2q;
+ ii[WS(ios, 5)] = T3b + T3c;
+ }
+ {
+ E TH, T2L, T2W, T2Y, T1s, T2X, T2O, T2P;
+ {
+ E Tj, TG, T2Q, T2V;
+ Tj = T7 + Ti;
+ TG = Tu + TF;
+ TH = Tj + TG;
+ T2L = Tj - TG;
+ T2Q = T2s + T2t;
+ T2V = T2R + T2U;
+ T2W = T2Q + T2V;
+ T2Y = T2V - T2Q;
+ }
+ {
+ E T14, T1r, T2M, T2N;
+ T14 = TS + T13;
+ T1r = T1f + T1q;
+ T1s = T14 + T1r;
+ T2X = T1r - T14;
+ T2M = T2x + T2y;
+ T2N = T2C + T2D;
+ T2O = T2M - T2N;
+ T2P = T2M + T2N;
+ }
+ ri[WS(ios, 8)] = TH - T1s;
+ ii[WS(ios, 8)] = T2W - T2P;
+ ri[0] = TH + T1s;
+ ii[0] = T2P + T2W;
+ ri[WS(ios, 12)] = T2L - T2O;
+ ii[WS(ios, 12)] = T2Y - T2X;
+ ri[WS(ios, 4)] = T2L + T2O;
+ ii[WS(ios, 4)] = T2X + T2Y;
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_FULL, 0, 16},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 16, "t1_16", twinstr, {136, 46, 38, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t1_16) (planner *p) {
+ X(kdft_dit_register) (p, t1_16, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t1_2.c b/src/fftw3/dft/codelets/standard/t1_2.c
new file mode 100644
index 0000000..9213d04
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t1_2.c
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:51 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -n 2 -name t1_2 -include t.h */
+
+/*
+ * This function contains 6 FP additions, 4 FP multiplications,
+ * (or, 4 additions, 2 multiplications, 2 fused multiply/add),
+ * 9 stack variables, and 8 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t1_2.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_2.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_2.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t1_2(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 2) {
+ E T1, T8, T6, T7;
+ T1 = ri[0];
+ T8 = ii[0];
+ {
+ E T3, T5, T2, T4;
+ T3 = ri[WS(ios, 1)];
+ T5 = ii[WS(ios, 1)];
+ T2 = W[0];
+ T4 = W[1];
+ T6 = FMA(T2, T3, T4 * T5);
+ T7 = FNMS(T4, T3, T2 * T5);
+ }
+ ri[WS(ios, 1)] = T1 - T6;
+ ii[WS(ios, 1)] = T8 - T7;
+ ri[0] = T1 + T6;
+ ii[0] = T7 + T8;
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_FULL, 0, 2},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 2, "t1_2", twinstr, {4, 2, 2, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t1_2) (planner *p) {
+ X(kdft_dit_register) (p, t1_2, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t1_3.c b/src/fftw3/dft/codelets/standard/t1_3.c
new file mode 100644
index 0000000..e8cfbc6
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t1_3.c
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:51 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -n 3 -name t1_3 -include t.h */
+
+/*
+ * This function contains 16 FP additions, 12 FP multiplications,
+ * (or, 10 additions, 6 multiplications, 6 fused multiply/add),
+ * 15 stack variables, and 12 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t1_3.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_3.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_3.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t1_3(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ DK(KP866025403, +0.866025403784438646763723170752936183471402627);
+ DK(KP500000000, +0.500000000000000000000000000000000000000000000);
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 4) {
+ E T1, Ti, T6, Te, Tb, Tf, Tc, Th;
+ T1 = ri[0];
+ Ti = ii[0];
+ {
+ E T3, T5, T2, T4;
+ T3 = ri[WS(ios, 1)];
+ T5 = ii[WS(ios, 1)];
+ T2 = W[0];
+ T4 = W[1];
+ T6 = FMA(T2, T3, T4 * T5);
+ Te = FNMS(T4, T3, T2 * T5);
+ }
+ {
+ E T8, Ta, T7, T9;
+ T8 = ri[WS(ios, 2)];
+ Ta = ii[WS(ios, 2)];
+ T7 = W[2];
+ T9 = W[3];
+ Tb = FMA(T7, T8, T9 * Ta);
+ Tf = FNMS(T9, T8, T7 * Ta);
+ }
+ Tc = T6 + Tb;
+ Th = Te + Tf;
+ ri[0] = T1 + Tc;
+ ii[0] = Th + Ti;
+ {
+ E Td, Tg, Tj, Tk;
+ Td = FNMS(KP500000000, Tc, T1);
+ Tg = KP866025403 * (Te - Tf);
+ ri[WS(ios, 2)] = Td - Tg;
+ ri[WS(ios, 1)] = Td + Tg;
+ Tj = KP866025403 * (Tb - T6);
+ Tk = FNMS(KP500000000, Th, Ti);
+ ii[WS(ios, 1)] = Tj + Tk;
+ ii[WS(ios, 2)] = Tk - Tj;
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_FULL, 0, 3},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 3, "t1_3", twinstr, {10, 6, 6, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t1_3) (planner *p) {
+ X(kdft_dit_register) (p, t1_3, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t1_32.c b/src/fftw3/dft/codelets/standard/t1_32.c
new file mode 100644
index 0000000..387b955
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t1_32.c
@@ -0,0 +1,892 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:30:07 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -n 32 -name t1_32 -include t.h */
+
+/*
+ * This function contains 434 FP additions, 208 FP multiplications,
+ * (or, 340 additions, 114 multiplications, 94 fused multiply/add),
+ * 96 stack variables, and 128 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t1_32.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_32.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_32.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t1_32(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ DK(KP195090322, +0.195090322016128267848284868477022240927691618);
+ DK(KP980785280, +0.980785280403230449126182236134239036973933731);
+ DK(KP555570233, +0.555570233019602224742830813948532874374937191);
+ DK(KP831469612, +0.831469612302545237078788377617905756738560812);
+ DK(KP382683432, +0.382683432365089771728459984030398866761344562);
+ DK(KP923879532, +0.923879532511286756128183189396788286822416626);
+ DK(KP707106781, +0.707106781186547524400844362104849039284835938);
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 62) {
+ E Tj, T5F, T7C, T7Q, T35, T4T, T78, T7m, T1Q, T61, T5Y, T6J, T3K, T59, T41;
+ E T56, T2B, T67, T6e, T6O, T4b, T5d, T4s, T5g, TG, T7l, T5I, T73, T3a, T4U;
+ E T3f, T4V, T14, T5N, T5M, T6E, T3m, T4Y, T3r, T4Z, T1r, T5P, T5S, T6F, T3x;
+ E T51, T3C, T52, T2d, T5Z, T64, T6K, T3V, T57, T44, T5a, T2Y, T6f, T6a, T6P;
+ E T4m, T5h, T4v, T5e;
+ {
+ E T1, T76, T6, T75, Tc, T32, Th, T33;
+ T1 = ri[0];
+ T76 = ii[0];
+ {
+ E T3, T5, T2, T4;
+ T3 = ri[WS(ios, 16)];
+ T5 = ii[WS(ios, 16)];
+ T2 = W[30];
+ T4 = W[31];
+ T6 = FMA(T2, T3, T4 * T5);
+ T75 = FNMS(T4, T3, T2 * T5);
+ }
+ {
+ E T9, Tb, T8, Ta;
+ T9 = ri[WS(ios, 8)];
+ Tb = ii[WS(ios, 8)];
+ T8 = W[14];
+ Ta = W[15];
+ Tc = FMA(T8, T9, Ta * Tb);
+ T32 = FNMS(Ta, T9, T8 * Tb);
+ }
+ {
+ E Te, Tg, Td, Tf;
+ Te = ri[WS(ios, 24)];
+ Tg = ii[WS(ios, 24)];
+ Td = W[46];
+ Tf = W[47];
+ Th = FMA(Td, Te, Tf * Tg);
+ T33 = FNMS(Tf, Te, Td * Tg);
+ }
+ {
+ E T7, Ti, T7A, T7B;
+ T7 = T1 + T6;
+ Ti = Tc + Th;
+ Tj = T7 + Ti;
+ T5F = T7 - Ti;
+ T7A = T76 - T75;
+ T7B = Tc - Th;
+ T7C = T7A - T7B;
+ T7Q = T7B + T7A;
+ }
+ {
+ E T31, T34, T74, T77;
+ T31 = T1 - T6;
+ T34 = T32 - T33;
+ T35 = T31 - T34;
+ T4T = T31 + T34;
+ T74 = T32 + T33;
+ T77 = T75 + T76;
+ T78 = T74 + T77;
+ T7m = T77 - T74;
+ }
+ }
+ {
+ E T1y, T3G, T1O, T3Z, T1D, T3H, T1J, T3Y;
+ {
+ E T1v, T1x, T1u, T1w;
+ T1v = ri[WS(ios, 1)];
+ T1x = ii[WS(ios, 1)];
+ T1u = W[0];
+ T1w = W[1];
+ T1y = FMA(T1u, T1v, T1w * T1x);
+ T3G = FNMS(T1w, T1v, T1u * T1x);
+ }
+ {
+ E T1L, T1N, T1K, T1M;
+ T1L = ri[WS(ios, 25)];
+ T1N = ii[WS(ios, 25)];
+ T1K = W[48];
+ T1M = W[49];
+ T1O = FMA(T1K, T1L, T1M * T1N);
+ T3Z = FNMS(T1M, T1L, T1K * T1N);
+ }
+ {
+ E T1A, T1C, T1z, T1B;
+ T1A = ri[WS(ios, 17)];
+ T1C = ii[WS(ios, 17)];
+ T1z = W[32];
+ T1B = W[33];
+ T1D = FMA(T1z, T1A, T1B * T1C);
+ T3H = FNMS(T1B, T1A, T1z * T1C);
+ }
+ {
+ E T1G, T1I, T1F, T1H;
+ T1G = ri[WS(ios, 9)];
+ T1I = ii[WS(ios, 9)];
+ T1F = W[16];
+ T1H = W[17];
+ T1J = FMA(T1F, T1G, T1H * T1I);
+ T3Y = FNMS(T1H, T1G, T1F * T1I);
+ }
+ {
+ E T1E, T1P, T5W, T5X;
+ T1E = T1y + T1D;
+ T1P = T1J + T1O;
+ T1Q = T1E + T1P;
+ T61 = T1E - T1P;
+ T5W = T3G + T3H;
+ T5X = T3Y + T3Z;
+ T5Y = T5W - T5X;
+ T6J = T5W + T5X;
+ }
+ {
+ E T3I, T3J, T3X, T40;
+ T3I = T3G - T3H;
+ T3J = T1J - T1O;
+ T3K = T3I + T3J;
+ T59 = T3I - T3J;
+ T3X = T1y - T1D;
+ T40 = T3Y - T3Z;
+ T41 = T3X - T40;
+ T56 = T3X + T40;
+ }
+ }
+ {
+ E T2j, T4o, T2z, T49, T2o, T4p, T2u, T48;
+ {
+ E T2g, T2i, T2f, T2h;
+ T2g = ri[WS(ios, 31)];
+ T2i = ii[WS(ios, 31)];
+ T2f = W[60];
+ T2h = W[61];
+ T2j = FMA(T2f, T2g, T2h * T2i);
+ T4o = FNMS(T2h, T2g, T2f * T2i);
+ }
+ {
+ E T2w, T2y, T2v, T2x;
+ T2w = ri[WS(ios, 23)];
+ T2y = ii[WS(ios, 23)];
+ T2v = W[44];
+ T2x = W[45];
+ T2z = FMA(T2v, T2w, T2x * T2y);
+ T49 = FNMS(T2x, T2w, T2v * T2y);
+ }
+ {
+ E T2l, T2n, T2k, T2m;
+ T2l = ri[WS(ios, 15)];
+ T2n = ii[WS(ios, 15)];
+ T2k = W[28];
+ T2m = W[29];
+ T2o = FMA(T2k, T2l, T2m * T2n);
+ T4p = FNMS(T2m, T2l, T2k * T2n);
+ }
+ {
+ E T2r, T2t, T2q, T2s;
+ T2r = ri[WS(ios, 7)];
+ T2t = ii[WS(ios, 7)];
+ T2q = W[12];
+ T2s = W[13];
+ T2u = FMA(T2q, T2r, T2s * T2t);
+ T48 = FNMS(T2s, T2r, T2q * T2t);
+ }
+ {
+ E T2p, T2A, T6c, T6d;
+ T2p = T2j + T2o;
+ T2A = T2u + T2z;
+ T2B = T2p + T2A;
+ T67 = T2p - T2A;
+ T6c = T4o + T4p;
+ T6d = T48 + T49;
+ T6e = T6c - T6d;
+ T6O = T6c + T6d;
+ }
+ {
+ E T47, T4a, T4q, T4r;
+ T47 = T2j - T2o;
+ T4a = T48 - T49;
+ T4b = T47 - T4a;
+ T5d = T47 + T4a;
+ T4q = T4o - T4p;
+ T4r = T2u - T2z;
+ T4s = T4q + T4r;
+ T5g = T4q - T4r;
+ }
+ }
+ {
+ E To, T36, TE, T3d, Tt, T37, Tz, T3c;
+ {
+ E Tl, Tn, Tk, Tm;
+ Tl = ri[WS(ios, 4)];
+ Tn = ii[WS(ios, 4)];
+ Tk = W[6];
+ Tm = W[7];
+ To = FMA(Tk, Tl, Tm * Tn);
+ T36 = FNMS(Tm, Tl, Tk * Tn);
+ }
+ {
+ E TB, TD, TA, TC;
+ TB = ri[WS(ios, 12)];
+ TD = ii[WS(ios, 12)];
+ TA = W[22];
+ TC = W[23];
+ TE = FMA(TA, TB, TC * TD);
+ T3d = FNMS(TC, TB, TA * TD);
+ }
+ {
+ E Tq, Ts, Tp, Tr;
+ Tq = ri[WS(ios, 20)];
+ Ts = ii[WS(ios, 20)];
+ Tp = W[38];
+ Tr = W[39];
+ Tt = FMA(Tp, Tq, Tr * Ts);
+ T37 = FNMS(Tr, Tq, Tp * Ts);
+ }
+ {
+ E Tw, Ty, Tv, Tx;
+ Tw = ri[WS(ios, 28)];
+ Ty = ii[WS(ios, 28)];
+ Tv = W[54];
+ Tx = W[55];
+ Tz = FMA(Tv, Tw, Tx * Ty);
+ T3c = FNMS(Tx, Tw, Tv * Ty);
+ }
+ {
+ E Tu, TF, T5G, T5H;
+ Tu = To + Tt;
+ TF = Tz + TE;
+ TG = Tu + TF;
+ T7l = TF - Tu;
+ T5G = T36 + T37;
+ T5H = T3c + T3d;
+ T5I = T5G - T5H;
+ T73 = T5G + T5H;
+ }
+ {
+ E T38, T39, T3b, T3e;
+ T38 = T36 - T37;
+ T39 = To - Tt;
+ T3a = T38 - T39;
+ T4U = T39 + T38;
+ T3b = Tz - TE;
+ T3e = T3c - T3d;
+ T3f = T3b + T3e;
+ T4V = T3b - T3e;
+ }
+ }
+ {
+ E TM, T3i, T12, T3p, TR, T3j, TX, T3o;
+ {
+ E TJ, TL, TI, TK;
+ TJ = ri[WS(ios, 2)];
+ TL = ii[WS(ios, 2)];
+ TI = W[2];
+ TK = W[3];
+ TM = FMA(TI, TJ, TK * TL);
+ T3i = FNMS(TK, TJ, TI * TL);
+ }
+ {
+ E TZ, T11, TY, T10;
+ TZ = ri[WS(ios, 26)];
+ T11 = ii[WS(ios, 26)];
+ TY = W[50];
+ T10 = W[51];
+ T12 = FMA(TY, TZ, T10 * T11);
+ T3p = FNMS(T10, TZ, TY * T11);
+ }
+ {
+ E TO, TQ, TN, TP;
+ TO = ri[WS(ios, 18)];
+ TQ = ii[WS(ios, 18)];
+ TN = W[34];
+ TP = W[35];
+ TR = FMA(TN, TO, TP * TQ);
+ T3j = FNMS(TP, TO, TN * TQ);
+ }
+ {
+ E TU, TW, TT, TV;
+ TU = ri[WS(ios, 10)];
+ TW = ii[WS(ios, 10)];
+ TT = W[18];
+ TV = W[19];
+ TX = FMA(TT, TU, TV * TW);
+ T3o = FNMS(TV, TU, TT * TW);
+ }
+ {
+ E TS, T13, T5K, T5L;
+ TS = TM + TR;
+ T13 = TX + T12;
+ T14 = TS + T13;
+ T5N = TS - T13;
+ T5K = T3i + T3j;
+ T5L = T3o + T3p;
+ T5M = T5K - T5L;
+ T6E = T5K + T5L;
+ }
+ {
+ E T3k, T3l, T3n, T3q;
+ T3k = T3i - T3j;
+ T3l = TX - T12;
+ T3m = T3k + T3l;
+ T4Y = T3k - T3l;
+ T3n = TM - TR;
+ T3q = T3o - T3p;
+ T3r = T3n - T3q;
+ T4Z = T3n + T3q;
+ }
+ }
+ {
+ E T19, T3t, T1p, T3A, T1e, T3u, T1k, T3z;
+ {
+ E T16, T18, T15, T17;
+ T16 = ri[WS(ios, 30)];
+ T18 = ii[WS(ios, 30)];
+ T15 = W[58];
+ T17 = W[59];
+ T19 = FMA(T15, T16, T17 * T18);
+ T3t = FNMS(T17, T16, T15 * T18);
+ }
+ {
+ E T1m, T1o, T1l, T1n;
+ T1m = ri[WS(ios, 22)];
+ T1o = ii[WS(ios, 22)];
+ T1l = W[42];
+ T1n = W[43];
+ T1p = FMA(T1l, T1m, T1n * T1o);
+ T3A = FNMS(T1n, T1m, T1l * T1o);
+ }
+ {
+ E T1b, T1d, T1a, T1c;
+ T1b = ri[WS(ios, 14)];
+ T1d = ii[WS(ios, 14)];
+ T1a = W[26];
+ T1c = W[27];
+ T1e = FMA(T1a, T1b, T1c * T1d);
+ T3u = FNMS(T1c, T1b, T1a * T1d);
+ }
+ {
+ E T1h, T1j, T1g, T1i;
+ T1h = ri[WS(ios, 6)];
+ T1j = ii[WS(ios, 6)];
+ T1g = W[10];
+ T1i = W[11];
+ T1k = FMA(T1g, T1h, T1i * T1j);
+ T3z = FNMS(T1i, T1h, T1g * T1j);
+ }
+ {
+ E T1f, T1q, T5Q, T5R;
+ T1f = T19 + T1e;
+ T1q = T1k + T1p;
+ T1r = T1f + T1q;
+ T5P = T1f - T1q;
+ T5Q = T3t + T3u;
+ T5R = T3z + T3A;
+ T5S = T5Q - T5R;
+ T6F = T5Q + T5R;
+ }
+ {
+ E T3v, T3w, T3y, T3B;
+ T3v = T3t - T3u;
+ T3w = T1k - T1p;
+ T3x = T3v + T3w;
+ T51 = T3v - T3w;
+ T3y = T19 - T1e;
+ T3B = T3z - T3A;
+ T3C = T3y - T3B;
+ T52 = T3y + T3B;
+ }
+ }
+ {
+ E T1V, T3R, T20, T3S, T3Q, T3T, T26, T3M, T2b, T3N, T3L, T3O;
+ {
+ E T1S, T1U, T1R, T1T;
+ T1S = ri[WS(ios, 5)];
+ T1U = ii[WS(ios, 5)];
+ T1R = W[8];
+ T1T = W[9];
+ T1V = FMA(T1R, T1S, T1T * T1U);
+ T3R = FNMS(T1T, T1S, T1R * T1U);
+ }
+ {
+ E T1X, T1Z, T1W, T1Y;
+ T1X = ri[WS(ios, 21)];
+ T1Z = ii[WS(ios, 21)];
+ T1W = W[40];
+ T1Y = W[41];
+ T20 = FMA(T1W, T1X, T1Y * T1Z);
+ T3S = FNMS(T1Y, T1X, T1W * T1Z);
+ }
+ T3Q = T1V - T20;
+ T3T = T3R - T3S;
+ {
+ E T23, T25, T22, T24;
+ T23 = ri[WS(ios, 29)];
+ T25 = ii[WS(ios, 29)];
+ T22 = W[56];
+ T24 = W[57];
+ T26 = FMA(T22, T23, T24 * T25);
+ T3M = FNMS(T24, T23, T22 * T25);
+ }
+ {
+ E T28, T2a, T27, T29;
+ T28 = ri[WS(ios, 13)];
+ T2a = ii[WS(ios, 13)];
+ T27 = W[24];
+ T29 = W[25];
+ T2b = FMA(T27, T28, T29 * T2a);
+ T3N = FNMS(T29, T28, T27 * T2a);
+ }
+ T3L = T26 - T2b;
+ T3O = T3M - T3N;
+ {
+ E T21, T2c, T62, T63;
+ T21 = T1V + T20;
+ T2c = T26 + T2b;
+ T2d = T21 + T2c;
+ T5Z = T2c - T21;
+ T62 = T3R + T3S;
+ T63 = T3M + T3N;
+ T64 = T62 - T63;
+ T6K = T62 + T63;
+ }
+ {
+ E T3P, T3U, T42, T43;
+ T3P = T3L - T3O;
+ T3U = T3Q + T3T;
+ T3V = KP707106781 * (T3P - T3U);
+ T57 = KP707106781 * (T3U + T3P);
+ T42 = T3T - T3Q;
+ T43 = T3L + T3O;
+ T44 = KP707106781 * (T42 - T43);
+ T5a = KP707106781 * (T42 + T43);
+ }
+ }
+ {
+ E T2G, T4c, T2L, T4d, T4e, T4f, T2R, T4i, T2W, T4j, T4h, T4k;
+ {
+ E T2D, T2F, T2C, T2E;
+ T2D = ri[WS(ios, 3)];
+ T2F = ii[WS(ios, 3)];
+ T2C = W[4];
+ T2E = W[5];
+ T2G = FMA(T2C, T2D, T2E * T2F);
+ T4c = FNMS(T2E, T2D, T2C * T2F);
+ }
+ {
+ E T2I, T2K, T2H, T2J;
+ T2I = ri[WS(ios, 19)];
+ T2K = ii[WS(ios, 19)];
+ T2H = W[36];
+ T2J = W[37];
+ T2L = FMA(T2H, T2I, T2J * T2K);
+ T4d = FNMS(T2J, T2I, T2H * T2K);
+ }
+ T4e = T4c - T4d;
+ T4f = T2G - T2L;
+ {
+ E T2O, T2Q, T2N, T2P;
+ T2O = ri[WS(ios, 27)];
+ T2Q = ii[WS(ios, 27)];
+ T2N = W[52];
+ T2P = W[53];
+ T2R = FMA(T2N, T2O, T2P * T2Q);
+ T4i = FNMS(T2P, T2O, T2N * T2Q);
+ }
+ {
+ E T2T, T2V, T2S, T2U;
+ T2T = ri[WS(ios, 11)];
+ T2V = ii[WS(ios, 11)];
+ T2S = W[20];
+ T2U = W[21];
+ T2W = FMA(T2S, T2T, T2U * T2V);
+ T4j = FNMS(T2U, T2T, T2S * T2V);
+ }
+ T4h = T2R - T2W;
+ T4k = T4i - T4j;
+ {
+ E T2M, T2X, T68, T69;
+ T2M = T2G + T2L;
+ T2X = T2R + T2W;
+ T2Y = T2M + T2X;
+ T6f = T2X - T2M;
+ T68 = T4c + T4d;
+ T69 = T4i + T4j;
+ T6a = T68 - T69;
+ T6P = T68 + T69;
+ }
+ {
+ E T4g, T4l, T4t, T4u;
+ T4g = T4e - T4f;
+ T4l = T4h + T4k;
+ T4m = KP707106781 * (T4g - T4l);
+ T5h = KP707106781 * (T4g + T4l);
+ T4t = T4h - T4k;
+ T4u = T4f + T4e;
+ T4v = KP707106781 * (T4t - T4u);
+ T5e = KP707106781 * (T4u + T4t);
+ }
+ }
+ {
+ E T1t, T6X, T7a, T7c, T30, T7b, T70, T71;
+ {
+ E TH, T1s, T72, T79;
+ TH = Tj + TG;
+ T1s = T14 + T1r;
+ T1t = TH + T1s;
+ T6X = TH - T1s;
+ T72 = T6E + T6F;
+ T79 = T73 + T78;
+ T7a = T72 + T79;
+ T7c = T79 - T72;
+ }
+ {
+ E T2e, T2Z, T6Y, T6Z;
+ T2e = T1Q + T2d;
+ T2Z = T2B + T2Y;
+ T30 = T2e + T2Z;
+ T7b = T2Z - T2e;
+ T6Y = T6J + T6K;
+ T6Z = T6O + T6P;
+ T70 = T6Y - T6Z;
+ T71 = T6Y + T6Z;
+ }
+ ri[WS(ios, 16)] = T1t - T30;
+ ii[WS(ios, 16)] = T7a - T71;
+ ri[0] = T1t + T30;
+ ii[0] = T71 + T7a;
+ ri[WS(ios, 24)] = T6X - T70;
+ ii[WS(ios, 24)] = T7c - T7b;
+ ri[WS(ios, 8)] = T6X + T70;
+ ii[WS(ios, 8)] = T7b + T7c;
+ }
+ {
+ E T6H, T6T, T7g, T7i, T6M, T6U, T6R, T6V;
+ {
+ E T6D, T6G, T7e, T7f;
+ T6D = Tj - TG;
+ T6G = T6E - T6F;
+ T6H = T6D + T6G;
+ T6T = T6D - T6G;
+ T7e = T1r - T14;
+ T7f = T78 - T73;
+ T7g = T7e + T7f;
+ T7i = T7f - T7e;
+ }
+ {
+ E T6I, T6L, T6N, T6Q;
+ T6I = T1Q - T2d;
+ T6L = T6J - T6K;
+ T6M = T6I + T6L;
+ T6U = T6L - T6I;
+ T6N = T2B - T2Y;
+ T6Q = T6O - T6P;
+ T6R = T6N - T6Q;
+ T6V = T6N + T6Q;
+ }
+ {
+ E T6S, T7d, T6W, T7h;
+ T6S = KP707106781 * (T6M + T6R);
+ ri[WS(ios, 20)] = T6H - T6S;
+ ri[WS(ios, 4)] = T6H + T6S;
+ T7d = KP707106781 * (T6U + T6V);
+ ii[WS(ios, 4)] = T7d + T7g;
+ ii[WS(ios, 20)] = T7g - T7d;
+ T6W = KP707106781 * (T6U - T6V);
+ ri[WS(ios, 28)] = T6T - T6W;
+ ri[WS(ios, 12)] = T6T + T6W;
+ T7h = KP707106781 * (T6R - T6M);
+ ii[WS(ios, 12)] = T7h + T7i;
+ ii[WS(ios, 28)] = T7i - T7h;
+ }
+ }
+ {
+ E T5J, T7n, T7t, T6n, T5U, T7k, T6x, T6B, T6q, T7s, T66, T6k, T6u, T6A, T6h;
+ E T6l;
+ {
+ E T5O, T5T, T60, T65;
+ T5J = T5F - T5I;
+ T7n = T7l + T7m;
+ T7t = T7m - T7l;
+ T6n = T5F + T5I;
+ T5O = T5M - T5N;
+ T5T = T5P + T5S;
+ T5U = KP707106781 * (T5O - T5T);
+ T7k = KP707106781 * (T5O + T5T);
+ {
+ E T6v, T6w, T6o, T6p;
+ T6v = T67 + T6a;
+ T6w = T6e + T6f;
+ T6x = FNMS(KP382683432, T6w, KP923879532 * T6v);
+ T6B = FMA(KP923879532, T6w, KP382683432 * T6v);
+ T6o = T5N + T5M;
+ T6p = T5P - T5S;
+ T6q = KP707106781 * (T6o + T6p);
+ T7s = KP707106781 * (T6p - T6o);
+ }
+ T60 = T5Y - T5Z;
+ T65 = T61 - T64;
+ T66 = FMA(KP923879532, T60, KP382683432 * T65);
+ T6k = FNMS(KP923879532, T65, KP382683432 * T60);
+ {
+ E T6s, T6t, T6b, T6g;
+ T6s = T5Y + T5Z;
+ T6t = T61 + T64;
+ T6u = FMA(KP382683432, T6s, KP923879532 * T6t);
+ T6A = FNMS(KP382683432, T6t, KP923879532 * T6s);
+ T6b = T67 - T6a;
+ T6g = T6e - T6f;
+ T6h = FNMS(KP923879532, T6g, KP382683432 * T6b);
+ T6l = FMA(KP382683432, T6g, KP923879532 * T6b);
+ }
+ }
+ {
+ E T5V, T6i, T7r, T7u;
+ T5V = T5J + T5U;
+ T6i = T66 + T6h;
+ ri[WS(ios, 22)] = T5V - T6i;
+ ri[WS(ios, 6)] = T5V + T6i;
+ T7r = T6k + T6l;
+ T7u = T7s + T7t;
+ ii[WS(ios, 6)] = T7r + T7u;
+ ii[WS(ios, 22)] = T7u - T7r;
+ }
+ {
+ E T6j, T6m, T7v, T7w;
+ T6j = T5J - T5U;
+ T6m = T6k - T6l;
+ ri[WS(ios, 30)] = T6j - T6m;
+ ri[WS(ios, 14)] = T6j + T6m;
+ T7v = T6h - T66;
+ T7w = T7t - T7s;
+ ii[WS(ios, 14)] = T7v + T7w;
+ ii[WS(ios, 30)] = T7w - T7v;
+ }
+ {
+ E T6r, T6y, T7j, T7o;
+ T6r = T6n + T6q;
+ T6y = T6u + T6x;
+ ri[WS(ios, 18)] = T6r - T6y;
+ ri[WS(ios, 2)] = T6r + T6y;
+ T7j = T6A + T6B;
+ T7o = T7k + T7n;
+ ii[WS(ios, 2)] = T7j + T7o;
+ ii[WS(ios, 18)] = T7o - T7j;
+ }
+ {
+ E T6z, T6C, T7p, T7q;
+ T6z = T6n - T6q;
+ T6C = T6A - T6B;
+ ri[WS(ios, 26)] = T6z - T6C;
+ ri[WS(ios, 10)] = T6z + T6C;
+ T7p = T6x - T6u;
+ T7q = T7n - T7k;
+ ii[WS(ios, 10)] = T7p + T7q;
+ ii[WS(ios, 26)] = T7q - T7p;
+ }
+ }
+ {
+ E T3h, T4D, T7R, T7X, T3E, T7O, T4N, T4R, T46, T4A, T4G, T7W, T4K, T4Q, T4x;
+ E T4B, T3g, T7P;
+ T3g = KP707106781 * (T3a - T3f);
+ T3h = T35 - T3g;
+ T4D = T35 + T3g;
+ T7P = KP707106781 * (T4V - T4U);
+ T7R = T7P + T7Q;
+ T7X = T7Q - T7P;
+ {
+ E T3s, T3D, T4L, T4M;
+ T3s = FNMS(KP923879532, T3r, KP382683432 * T3m);
+ T3D = FMA(KP382683432, T3x, KP923879532 * T3C);
+ T3E = T3s - T3D;
+ T7O = T3s + T3D;
+ T4L = T4b + T4m;
+ T4M = T4s + T4v;
+ T4N = FNMS(KP555570233, T4M, KP831469612 * T4L);
+ T4R = FMA(KP831469612, T4M, KP555570233 * T4L);
+ }
+ {
+ E T3W, T45, T4E, T4F;
+ T3W = T3K - T3V;
+ T45 = T41 - T44;
+ T46 = FMA(KP980785280, T3W, KP195090322 * T45);
+ T4A = FNMS(KP980785280, T45, KP195090322 * T3W);
+ T4E = FMA(KP923879532, T3m, KP382683432 * T3r);
+ T4F = FNMS(KP923879532, T3x, KP382683432 * T3C);
+ T4G = T4E + T4F;
+ T7W = T4F - T4E;
+ }
+ {
+ E T4I, T4J, T4n, T4w;
+ T4I = T3K + T3V;
+ T4J = T41 + T44;
+ T4K = FMA(KP555570233, T4I, KP831469612 * T4J);
+ T4Q = FNMS(KP555570233, T4J, KP831469612 * T4I);
+ T4n = T4b - T4m;
+ T4w = T4s - T4v;
+ T4x = FNMS(KP980785280, T4w, KP195090322 * T4n);
+ T4B = FMA(KP195090322, T4w, KP980785280 * T4n);
+ }
+ {
+ E T3F, T4y, T7V, T7Y;
+ T3F = T3h + T3E;
+ T4y = T46 + T4x;
+ ri[WS(ios, 23)] = T3F - T4y;
+ ri[WS(ios, 7)] = T3F + T4y;
+ T7V = T4A + T4B;
+ T7Y = T7W + T7X;
+ ii[WS(ios, 7)] = T7V + T7Y;
+ ii[WS(ios, 23)] = T7Y - T7V;
+ }
+ {
+ E T4z, T4C, T7Z, T80;
+ T4z = T3h - T3E;
+ T4C = T4A - T4B;
+ ri[WS(ios, 31)] = T4z - T4C;
+ ri[WS(ios, 15)] = T4z + T4C;
+ T7Z = T4x - T46;
+ T80 = T7X - T7W;
+ ii[WS(ios, 15)] = T7Z + T80;
+ ii[WS(ios, 31)] = T80 - T7Z;
+ }
+ {
+ E T4H, T4O, T7N, T7S;
+ T4H = T4D + T4G;
+ T4O = T4K + T4N;
+ ri[WS(ios, 19)] = T4H - T4O;
+ ri[WS(ios, 3)] = T4H + T4O;
+ T7N = T4Q + T4R;
+ T7S = T7O + T7R;
+ ii[WS(ios, 3)] = T7N + T7S;
+ ii[WS(ios, 19)] = T7S - T7N;
+ }
+ {
+ E T4P, T4S, T7T, T7U;
+ T4P = T4D - T4G;
+ T4S = T4Q - T4R;
+ ri[WS(ios, 27)] = T4P - T4S;
+ ri[WS(ios, 11)] = T4P + T4S;
+ T7T = T4N - T4K;
+ T7U = T7R - T7O;
+ ii[WS(ios, 11)] = T7T + T7U;
+ ii[WS(ios, 27)] = T7U - T7T;
+ }
+ }
+ {
+ E T4X, T5p, T7D, T7J, T54, T7y, T5z, T5D, T5c, T5m, T5s, T7I, T5w, T5C, T5j;
+ E T5n, T4W, T7z;
+ T4W = KP707106781 * (T4U + T4V);
+ T4X = T4T - T4W;
+ T5p = T4T + T4W;
+ T7z = KP707106781 * (T3a + T3f);
+ T7D = T7z + T7C;
+ T7J = T7C - T7z;
+ {
+ E T50, T53, T5x, T5y;
+ T50 = FNMS(KP382683432, T4Z, KP923879532 * T4Y);
+ T53 = FMA(KP923879532, T51, KP382683432 * T52);
+ T54 = T50 - T53;
+ T7y = T50 + T53;
+ T5x = T5d + T5e;
+ T5y = T5g + T5h;
+ T5z = FNMS(KP195090322, T5y, KP980785280 * T5x);
+ T5D = FMA(KP195090322, T5x, KP980785280 * T5y);
+ }
+ {
+ E T58, T5b, T5q, T5r;
+ T58 = T56 - T57;
+ T5b = T59 - T5a;
+ T5c = FMA(KP555570233, T58, KP831469612 * T5b);
+ T5m = FNMS(KP831469612, T58, KP555570233 * T5b);
+ T5q = FMA(KP382683432, T4Y, KP923879532 * T4Z);
+ T5r = FNMS(KP382683432, T51, KP923879532 * T52);
+ T5s = T5q + T5r;
+ T7I = T5r - T5q;
+ }
+ {
+ E T5u, T5v, T5f, T5i;
+ T5u = T56 + T57;
+ T5v = T59 + T5a;
+ T5w = FMA(KP980785280, T5u, KP195090322 * T5v);
+ T5C = FNMS(KP195090322, T5u, KP980785280 * T5v);
+ T5f = T5d - T5e;
+ T5i = T5g - T5h;
+ T5j = FNMS(KP831469612, T5i, KP555570233 * T5f);
+ T5n = FMA(KP831469612, T5f, KP555570233 * T5i);
+ }
+ {
+ E T55, T5k, T7H, T7K;
+ T55 = T4X + T54;
+ T5k = T5c + T5j;
+ ri[WS(ios, 21)] = T55 - T5k;
+ ri[WS(ios, 5)] = T55 + T5k;
+ T7H = T5m + T5n;
+ T7K = T7I + T7J;
+ ii[WS(ios, 5)] = T7H + T7K;
+ ii[WS(ios, 21)] = T7K - T7H;
+ }
+ {
+ E T5l, T5o, T7L, T7M;
+ T5l = T4X - T54;
+ T5o = T5m - T5n;
+ ri[WS(ios, 29)] = T5l - T5o;
+ ri[WS(ios, 13)] = T5l + T5o;
+ T7L = T5j - T5c;
+ T7M = T7J - T7I;
+ ii[WS(ios, 13)] = T7L + T7M;
+ ii[WS(ios, 29)] = T7M - T7L;
+ }
+ {
+ E T5t, T5A, T7x, T7E;
+ T5t = T5p + T5s;
+ T5A = T5w + T5z;
+ ri[WS(ios, 17)] = T5t - T5A;
+ ri[WS(ios, 1)] = T5t + T5A;
+ T7x = T5C + T5D;
+ T7E = T7y + T7D;
+ ii[WS(ios, 1)] = T7x + T7E;
+ ii[WS(ios, 17)] = T7E - T7x;
+ }
+ {
+ E T5B, T5E, T7F, T7G;
+ T5B = T5p - T5s;
+ T5E = T5C - T5D;
+ ri[WS(ios, 25)] = T5B - T5E;
+ ri[WS(ios, 9)] = T5B + T5E;
+ T7F = T5z - T5w;
+ T7G = T7D - T7y;
+ ii[WS(ios, 9)] = T7F + T7G;
+ ii[WS(ios, 25)] = T7G - T7F;
+ }
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_FULL, 0, 32},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 32, "t1_32", twinstr, {340, 114, 94, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t1_32) (planner *p) {
+ X(kdft_dit_register) (p, t1_32, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t1_4.c b/src/fftw3/dft/codelets/standard/t1_4.c
new file mode 100644
index 0000000..cc869e4
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t1_4.c
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:52 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -n 4 -name t1_4 -include t.h */
+
+/*
+ * This function contains 22 FP additions, 12 FP multiplications,
+ * (or, 16 additions, 6 multiplications, 6 fused multiply/add),
+ * 13 stack variables, and 16 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t1_4.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_4.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_4.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t1_4(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 6) {
+ E T1, Tp, T6, To, Tc, Tk, Th, Tl;
+ T1 = ri[0];
+ Tp = ii[0];
+ {
+ E T3, T5, T2, T4;
+ T3 = ri[WS(ios, 2)];
+ T5 = ii[WS(ios, 2)];
+ T2 = W[2];
+ T4 = W[3];
+ T6 = FMA(T2, T3, T4 * T5);
+ To = FNMS(T4, T3, T2 * T5);
+ }
+ {
+ E T9, Tb, T8, Ta;
+ T9 = ri[WS(ios, 1)];
+ Tb = ii[WS(ios, 1)];
+ T8 = W[0];
+ Ta = W[1];
+ Tc = FMA(T8, T9, Ta * Tb);
+ Tk = FNMS(Ta, T9, T8 * Tb);
+ }
+ {
+ E Te, Tg, Td, Tf;
+ Te = ri[WS(ios, 3)];
+ Tg = ii[WS(ios, 3)];
+ Td = W[4];
+ Tf = W[5];
+ Th = FMA(Td, Te, Tf * Tg);
+ Tl = FNMS(Tf, Te, Td * Tg);
+ }
+ {
+ E T7, Ti, Tn, Tq;
+ T7 = T1 + T6;
+ Ti = Tc + Th;
+ ri[WS(ios, 2)] = T7 - Ti;
+ ri[0] = T7 + Ti;
+ Tn = Tk + Tl;
+ Tq = To + Tp;
+ ii[0] = Tn + Tq;
+ ii[WS(ios, 2)] = Tq - Tn;
+ }
+ {
+ E Tj, Tm, Tr, Ts;
+ Tj = T1 - T6;
+ Tm = Tk - Tl;
+ ri[WS(ios, 3)] = Tj - Tm;
+ ri[WS(ios, 1)] = Tj + Tm;
+ Tr = Tp - To;
+ Ts = Tc - Th;
+ ii[WS(ios, 1)] = Tr - Ts;
+ ii[WS(ios, 3)] = Ts + Tr;
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_FULL, 0, 4},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 4, "t1_4", twinstr, {16, 6, 6, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t1_4) (planner *p) {
+ X(kdft_dit_register) (p, t1_4, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t1_5.c b/src/fftw3/dft/codelets/standard/t1_5.c
new file mode 100644
index 0000000..87feed7
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t1_5.c
@@ -0,0 +1,143 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:52 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -n 5 -name t1_5 -include t.h */
+
+/*
+ * This function contains 40 FP additions, 28 FP multiplications,
+ * (or, 26 additions, 14 multiplications, 14 fused multiply/add),
+ * 29 stack variables, and 20 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t1_5.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_5.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_5.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t1_5(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ DK(KP250000000, +0.250000000000000000000000000000000000000000000);
+ DK(KP559016994, +0.559016994374947424102293417182819058860154590);
+ DK(KP587785252, +0.587785252292473129168705954639072768597652438);
+ DK(KP951056516, +0.951056516295153572116439333379382143405698634);
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 8) {
+ E T1, TE, Tu, Tx, TJ, TI, TB, TC, TD, Tc, Tn, To;
+ T1 = ri[0];
+ TE = ii[0];
+ {
+ E T6, Ts, Tm, Tw, Tb, Tt, Th, Tv;
+ {
+ E T3, T5, T2, T4;
+ T3 = ri[WS(ios, 1)];
+ T5 = ii[WS(ios, 1)];
+ T2 = W[0];
+ T4 = W[1];
+ T6 = FMA(T2, T3, T4 * T5);
+ Ts = FNMS(T4, T3, T2 * T5);
+ }
+ {
+ E Tj, Tl, Ti, Tk;
+ Tj = ri[WS(ios, 3)];
+ Tl = ii[WS(ios, 3)];
+ Ti = W[4];
+ Tk = W[5];
+ Tm = FMA(Ti, Tj, Tk * Tl);
+ Tw = FNMS(Tk, Tj, Ti * Tl);
+ }
+ {
+ E T8, Ta, T7, T9;
+ T8 = ri[WS(ios, 4)];
+ Ta = ii[WS(ios, 4)];
+ T7 = W[6];
+ T9 = W[7];
+ Tb = FMA(T7, T8, T9 * Ta);
+ Tt = FNMS(T9, T8, T7 * Ta);
+ }
+ {
+ E Te, Tg, Td, Tf;
+ Te = ri[WS(ios, 2)];
+ Tg = ii[WS(ios, 2)];
+ Td = W[2];
+ Tf = W[3];
+ Th = FMA(Td, Te, Tf * Tg);
+ Tv = FNMS(Tf, Te, Td * Tg);
+ }
+ Tu = Ts - Tt;
+ Tx = Tv - Tw;
+ TJ = Th - Tm;
+ TI = T6 - Tb;
+ TB = Ts + Tt;
+ TC = Tv + Tw;
+ TD = TB + TC;
+ Tc = T6 + Tb;
+ Tn = Th + Tm;
+ To = Tc + Tn;
+ }
+ ri[0] = T1 + To;
+ ii[0] = TD + TE;
+ {
+ E Ty, TA, Tr, Tz, Tp, Tq;
+ Ty = FMA(KP951056516, Tu, KP587785252 * Tx);
+ TA = FNMS(KP587785252, Tu, KP951056516 * Tx);
+ Tp = KP559016994 * (Tc - Tn);
+ Tq = FNMS(KP250000000, To, T1);
+ Tr = Tp + Tq;
+ Tz = Tq - Tp;
+ ri[WS(ios, 4)] = Tr - Ty;
+ ri[WS(ios, 3)] = Tz + TA;
+ ri[WS(ios, 1)] = Tr + Ty;
+ ri[WS(ios, 2)] = Tz - TA;
+ }
+ {
+ E TK, TL, TH, TM, TF, TG;
+ TK = FMA(KP951056516, TI, KP587785252 * TJ);
+ TL = FNMS(KP587785252, TI, KP951056516 * TJ);
+ TF = KP559016994 * (TB - TC);
+ TG = FNMS(KP250000000, TD, TE);
+ TH = TF + TG;
+ TM = TG - TF;
+ ii[WS(ios, 1)] = TH - TK;
+ ii[WS(ios, 3)] = TM - TL;
+ ii[WS(ios, 4)] = TK + TH;
+ ii[WS(ios, 2)] = TL + TM;
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_FULL, 0, 5},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 5, "t1_5", twinstr, {26, 14, 14, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t1_5) (planner *p) {
+ X(kdft_dit_register) (p, t1_5, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t1_6.c b/src/fftw3/dft/codelets/standard/t1_6.c
new file mode 100644
index 0000000..d474acd
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t1_6.c
@@ -0,0 +1,160 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:55 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -n 6 -name t1_6 -include t.h */
+
+/*
+ * This function contains 46 FP additions, 28 FP multiplications,
+ * (or, 32 additions, 14 multiplications, 14 fused multiply/add),
+ * 23 stack variables, and 24 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t1_6.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_6.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_6.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t1_6(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ DK(KP500000000, +0.500000000000000000000000000000000000000000000);
+ DK(KP866025403, +0.866025403784438646763723170752936183471402627);
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 10) {
+ E T7, TS, Tv, TO, Tt, TJ, Tx, TF, Ti, TI, Tw, TC;
+ {
+ E T1, TN, T6, TM;
+ T1 = ri[0];
+ TN = ii[0];
+ {
+ E T3, T5, T2, T4;
+ T3 = ri[WS(ios, 3)];
+ T5 = ii[WS(ios, 3)];
+ T2 = W[4];
+ T4 = W[5];
+ T6 = FMA(T2, T3, T4 * T5);
+ TM = FNMS(T4, T3, T2 * T5);
+ }
+ T7 = T1 - T6;
+ TS = TN - TM;
+ Tv = T1 + T6;
+ TO = TM + TN;
+ }
+ {
+ E Tn, TD, Ts, TE;
+ {
+ E Tk, Tm, Tj, Tl;
+ Tk = ri[WS(ios, 4)];
+ Tm = ii[WS(ios, 4)];
+ Tj = W[6];
+ Tl = W[7];
+ Tn = FMA(Tj, Tk, Tl * Tm);
+ TD = FNMS(Tl, Tk, Tj * Tm);
+ }
+ {
+ E Tp, Tr, To, Tq;
+ Tp = ri[WS(ios, 1)];
+ Tr = ii[WS(ios, 1)];
+ To = W[0];
+ Tq = W[1];
+ Ts = FMA(To, Tp, Tq * Tr);
+ TE = FNMS(Tq, Tp, To * Tr);
+ }
+ Tt = Tn - Ts;
+ TJ = TD + TE;
+ Tx = Tn + Ts;
+ TF = TD - TE;
+ }
+ {
+ E Tc, TA, Th, TB;
+ {
+ E T9, Tb, T8, Ta;
+ T9 = ri[WS(ios, 2)];
+ Tb = ii[WS(ios, 2)];
+ T8 = W[2];
+ Ta = W[3];
+ Tc = FMA(T8, T9, Ta * Tb);
+ TA = FNMS(Ta, T9, T8 * Tb);
+ }
+ {
+ E Te, Tg, Td, Tf;
+ Te = ri[WS(ios, 5)];
+ Tg = ii[WS(ios, 5)];
+ Td = W[8];
+ Tf = W[9];
+ Th = FMA(Td, Te, Tf * Tg);
+ TB = FNMS(Tf, Te, Td * Tg);
+ }
+ Ti = Tc - Th;
+ TI = TA + TB;
+ Tw = Tc + Th;
+ TC = TA - TB;
+ }
+ {
+ E TG, Tu, Tz, TR, TT, TU;
+ TG = KP866025403 * (TC - TF);
+ Tu = Ti + Tt;
+ Tz = FNMS(KP500000000, Tu, T7);
+ ri[WS(ios, 3)] = T7 + Tu;
+ ri[WS(ios, 1)] = Tz + TG;
+ ri[WS(ios, 5)] = Tz - TG;
+ TR = KP866025403 * (Tt - Ti);
+ TT = TC + TF;
+ TU = FNMS(KP500000000, TT, TS);
+ ii[WS(ios, 1)] = TR + TU;
+ ii[WS(ios, 3)] = TT + TS;
+ ii[WS(ios, 5)] = TU - TR;
+ }
+ {
+ E TK, Ty, TH, TQ, TL, TP;
+ TK = KP866025403 * (TI - TJ);
+ Ty = Tw + Tx;
+ TH = FNMS(KP500000000, Ty, Tv);
+ ri[0] = Tv + Ty;
+ ri[WS(ios, 4)] = TH + TK;
+ ri[WS(ios, 2)] = TH - TK;
+ TQ = KP866025403 * (Tx - Tw);
+ TL = TI + TJ;
+ TP = FNMS(KP500000000, TL, TO);
+ ii[0] = TL + TO;
+ ii[WS(ios, 4)] = TQ + TP;
+ ii[WS(ios, 2)] = TP - TQ;
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_FULL, 0, 6},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 6, "t1_6", twinstr, {32, 14, 14, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t1_6) (planner *p) {
+ X(kdft_dit_register) (p, t1_6, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t1_64.c b/src/fftw3/dft/codelets/standard/t1_64.c
new file mode 100644
index 0000000..a03697b
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t1_64.c
@@ -0,0 +1,2001 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:30:08 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -n 64 -name t1_64 -include t.h */
+
+/*
+ * This function contains 1038 FP additions, 500 FP multiplications,
+ * (or, 808 additions, 270 multiplications, 230 fused multiply/add),
+ * 176 stack variables, and 256 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t1_64.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_64.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_64.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t1_64(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ DK(KP471396736, +0.471396736825997648556387625905254377657460319);
+ DK(KP881921264, +0.881921264348355029712756863660388349508442621);
+ DK(KP290284677, +0.290284677254462367636192375817395274691476278);
+ DK(KP956940335, +0.956940335732208864935797886980269969482849206);
+ DK(KP634393284, +0.634393284163645498215171613225493370675687095);
+ DK(KP773010453, +0.773010453362736960810906609758469800971041293);
+ DK(KP098017140, +0.098017140329560601994195563888641845861136673);
+ DK(KP995184726, +0.995184726672196886244836953109479921575474869);
+ DK(KP555570233, +0.555570233019602224742830813948532874374937191);
+ DK(KP831469612, +0.831469612302545237078788377617905756738560812);
+ DK(KP980785280, +0.980785280403230449126182236134239036973933731);
+ DK(KP195090322, +0.195090322016128267848284868477022240927691618);
+ DK(KP923879532, +0.923879532511286756128183189396788286822416626);
+ DK(KP382683432, +0.382683432365089771728459984030398866761344562);
+ DK(KP707106781, +0.707106781186547524400844362104849039284835938);
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 126) {
+ E Tj, TcL, ThT, Tin, T6b, Taz, TgT, Thn, TG, Thm, TcO, TgO, T6m, ThQ, TaC;
+ E Tim, T14, Tfq, T6y, T9O, TaG, Tc0, TcU, TeE, T1r, Tfr, T6J, T9P, TaJ, Tc1;
+ E TcZ, TeF, T1Q, T2d, Tfx, Tfu, Tfv, Tfw, T6Q, TaM, Tdb, TeJ, T71, TaQ, T7a;
+ E TaN, Td6, TeI, T77, TaP, T2B, T2Y, Tfz, TfA, TfB, TfC, T7h, TaW, Tdm, TeM;
+ E T7s, TaU, T7B, TaX, Tdh, TeL, T7y, TaT, T5j, TfR, Tec, Tf0, TfY, Tgy, T8D;
+ E Tbl, T8O, Tbx, T9l, Tbm, TdV, TeX, T9i, Tbw, T3M, TfL, TdL, TeQ, TfI, Tgt;
+ E T7K, Tb2, T7V, Tbe, T8s, Tb3, Tdu, TeT, T8p, Tbd, T4x, TfJ, TdE, TdM, TfO;
+ E Tgu, T87, T8v, T8i, T8u, Tba, Tbg, Tdz, TdN, Tb7, Tbh, T64, TfZ, Te5, Ted;
+ E TfU, Tgz, T90, T9o, T9b, T9n, Tbt, Tbz, Te0, Tee, Tbq, TbA;
+ {
+ E T1, TgR, T6, TgQ, Tc, T68, Th, T69;
+ T1 = ri[0];
+ TgR = ii[0];
+ {
+ E T3, T5, T2, T4;
+ T3 = ri[WS(ios, 32)];
+ T5 = ii[WS(ios, 32)];
+ T2 = W[62];
+ T4 = W[63];
+ T6 = FMA(T2, T3, T4 * T5);
+ TgQ = FNMS(T4, T3, T2 * T5);
+ }
+ {
+ E T9, Tb, T8, Ta;
+ T9 = ri[WS(ios, 16)];
+ Tb = ii[WS(ios, 16)];
+ T8 = W[30];
+ Ta = W[31];
+ Tc = FMA(T8, T9, Ta * Tb);
+ T68 = FNMS(Ta, T9, T8 * Tb);
+ }
+ {
+ E Te, Tg, Td, Tf;
+ Te = ri[WS(ios, 48)];
+ Tg = ii[WS(ios, 48)];
+ Td = W[94];
+ Tf = W[95];
+ Th = FMA(Td, Te, Tf * Tg);
+ T69 = FNMS(Tf, Te, Td * Tg);
+ }
+ {
+ E T7, Ti, ThR, ThS;
+ T7 = T1 + T6;
+ Ti = Tc + Th;
+ Tj = T7 + Ti;
+ TcL = T7 - Ti;
+ ThR = TgR - TgQ;
+ ThS = Tc - Th;
+ ThT = ThR - ThS;
+ Tin = ThS + ThR;
+ }
+ {
+ E T67, T6a, TgP, TgS;
+ T67 = T1 - T6;
+ T6a = T68 - T69;
+ T6b = T67 - T6a;
+ Taz = T67 + T6a;
+ TgP = T68 + T69;
+ TgS = TgQ + TgR;
+ TgT = TgP + TgS;
+ Thn = TgS - TgP;
+ }
+ }
+ {
+ E To, T6c, Tt, T6d, T6e, T6f, Tz, T6i, TE, T6j, T6h, T6k;
+ {
+ E Tl, Tn, Tk, Tm;
+ Tl = ri[WS(ios, 8)];
+ Tn = ii[WS(ios, 8)];
+ Tk = W[14];
+ Tm = W[15];
+ To = FMA(Tk, Tl, Tm * Tn);
+ T6c = FNMS(Tm, Tl, Tk * Tn);
+ }
+ {
+ E Tq, Ts, Tp, Tr;
+ Tq = ri[WS(ios, 40)];
+ Ts = ii[WS(ios, 40)];
+ Tp = W[78];
+ Tr = W[79];
+ Tt = FMA(Tp, Tq, Tr * Ts);
+ T6d = FNMS(Tr, Tq, Tp * Ts);
+ }
+ T6e = T6c - T6d;
+ T6f = To - Tt;
+ {
+ E Tw, Ty, Tv, Tx;
+ Tw = ri[WS(ios, 56)];
+ Ty = ii[WS(ios, 56)];
+ Tv = W[110];
+ Tx = W[111];
+ Tz = FMA(Tv, Tw, Tx * Ty);
+ T6i = FNMS(Tx, Tw, Tv * Ty);
+ }
+ {
+ E TB, TD, TA, TC;
+ TB = ri[WS(ios, 24)];
+ TD = ii[WS(ios, 24)];
+ TA = W[46];
+ TC = W[47];
+ TE = FMA(TA, TB, TC * TD);
+ T6j = FNMS(TC, TB, TA * TD);
+ }
+ T6h = Tz - TE;
+ T6k = T6i - T6j;
+ {
+ E Tu, TF, TcM, TcN;
+ Tu = To + Tt;
+ TF = Tz + TE;
+ TG = Tu + TF;
+ Thm = TF - Tu;
+ TcM = T6c + T6d;
+ TcN = T6i + T6j;
+ TcO = TcM - TcN;
+ TgO = TcM + TcN;
+ }
+ {
+ E T6g, T6l, TaA, TaB;
+ T6g = T6e - T6f;
+ T6l = T6h + T6k;
+ T6m = KP707106781 * (T6g - T6l);
+ ThQ = KP707106781 * (T6g + T6l);
+ TaA = T6f + T6e;
+ TaB = T6h - T6k;
+ TaC = KP707106781 * (TaA + TaB);
+ Tim = KP707106781 * (TaB - TaA);
+ }
+ }
+ {
+ E TS, TcQ, T6q, T6t, T13, TcR, T6r, T6w, T6s, T6x;
+ {
+ E TM, T6o, TR, T6p;
+ {
+ E TJ, TL, TI, TK;
+ TJ = ri[WS(ios, 4)];
+ TL = ii[WS(ios, 4)];
+ TI = W[6];
+ TK = W[7];
+ TM = FMA(TI, TJ, TK * TL);
+ T6o = FNMS(TK, TJ, TI * TL);
+ }
+ {
+ E TO, TQ, TN, TP;
+ TO = ri[WS(ios, 36)];
+ TQ = ii[WS(ios, 36)];
+ TN = W[70];
+ TP = W[71];
+ TR = FMA(TN, TO, TP * TQ);
+ T6p = FNMS(TP, TO, TN * TQ);
+ }
+ TS = TM + TR;
+ TcQ = T6o + T6p;
+ T6q = T6o - T6p;
+ T6t = TM - TR;
+ }
+ {
+ E TX, T6u, T12, T6v;
+ {
+ E TU, TW, TT, TV;
+ TU = ri[WS(ios, 20)];
+ TW = ii[WS(ios, 20)];
+ TT = W[38];
+ TV = W[39];
+ TX = FMA(TT, TU, TV * TW);
+ T6u = FNMS(TV, TU, TT * TW);
+ }
+ {
+ E TZ, T11, TY, T10;
+ TZ = ri[WS(ios, 52)];
+ T11 = ii[WS(ios, 52)];
+ TY = W[102];
+ T10 = W[103];
+ T12 = FMA(TY, TZ, T10 * T11);
+ T6v = FNMS(T10, TZ, TY * T11);
+ }
+ T13 = TX + T12;
+ TcR = T6u + T6v;
+ T6r = TX - T12;
+ T6w = T6u - T6v;
+ }
+ T14 = TS + T13;
+ Tfq = TcQ + TcR;
+ T6s = T6q + T6r;
+ T6x = T6t - T6w;
+ T6y = FNMS(KP923879532, T6x, KP382683432 * T6s);
+ T9O = FMA(KP923879532, T6s, KP382683432 * T6x);
+ {
+ E TaE, TaF, TcS, TcT;
+ TaE = T6q - T6r;
+ TaF = T6t + T6w;
+ TaG = FNMS(KP382683432, TaF, KP923879532 * TaE);
+ Tc0 = FMA(KP382683432, TaE, KP923879532 * TaF);
+ TcS = TcQ - TcR;
+ TcT = TS - T13;
+ TcU = TcS - TcT;
+ TeE = TcT + TcS;
+ }
+ }
+ {
+ E T1f, TcW, T6B, T6E, T1q, TcX, T6C, T6H, T6D, T6I;
+ {
+ E T19, T6z, T1e, T6A;
+ {
+ E T16, T18, T15, T17;
+ T16 = ri[WS(ios, 60)];
+ T18 = ii[WS(ios, 60)];
+ T15 = W[118];
+ T17 = W[119];
+ T19 = FMA(T15, T16, T17 * T18);
+ T6z = FNMS(T17, T16, T15 * T18);
+ }
+ {
+ E T1b, T1d, T1a, T1c;
+ T1b = ri[WS(ios, 28)];
+ T1d = ii[WS(ios, 28)];
+ T1a = W[54];
+ T1c = W[55];
+ T1e = FMA(T1a, T1b, T1c * T1d);
+ T6A = FNMS(T1c, T1b, T1a * T1d);
+ }
+ T1f = T19 + T1e;
+ TcW = T6z + T6A;
+ T6B = T6z - T6A;
+ T6E = T19 - T1e;
+ }
+ {
+ E T1k, T6F, T1p, T6G;
+ {
+ E T1h, T1j, T1g, T1i;
+ T1h = ri[WS(ios, 12)];
+ T1j = ii[WS(ios, 12)];
+ T1g = W[22];
+ T1i = W[23];
+ T1k = FMA(T1g, T1h, T1i * T1j);
+ T6F = FNMS(T1i, T1h, T1g * T1j);
+ }
+ {
+ E T1m, T1o, T1l, T1n;
+ T1m = ri[WS(ios, 44)];
+ T1o = ii[WS(ios, 44)];
+ T1l = W[86];
+ T1n = W[87];
+ T1p = FMA(T1l, T1m, T1n * T1o);
+ T6G = FNMS(T1n, T1m, T1l * T1o);
+ }
+ T1q = T1k + T1p;
+ TcX = T6F + T6G;
+ T6C = T1k - T1p;
+ T6H = T6F - T6G;
+ }
+ T1r = T1f + T1q;
+ Tfr = TcW + TcX;
+ T6D = T6B + T6C;
+ T6I = T6E - T6H;
+ T6J = FMA(KP382683432, T6D, KP923879532 * T6I);
+ T9P = FNMS(KP923879532, T6D, KP382683432 * T6I);
+ {
+ E TaH, TaI, TcV, TcY;
+ TaH = T6B - T6C;
+ TaI = T6E + T6H;
+ TaJ = FMA(KP923879532, TaH, KP382683432 * TaI);
+ Tc1 = FNMS(KP382683432, TaH, KP923879532 * TaI);
+ TcV = T1f - T1q;
+ TcY = TcW - TcX;
+ TcZ = TcV + TcY;
+ TeF = TcV - TcY;
+ }
+ }
+ {
+ E T1y, T6M, T1D, T6N, T1E, Td2, T1J, T74, T1O, T75, T1P, Td3, T21, Td8, T6W;
+ E T6Z, T2c, Td9, T6R, T6U;
+ {
+ E T1v, T1x, T1u, T1w;
+ T1v = ri[WS(ios, 2)];
+ T1x = ii[WS(ios, 2)];
+ T1u = W[2];
+ T1w = W[3];
+ T1y = FMA(T1u, T1v, T1w * T1x);
+ T6M = FNMS(T1w, T1v, T1u * T1x);
+ }
+ {
+ E T1A, T1C, T1z, T1B;
+ T1A = ri[WS(ios, 34)];
+ T1C = ii[WS(ios, 34)];
+ T1z = W[66];
+ T1B = W[67];
+ T1D = FMA(T1z, T1A, T1B * T1C);
+ T6N = FNMS(T1B, T1A, T1z * T1C);
+ }
+ T1E = T1y + T1D;
+ Td2 = T6M + T6N;
+ {
+ E T1G, T1I, T1F, T1H;
+ T1G = ri[WS(ios, 18)];
+ T1I = ii[WS(ios, 18)];
+ T1F = W[34];
+ T1H = W[35];
+ T1J = FMA(T1F, T1G, T1H * T1I);
+ T74 = FNMS(T1H, T1G, T1F * T1I);
+ }
+ {
+ E T1L, T1N, T1K, T1M;
+ T1L = ri[WS(ios, 50)];
+ T1N = ii[WS(ios, 50)];
+ T1K = W[98];
+ T1M = W[99];
+ T1O = FMA(T1K, T1L, T1M * T1N);
+ T75 = FNMS(T1M, T1L, T1K * T1N);
+ }
+ T1P = T1J + T1O;
+ Td3 = T74 + T75;
+ {
+ E T1V, T6X, T20, T6Y;
+ {
+ E T1S, T1U, T1R, T1T;
+ T1S = ri[WS(ios, 10)];
+ T1U = ii[WS(ios, 10)];
+ T1R = W[18];
+ T1T = W[19];
+ T1V = FMA(T1R, T1S, T1T * T1U);
+ T6X = FNMS(T1T, T1S, T1R * T1U);
+ }
+ {
+ E T1X, T1Z, T1W, T1Y;
+ T1X = ri[WS(ios, 42)];
+ T1Z = ii[WS(ios, 42)];
+ T1W = W[82];
+ T1Y = W[83];
+ T20 = FMA(T1W, T1X, T1Y * T1Z);
+ T6Y = FNMS(T1Y, T1X, T1W * T1Z);
+ }
+ T21 = T1V + T20;
+ Td8 = T6X + T6Y;
+ T6W = T1V - T20;
+ T6Z = T6X - T6Y;
+ }
+ {
+ E T26, T6S, T2b, T6T;
+ {
+ E T23, T25, T22, T24;
+ T23 = ri[WS(ios, 58)];
+ T25 = ii[WS(ios, 58)];
+ T22 = W[114];
+ T24 = W[115];
+ T26 = FMA(T22, T23, T24 * T25);
+ T6S = FNMS(T24, T23, T22 * T25);
+ }
+ {
+ E T28, T2a, T27, T29;
+ T28 = ri[WS(ios, 26)];
+ T2a = ii[WS(ios, 26)];
+ T27 = W[50];
+ T29 = W[51];
+ T2b = FMA(T27, T28, T29 * T2a);
+ T6T = FNMS(T29, T28, T27 * T2a);
+ }
+ T2c = T26 + T2b;
+ Td9 = T6S + T6T;
+ T6R = T26 - T2b;
+ T6U = T6S - T6T;
+ }
+ T1Q = T1E + T1P;
+ T2d = T21 + T2c;
+ Tfx = T1Q - T2d;
+ Tfu = Td2 + Td3;
+ Tfv = Td8 + Td9;
+ Tfw = Tfu - Tfv;
+ {
+ E T6O, T6P, Td7, Tda;
+ T6O = T6M - T6N;
+ T6P = T1J - T1O;
+ T6Q = T6O + T6P;
+ TaM = T6O - T6P;
+ Td7 = T1E - T1P;
+ Tda = Td8 - Td9;
+ Tdb = Td7 - Tda;
+ TeJ = Td7 + Tda;
+ }
+ {
+ E T6V, T70, T78, T79;
+ T6V = T6R - T6U;
+ T70 = T6W + T6Z;
+ T71 = KP707106781 * (T6V - T70);
+ TaQ = KP707106781 * (T70 + T6V);
+ T78 = T6Z - T6W;
+ T79 = T6R + T6U;
+ T7a = KP707106781 * (T78 - T79);
+ TaN = KP707106781 * (T78 + T79);
+ }
+ {
+ E Td4, Td5, T73, T76;
+ Td4 = Td2 - Td3;
+ Td5 = T2c - T21;
+ Td6 = Td4 - Td5;
+ TeI = Td4 + Td5;
+ T73 = T1y - T1D;
+ T76 = T74 - T75;
+ T77 = T73 - T76;
+ TaP = T73 + T76;
+ }
+ }
+ {
+ E T2j, T7d, T2o, T7e, T2p, Tdd, T2u, T7v, T2z, T7w, T2A, Tde, T2M, Tdj, T7n;
+ E T7q, T2X, Tdk, T7i, T7l;
+ {
+ E T2g, T2i, T2f, T2h;
+ T2g = ri[WS(ios, 62)];
+ T2i = ii[WS(ios, 62)];
+ T2f = W[122];
+ T2h = W[123];
+ T2j = FMA(T2f, T2g, T2h * T2i);
+ T7d = FNMS(T2h, T2g, T2f * T2i);
+ }
+ {
+ E T2l, T2n, T2k, T2m;
+ T2l = ri[WS(ios, 30)];
+ T2n = ii[WS(ios, 30)];
+ T2k = W[58];
+ T2m = W[59];
+ T2o = FMA(T2k, T2l, T2m * T2n);
+ T7e = FNMS(T2m, T2l, T2k * T2n);
+ }
+ T2p = T2j + T2o;
+ Tdd = T7d + T7e;
+ {
+ E T2r, T2t, T2q, T2s;
+ T2r = ri[WS(ios, 14)];
+ T2t = ii[WS(ios, 14)];
+ T2q = W[26];
+ T2s = W[27];
+ T2u = FMA(T2q, T2r, T2s * T2t);
+ T7v = FNMS(T2s, T2r, T2q * T2t);
+ }
+ {
+ E T2w, T2y, T2v, T2x;
+ T2w = ri[WS(ios, 46)];
+ T2y = ii[WS(ios, 46)];
+ T2v = W[90];
+ T2x = W[91];
+ T2z = FMA(T2v, T2w, T2x * T2y);
+ T7w = FNMS(T2x, T2w, T2v * T2y);
+ }
+ T2A = T2u + T2z;
+ Tde = T7v + T7w;
+ {
+ E T2G, T7o, T2L, T7p;
+ {
+ E T2D, T2F, T2C, T2E;
+ T2D = ri[WS(ios, 6)];
+ T2F = ii[WS(ios, 6)];
+ T2C = W[10];
+ T2E = W[11];
+ T2G = FMA(T2C, T2D, T2E * T2F);
+ T7o = FNMS(T2E, T2D, T2C * T2F);
+ }
+ {
+ E T2I, T2K, T2H, T2J;
+ T2I = ri[WS(ios, 38)];
+ T2K = ii[WS(ios, 38)];
+ T2H = W[74];
+ T2J = W[75];
+ T2L = FMA(T2H, T2I, T2J * T2K);
+ T7p = FNMS(T2J, T2I, T2H * T2K);
+ }
+ T2M = T2G + T2L;
+ Tdj = T7o + T7p;
+ T7n = T2G - T2L;
+ T7q = T7o - T7p;
+ }
+ {
+ E T2R, T7j, T2W, T7k;
+ {
+ E T2O, T2Q, T2N, T2P;
+ T2O = ri[WS(ios, 54)];
+ T2Q = ii[WS(ios, 54)];
+ T2N = W[106];
+ T2P = W[107];
+ T2R = FMA(T2N, T2O, T2P * T2Q);
+ T7j = FNMS(T2P, T2O, T2N * T2Q);
+ }
+ {
+ E T2T, T2V, T2S, T2U;
+ T2T = ri[WS(ios, 22)];
+ T2V = ii[WS(ios, 22)];
+ T2S = W[42];
+ T2U = W[43];
+ T2W = FMA(T2S, T2T, T2U * T2V);
+ T7k = FNMS(T2U, T2T, T2S * T2V);
+ }
+ T2X = T2R + T2W;
+ Tdk = T7j + T7k;
+ T7i = T2R - T2W;
+ T7l = T7j - T7k;
+ }
+ T2B = T2p + T2A;
+ T2Y = T2M + T2X;
+ Tfz = T2B - T2Y;
+ TfA = Tdd + Tde;
+ TfB = Tdj + Tdk;
+ TfC = TfA - TfB;
+ {
+ E T7f, T7g, Tdi, Tdl;
+ T7f = T7d - T7e;
+ T7g = T2u - T2z;
+ T7h = T7f + T7g;
+ TaW = T7f - T7g;
+ Tdi = T2p - T2A;
+ Tdl = Tdj - Tdk;
+ Tdm = Tdi - Tdl;
+ TeM = Tdi + Tdl;
+ }
+ {
+ E T7m, T7r, T7z, T7A;
+ T7m = T7i - T7l;
+ T7r = T7n + T7q;
+ T7s = KP707106781 * (T7m - T7r);
+ TaU = KP707106781 * (T7r + T7m);
+ T7z = T7q - T7n;
+ T7A = T7i + T7l;
+ T7B = KP707106781 * (T7z - T7A);
+ TaX = KP707106781 * (T7z + T7A);
+ }
+ {
+ E Tdf, Tdg, T7u, T7x;
+ Tdf = Tdd - Tde;
+ Tdg = T2X - T2M;
+ Tdh = Tdf - Tdg;
+ TeL = Tdf + Tdg;
+ T7u = T2j - T2o;
+ T7x = T7v - T7w;
+ T7y = T7u - T7x;
+ TaT = T7u + T7x;
+ }
+ }
+ {
+ E T4D, T9e, T4I, T9f, T4J, Te8, T4O, T8A, T4T, T8B, T4U, Te9, T56, TdS, T8G;
+ E T8H, T5h, TdT, T8J, T8M;
+ {
+ E T4A, T4C, T4z, T4B;
+ T4A = ri[WS(ios, 63)];
+ T4C = ii[WS(ios, 63)];
+ T4z = W[124];
+ T4B = W[125];
+ T4D = FMA(T4z, T4A, T4B * T4C);
+ T9e = FNMS(T4B, T4A, T4z * T4C);
+ }
+ {
+ E T4F, T4H, T4E, T4G;
+ T4F = ri[WS(ios, 31)];
+ T4H = ii[WS(ios, 31)];
+ T4E = W[60];
+ T4G = W[61];
+ T4I = FMA(T4E, T4F, T4G * T4H);
+ T9f = FNMS(T4G, T4F, T4E * T4H);
+ }
+ T4J = T4D + T4I;
+ Te8 = T9e + T9f;
+ {
+ E T4L, T4N, T4K, T4M;
+ T4L = ri[WS(ios, 15)];
+ T4N = ii[WS(ios, 15)];
+ T4K = W[28];
+ T4M = W[29];
+ T4O = FMA(T4K, T4L, T4M * T4N);
+ T8A = FNMS(T4M, T4L, T4K * T4N);
+ }
+ {
+ E T4Q, T4S, T4P, T4R;
+ T4Q = ri[WS(ios, 47)];
+ T4S = ii[WS(ios, 47)];
+ T4P = W[92];
+ T4R = W[93];
+ T4T = FMA(T4P, T4Q, T4R * T4S);
+ T8B = FNMS(T4R, T4Q, T4P * T4S);
+ }
+ T4U = T4O + T4T;
+ Te9 = T8A + T8B;
+ {
+ E T50, T8E, T55, T8F;
+ {
+ E T4X, T4Z, T4W, T4Y;
+ T4X = ri[WS(ios, 7)];
+ T4Z = ii[WS(ios, 7)];
+ T4W = W[12];
+ T4Y = W[13];
+ T50 = FMA(T4W, T4X, T4Y * T4Z);
+ T8E = FNMS(T4Y, T4X, T4W * T4Z);
+ }
+ {
+ E T52, T54, T51, T53;
+ T52 = ri[WS(ios, 39)];
+ T54 = ii[WS(ios, 39)];
+ T51 = W[76];
+ T53 = W[77];
+ T55 = FMA(T51, T52, T53 * T54);
+ T8F = FNMS(T53, T52, T51 * T54);
+ }
+ T56 = T50 + T55;
+ TdS = T8E + T8F;
+ T8G = T8E - T8F;
+ T8H = T50 - T55;
+ }
+ {
+ E T5b, T8K, T5g, T8L;
+ {
+ E T58, T5a, T57, T59;
+ T58 = ri[WS(ios, 55)];
+ T5a = ii[WS(ios, 55)];
+ T57 = W[108];
+ T59 = W[109];
+ T5b = FMA(T57, T58, T59 * T5a);
+ T8K = FNMS(T59, T58, T57 * T5a);
+ }
+ {
+ E T5d, T5f, T5c, T5e;
+ T5d = ri[WS(ios, 23)];
+ T5f = ii[WS(ios, 23)];
+ T5c = W[44];
+ T5e = W[45];
+ T5g = FMA(T5c, T5d, T5e * T5f);
+ T8L = FNMS(T5e, T5d, T5c * T5f);
+ }
+ T5h = T5b + T5g;
+ TdT = T8K + T8L;
+ T8J = T5b - T5g;
+ T8M = T8K - T8L;
+ }
+ {
+ E T4V, T5i, Tea, Teb;
+ T4V = T4J + T4U;
+ T5i = T56 + T5h;
+ T5j = T4V + T5i;
+ TfR = T4V - T5i;
+ Tea = Te8 - Te9;
+ Teb = T5h - T56;
+ Tec = Tea - Teb;
+ Tf0 = Tea + Teb;
+ }
+ {
+ E TfW, TfX, T8z, T8C;
+ TfW = Te8 + Te9;
+ TfX = TdS + TdT;
+ TfY = TfW - TfX;
+ Tgy = TfW + TfX;
+ T8z = T4D - T4I;
+ T8C = T8A - T8B;
+ T8D = T8z - T8C;
+ Tbl = T8z + T8C;
+ }
+ {
+ E T8I, T8N, T9j, T9k;
+ T8I = T8G - T8H;
+ T8N = T8J + T8M;
+ T8O = KP707106781 * (T8I - T8N);
+ Tbx = KP707106781 * (T8I + T8N);
+ T9j = T8J - T8M;
+ T9k = T8H + T8G;
+ T9l = KP707106781 * (T9j - T9k);
+ Tbm = KP707106781 * (T9k + T9j);
+ }
+ {
+ E TdR, TdU, T9g, T9h;
+ TdR = T4J - T4U;
+ TdU = TdS - TdT;
+ TdV = TdR - TdU;
+ TeX = TdR + TdU;
+ T9g = T9e - T9f;
+ T9h = T4O - T4T;
+ T9i = T9g + T9h;
+ Tbw = T9g - T9h;
+ }
+ }
+ {
+ E T36, T7G, T3b, T7H, T3c, Tdq, T3h, T8m, T3m, T8n, T3n, Tdr, T3z, TdI, T7Q;
+ E T7T, T3K, TdJ, T7L, T7O;
+ {
+ E T33, T35, T32, T34;
+ T33 = ri[WS(ios, 1)];
+ T35 = ii[WS(ios, 1)];
+ T32 = W[0];
+ T34 = W[1];
+ T36 = FMA(T32, T33, T34 * T35);
+ T7G = FNMS(T34, T33, T32 * T35);
+ }
+ {
+ E T38, T3a, T37, T39;
+ T38 = ri[WS(ios, 33)];
+ T3a = ii[WS(ios, 33)];
+ T37 = W[64];
+ T39 = W[65];
+ T3b = FMA(T37, T38, T39 * T3a);
+ T7H = FNMS(T39, T38, T37 * T3a);
+ }
+ T3c = T36 + T3b;
+ Tdq = T7G + T7H;
+ {
+ E T3e, T3g, T3d, T3f;
+ T3e = ri[WS(ios, 17)];
+ T3g = ii[WS(ios, 17)];
+ T3d = W[32];
+ T3f = W[33];
+ T3h = FMA(T3d, T3e, T3f * T3g);
+ T8m = FNMS(T3f, T3e, T3d * T3g);
+ }
+ {
+ E T3j, T3l, T3i, T3k;
+ T3j = ri[WS(ios, 49)];
+ T3l = ii[WS(ios, 49)];
+ T3i = W[96];
+ T3k = W[97];
+ T3m = FMA(T3i, T3j, T3k * T3l);
+ T8n = FNMS(T3k, T3j, T3i * T3l);
+ }
+ T3n = T3h + T3m;
+ Tdr = T8m + T8n;
+ {
+ E T3t, T7R, T3y, T7S;
+ {
+ E T3q, T3s, T3p, T3r;
+ T3q = ri[WS(ios, 9)];
+ T3s = ii[WS(ios, 9)];
+ T3p = W[16];
+ T3r = W[17];
+ T3t = FMA(T3p, T3q, T3r * T3s);
+ T7R = FNMS(T3r, T3q, T3p * T3s);
+ }
+ {
+ E T3v, T3x, T3u, T3w;
+ T3v = ri[WS(ios, 41)];
+ T3x = ii[WS(ios, 41)];
+ T3u = W[80];
+ T3w = W[81];
+ T3y = FMA(T3u, T3v, T3w * T3x);
+ T7S = FNMS(T3w, T3v, T3u * T3x);
+ }
+ T3z = T3t + T3y;
+ TdI = T7R + T7S;
+ T7Q = T3t - T3y;
+ T7T = T7R - T7S;
+ }
+ {
+ E T3E, T7M, T3J, T7N;
+ {
+ E T3B, T3D, T3A, T3C;
+ T3B = ri[WS(ios, 57)];
+ T3D = ii[WS(ios, 57)];
+ T3A = W[112];
+ T3C = W[113];
+ T3E = FMA(T3A, T3B, T3C * T3D);
+ T7M = FNMS(T3C, T3B, T3A * T3D);
+ }
+ {
+ E T3G, T3I, T3F, T3H;
+ T3G = ri[WS(ios, 25)];
+ T3I = ii[WS(ios, 25)];
+ T3F = W[48];
+ T3H = W[49];
+ T3J = FMA(T3F, T3G, T3H * T3I);
+ T7N = FNMS(T3H, T3G, T3F * T3I);
+ }
+ T3K = T3E + T3J;
+ TdJ = T7M + T7N;
+ T7L = T3E - T3J;
+ T7O = T7M - T7N;
+ }
+ {
+ E T3o, T3L, TdH, TdK;
+ T3o = T3c + T3n;
+ T3L = T3z + T3K;
+ T3M = T3o + T3L;
+ TfL = T3o - T3L;
+ TdH = T3c - T3n;
+ TdK = TdI - TdJ;
+ TdL = TdH - TdK;
+ TeQ = TdH + TdK;
+ }
+ {
+ E TfG, TfH, T7I, T7J;
+ TfG = Tdq + Tdr;
+ TfH = TdI + TdJ;
+ TfI = TfG - TfH;
+ Tgt = TfG + TfH;
+ T7I = T7G - T7H;
+ T7J = T3h - T3m;
+ T7K = T7I + T7J;
+ Tb2 = T7I - T7J;
+ }
+ {
+ E T7P, T7U, T8q, T8r;
+ T7P = T7L - T7O;
+ T7U = T7Q + T7T;
+ T7V = KP707106781 * (T7P - T7U);
+ Tbe = KP707106781 * (T7U + T7P);
+ T8q = T7T - T7Q;
+ T8r = T7L + T7O;
+ T8s = KP707106781 * (T8q - T8r);
+ Tb3 = KP707106781 * (T8q + T8r);
+ }
+ {
+ E Tds, Tdt, T8l, T8o;
+ Tds = Tdq - Tdr;
+ Tdt = T3K - T3z;
+ Tdu = Tds - Tdt;
+ TeT = Tds + Tdt;
+ T8l = T36 - T3b;
+ T8o = T8m - T8n;
+ T8p = T8l - T8o;
+ Tbd = T8l + T8o;
+ }
+ }
+ {
+ E T3X, TdB, T8a, T8d, T4v, Tdx, T80, T85, T48, TdC, T8b, T8g, T4k, Tdw, T7X;
+ E T84;
+ {
+ E T3R, T88, T3W, T89;
+ {
+ E T3O, T3Q, T3N, T3P;
+ T3O = ri[WS(ios, 5)];
+ T3Q = ii[WS(ios, 5)];
+ T3N = W[8];
+ T3P = W[9];
+ T3R = FMA(T3N, T3O, T3P * T3Q);
+ T88 = FNMS(T3P, T3O, T3N * T3Q);
+ }
+ {
+ E T3T, T3V, T3S, T3U;
+ T3T = ri[WS(ios, 37)];
+ T3V = ii[WS(ios, 37)];
+ T3S = W[72];
+ T3U = W[73];
+ T3W = FMA(T3S, T3T, T3U * T3V);
+ T89 = FNMS(T3U, T3T, T3S * T3V);
+ }
+ T3X = T3R + T3W;
+ TdB = T88 + T89;
+ T8a = T88 - T89;
+ T8d = T3R - T3W;
+ }
+ {
+ E T4p, T7Y, T4u, T7Z;
+ {
+ E T4m, T4o, T4l, T4n;
+ T4m = ri[WS(ios, 13)];
+ T4o = ii[WS(ios, 13)];
+ T4l = W[24];
+ T4n = W[25];
+ T4p = FMA(T4l, T4m, T4n * T4o);
+ T7Y = FNMS(T4n, T4m, T4l * T4o);
+ }
+ {
+ E T4r, T4t, T4q, T4s;
+ T4r = ri[WS(ios, 45)];
+ T4t = ii[WS(ios, 45)];
+ T4q = W[88];
+ T4s = W[89];
+ T4u = FMA(T4q, T4r, T4s * T4t);
+ T7Z = FNMS(T4s, T4r, T4q * T4t);
+ }
+ T4v = T4p + T4u;
+ Tdx = T7Y + T7Z;
+ T80 = T7Y - T7Z;
+ T85 = T4p - T4u;
+ }
+ {
+ E T42, T8e, T47, T8f;
+ {
+ E T3Z, T41, T3Y, T40;
+ T3Z = ri[WS(ios, 21)];
+ T41 = ii[WS(ios, 21)];
+ T3Y = W[40];
+ T40 = W[41];
+ T42 = FMA(T3Y, T3Z, T40 * T41);
+ T8e = FNMS(T40, T3Z, T3Y * T41);
+ }
+ {
+ E T44, T46, T43, T45;
+ T44 = ri[WS(ios, 53)];
+ T46 = ii[WS(ios, 53)];
+ T43 = W[104];
+ T45 = W[105];
+ T47 = FMA(T43, T44, T45 * T46);
+ T8f = FNMS(T45, T44, T43 * T46);
+ }
+ T48 = T42 + T47;
+ TdC = T8e + T8f;
+ T8b = T42 - T47;
+ T8g = T8e - T8f;
+ }
+ {
+ E T4e, T82, T4j, T83;
+ {
+ E T4b, T4d, T4a, T4c;
+ T4b = ri[WS(ios, 61)];
+ T4d = ii[WS(ios, 61)];
+ T4a = W[120];
+ T4c = W[121];
+ T4e = FMA(T4a, T4b, T4c * T4d);
+ T82 = FNMS(T4c, T4b, T4a * T4d);
+ }
+ {
+ E T4g, T4i, T4f, T4h;
+ T4g = ri[WS(ios, 29)];
+ T4i = ii[WS(ios, 29)];
+ T4f = W[56];
+ T4h = W[57];
+ T4j = FMA(T4f, T4g, T4h * T4i);
+ T83 = FNMS(T4h, T4g, T4f * T4i);
+ }
+ T4k = T4e + T4j;
+ Tdw = T82 + T83;
+ T7X = T4e - T4j;
+ T84 = T82 - T83;
+ }
+ {
+ E T49, T4w, TdA, TdD;
+ T49 = T3X + T48;
+ T4w = T4k + T4v;
+ T4x = T49 + T4w;
+ TfJ = T4w - T49;
+ TdA = T3X - T48;
+ TdD = TdB - TdC;
+ TdE = TdA + TdD;
+ TdM = TdD - TdA;
+ }
+ {
+ E TfM, TfN, T81, T86;
+ TfM = TdB + TdC;
+ TfN = Tdw + Tdx;
+ TfO = TfM - TfN;
+ Tgu = TfM + TfN;
+ T81 = T7X - T80;
+ T86 = T84 + T85;
+ T87 = FNMS(KP923879532, T86, KP382683432 * T81);
+ T8v = FMA(KP382683432, T86, KP923879532 * T81);
+ }
+ {
+ E T8c, T8h, Tb8, Tb9;
+ T8c = T8a + T8b;
+ T8h = T8d - T8g;
+ T8i = FMA(KP923879532, T8c, KP382683432 * T8h);
+ T8u = FNMS(KP923879532, T8h, KP382683432 * T8c);
+ Tb8 = T8a - T8b;
+ Tb9 = T8d + T8g;
+ Tba = FMA(KP382683432, Tb8, KP923879532 * Tb9);
+ Tbg = FNMS(KP382683432, Tb9, KP923879532 * Tb8);
+ }
+ {
+ E Tdv, Tdy, Tb5, Tb6;
+ Tdv = T4k - T4v;
+ Tdy = Tdw - Tdx;
+ Tdz = Tdv - Tdy;
+ TdN = Tdv + Tdy;
+ Tb5 = T7X + T80;
+ Tb6 = T84 - T85;
+ Tb7 = FNMS(KP382683432, Tb6, KP923879532 * Tb5);
+ Tbh = FMA(KP923879532, Tb6, KP382683432 * Tb5);
+ }
+ }
+ {
+ E T5u, TdW, T8S, T8V, T62, Te3, T94, T99, T5F, TdX, T8T, T8Y, T5R, Te2, T93;
+ E T96;
+ {
+ E T5o, T8Q, T5t, T8R;
+ {
+ E T5l, T5n, T5k, T5m;
+ T5l = ri[WS(ios, 3)];
+ T5n = ii[WS(ios, 3)];
+ T5k = W[4];
+ T5m = W[5];
+ T5o = FMA(T5k, T5l, T5m * T5n);
+ T8Q = FNMS(T5m, T5l, T5k * T5n);
+ }
+ {
+ E T5q, T5s, T5p, T5r;
+ T5q = ri[WS(ios, 35)];
+ T5s = ii[WS(ios, 35)];
+ T5p = W[68];
+ T5r = W[69];
+ T5t = FMA(T5p, T5q, T5r * T5s);
+ T8R = FNMS(T5r, T5q, T5p * T5s);
+ }
+ T5u = T5o + T5t;
+ TdW = T8Q + T8R;
+ T8S = T8Q - T8R;
+ T8V = T5o - T5t;
+ }
+ {
+ E T5W, T97, T61, T98;
+ {
+ E T5T, T5V, T5S, T5U;
+ T5T = ri[WS(ios, 11)];
+ T5V = ii[WS(ios, 11)];
+ T5S = W[20];
+ T5U = W[21];
+ T5W = FMA(T5S, T5T, T5U * T5V);
+ T97 = FNMS(T5U, T5T, T5S * T5V);
+ }
+ {
+ E T5Y, T60, T5X, T5Z;
+ T5Y = ri[WS(ios, 43)];
+ T60 = ii[WS(ios, 43)];
+ T5X = W[84];
+ T5Z = W[85];
+ T61 = FMA(T5X, T5Y, T5Z * T60);
+ T98 = FNMS(T5Z, T5Y, T5X * T60);
+ }
+ T62 = T5W + T61;
+ Te3 = T97 + T98;
+ T94 = T5W - T61;
+ T99 = T97 - T98;
+ }
+ {
+ E T5z, T8W, T5E, T8X;
+ {
+ E T5w, T5y, T5v, T5x;
+ T5w = ri[WS(ios, 19)];
+ T5y = ii[WS(ios, 19)];
+ T5v = W[36];
+ T5x = W[37];
+ T5z = FMA(T5v, T5w, T5x * T5y);
+ T8W = FNMS(T5x, T5w, T5v * T5y);
+ }
+ {
+ E T5B, T5D, T5A, T5C;
+ T5B = ri[WS(ios, 51)];
+ T5D = ii[WS(ios, 51)];
+ T5A = W[100];
+ T5C = W[101];
+ T5E = FMA(T5A, T5B, T5C * T5D);
+ T8X = FNMS(T5C, T5B, T5A * T5D);
+ }
+ T5F = T5z + T5E;
+ TdX = T8W + T8X;
+ T8T = T5z - T5E;
+ T8Y = T8W - T8X;
+ }
+ {
+ E T5L, T91, T5Q, T92;
+ {
+ E T5I, T5K, T5H, T5J;
+ T5I = ri[WS(ios, 59)];
+ T5K = ii[WS(ios, 59)];
+ T5H = W[116];
+ T5J = W[117];
+ T5L = FMA(T5H, T5I, T5J * T5K);
+ T91 = FNMS(T5J, T5I, T5H * T5K);
+ }
+ {
+ E T5N, T5P, T5M, T5O;
+ T5N = ri[WS(ios, 27)];
+ T5P = ii[WS(ios, 27)];
+ T5M = W[52];
+ T5O = W[53];
+ T5Q = FMA(T5M, T5N, T5O * T5P);
+ T92 = FNMS(T5O, T5N, T5M * T5P);
+ }
+ T5R = T5L + T5Q;
+ Te2 = T91 + T92;
+ T93 = T91 - T92;
+ T96 = T5L - T5Q;
+ }
+ {
+ E T5G, T63, Te1, Te4;
+ T5G = T5u + T5F;
+ T63 = T5R + T62;
+ T64 = T5G + T63;
+ TfZ = T63 - T5G;
+ Te1 = T5R - T62;
+ Te4 = Te2 - Te3;
+ Te5 = Te1 + Te4;
+ Ted = Te1 - Te4;
+ }
+ {
+ E TfS, TfT, T8U, T8Z;
+ TfS = TdW + TdX;
+ TfT = Te2 + Te3;
+ TfU = TfS - TfT;
+ Tgz = TfS + TfT;
+ T8U = T8S + T8T;
+ T8Z = T8V - T8Y;
+ T90 = FNMS(KP923879532, T8Z, KP382683432 * T8U);
+ T9o = FMA(KP923879532, T8U, KP382683432 * T8Z);
+ }
+ {
+ E T95, T9a, Tbr, Tbs;
+ T95 = T93 + T94;
+ T9a = T96 - T99;
+ T9b = FMA(KP382683432, T95, KP923879532 * T9a);
+ T9n = FNMS(KP923879532, T95, KP382683432 * T9a);
+ Tbr = T93 - T94;
+ Tbs = T96 + T99;
+ Tbt = FMA(KP923879532, Tbr, KP382683432 * Tbs);
+ Tbz = FNMS(KP382683432, Tbr, KP923879532 * Tbs);
+ }
+ {
+ E TdY, TdZ, Tbo, Tbp;
+ TdY = TdW - TdX;
+ TdZ = T5u - T5F;
+ Te0 = TdY - TdZ;
+ Tee = TdZ + TdY;
+ Tbo = T8S - T8T;
+ Tbp = T8V + T8Y;
+ Tbq = FNMS(KP382683432, Tbp, KP923879532 * Tbo);
+ TbA = FMA(KP382683432, Tbo, KP923879532 * Tbp);
+ }
+ }
+ {
+ E T1t, Tgn, TgK, TgL, TgV, Th1, T30, Th0, T66, TgX, Tgw, TgE, TgB, TgF, Tgq;
+ E TgM;
+ {
+ E TH, T1s, TgI, TgJ;
+ TH = Tj + TG;
+ T1s = T14 + T1r;
+ T1t = TH + T1s;
+ Tgn = TH - T1s;
+ TgI = Tgt + Tgu;
+ TgJ = Tgy + Tgz;
+ TgK = TgI - TgJ;
+ TgL = TgI + TgJ;
+ }
+ {
+ E TgN, TgU, T2e, T2Z;
+ TgN = Tfq + Tfr;
+ TgU = TgO + TgT;
+ TgV = TgN + TgU;
+ Th1 = TgU - TgN;
+ T2e = T1Q + T2d;
+ T2Z = T2B + T2Y;
+ T30 = T2e + T2Z;
+ Th0 = T2Z - T2e;
+ }
+ {
+ E T4y, T65, Tgs, Tgv;
+ T4y = T3M + T4x;
+ T65 = T5j + T64;
+ T66 = T4y + T65;
+ TgX = T65 - T4y;
+ Tgs = T3M - T4x;
+ Tgv = Tgt - Tgu;
+ Tgw = Tgs + Tgv;
+ TgE = Tgv - Tgs;
+ }
+ {
+ E Tgx, TgA, Tgo, Tgp;
+ Tgx = T5j - T64;
+ TgA = Tgy - Tgz;
+ TgB = Tgx - TgA;
+ TgF = Tgx + TgA;
+ Tgo = Tfu + Tfv;
+ Tgp = TfA + TfB;
+ Tgq = Tgo - Tgp;
+ TgM = Tgo + Tgp;
+ }
+ {
+ E T31, TgW, TgH, TgY;
+ T31 = T1t + T30;
+ ri[WS(ios, 32)] = T31 - T66;
+ ri[0] = T31 + T66;
+ TgW = TgM + TgV;
+ ii[0] = TgL + TgW;
+ ii[WS(ios, 32)] = TgW - TgL;
+ TgH = T1t - T30;
+ ri[WS(ios, 48)] = TgH - TgK;
+ ri[WS(ios, 16)] = TgH + TgK;
+ TgY = TgV - TgM;
+ ii[WS(ios, 16)] = TgX + TgY;
+ ii[WS(ios, 48)] = TgY - TgX;
+ }
+ {
+ E Tgr, TgC, TgZ, Th2;
+ Tgr = Tgn + Tgq;
+ TgC = KP707106781 * (Tgw + TgB);
+ ri[WS(ios, 40)] = Tgr - TgC;
+ ri[WS(ios, 8)] = Tgr + TgC;
+ TgZ = KP707106781 * (TgE + TgF);
+ Th2 = Th0 + Th1;
+ ii[WS(ios, 8)] = TgZ + Th2;
+ ii[WS(ios, 40)] = Th2 - TgZ;
+ }
+ {
+ E TgD, TgG, Th3, Th4;
+ TgD = Tgn - Tgq;
+ TgG = KP707106781 * (TgE - TgF);
+ ri[WS(ios, 56)] = TgD - TgG;
+ ri[WS(ios, 24)] = TgD + TgG;
+ Th3 = KP707106781 * (TgB - Tgw);
+ Th4 = Th1 - Th0;
+ ii[WS(ios, 24)] = Th3 + Th4;
+ ii[WS(ios, 56)] = Th4 - Th3;
+ }
+ }
+ {
+ E Tft, Tg7, Tgh, Tgl, Th9, Thf, TfE, Th6, TfQ, Tg4, Tga, The, Tge, Tgk, Tg1;
+ E Tg5;
+ {
+ E Tfp, Tfs, Tgf, Tgg;
+ Tfp = Tj - TG;
+ Tfs = Tfq - Tfr;
+ Tft = Tfp - Tfs;
+ Tg7 = Tfp + Tfs;
+ Tgf = TfR + TfU;
+ Tgg = TfY + TfZ;
+ Tgh = FNMS(KP382683432, Tgg, KP923879532 * Tgf);
+ Tgl = FMA(KP923879532, Tgg, KP382683432 * Tgf);
+ }
+ {
+ E Th7, Th8, Tfy, TfD;
+ Th7 = T1r - T14;
+ Th8 = TgT - TgO;
+ Th9 = Th7 + Th8;
+ Thf = Th8 - Th7;
+ Tfy = Tfw - Tfx;
+ TfD = Tfz + TfC;
+ TfE = KP707106781 * (Tfy - TfD);
+ Th6 = KP707106781 * (Tfy + TfD);
+ }
+ {
+ E TfK, TfP, Tg8, Tg9;
+ TfK = TfI - TfJ;
+ TfP = TfL - TfO;
+ TfQ = FMA(KP923879532, TfK, KP382683432 * TfP);
+ Tg4 = FNMS(KP923879532, TfP, KP382683432 * TfK);
+ Tg8 = Tfx + Tfw;
+ Tg9 = Tfz - TfC;
+ Tga = KP707106781 * (Tg8 + Tg9);
+ The = KP707106781 * (Tg9 - Tg8);
+ }
+ {
+ E Tgc, Tgd, TfV, Tg0;
+ Tgc = TfI + TfJ;
+ Tgd = TfL + TfO;
+ Tge = FMA(KP382683432, Tgc, KP923879532 * Tgd);
+ Tgk = FNMS(KP382683432, Tgd, KP923879532 * Tgc);
+ TfV = TfR - TfU;
+ Tg0 = TfY - TfZ;
+ Tg1 = FNMS(KP923879532, Tg0, KP382683432 * TfV);
+ Tg5 = FMA(KP382683432, Tg0, KP923879532 * TfV);
+ }
+ {
+ E TfF, Tg2, Thd, Thg;
+ TfF = Tft + TfE;
+ Tg2 = TfQ + Tg1;
+ ri[WS(ios, 44)] = TfF - Tg2;
+ ri[WS(ios, 12)] = TfF + Tg2;
+ Thd = Tg4 + Tg5;
+ Thg = The + Thf;
+ ii[WS(ios, 12)] = Thd + Thg;
+ ii[WS(ios, 44)] = Thg - Thd;
+ }
+ {
+ E Tg3, Tg6, Thh, Thi;
+ Tg3 = Tft - TfE;
+ Tg6 = Tg4 - Tg5;
+ ri[WS(ios, 60)] = Tg3 - Tg6;
+ ri[WS(ios, 28)] = Tg3 + Tg6;
+ Thh = Tg1 - TfQ;
+ Thi = Thf - The;
+ ii[WS(ios, 28)] = Thh + Thi;
+ ii[WS(ios, 60)] = Thi - Thh;
+ }
+ {
+ E Tgb, Tgi, Th5, Tha;
+ Tgb = Tg7 + Tga;
+ Tgi = Tge + Tgh;
+ ri[WS(ios, 36)] = Tgb - Tgi;
+ ri[WS(ios, 4)] = Tgb + Tgi;
+ Th5 = Tgk + Tgl;
+ Tha = Th6 + Th9;
+ ii[WS(ios, 4)] = Th5 + Tha;
+ ii[WS(ios, 36)] = Tha - Th5;
+ }
+ {
+ E Tgj, Tgm, Thb, Thc;
+ Tgj = Tg7 - Tga;
+ Tgm = Tgk - Tgl;
+ ri[WS(ios, 52)] = Tgj - Tgm;
+ ri[WS(ios, 20)] = Tgj + Tgm;
+ Thb = Tgh - Tge;
+ Thc = Th9 - Th6;
+ ii[WS(ios, 20)] = Thb + Thc;
+ ii[WS(ios, 52)] = Thc - Thb;
+ }
+ }
+ {
+ E Td1, Ten, Tdo, ThA, ThD, ThJ, Teq, ThI, Teh, TeB, Tel, Tex, TdQ, TeA, Tek;
+ E Teu;
+ {
+ E TcP, Td0, Teo, Tep;
+ TcP = TcL - TcO;
+ Td0 = KP707106781 * (TcU - TcZ);
+ Td1 = TcP - Td0;
+ Ten = TcP + Td0;
+ {
+ E Tdc, Tdn, ThB, ThC;
+ Tdc = FNMS(KP923879532, Tdb, KP382683432 * Td6);
+ Tdn = FMA(KP382683432, Tdh, KP923879532 * Tdm);
+ Tdo = Tdc - Tdn;
+ ThA = Tdc + Tdn;
+ ThB = KP707106781 * (TeF - TeE);
+ ThC = Thn - Thm;
+ ThD = ThB + ThC;
+ ThJ = ThC - ThB;
+ }
+ Teo = FMA(KP923879532, Td6, KP382683432 * Tdb);
+ Tep = FNMS(KP923879532, Tdh, KP382683432 * Tdm);
+ Teq = Teo + Tep;
+ ThI = Tep - Teo;
+ {
+ E Te7, Tev, Teg, Tew, Te6, Tef;
+ Te6 = KP707106781 * (Te0 - Te5);
+ Te7 = TdV - Te6;
+ Tev = TdV + Te6;
+ Tef = KP707106781 * (Ted - Tee);
+ Teg = Tec - Tef;
+ Tew = Tec + Tef;
+ Teh = FNMS(KP980785280, Teg, KP195090322 * Te7);
+ TeB = FMA(KP831469612, Tew, KP555570233 * Tev);
+ Tel = FMA(KP195090322, Teg, KP980785280 * Te7);
+ Tex = FNMS(KP555570233, Tew, KP831469612 * Tev);
+ }
+ {
+ E TdG, Tes, TdP, Tet, TdF, TdO;
+ TdF = KP707106781 * (Tdz - TdE);
+ TdG = Tdu - TdF;
+ Tes = Tdu + TdF;
+ TdO = KP707106781 * (TdM - TdN);
+ TdP = TdL - TdO;
+ Tet = TdL + TdO;
+ TdQ = FMA(KP980785280, TdG, KP195090322 * TdP);
+ TeA = FNMS(KP555570233, Tet, KP831469612 * Tes);
+ Tek = FNMS(KP980785280, TdP, KP195090322 * TdG);
+ Teu = FMA(KP555570233, Tes, KP831469612 * Tet);
+ }
+ }
+ {
+ E Tdp, Tei, ThH, ThK;
+ Tdp = Td1 + Tdo;
+ Tei = TdQ + Teh;
+ ri[WS(ios, 46)] = Tdp - Tei;
+ ri[WS(ios, 14)] = Tdp + Tei;
+ ThH = Tek + Tel;
+ ThK = ThI + ThJ;
+ ii[WS(ios, 14)] = ThH + ThK;
+ ii[WS(ios, 46)] = ThK - ThH;
+ }
+ {
+ E Tej, Tem, ThL, ThM;
+ Tej = Td1 - Tdo;
+ Tem = Tek - Tel;
+ ri[WS(ios, 62)] = Tej - Tem;
+ ri[WS(ios, 30)] = Tej + Tem;
+ ThL = Teh - TdQ;
+ ThM = ThJ - ThI;
+ ii[WS(ios, 30)] = ThL + ThM;
+ ii[WS(ios, 62)] = ThM - ThL;
+ }
+ {
+ E Ter, Tey, Thz, ThE;
+ Ter = Ten + Teq;
+ Tey = Teu + Tex;
+ ri[WS(ios, 38)] = Ter - Tey;
+ ri[WS(ios, 6)] = Ter + Tey;
+ Thz = TeA + TeB;
+ ThE = ThA + ThD;
+ ii[WS(ios, 6)] = Thz + ThE;
+ ii[WS(ios, 38)] = ThE - Thz;
+ }
+ {
+ E Tez, TeC, ThF, ThG;
+ Tez = Ten - Teq;
+ TeC = TeA - TeB;
+ ri[WS(ios, 54)] = Tez - TeC;
+ ri[WS(ios, 22)] = Tez + TeC;
+ ThF = Tex - Teu;
+ ThG = ThD - ThA;
+ ii[WS(ios, 22)] = ThF + ThG;
+ ii[WS(ios, 54)] = ThG - ThF;
+ }
+ }
+ {
+ E TeH, Tf9, TeO, Thk, Thp, Thv, Tfc, Thu, Tf3, Tfn, Tf7, Tfj, TeW, Tfm, Tf6;
+ E Tfg;
+ {
+ E TeD, TeG, Tfa, Tfb;
+ TeD = TcL + TcO;
+ TeG = KP707106781 * (TeE + TeF);
+ TeH = TeD - TeG;
+ Tf9 = TeD + TeG;
+ {
+ E TeK, TeN, Thl, Tho;
+ TeK = FNMS(KP382683432, TeJ, KP923879532 * TeI);
+ TeN = FMA(KP923879532, TeL, KP382683432 * TeM);
+ TeO = TeK - TeN;
+ Thk = TeK + TeN;
+ Thl = KP707106781 * (TcU + TcZ);
+ Tho = Thm + Thn;
+ Thp = Thl + Tho;
+ Thv = Tho - Thl;
+ }
+ Tfa = FMA(KP382683432, TeI, KP923879532 * TeJ);
+ Tfb = FNMS(KP382683432, TeL, KP923879532 * TeM);
+ Tfc = Tfa + Tfb;
+ Thu = Tfb - Tfa;
+ {
+ E TeZ, Tfh, Tf2, Tfi, TeY, Tf1;
+ TeY = KP707106781 * (Tee + Ted);
+ TeZ = TeX - TeY;
+ Tfh = TeX + TeY;
+ Tf1 = KP707106781 * (Te0 + Te5);
+ Tf2 = Tf0 - Tf1;
+ Tfi = Tf0 + Tf1;
+ Tf3 = FNMS(KP831469612, Tf2, KP555570233 * TeZ);
+ Tfn = FMA(KP195090322, Tfh, KP980785280 * Tfi);
+ Tf7 = FMA(KP831469612, TeZ, KP555570233 * Tf2);
+ Tfj = FNMS(KP195090322, Tfi, KP980785280 * Tfh);
+ }
+ {
+ E TeS, Tfe, TeV, Tff, TeR, TeU;
+ TeR = KP707106781 * (TdE + Tdz);
+ TeS = TeQ - TeR;
+ Tfe = TeQ + TeR;
+ TeU = KP707106781 * (TdM + TdN);
+ TeV = TeT - TeU;
+ Tff = TeT + TeU;
+ TeW = FMA(KP555570233, TeS, KP831469612 * TeV);
+ Tfm = FNMS(KP195090322, Tfe, KP980785280 * Tff);
+ Tf6 = FNMS(KP831469612, TeS, KP555570233 * TeV);
+ Tfg = FMA(KP980785280, Tfe, KP195090322 * Tff);
+ }
+ }
+ {
+ E TeP, Tf4, Tht, Thw;
+ TeP = TeH + TeO;
+ Tf4 = TeW + Tf3;
+ ri[WS(ios, 42)] = TeP - Tf4;
+ ri[WS(ios, 10)] = TeP + Tf4;
+ Tht = Tf6 + Tf7;
+ Thw = Thu + Thv;
+ ii[WS(ios, 10)] = Tht + Thw;
+ ii[WS(ios, 42)] = Thw - Tht;
+ }
+ {
+ E Tf5, Tf8, Thx, Thy;
+ Tf5 = TeH - TeO;
+ Tf8 = Tf6 - Tf7;
+ ri[WS(ios, 58)] = Tf5 - Tf8;
+ ri[WS(ios, 26)] = Tf5 + Tf8;
+ Thx = Tf3 - TeW;
+ Thy = Thv - Thu;
+ ii[WS(ios, 26)] = Thx + Thy;
+ ii[WS(ios, 58)] = Thy - Thx;
+ }
+ {
+ E Tfd, Tfk, Thj, Thq;
+ Tfd = Tf9 + Tfc;
+ Tfk = Tfg + Tfj;
+ ri[WS(ios, 34)] = Tfd - Tfk;
+ ri[WS(ios, 2)] = Tfd + Tfk;
+ Thj = Tfm + Tfn;
+ Thq = Thk + Thp;
+ ii[WS(ios, 2)] = Thj + Thq;
+ ii[WS(ios, 34)] = Thq - Thj;
+ }
+ {
+ E Tfl, Tfo, Thr, Ths;
+ Tfl = Tf9 - Tfc;
+ Tfo = Tfm - Tfn;
+ ri[WS(ios, 50)] = Tfl - Tfo;
+ ri[WS(ios, 18)] = Tfl + Tfo;
+ Thr = Tfj - Tfg;
+ Ths = Thp - Thk;
+ ii[WS(ios, 18)] = Thr + Ths;
+ ii[WS(ios, 50)] = Ths - Thr;
+ }
+ }
+ {
+ E T6L, T9x, TiD, TiJ, T7E, TiI, T9A, TiA, T8y, T9K, T9u, T9E, T9r, T9L, T9v;
+ E T9H;
+ {
+ E T6n, T6K, TiB, TiC;
+ T6n = T6b - T6m;
+ T6K = T6y - T6J;
+ T6L = T6n - T6K;
+ T9x = T6n + T6K;
+ TiB = T9P - T9O;
+ TiC = Tin - Tim;
+ TiD = TiB + TiC;
+ TiJ = TiC - TiB;
+ }
+ {
+ E T7c, T9y, T7D, T9z;
+ {
+ E T72, T7b, T7t, T7C;
+ T72 = T6Q - T71;
+ T7b = T77 - T7a;
+ T7c = FNMS(KP980785280, T7b, KP195090322 * T72);
+ T9y = FMA(KP980785280, T72, KP195090322 * T7b);
+ T7t = T7h - T7s;
+ T7C = T7y - T7B;
+ T7D = FMA(KP195090322, T7t, KP980785280 * T7C);
+ T9z = FNMS(KP980785280, T7t, KP195090322 * T7C);
+ }
+ T7E = T7c - T7D;
+ TiI = T9z - T9y;
+ T9A = T9y + T9z;
+ TiA = T7c + T7D;
+ }
+ {
+ E T8k, T9C, T8x, T9D;
+ {
+ E T7W, T8j, T8t, T8w;
+ T7W = T7K - T7V;
+ T8j = T87 - T8i;
+ T8k = T7W - T8j;
+ T9C = T7W + T8j;
+ T8t = T8p - T8s;
+ T8w = T8u - T8v;
+ T8x = T8t - T8w;
+ T9D = T8t + T8w;
+ }
+ T8y = FMA(KP995184726, T8k, KP098017140 * T8x);
+ T9K = FNMS(KP634393284, T9D, KP773010453 * T9C);
+ T9u = FNMS(KP995184726, T8x, KP098017140 * T8k);
+ T9E = FMA(KP634393284, T9C, KP773010453 * T9D);
+ }
+ {
+ E T9d, T9F, T9q, T9G;
+ {
+ E T8P, T9c, T9m, T9p;
+ T8P = T8D - T8O;
+ T9c = T90 - T9b;
+ T9d = T8P - T9c;
+ T9F = T8P + T9c;
+ T9m = T9i - T9l;
+ T9p = T9n - T9o;
+ T9q = T9m - T9p;
+ T9G = T9m + T9p;
+ }
+ T9r = FNMS(KP995184726, T9q, KP098017140 * T9d);
+ T9L = FMA(KP773010453, T9G, KP634393284 * T9F);
+ T9v = FMA(KP098017140, T9q, KP995184726 * T9d);
+ T9H = FNMS(KP634393284, T9G, KP773010453 * T9F);
+ }
+ {
+ E T7F, T9s, TiH, TiK;
+ T7F = T6L + T7E;
+ T9s = T8y + T9r;
+ ri[WS(ios, 47)] = T7F - T9s;
+ ri[WS(ios, 15)] = T7F + T9s;
+ TiH = T9u + T9v;
+ TiK = TiI + TiJ;
+ ii[WS(ios, 15)] = TiH + TiK;
+ ii[WS(ios, 47)] = TiK - TiH;
+ }
+ {
+ E T9t, T9w, TiL, TiM;
+ T9t = T6L - T7E;
+ T9w = T9u - T9v;
+ ri[WS(ios, 63)] = T9t - T9w;
+ ri[WS(ios, 31)] = T9t + T9w;
+ TiL = T9r - T8y;
+ TiM = TiJ - TiI;
+ ii[WS(ios, 31)] = TiL + TiM;
+ ii[WS(ios, 63)] = TiM - TiL;
+ }
+ {
+ E T9B, T9I, Tiz, TiE;
+ T9B = T9x + T9A;
+ T9I = T9E + T9H;
+ ri[WS(ios, 39)] = T9B - T9I;
+ ri[WS(ios, 7)] = T9B + T9I;
+ Tiz = T9K + T9L;
+ TiE = TiA + TiD;
+ ii[WS(ios, 7)] = Tiz + TiE;
+ ii[WS(ios, 39)] = TiE - Tiz;
+ }
+ {
+ E T9J, T9M, TiF, TiG;
+ T9J = T9x - T9A;
+ T9M = T9K - T9L;
+ ri[WS(ios, 55)] = T9J - T9M;
+ ri[WS(ios, 23)] = T9J + T9M;
+ TiF = T9H - T9E;
+ TiG = TiD - TiA;
+ ii[WS(ios, 23)] = TiF + TiG;
+ ii[WS(ios, 55)] = TiG - TiF;
+ }
+ }
+ {
+ E TaL, TbJ, Ti9, Tif, Tb0, Tie, TbM, Ti6, Tbk, TbW, TbG, TbQ, TbD, TbX, TbH;
+ E TbT;
+ {
+ E TaD, TaK, Ti7, Ti8;
+ TaD = Taz - TaC;
+ TaK = TaG - TaJ;
+ TaL = TaD - TaK;
+ TbJ = TaD + TaK;
+ Ti7 = Tc1 - Tc0;
+ Ti8 = ThT - ThQ;
+ Ti9 = Ti7 + Ti8;
+ Tif = Ti8 - Ti7;
+ }
+ {
+ E TaS, TbK, TaZ, TbL;
+ {
+ E TaO, TaR, TaV, TaY;
+ TaO = TaM - TaN;
+ TaR = TaP - TaQ;
+ TaS = FNMS(KP831469612, TaR, KP555570233 * TaO);
+ TbK = FMA(KP555570233, TaR, KP831469612 * TaO);
+ TaV = TaT - TaU;
+ TaY = TaW - TaX;
+ TaZ = FMA(KP831469612, TaV, KP555570233 * TaY);
+ TbL = FNMS(KP831469612, TaY, KP555570233 * TaV);
+ }
+ Tb0 = TaS - TaZ;
+ Tie = TbL - TbK;
+ TbM = TbK + TbL;
+ Ti6 = TaS + TaZ;
+ }
+ {
+ E Tbc, TbO, Tbj, TbP;
+ {
+ E Tb4, Tbb, Tbf, Tbi;
+ Tb4 = Tb2 - Tb3;
+ Tbb = Tb7 - Tba;
+ Tbc = Tb4 - Tbb;
+ TbO = Tb4 + Tbb;
+ Tbf = Tbd - Tbe;
+ Tbi = Tbg - Tbh;
+ Tbj = Tbf - Tbi;
+ TbP = Tbf + Tbi;
+ }
+ Tbk = FMA(KP956940335, Tbc, KP290284677 * Tbj);
+ TbW = FNMS(KP471396736, TbP, KP881921264 * TbO);
+ TbG = FNMS(KP956940335, Tbj, KP290284677 * Tbc);
+ TbQ = FMA(KP471396736, TbO, KP881921264 * TbP);
+ }
+ {
+ E Tbv, TbR, TbC, TbS;
+ {
+ E Tbn, Tbu, Tby, TbB;
+ Tbn = Tbl - Tbm;
+ Tbu = Tbq - Tbt;
+ Tbv = Tbn - Tbu;
+ TbR = Tbn + Tbu;
+ Tby = Tbw - Tbx;
+ TbB = Tbz - TbA;
+ TbC = Tby - TbB;
+ TbS = Tby + TbB;
+ }
+ TbD = FNMS(KP956940335, TbC, KP290284677 * Tbv);
+ TbX = FMA(KP881921264, TbS, KP471396736 * TbR);
+ TbH = FMA(KP290284677, TbC, KP956940335 * Tbv);
+ TbT = FNMS(KP471396736, TbS, KP881921264 * TbR);
+ }
+ {
+ E Tb1, TbE, Tid, Tig;
+ Tb1 = TaL + Tb0;
+ TbE = Tbk + TbD;
+ ri[WS(ios, 45)] = Tb1 - TbE;
+ ri[WS(ios, 13)] = Tb1 + TbE;
+ Tid = TbG + TbH;
+ Tig = Tie + Tif;
+ ii[WS(ios, 13)] = Tid + Tig;
+ ii[WS(ios, 45)] = Tig - Tid;
+ }
+ {
+ E TbF, TbI, Tih, Tii;
+ TbF = TaL - Tb0;
+ TbI = TbG - TbH;
+ ri[WS(ios, 61)] = TbF - TbI;
+ ri[WS(ios, 29)] = TbF + TbI;
+ Tih = TbD - Tbk;
+ Tii = Tif - Tie;
+ ii[WS(ios, 29)] = Tih + Tii;
+ ii[WS(ios, 61)] = Tii - Tih;
+ }
+ {
+ E TbN, TbU, Ti5, Tia;
+ TbN = TbJ + TbM;
+ TbU = TbQ + TbT;
+ ri[WS(ios, 37)] = TbN - TbU;
+ ri[WS(ios, 5)] = TbN + TbU;
+ Ti5 = TbW + TbX;
+ Tia = Ti6 + Ti9;
+ ii[WS(ios, 5)] = Ti5 + Tia;
+ ii[WS(ios, 37)] = Tia - Ti5;
+ }
+ {
+ E TbV, TbY, Tib, Tic;
+ TbV = TbJ - TbM;
+ TbY = TbW - TbX;
+ ri[WS(ios, 53)] = TbV - TbY;
+ ri[WS(ios, 21)] = TbV + TbY;
+ Tib = TbT - TbQ;
+ Tic = Ti9 - Ti6;
+ ii[WS(ios, 21)] = Tib + Tic;
+ ii[WS(ios, 53)] = Tic - Tib;
+ }
+ }
+ {
+ E Tc3, Tcv, ThV, Ti1, Tca, Ti0, Tcy, ThO, Tci, TcI, Tcs, TcC, Tcp, TcJ, Tct;
+ E TcF;
+ {
+ E TbZ, Tc2, ThP, ThU;
+ TbZ = Taz + TaC;
+ Tc2 = Tc0 + Tc1;
+ Tc3 = TbZ - Tc2;
+ Tcv = TbZ + Tc2;
+ ThP = TaG + TaJ;
+ ThU = ThQ + ThT;
+ ThV = ThP + ThU;
+ Ti1 = ThU - ThP;
+ }
+ {
+ E Tc6, Tcw, Tc9, Tcx;
+ {
+ E Tc4, Tc5, Tc7, Tc8;
+ Tc4 = TaM + TaN;
+ Tc5 = TaP + TaQ;
+ Tc6 = FNMS(KP195090322, Tc5, KP980785280 * Tc4);
+ Tcw = FMA(KP980785280, Tc5, KP195090322 * Tc4);
+ Tc7 = TaT + TaU;
+ Tc8 = TaW + TaX;
+ Tc9 = FMA(KP195090322, Tc7, KP980785280 * Tc8);
+ Tcx = FNMS(KP195090322, Tc8, KP980785280 * Tc7);
+ }
+ Tca = Tc6 - Tc9;
+ Ti0 = Tcx - Tcw;
+ Tcy = Tcw + Tcx;
+ ThO = Tc6 + Tc9;
+ }
+ {
+ E Tce, TcA, Tch, TcB;
+ {
+ E Tcc, Tcd, Tcf, Tcg;
+ Tcc = Tbd + Tbe;
+ Tcd = Tba + Tb7;
+ Tce = Tcc - Tcd;
+ TcA = Tcc + Tcd;
+ Tcf = Tb2 + Tb3;
+ Tcg = Tbg + Tbh;
+ Tch = Tcf - Tcg;
+ TcB = Tcf + Tcg;
+ }
+ Tci = FMA(KP634393284, Tce, KP773010453 * Tch);
+ TcI = FNMS(KP098017140, TcA, KP995184726 * TcB);
+ Tcs = FNMS(KP773010453, Tce, KP634393284 * Tch);
+ TcC = FMA(KP995184726, TcA, KP098017140 * TcB);
+ }
+ {
+ E Tcl, TcD, Tco, TcE;
+ {
+ E Tcj, Tck, Tcm, Tcn;
+ Tcj = Tbl + Tbm;
+ Tck = TbA + Tbz;
+ Tcl = Tcj - Tck;
+ TcD = Tcj + Tck;
+ Tcm = Tbw + Tbx;
+ Tcn = Tbq + Tbt;
+ Tco = Tcm - Tcn;
+ TcE = Tcm + Tcn;
+ }
+ Tcp = FNMS(KP773010453, Tco, KP634393284 * Tcl);
+ TcJ = FMA(KP098017140, TcD, KP995184726 * TcE);
+ Tct = FMA(KP773010453, Tcl, KP634393284 * Tco);
+ TcF = FNMS(KP098017140, TcE, KP995184726 * TcD);
+ }
+ {
+ E Tcb, Tcq, ThZ, Ti2;
+ Tcb = Tc3 + Tca;
+ Tcq = Tci + Tcp;
+ ri[WS(ios, 41)] = Tcb - Tcq;
+ ri[WS(ios, 9)] = Tcb + Tcq;
+ ThZ = Tcs + Tct;
+ Ti2 = Ti0 + Ti1;
+ ii[WS(ios, 9)] = ThZ + Ti2;
+ ii[WS(ios, 41)] = Ti2 - ThZ;
+ }
+ {
+ E Tcr, Tcu, Ti3, Ti4;
+ Tcr = Tc3 - Tca;
+ Tcu = Tcs - Tct;
+ ri[WS(ios, 57)] = Tcr - Tcu;
+ ri[WS(ios, 25)] = Tcr + Tcu;
+ Ti3 = Tcp - Tci;
+ Ti4 = Ti1 - Ti0;
+ ii[WS(ios, 25)] = Ti3 + Ti4;
+ ii[WS(ios, 57)] = Ti4 - Ti3;
+ }
+ {
+ E Tcz, TcG, ThN, ThW;
+ Tcz = Tcv + Tcy;
+ TcG = TcC + TcF;
+ ri[WS(ios, 33)] = Tcz - TcG;
+ ri[WS(ios, 1)] = Tcz + TcG;
+ ThN = TcI + TcJ;
+ ThW = ThO + ThV;
+ ii[WS(ios, 1)] = ThN + ThW;
+ ii[WS(ios, 33)] = ThW - ThN;
+ }
+ {
+ E TcH, TcK, ThX, ThY;
+ TcH = Tcv - Tcy;
+ TcK = TcI - TcJ;
+ ri[WS(ios, 49)] = TcH - TcK;
+ ri[WS(ios, 17)] = TcH + TcK;
+ ThX = TcF - TcC;
+ ThY = ThV - ThO;
+ ii[WS(ios, 17)] = ThX + ThY;
+ ii[WS(ios, 49)] = ThY - ThX;
+ }
+ }
+ {
+ E T9R, Taj, Tip, Tiv, T9Y, Tiu, Tam, Tik, Ta6, Taw, Tag, Taq, Tad, Tax, Tah;
+ E Tat;
+ {
+ E T9N, T9Q, Til, Tio;
+ T9N = T6b + T6m;
+ T9Q = T9O + T9P;
+ T9R = T9N - T9Q;
+ Taj = T9N + T9Q;
+ Til = T6y + T6J;
+ Tio = Tim + Tin;
+ Tip = Til + Tio;
+ Tiv = Tio - Til;
+ }
+ {
+ E T9U, Tak, T9X, Tal;
+ {
+ E T9S, T9T, T9V, T9W;
+ T9S = T6Q + T71;
+ T9T = T77 + T7a;
+ T9U = FNMS(KP555570233, T9T, KP831469612 * T9S);
+ Tak = FMA(KP555570233, T9S, KP831469612 * T9T);
+ T9V = T7h + T7s;
+ T9W = T7y + T7B;
+ T9X = FMA(KP831469612, T9V, KP555570233 * T9W);
+ Tal = FNMS(KP555570233, T9V, KP831469612 * T9W);
+ }
+ T9Y = T9U - T9X;
+ Tiu = Tal - Tak;
+ Tam = Tak + Tal;
+ Tik = T9U + T9X;
+ }
+ {
+ E Ta2, Tao, Ta5, Tap;
+ {
+ E Ta0, Ta1, Ta3, Ta4;
+ Ta0 = T8p + T8s;
+ Ta1 = T8i + T87;
+ Ta2 = Ta0 - Ta1;
+ Tao = Ta0 + Ta1;
+ Ta3 = T7K + T7V;
+ Ta4 = T8u + T8v;
+ Ta5 = Ta3 - Ta4;
+ Tap = Ta3 + Ta4;
+ }
+ Ta6 = FMA(KP471396736, Ta2, KP881921264 * Ta5);
+ Taw = FNMS(KP290284677, Tao, KP956940335 * Tap);
+ Tag = FNMS(KP881921264, Ta2, KP471396736 * Ta5);
+ Taq = FMA(KP956940335, Tao, KP290284677 * Tap);
+ }
+ {
+ E Ta9, Tar, Tac, Tas;
+ {
+ E Ta7, Ta8, Taa, Tab;
+ Ta7 = T8D + T8O;
+ Ta8 = T9o + T9n;
+ Ta9 = Ta7 - Ta8;
+ Tar = Ta7 + Ta8;
+ Taa = T9i + T9l;
+ Tab = T90 + T9b;
+ Tac = Taa - Tab;
+ Tas = Taa + Tab;
+ }
+ Tad = FNMS(KP881921264, Tac, KP471396736 * Ta9);
+ Tax = FMA(KP290284677, Tar, KP956940335 * Tas);
+ Tah = FMA(KP881921264, Ta9, KP471396736 * Tac);
+ Tat = FNMS(KP290284677, Tas, KP956940335 * Tar);
+ }
+ {
+ E T9Z, Tae, Tit, Tiw;
+ T9Z = T9R + T9Y;
+ Tae = Ta6 + Tad;
+ ri[WS(ios, 43)] = T9Z - Tae;
+ ri[WS(ios, 11)] = T9Z + Tae;
+ Tit = Tag + Tah;
+ Tiw = Tiu + Tiv;
+ ii[WS(ios, 11)] = Tit + Tiw;
+ ii[WS(ios, 43)] = Tiw - Tit;
+ }
+ {
+ E Taf, Tai, Tix, Tiy;
+ Taf = T9R - T9Y;
+ Tai = Tag - Tah;
+ ri[WS(ios, 59)] = Taf - Tai;
+ ri[WS(ios, 27)] = Taf + Tai;
+ Tix = Tad - Ta6;
+ Tiy = Tiv - Tiu;
+ ii[WS(ios, 27)] = Tix + Tiy;
+ ii[WS(ios, 59)] = Tiy - Tix;
+ }
+ {
+ E Tan, Tau, Tij, Tiq;
+ Tan = Taj + Tam;
+ Tau = Taq + Tat;
+ ri[WS(ios, 35)] = Tan - Tau;
+ ri[WS(ios, 3)] = Tan + Tau;
+ Tij = Taw + Tax;
+ Tiq = Tik + Tip;
+ ii[WS(ios, 3)] = Tij + Tiq;
+ ii[WS(ios, 35)] = Tiq - Tij;
+ }
+ {
+ E Tav, Tay, Tir, Tis;
+ Tav = Taj - Tam;
+ Tay = Taw - Tax;
+ ri[WS(ios, 51)] = Tav - Tay;
+ ri[WS(ios, 19)] = Tav + Tay;
+ Tir = Tat - Taq;
+ Tis = Tip - Tik;
+ ii[WS(ios, 19)] = Tir + Tis;
+ ii[WS(ios, 51)] = Tis - Tir;
+ }
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_FULL, 0, 64},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 64, "t1_64", twinstr, {808, 270, 230, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t1_64) (planner *p) {
+ X(kdft_dit_register) (p, t1_64, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t1_7.c b/src/fftw3/dft/codelets/standard/t1_7.c
new file mode 100644
index 0000000..d52c5eb
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t1_7.c
@@ -0,0 +1,178 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:56 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -n 7 -name t1_7 -include t.h */
+
+/*
+ * This function contains 72 FP additions, 60 FP multiplications,
+ * (or, 36 additions, 24 multiplications, 36 fused multiply/add),
+ * 29 stack variables, and 28 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t1_7.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_7.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_7.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t1_7(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ DK(KP222520933, +0.222520933956314404288902564496794759466355569);
+ DK(KP900968867, +0.900968867902419126236102319507445051165919162);
+ DK(KP623489801, +0.623489801858733530525004884004239810632274731);
+ DK(KP433883739, +0.433883739117558120475768332848358754609990728);
+ DK(KP781831482, +0.781831482468029808708444526674057750232334519);
+ DK(KP974927912, +0.974927912181823607018131682993931217232785801);
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 12) {
+ E T1, TR, Tc, TS, TC, TO, Tn, TT, TI, TP, Ty, TU, TF, TQ;
+ T1 = ri[0];
+ TR = ii[0];
+ {
+ E T6, TA, Tb, TB;
+ {
+ E T3, T5, T2, T4;
+ T3 = ri[WS(ios, 1)];
+ T5 = ii[WS(ios, 1)];
+ T2 = W[0];
+ T4 = W[1];
+ T6 = FMA(T2, T3, T4 * T5);
+ TA = FNMS(T4, T3, T2 * T5);
+ }
+ {
+ E T8, Ta, T7, T9;
+ T8 = ri[WS(ios, 6)];
+ Ta = ii[WS(ios, 6)];
+ T7 = W[10];
+ T9 = W[11];
+ Tb = FMA(T7, T8, T9 * Ta);
+ TB = FNMS(T9, T8, T7 * Ta);
+ }
+ Tc = T6 + Tb;
+ TS = Tb - T6;
+ TC = TA - TB;
+ TO = TA + TB;
+ }
+ {
+ E Th, TG, Tm, TH;
+ {
+ E Te, Tg, Td, Tf;
+ Te = ri[WS(ios, 2)];
+ Tg = ii[WS(ios, 2)];
+ Td = W[2];
+ Tf = W[3];
+ Th = FMA(Td, Te, Tf * Tg);
+ TG = FNMS(Tf, Te, Td * Tg);
+ }
+ {
+ E Tj, Tl, Ti, Tk;
+ Tj = ri[WS(ios, 5)];
+ Tl = ii[WS(ios, 5)];
+ Ti = W[8];
+ Tk = W[9];
+ Tm = FMA(Ti, Tj, Tk * Tl);
+ TH = FNMS(Tk, Tj, Ti * Tl);
+ }
+ Tn = Th + Tm;
+ TT = Tm - Th;
+ TI = TG - TH;
+ TP = TG + TH;
+ }
+ {
+ E Ts, TD, Tx, TE;
+ {
+ E Tp, Tr, To, Tq;
+ Tp = ri[WS(ios, 3)];
+ Tr = ii[WS(ios, 3)];
+ To = W[4];
+ Tq = W[5];
+ Ts = FMA(To, Tp, Tq * Tr);
+ TD = FNMS(Tq, Tp, To * Tr);
+ }
+ {
+ E Tu, Tw, Tt, Tv;
+ Tu = ri[WS(ios, 4)];
+ Tw = ii[WS(ios, 4)];
+ Tt = W[6];
+ Tv = W[7];
+ Tx = FMA(Tt, Tu, Tv * Tw);
+ TE = FNMS(Tv, Tu, Tt * Tw);
+ }
+ Ty = Ts + Tx;
+ TU = Tx - Ts;
+ TF = TD - TE;
+ TQ = TD + TE;
+ }
+ ri[0] = T1 + Tc + Tn + Ty;
+ ii[0] = TO + TP + TQ + TR;
+ {
+ E TJ, Tz, TX, TY;
+ TJ = FNMS(KP781831482, TF, KP974927912 * TC) - (KP433883739 * TI);
+ Tz = FMA(KP623489801, Ty, T1) + FNMA(KP900968867, Tn, KP222520933 * Tc);
+ ri[WS(ios, 5)] = Tz - TJ;
+ ri[WS(ios, 2)] = Tz + TJ;
+ TX = FNMS(KP781831482, TU, KP974927912 * TS) - (KP433883739 * TT);
+ TY = FMA(KP623489801, TQ, TR) + FNMA(KP900968867, TP, KP222520933 * TO);
+ ii[WS(ios, 2)] = TX + TY;
+ ii[WS(ios, 5)] = TY - TX;
+ }
+ {
+ E TL, TK, TV, TW;
+ TL = FMA(KP781831482, TC, KP974927912 * TI) + (KP433883739 * TF);
+ TK = FMA(KP623489801, Tc, T1) + FNMA(KP900968867, Ty, KP222520933 * Tn);
+ ri[WS(ios, 6)] = TK - TL;
+ ri[WS(ios, 1)] = TK + TL;
+ TV = FMA(KP781831482, TS, KP974927912 * TT) + (KP433883739 * TU);
+ TW = FMA(KP623489801, TO, TR) + FNMA(KP900968867, TQ, KP222520933 * TP);
+ ii[WS(ios, 1)] = TV + TW;
+ ii[WS(ios, 6)] = TW - TV;
+ }
+ {
+ E TN, TM, TZ, T10;
+ TN = FMA(KP433883739, TC, KP974927912 * TF) - (KP781831482 * TI);
+ TM = FMA(KP623489801, Tn, T1) + FNMA(KP222520933, Ty, KP900968867 * Tc);
+ ri[WS(ios, 4)] = TM - TN;
+ ri[WS(ios, 3)] = TM + TN;
+ TZ = FMA(KP433883739, TS, KP974927912 * TU) - (KP781831482 * TT);
+ T10 = FMA(KP623489801, TP, TR) + FNMA(KP222520933, TQ, KP900968867 * TO);
+ ii[WS(ios, 3)] = TZ + T10;
+ ii[WS(ios, 4)] = T10 - TZ;
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_FULL, 0, 7},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 7, "t1_7", twinstr, {36, 24, 36, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t1_7) (planner *p) {
+ X(kdft_dit_register) (p, t1_7, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t1_8.c b/src/fftw3/dft/codelets/standard/t1_8.c
new file mode 100644
index 0000000..b9cb995
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t1_8.c
@@ -0,0 +1,203 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:29:59 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -n 8 -name t1_8 -include t.h */
+
+/*
+ * This function contains 66 FP additions, 32 FP multiplications,
+ * (or, 52 additions, 18 multiplications, 14 fused multiply/add),
+ * 28 stack variables, and 32 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t1_8.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_8.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_8.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t1_8(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ DK(KP707106781, +0.707106781186547524400844362104849039284835938);
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 14) {
+ E T7, T1e, TH, T19, TF, T13, TR, TU, Ti, T1f, TK, T16, Tu, T12, TM;
+ E TP;
+ {
+ E T1, T18, T6, T17;
+ T1 = ri[0];
+ T18 = ii[0];
+ {
+ E T3, T5, T2, T4;
+ T3 = ri[WS(ios, 4)];
+ T5 = ii[WS(ios, 4)];
+ T2 = W[6];
+ T4 = W[7];
+ T6 = FMA(T2, T3, T4 * T5);
+ T17 = FNMS(T4, T3, T2 * T5);
+ }
+ T7 = T1 + T6;
+ T1e = T18 - T17;
+ TH = T1 - T6;
+ T19 = T17 + T18;
+ }
+ {
+ E Tz, TS, TE, TT;
+ {
+ E Tw, Ty, Tv, Tx;
+ Tw = ri[WS(ios, 7)];
+ Ty = ii[WS(ios, 7)];
+ Tv = W[12];
+ Tx = W[13];
+ Tz = FMA(Tv, Tw, Tx * Ty);
+ TS = FNMS(Tx, Tw, Tv * Ty);
+ }
+ {
+ E TB, TD, TA, TC;
+ TB = ri[WS(ios, 3)];
+ TD = ii[WS(ios, 3)];
+ TA = W[4];
+ TC = W[5];
+ TE = FMA(TA, TB, TC * TD);
+ TT = FNMS(TC, TB, TA * TD);
+ }
+ TF = Tz + TE;
+ T13 = TS + TT;
+ TR = Tz - TE;
+ TU = TS - TT;
+ }
+ {
+ E Tc, TI, Th, TJ;
+ {
+ E T9, Tb, T8, Ta;
+ T9 = ri[WS(ios, 2)];
+ Tb = ii[WS(ios, 2)];
+ T8 = W[2];
+ Ta = W[3];
+ Tc = FMA(T8, T9, Ta * Tb);
+ TI = FNMS(Ta, T9, T8 * Tb);
+ }
+ {
+ E Te, Tg, Td, Tf;
+ Te = ri[WS(ios, 6)];
+ Tg = ii[WS(ios, 6)];
+ Td = W[10];
+ Tf = W[11];
+ Th = FMA(Td, Te, Tf * Tg);
+ TJ = FNMS(Tf, Te, Td * Tg);
+ }
+ Ti = Tc + Th;
+ T1f = Tc - Th;
+ TK = TI - TJ;
+ T16 = TI + TJ;
+ }
+ {
+ E To, TN, Tt, TO;
+ {
+ E Tl, Tn, Tk, Tm;
+ Tl = ri[WS(ios, 1)];
+ Tn = ii[WS(ios, 1)];
+ Tk = W[0];
+ Tm = W[1];
+ To = FMA(Tk, Tl, Tm * Tn);
+ TN = FNMS(Tm, Tl, Tk * Tn);
+ }
+ {
+ E Tq, Ts, Tp, Tr;
+ Tq = ri[WS(ios, 5)];
+ Ts = ii[WS(ios, 5)];
+ Tp = W[8];
+ Tr = W[9];
+ Tt = FMA(Tp, Tq, Tr * Ts);
+ TO = FNMS(Tr, Tq, Tp * Ts);
+ }
+ Tu = To + Tt;
+ T12 = TN + TO;
+ TM = To - Tt;
+ TP = TN - TO;
+ }
+ {
+ E Tj, TG, T1b, T1c;
+ Tj = T7 + Ti;
+ TG = Tu + TF;
+ ri[WS(ios, 4)] = Tj - TG;
+ ri[0] = Tj + TG;
+ {
+ E T15, T1a, T11, T14;
+ T15 = T12 + T13;
+ T1a = T16 + T19;
+ ii[0] = T15 + T1a;
+ ii[WS(ios, 4)] = T1a - T15;
+ T11 = T7 - Ti;
+ T14 = T12 - T13;
+ ri[WS(ios, 6)] = T11 - T14;
+ ri[WS(ios, 2)] = T11 + T14;
+ }
+ T1b = TF - Tu;
+ T1c = T19 - T16;
+ ii[WS(ios, 2)] = T1b + T1c;
+ ii[WS(ios, 6)] = T1c - T1b;
+ {
+ E TX, T1g, T10, T1d, TY, TZ;
+ TX = TH - TK;
+ T1g = T1e - T1f;
+ TY = TP - TM;
+ TZ = TR + TU;
+ T10 = KP707106781 * (TY - TZ);
+ T1d = KP707106781 * (TY + TZ);
+ ri[WS(ios, 7)] = TX - T10;
+ ii[WS(ios, 5)] = T1g - T1d;
+ ri[WS(ios, 3)] = TX + T10;
+ ii[WS(ios, 1)] = T1d + T1g;
+ }
+ {
+ E TL, T1i, TW, T1h, TQ, TV;
+ TL = TH + TK;
+ T1i = T1f + T1e;
+ TQ = TM + TP;
+ TV = TR - TU;
+ TW = KP707106781 * (TQ + TV);
+ T1h = KP707106781 * (TV - TQ);
+ ri[WS(ios, 5)] = TL - TW;
+ ii[WS(ios, 7)] = T1i - T1h;
+ ri[WS(ios, 1)] = TL + TW;
+ ii[WS(ios, 3)] = T1h + T1i;
+ }
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_FULL, 0, 8},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 8, "t1_8", twinstr, {52, 18, 14, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t1_8) (planner *p) {
+ X(kdft_dit_register) (p, t1_8, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t1_9.c b/src/fftw3/dft/codelets/standard/t1_9.c
new file mode 100644
index 0000000..924e456
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t1_9.c
@@ -0,0 +1,256 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:30:00 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -n 9 -name t1_9 -include t.h */
+
+/*
+ * This function contains 96 FP additions, 72 FP multiplications,
+ * (or, 60 additions, 36 multiplications, 36 fused multiply/add),
+ * 41 stack variables, and 36 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t1_9.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_9.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t1_9.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t1_9(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ DK(KP939692620, +0.939692620785908384054109277324731469936208134);
+ DK(KP342020143, +0.342020143325668733044099614682259580763083368);
+ DK(KP984807753, +0.984807753012208059366743024589523013670643252);
+ DK(KP173648177, +0.173648177666930348851716626769314796000375677);
+ DK(KP642787609, +0.642787609686539326322643409907263432907559884);
+ DK(KP766044443, +0.766044443118978035202392650555416673935832457);
+ DK(KP500000000, +0.500000000000000000000000000000000000000000000);
+ DK(KP866025403, +0.866025403784438646763723170752936183471402627);
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 16) {
+ E T1, T1B, TQ, T1G, Tc, TN, T1A, T1H, TL, T1x, T17, T1o, T1c, T1n, Tu;
+ E T1w, TW, T1k, T11, T1l;
+ {
+ E T6, TO, Tb, TP;
+ T1 = ri[0];
+ T1B = ii[0];
+ {
+ E T3, T5, T2, T4;
+ T3 = ri[WS(ios, 3)];
+ T5 = ii[WS(ios, 3)];
+ T2 = W[4];
+ T4 = W[5];
+ T6 = FMA(T2, T3, T4 * T5);
+ TO = FNMS(T4, T3, T2 * T5);
+ }
+ {
+ E T8, Ta, T7, T9;
+ T8 = ri[WS(ios, 6)];
+ Ta = ii[WS(ios, 6)];
+ T7 = W[10];
+ T9 = W[11];
+ Tb = FMA(T7, T8, T9 * Ta);
+ TP = FNMS(T9, T8, T7 * Ta);
+ }
+ TQ = KP866025403 * (TO - TP);
+ T1G = KP866025403 * (Tb - T6);
+ Tc = T6 + Tb;
+ TN = FNMS(KP500000000, Tc, T1);
+ T1A = TO + TP;
+ T1H = FNMS(KP500000000, T1A, T1B);
+ }
+ {
+ E Tz, T19, TE, T14, TJ, T15, TK, T1a;
+ {
+ E Tw, Ty, Tv, Tx;
+ Tw = ri[WS(ios, 2)];
+ Ty = ii[WS(ios, 2)];
+ Tv = W[2];
+ Tx = W[3];
+ Tz = FMA(Tv, Tw, Tx * Ty);
+ T19 = FNMS(Tx, Tw, Tv * Ty);
+ }
+ {
+ E TB, TD, TA, TC;
+ TB = ri[WS(ios, 5)];
+ TD = ii[WS(ios, 5)];
+ TA = W[8];
+ TC = W[9];
+ TE = FMA(TA, TB, TC * TD);
+ T14 = FNMS(TC, TB, TA * TD);
+ }
+ {
+ E TG, TI, TF, TH;
+ TG = ri[WS(ios, 8)];
+ TI = ii[WS(ios, 8)];
+ TF = W[14];
+ TH = W[15];
+ TJ = FMA(TF, TG, TH * TI);
+ T15 = FNMS(TH, TG, TF * TI);
+ }
+ TK = TE + TJ;
+ T1a = T14 + T15;
+ TL = Tz + TK;
+ T1x = T19 + T1a;
+ {
+ E T13, T16, T18, T1b;
+ T13 = FNMS(KP500000000, TK, Tz);
+ T16 = KP866025403 * (T14 - T15);
+ T17 = T13 + T16;
+ T1o = T13 - T16;
+ T18 = KP866025403 * (TJ - TE);
+ T1b = FNMS(KP500000000, T1a, T19);
+ T1c = T18 + T1b;
+ T1n = T1b - T18;
+ }
+ }
+ {
+ E Ti, TY, Tn, TT, Ts, TU, Tt, TZ;
+ {
+ E Tf, Th, Te, Tg;
+ Tf = ri[WS(ios, 1)];
+ Th = ii[WS(ios, 1)];
+ Te = W[0];
+ Tg = W[1];
+ Ti = FMA(Te, Tf, Tg * Th);
+ TY = FNMS(Tg, Tf, Te * Th);
+ }
+ {
+ E Tk, Tm, Tj, Tl;
+ Tk = ri[WS(ios, 4)];
+ Tm = ii[WS(ios, 4)];
+ Tj = W[6];
+ Tl = W[7];
+ Tn = FMA(Tj, Tk, Tl * Tm);
+ TT = FNMS(Tl, Tk, Tj * Tm);
+ }
+ {
+ E Tp, Tr, To, Tq;
+ Tp = ri[WS(ios, 7)];
+ Tr = ii[WS(ios, 7)];
+ To = W[12];
+ Tq = W[13];
+ Ts = FMA(To, Tp, Tq * Tr);
+ TU = FNMS(Tq, Tp, To * Tr);
+ }
+ Tt = Tn + Ts;
+ TZ = TT + TU;
+ Tu = Ti + Tt;
+ T1w = TY + TZ;
+ {
+ E TS, TV, TX, T10;
+ TS = FNMS(KP500000000, Tt, Ti);
+ TV = KP866025403 * (TT - TU);
+ TW = TS + TV;
+ T1k = TS - TV;
+ TX = KP866025403 * (Ts - Tn);
+ T10 = FNMS(KP500000000, TZ, TY);
+ T11 = TX + T10;
+ T1l = T10 - TX;
+ }
+ }
+ {
+ E T1y, Td, TM, T1v;
+ T1y = KP866025403 * (T1w - T1x);
+ Td = T1 + Tc;
+ TM = Tu + TL;
+ T1v = FNMS(KP500000000, TM, Td);
+ ri[0] = Td + TM;
+ ri[WS(ios, 3)] = T1v + T1y;
+ ri[WS(ios, 6)] = T1v - T1y;
+ }
+ {
+ E T1D, T1z, T1C, T1E;
+ T1D = KP866025403 * (TL - Tu);
+ T1z = T1w + T1x;
+ T1C = T1A + T1B;
+ T1E = FNMS(KP500000000, T1z, T1C);
+ ii[0] = T1z + T1C;
+ ii[WS(ios, 6)] = T1E - T1D;
+ ii[WS(ios, 3)] = T1D + T1E;
+ }
+ {
+ E TR, T1I, T1e, T1J, T1i, T1F, T1f, T1K;
+ TR = TN + TQ;
+ T1I = T1G + T1H;
+ {
+ E T12, T1d, T1g, T1h;
+ T12 = FMA(KP766044443, TW, KP642787609 * T11);
+ T1d = FMA(KP173648177, T17, KP984807753 * T1c);
+ T1e = T12 + T1d;
+ T1J = KP866025403 * (T1d - T12);
+ T1g = FNMS(KP642787609, TW, KP766044443 * T11);
+ T1h = FNMS(KP984807753, T17, KP173648177 * T1c);
+ T1i = KP866025403 * (T1g - T1h);
+ T1F = T1g + T1h;
+ }
+ ri[WS(ios, 1)] = TR + T1e;
+ ii[WS(ios, 1)] = T1F + T1I;
+ T1f = FNMS(KP500000000, T1e, TR);
+ ri[WS(ios, 7)] = T1f - T1i;
+ ri[WS(ios, 4)] = T1f + T1i;
+ T1K = FNMS(KP500000000, T1F, T1I);
+ ii[WS(ios, 4)] = T1J + T1K;
+ ii[WS(ios, 7)] = T1K - T1J;
+ }
+ {
+ E T1j, T1M, T1q, T1N, T1u, T1L, T1r, T1O;
+ T1j = TN - TQ;
+ T1M = T1H - T1G;
+ {
+ E T1m, T1p, T1s, T1t;
+ T1m = FMA(KP173648177, T1k, KP984807753 * T1l);
+ T1p = FNMS(KP939692620, T1o, KP342020143 * T1n);
+ T1q = T1m + T1p;
+ T1N = KP866025403 * (T1p - T1m);
+ T1s = FNMS(KP984807753, T1k, KP173648177 * T1l);
+ T1t = FMA(KP342020143, T1o, KP939692620 * T1n);
+ T1u = KP866025403 * (T1s + T1t);
+ T1L = T1s - T1t;
+ }
+ ri[WS(ios, 2)] = T1j + T1q;
+ ii[WS(ios, 2)] = T1L + T1M;
+ T1r = FNMS(KP500000000, T1q, T1j);
+ ri[WS(ios, 8)] = T1r - T1u;
+ ri[WS(ios, 5)] = T1r + T1u;
+ T1O = FNMS(KP500000000, T1L, T1M);
+ ii[WS(ios, 5)] = T1N + T1O;
+ ii[WS(ios, 8)] = T1O - T1N;
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_FULL, 0, 9},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 9, "t1_9", twinstr, {60, 36, 36, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t1_9) (planner *p) {
+ X(kdft_dit_register) (p, t1_9, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t2_16.c b/src/fftw3/dft/codelets/standard/t2_16.c
new file mode 100644
index 0000000..46d4bdb
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t2_16.c
@@ -0,0 +1,411 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:30:12 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -twiddle-log3 -n 16 -name t2_16 -include t.h */
+
+/*
+ * This function contains 196 FP additions, 108 FP multiplications,
+ * (or, 156 additions, 68 multiplications, 40 fused multiply/add),
+ * 104 stack variables, and 64 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t2_16.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t2_16.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t2_16.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t2_16(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ DK(KP382683432, +0.382683432365089771728459984030398866761344562);
+ DK(KP923879532, +0.923879532511286756128183189396788286822416626);
+ DK(KP707106781, +0.707106781186547524400844362104849039284835938);
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 8) {
+ E T1, T3d, T18, T26, T29, T2R, Tq, T1r, T1E, T2k, T2g, T1O, Te, T3c, Tz;
+ E T1P, T1S, T1T, T1U, TG, TL, T1V, T1Y, T1Z, T20, TT, TY, T1X, T1A, T2l;
+ E T1J, T2h, T1h, T2b, T1m, T2a;
+ T1 = ri[0];
+ T3d = ii[0];
+ {
+ E T9, Td, Tl, Tp, Ty, Tu, TD, TF, TI, TK, TV, TQ, TS, TX, T1z;
+ E T1v, T1C, T1D, T1G, T1I, T1q, T1p, T1l, T1j, T1c, T1g, T2, T5, Ti, Tg;
+ E T4, Tw, Ts, Ta, Tv, T7, Tb, Tr, Tk, TW, TJ, TC, TU, To, TE;
+ E TH, T14, T24, T17, T25, TN, TO, TP, TR;
+ T9 = ri[WS(ios, 8)];
+ Td = ii[WS(ios, 8)];
+ Tl = ri[WS(ios, 4)];
+ Tp = ii[WS(ios, 4)];
+ Ty = ii[WS(ios, 12)];
+ Tu = ri[WS(ios, 12)];
+ TD = ri[WS(ios, 2)];
+ TF = ii[WS(ios, 2)];
+ TI = ri[WS(ios, 10)];
+ TK = ii[WS(ios, 10)];
+ TV = ri[WS(ios, 6)];
+ TQ = ri[WS(ios, 14)];
+ TS = ii[WS(ios, 14)];
+ TX = ii[WS(ios, 6)];
+ T1z = ii[WS(ios, 7)];
+ T1v = ri[WS(ios, 7)];
+ T1C = ri[WS(ios, 3)];
+ T1D = ii[WS(ios, 3)];
+ T1G = ri[WS(ios, 11)];
+ T1I = ii[WS(ios, 11)];
+ T1q = ii[WS(ios, 15)];
+ T1p = ri[WS(ios, 15)];
+ T1l = ii[WS(ios, 13)];
+ T1j = ri[WS(ios, 13)];
+ T1c = ri[WS(ios, 5)];
+ T1g = ii[WS(ios, 5)];
+ {
+ E T12, T13, T15, T16, T3, T6, Tm, Tj, Tn, Th;
+ T12 = ri[WS(ios, 1)];
+ T13 = ii[WS(ios, 1)];
+ T15 = ri[WS(ios, 9)];
+ T16 = ii[WS(ios, 9)];
+ T2 = W[4];
+ T5 = W[5];
+ T3 = W[0];
+ T6 = W[1];
+ Ti = W[3];
+ Tg = W[2];
+ T4 = T2 * T3;
+ Tw = T5 * Tg;
+ Ts = T5 * Ti;
+ Ta = T2 * T6;
+ Tv = T2 * Ti;
+ T7 = T5 * T6;
+ Tb = T5 * T3;
+ Tr = T2 * Tg;
+ Tm = Tg * T6;
+ Tj = Ti * T6;
+ Tn = Ti * T3;
+ Th = Tg * T3;
+ Tk = Th - Tj;
+ TW = Tv - Tw;
+ TJ = Ta + Tb;
+ TC = Th + Tj;
+ TU = Tr + Ts;
+ To = Tm + Tn;
+ TE = Tm - Tn;
+ TH = T4 - T7;
+ T14 = FMA(T3, T12, T6 * T13);
+ T24 = FNMS(T6, T12, T3 * T13);
+ T17 = FMA(T2, T15, T5 * T16);
+ T25 = FNMS(T5, T15, T2 * T16);
+ TN = W[6];
+ TO = W[7];
+ TP = FMA(TN, T3, TO * T6);
+ TR = FNMS(TO, T3, TN * T6);
+ }
+ T18 = T14 + T17;
+ T26 = T24 - T25;
+ T29 = T14 - T17;
+ T2R = T24 + T25;
+ Tq = FMA(Tk, Tl, To * Tp);
+ T1r = FMA(TN, T1p, TO * T1q);
+ T1E = FMA(Tg, T1C, Ti * T1D);
+ T2k = FNMS(TO, T1p, TN * T1q);
+ T2g = FNMS(Ti, T1C, Tg * T1D);
+ {
+ E T8, Tc, Tt, Tx;
+ T1O = FNMS(To, Tl, Tk * Tp);
+ T8 = T4 + T7;
+ Tc = Ta - Tb;
+ Te = FNMS(Tc, Td, T8 * T9);
+ T3c = FMA(Tc, T9, T8 * Td);
+ Tt = Tr - Ts;
+ Tx = Tv + Tw;
+ Tz = FMA(Tt, Tu, Tx * Ty);
+ T1P = FNMS(Tx, Tu, Tt * Ty);
+ T1S = FMA(TE, TD, TC * TF);
+ T1T = FNMS(TJ, TI, TH * TK);
+ T1U = T1S - T1T;
+ }
+ TG = FNMS(TE, TF, TC * TD);
+ TL = FMA(TH, TI, TJ * TK);
+ T1V = TG - TL;
+ T1Y = FMA(TR, TQ, TP * TS);
+ T1Z = FMA(TW, TV, TU * TX);
+ T20 = T1Y - T1Z;
+ TT = FNMS(TR, TS, TP * TQ);
+ TY = FNMS(TW, TX, TU * TV);
+ T1X = TT - TY;
+ {
+ E T1u, T1F, T1y, T1H;
+ {
+ E T1s, T1t, T1w, T1x;
+ T1s = T2 * TC;
+ T1t = T5 * TE;
+ T1u = T1s - T1t;
+ T1F = T1s + T1t;
+ T1w = T2 * TE;
+ T1x = T5 * TC;
+ T1y = T1w + T1x;
+ T1H = T1w - T1x;
+ }
+ T1A = FMA(T1u, T1v, T1y * T1z);
+ T2l = FNMS(T1y, T1v, T1u * T1z);
+ T1J = FNMS(T1H, T1I, T1F * T1G);
+ T2h = FMA(T1H, T1G, T1F * T1I);
+ }
+ {
+ E T1b, T1i, T1f, T1k;
+ {
+ E T19, T1a, T1d, T1e;
+ T19 = T2 * Tk;
+ T1a = T5 * To;
+ T1b = T19 + T1a;
+ T1i = T19 - T1a;
+ T1d = T2 * To;
+ T1e = T5 * Tk;
+ T1f = T1d - T1e;
+ T1k = T1d + T1e;
+ }
+ T1h = FNMS(T1f, T1g, T1b * T1c);
+ T2b = FNMS(T1k, T1j, T1i * T1l);
+ T1m = FMA(T1i, T1j, T1k * T1l);
+ T2a = FMA(T1f, T1c, T1b * T1g);
+ }
+ }
+ {
+ E TB, T2L, T10, T3k, T3f, T3l, T2O, T3a, T1o, T36, T2U, T32, T1L, T37, T2Z;
+ E T33;
+ {
+ E Tf, TA, T2M, T2N;
+ Tf = T1 + Te;
+ TA = Tq + Tz;
+ TB = Tf + TA;
+ T2L = Tf - TA;
+ {
+ E TM, TZ, T3b, T3e;
+ TM = TG + TL;
+ TZ = TT + TY;
+ T10 = TM + TZ;
+ T3k = TZ - TM;
+ T3b = T1O + T1P;
+ T3e = T3c + T3d;
+ T3f = T3b + T3e;
+ T3l = T3e - T3b;
+ }
+ T2M = T1S + T1T;
+ T2N = T1Y + T1Z;
+ T2O = T2M - T2N;
+ T3a = T2M + T2N;
+ {
+ E T1n, T2Q, T2S, T2T;
+ T1n = T1h + T1m;
+ T2Q = T18 - T1n;
+ T2S = T2a + T2b;
+ T2T = T2R - T2S;
+ T1o = T18 + T1n;
+ T36 = T2R + T2S;
+ T2U = T2Q + T2T;
+ T32 = T2T - T2Q;
+ }
+ {
+ E T1B, T1K, T2V, T2W, T2X, T2Y;
+ T1B = T1r + T1A;
+ T1K = T1E + T1J;
+ T2V = T1B - T1K;
+ T2W = T2k + T2l;
+ T2X = T2g + T2h;
+ T2Y = T2W - T2X;
+ T1L = T1B + T1K;
+ T37 = T2W + T2X;
+ T2Z = T2V - T2Y;
+ T33 = T2V + T2Y;
+ }
+ }
+ {
+ E T11, T1M, T39, T3g;
+ T11 = TB + T10;
+ T1M = T1o + T1L;
+ ri[WS(ios, 8)] = T11 - T1M;
+ ri[0] = T11 + T1M;
+ T39 = T36 + T37;
+ T3g = T3a + T3f;
+ ii[0] = T39 + T3g;
+ ii[WS(ios, 8)] = T3g - T39;
+ }
+ {
+ E T2P, T30, T3j, T3m;
+ T2P = T2L + T2O;
+ T30 = KP707106781 * (T2U + T2Z);
+ ri[WS(ios, 10)] = T2P - T30;
+ ri[WS(ios, 2)] = T2P + T30;
+ T3j = KP707106781 * (T32 + T33);
+ T3m = T3k + T3l;
+ ii[WS(ios, 2)] = T3j + T3m;
+ ii[WS(ios, 10)] = T3m - T3j;
+ }
+ {
+ E T31, T34, T3n, T3o;
+ T31 = T2L - T2O;
+ T34 = KP707106781 * (T32 - T33);
+ ri[WS(ios, 14)] = T31 - T34;
+ ri[WS(ios, 6)] = T31 + T34;
+ T3n = KP707106781 * (T2Z - T2U);
+ T3o = T3l - T3k;
+ ii[WS(ios, 6)] = T3n + T3o;
+ ii[WS(ios, 14)] = T3o - T3n;
+ }
+ {
+ E T35, T38, T3h, T3i;
+ T35 = TB - T10;
+ T38 = T36 - T37;
+ ri[WS(ios, 12)] = T35 - T38;
+ ri[WS(ios, 4)] = T35 + T38;
+ T3h = T1L - T1o;
+ T3i = T3f - T3a;
+ ii[WS(ios, 4)] = T3h + T3i;
+ ii[WS(ios, 12)] = T3i - T3h;
+ }
+ }
+ {
+ E T1R, T2v, T22, T3q, T3t, T3z, T2y, T3y, T2e, T2I, T2s, T2C, T2p, T2J, T2t;
+ E T2F;
+ {
+ E T1N, T1Q, T2w, T2x;
+ T1N = T1 - Te;
+ T1Q = T1O - T1P;
+ T1R = T1N - T1Q;
+ T2v = T1N + T1Q;
+ {
+ E T1W, T21, T3r, T3s;
+ T1W = T1U - T1V;
+ T21 = T1X + T20;
+ T22 = KP707106781 * (T1W - T21);
+ T3q = KP707106781 * (T1W + T21);
+ T3r = T3d - T3c;
+ T3s = Tq - Tz;
+ T3t = T3r - T3s;
+ T3z = T3s + T3r;
+ }
+ T2w = T1V + T1U;
+ T2x = T1X - T20;
+ T2y = KP707106781 * (T2w + T2x);
+ T3y = KP707106781 * (T2x - T2w);
+ {
+ E T28, T2A, T2d, T2B, T27, T2c;
+ T27 = T1h - T1m;
+ T28 = T26 + T27;
+ T2A = T26 - T27;
+ T2c = T2a - T2b;
+ T2d = T29 - T2c;
+ T2B = T29 + T2c;
+ T2e = FMA(KP923879532, T28, KP382683432 * T2d);
+ T2I = FNMS(KP382683432, T2B, KP923879532 * T2A);
+ T2s = FNMS(KP923879532, T2d, KP382683432 * T28);
+ T2C = FMA(KP382683432, T2A, KP923879532 * T2B);
+ }
+ {
+ E T2j, T2D, T2o, T2E;
+ {
+ E T2f, T2i, T2m, T2n;
+ T2f = T1r - T1A;
+ T2i = T2g - T2h;
+ T2j = T2f - T2i;
+ T2D = T2f + T2i;
+ T2m = T2k - T2l;
+ T2n = T1E - T1J;
+ T2o = T2m + T2n;
+ T2E = T2m - T2n;
+ }
+ T2p = FNMS(KP923879532, T2o, KP382683432 * T2j);
+ T2J = FMA(KP923879532, T2E, KP382683432 * T2D);
+ T2t = FMA(KP382683432, T2o, KP923879532 * T2j);
+ T2F = FNMS(KP382683432, T2E, KP923879532 * T2D);
+ }
+ }
+ {
+ E T23, T2q, T3x, T3A;
+ T23 = T1R + T22;
+ T2q = T2e + T2p;
+ ri[WS(ios, 11)] = T23 - T2q;
+ ri[WS(ios, 3)] = T23 + T2q;
+ T3x = T2s + T2t;
+ T3A = T3y + T3z;
+ ii[WS(ios, 3)] = T3x + T3A;
+ ii[WS(ios, 11)] = T3A - T3x;
+ }
+ {
+ E T2r, T2u, T3B, T3C;
+ T2r = T1R - T22;
+ T2u = T2s - T2t;
+ ri[WS(ios, 15)] = T2r - T2u;
+ ri[WS(ios, 7)] = T2r + T2u;
+ T3B = T2p - T2e;
+ T3C = T3z - T3y;
+ ii[WS(ios, 7)] = T3B + T3C;
+ ii[WS(ios, 15)] = T3C - T3B;
+ }
+ {
+ E T2z, T2G, T3p, T3u;
+ T2z = T2v + T2y;
+ T2G = T2C + T2F;
+ ri[WS(ios, 9)] = T2z - T2G;
+ ri[WS(ios, 1)] = T2z + T2G;
+ T3p = T2I + T2J;
+ T3u = T3q + T3t;
+ ii[WS(ios, 1)] = T3p + T3u;
+ ii[WS(ios, 9)] = T3u - T3p;
+ }
+ {
+ E T2H, T2K, T3v, T3w;
+ T2H = T2v - T2y;
+ T2K = T2I - T2J;
+ ri[WS(ios, 13)] = T2H - T2K;
+ ri[WS(ios, 5)] = T2H + T2K;
+ T3v = T2F - T2C;
+ T3w = T3t - T3q;
+ ii[WS(ios, 5)] = T3v + T3w;
+ ii[WS(ios, 13)] = T3w - T3v;
+ }
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_COS, 0, 1},
+ {TW_SIN, 0, 1},
+ {TW_COS, 0, 3},
+ {TW_SIN, 0, 3},
+ {TW_COS, 0, 9},
+ {TW_SIN, 0, 9},
+ {TW_COS, 0, 15},
+ {TW_SIN, 0, 15},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 16, "t2_16", twinstr, {156, 68, 40, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t2_16) (planner *p) {
+ X(kdft_dit_register) (p, t2_16, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t2_32.c b/src/fftw3/dft/codelets/standard/t2_32.c
new file mode 100644
index 0000000..b065ecb
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t2_32.c
@@ -0,0 +1,853 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:30:26 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -twiddle-log3 -n 32 -name t2_32 -include t.h */
+
+/*
+ * This function contains 488 FP additions, 280 FP multiplications,
+ * (or, 376 additions, 168 multiplications, 112 fused multiply/add),
+ * 204 stack variables, and 128 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t2_32.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t2_32.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t2_32.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t2_32(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ DK(KP831469612, +0.831469612302545237078788377617905756738560812);
+ DK(KP555570233, +0.555570233019602224742830813948532874374937191);
+ DK(KP195090322, +0.195090322016128267848284868477022240927691618);
+ DK(KP980785280, +0.980785280403230449126182236134239036973933731);
+ DK(KP707106781, +0.707106781186547524400844362104849039284835938);
+ DK(KP923879532, +0.923879532511286756128183189396788286822416626);
+ DK(KP382683432, +0.382683432365089771728459984030398866761344562);
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 8) {
+ E T1, T7G, Tn, Tp, T3t, T4S, TQ, T3G, T49, T20, T2n, T4y, T1J, T43, T2w;
+ E T4z, T36, T4Z, TK, T8b, T40, T6l, T3U, T6k, T1h, T3L, T1D, T3V, T1s, T3X;
+ E T3E, T7E, T3O, T6h, T2k, T6w, T4i, T4x, T3q, T6I, T4O, T4P, T3w, T4T, T4R;
+ E T4U, Tm, To, TX, T4I, T3a, T3H, T31, T4Y, T3f, T4J, T2G, T4s, T4r, T2B;
+ E T4q, T4t, T27, T4a, T2M, T4m, T4n, T2P, T4l, T4o, T1U, T44;
+ T1 = ri[0];
+ T7G = ii[0];
+ Tn = ri[WS(ios, 16)];
+ Tp = ii[WS(ios, 16)];
+ {
+ E Tv, Tz, TE, TI, TP, TN, TU, TW, T12, T16, T1k, T1b, T1f, T1l, T24;
+ E T1z, T1w, T1u, T1q, T1o, T1B, T1X, T1Z, T1T, T1R, T1I, T1G, T26, T2O, T3e;
+ E T3m, T3o, T3u, T3v, T3c, T30, T2W, T33, T35, T38, T39, T2N, T2r, T2v, T2m;
+ E T2l, T2i, T2g, T2z, T2A, T2D, T2F, T2L, T2J, T2, Ti, T3, Tc, TF, TC;
+ E TG, TB, Tu, T1a, T15, Ty, T1t, T1Y, T1W, T1v, TH, T1y, T11, TD, T1A;
+ E T1e, T4g, T3k, T1n, T1p, T2e, T4M, TM, T1K, T1O, TO, T1L, T1N, Ta, Tb;
+ E T2t, Tk, T2o, Tf, Tg, T2s, Tj, T2p;
+ Tv = ri[WS(ios, 8)];
+ Tz = ii[WS(ios, 8)];
+ TE = ri[WS(ios, 24)];
+ TI = ii[WS(ios, 24)];
+ TP = ii[WS(ios, 4)];
+ TN = ri[WS(ios, 4)];
+ TU = ri[WS(ios, 20)];
+ TW = ii[WS(ios, 20)];
+ T12 = ri[WS(ios, 28)];
+ T16 = ii[WS(ios, 28)];
+ T1k = ri[WS(ios, 2)];
+ T1b = ri[WS(ios, 12)];
+ T1f = ii[WS(ios, 12)];
+ T1l = ii[WS(ios, 2)];
+ T24 = ri[WS(ios, 22)];
+ T1z = ri[WS(ios, 26)];
+ T1w = ii[WS(ios, 10)];
+ T1u = ri[WS(ios, 10)];
+ T1q = ii[WS(ios, 18)];
+ T1o = ri[WS(ios, 18)];
+ T1B = ii[WS(ios, 26)];
+ T1X = ri[WS(ios, 6)];
+ T1Z = ii[WS(ios, 6)];
+ T1T = ii[WS(ios, 14)];
+ T1R = ri[WS(ios, 14)];
+ T1I = ii[WS(ios, 30)];
+ T1G = ri[WS(ios, 30)];
+ T26 = ii[WS(ios, 22)];
+ T2O = ii[WS(ios, 13)];
+ T3e = ii[WS(ios, 23)];
+ T3m = ri[WS(ios, 19)];
+ T3o = ii[WS(ios, 19)];
+ T3u = ri[WS(ios, 11)];
+ T3v = ii[WS(ios, 11)];
+ T3c = ri[WS(ios, 23)];
+ T30 = ii[WS(ios, 31)];
+ T2W = ri[WS(ios, 31)];
+ T33 = ri[WS(ios, 15)];
+ T35 = ii[WS(ios, 15)];
+ T38 = ri[WS(ios, 7)];
+ T39 = ii[WS(ios, 7)];
+ T2N = ri[WS(ios, 13)];
+ T2r = ri[WS(ios, 25)];
+ T2v = ii[WS(ios, 25)];
+ T2m = ii[WS(ios, 9)];
+ T2l = ri[WS(ios, 9)];
+ T2i = ii[WS(ios, 17)];
+ T2g = ri[WS(ios, 17)];
+ T2z = ri[WS(ios, 5)];
+ T2A = ii[WS(ios, 5)];
+ T2D = ri[WS(ios, 21)];
+ T2F = ii[WS(ios, 21)];
+ T2L = ii[WS(ios, 29)];
+ T2J = ri[WS(ios, 29)];
+ {
+ E T2c, T2d, T3i, T3j, T3s, T3r, T4, T7, T5, T8, T6, T9, T14, T1d, Ts;
+ E T18, T19, T1c, Te, Td, Tt, Tw, T13, TZ, T10, Tx;
+ T2c = ri[WS(ios, 1)];
+ T2d = ii[WS(ios, 1)];
+ T3i = ri[WS(ios, 3)];
+ T3j = ii[WS(ios, 3)];
+ T3s = ii[WS(ios, 27)];
+ T3r = ri[WS(ios, 27)];
+ T2 = W[6];
+ Ti = W[7];
+ T3 = W[4];
+ Tc = W[5];
+ T4 = W[2];
+ T7 = W[3];
+ T5 = W[0];
+ T8 = W[1];
+ T6 = T4 * T5;
+ T9 = T7 * T8;
+ T14 = Ti * T5;
+ T1d = Tc * T4;
+ Ts = T3 * T5;
+ T18 = T3 * T4;
+ T19 = Tc * T7;
+ T1c = T3 * T7;
+ Te = T7 * T5;
+ Td = T4 * T8;
+ Tt = Tc * T8;
+ Tw = T3 * T8;
+ TF = T2 * T7;
+ T13 = T2 * T8;
+ TC = Ti * T7;
+ TG = Ti * T4;
+ TZ = T2 * T5;
+ T10 = Ti * T8;
+ TB = T2 * T4;
+ Tx = Tc * T5;
+ Tu = Ts + Tt;
+ T1a = T18 - T19;
+ T15 = T13 + T14;
+ Ty = Tw - Tx;
+ T1t = Ts - Tt;
+ T1Y = T1c - T1d;
+ T1W = T18 + T19;
+ T1v = Tw + Tx;
+ TH = TF - TG;
+ T1y = TZ + T10;
+ T11 = TZ - T10;
+ TD = TB + TC;
+ T1A = T13 - T14;
+ T1e = T1c + T1d;
+ T3t = FMA(T2, T3r, Ti * T3s);
+ T4g = FNMS(T8, T2c, T5 * T2d);
+ T4S = FNMS(Ti, T3r, T2 * T3s);
+ T3k = FMA(T4, T3i, T7 * T3j);
+ T1n = FMA(T2, T3, Ti * Tc);
+ T1p = FNMS(Ti, T3, T2 * Tc);
+ T2e = FMA(T5, T2c, T8 * T2d);
+ T4M = FNMS(T7, T3i, T4 * T3j);
+ TM = T6 - T9;
+ T1K = T3 * TM;
+ T1O = Tc * TM;
+ TO = Td + Te;
+ T1L = Tc * TO;
+ T1N = T3 * TO;
+ Ta = T6 + T9;
+ Tb = T3 * Ta;
+ T2t = Ti * Ta;
+ Tk = Tc * Ta;
+ T2o = T2 * Ta;
+ Tf = Td - Te;
+ Tg = Tc * Tf;
+ T2s = T2 * Tf;
+ Tj = T3 * Tf;
+ T2p = Ti * Tf;
+ }
+ TQ = FMA(TM, TN, TO * TP);
+ T3G = FNMS(TO, TN, TM * TP);
+ T49 = FMA(T1Y, T1X, T1W * T1Z);
+ T20 = FNMS(T1Y, T1Z, T1W * T1X);
+ T2n = FMA(T3, T2l, Tc * T2m);
+ T4y = FNMS(Tc, T2l, T3 * T2m);
+ {
+ E T1F, T1H, TA, TJ;
+ T1F = TB - TC;
+ T1H = TF + TG;
+ T1J = FMA(T1F, T1G, T1H * T1I);
+ T43 = FNMS(T1H, T1G, T1F * T1I);
+ {
+ E T2q, T2u, T32, T34;
+ T2q = T2o - T2p;
+ T2u = T2s + T2t;
+ T2w = FMA(T2q, T2r, T2u * T2v);
+ T4z = FNMS(T2u, T2r, T2q * T2v);
+ T32 = FMA(T2, T1a, Ti * T1e);
+ T34 = FNMS(Ti, T1a, T2 * T1e);
+ T36 = FNMS(T34, T35, T32 * T33);
+ T4Z = FMA(T34, T33, T32 * T35);
+ }
+ TA = FNMS(Ty, Tz, Tu * Tv);
+ TJ = FNMS(TH, TI, TD * TE);
+ TK = TA + TJ;
+ T8b = TA - TJ;
+ {
+ E T3Y, T3Z, T3S, T3T;
+ T3Y = FNMS(T1v, T1u, T1t * T1w);
+ T3Z = FMA(T1A, T1z, T1y * T1B);
+ T40 = T3Y - T3Z;
+ T6l = T3Y + T3Z;
+ T3S = FMA(Tf, T1k, Ta * T1l);
+ T3T = FMA(T1p, T1o, T1n * T1q);
+ T3U = T3S - T3T;
+ T6k = T3S + T3T;
+ }
+ }
+ {
+ E T17, T1g, Th, Tl;
+ T17 = FMA(T11, T12, T15 * T16);
+ T1g = FMA(T1a, T1b, T1e * T1f);
+ T1h = T17 + T1g;
+ T3L = T17 - T1g;
+ {
+ E T1x, T1C, T1m, T1r;
+ T1x = FMA(T1t, T1u, T1v * T1w);
+ T1C = FNMS(T1A, T1B, T1y * T1z);
+ T1D = T1x + T1C;
+ T3V = T1x - T1C;
+ T1m = FNMS(Tf, T1l, Ta * T1k);
+ T1r = FNMS(T1p, T1q, T1n * T1o);
+ T1s = T1m + T1r;
+ T3X = T1m - T1r;
+ }
+ {
+ E T3C, T3D, T3M, T3N;
+ T3C = FMA(Ty, Tv, Tu * Tz);
+ T3D = FMA(TH, TE, TD * TI);
+ T3E = T3C - T3D;
+ T7E = T3C + T3D;
+ T3M = FNMS(T15, T12, T11 * T16);
+ T3N = FNMS(T1e, T1b, T1a * T1f);
+ T3O = T3M - T3N;
+ T6h = T3M + T3N;
+ {
+ E T2j, T4h, T2f, T2h;
+ T2f = FMA(T2, T1t, Ti * T1v);
+ T2h = FNMS(Ti, T1t, T2 * T1v);
+ T2j = FNMS(T2h, T2i, T2f * T2g);
+ T4h = FMA(T2h, T2g, T2f * T2i);
+ T2k = T2e + T2j;
+ T6w = T4g + T4h;
+ T4i = T4g - T4h;
+ T4x = T2e - T2j;
+ }
+ }
+ {
+ E T3p, T4N, T3l, T3n;
+ T3l = FNMS(Ti, Ty, T2 * Tu);
+ T3n = FMA(T2, Ty, Ti * Tu);
+ T3p = FMA(T3l, T3m, T3n * T3o);
+ T4N = FNMS(T3n, T3m, T3l * T3o);
+ T3q = T3k + T3p;
+ T6I = T4M + T4N;
+ T4O = T4M - T4N;
+ T4P = T3k - T3p;
+ }
+ Th = Tb + Tg;
+ Tl = Tj - Tk;
+ T3w = FNMS(Tl, T3v, Th * T3u);
+ T4T = FMA(Tl, T3u, Th * T3v);
+ T4R = T3t - T3w;
+ T4U = T4S - T4T;
+ Tm = FNMS(Ti, Tl, T2 * Th);
+ To = FMA(T2, Tl, Ti * Th);
+ {
+ E TR, TS, TT, TV;
+ TR = Tb - Tg;
+ TS = Tj + Tk;
+ TT = FMA(T2, TR, Ti * TS);
+ TV = FNMS(Ti, TR, T2 * TS);
+ TX = FNMS(TV, TW, TT * TU);
+ T4I = FNMS(TS, T38, TR * T39);
+ T3a = FMA(TR, T38, TS * T39);
+ T3H = FMA(TV, TU, TT * TW);
+ }
+ {
+ E T2V, T3b, T2Z, T3d;
+ {
+ E T2T, T2U, T2X, T2Y;
+ T2T = T2 * TM;
+ T2U = Ti * TO;
+ T2V = T2T - T2U;
+ T3b = T2T + T2U;
+ T2X = T2 * TO;
+ T2Y = Ti * TM;
+ T2Z = T2X + T2Y;
+ T3d = T2X - T2Y;
+ }
+ T31 = FMA(T2V, T2W, T2Z * T30);
+ T4Y = FNMS(T2Z, T2W, T2V * T30);
+ T3f = FNMS(T3d, T3e, T3b * T3c);
+ T4J = FMA(T3d, T3c, T3b * T3e);
+ }
+ {
+ E T23, T25, T1Q, T1S;
+ {
+ E T2C, T2E, T21, T22;
+ T2C = FNMS(Ti, T1Y, T2 * T1W);
+ T2E = FMA(T2, T1Y, Ti * T1W);
+ T2G = FMA(T2C, T2D, T2E * T2F);
+ T4s = FNMS(T2E, T2D, T2C * T2F);
+ T21 = T1K + T1L;
+ T22 = T1N - T1O;
+ T23 = FNMS(Ti, T22, T2 * T21);
+ T4r = FMA(T22, T2z, T21 * T2A);
+ T25 = FMA(T2, T22, Ti * T21);
+ T2B = FNMS(T22, T2A, T21 * T2z);
+ }
+ T4q = T2B - T2G;
+ T4t = T4r - T4s;
+ T27 = FMA(T23, T24, T25 * T26);
+ T4a = FNMS(T25, T24, T23 * T26);
+ {
+ E T2I, T2K, T1M, T1P;
+ T2I = T2o + T2p;
+ T2K = T2s - T2t;
+ T2M = FNMS(T2K, T2L, T2I * T2J);
+ T4m = FMA(T2K, T2J, T2I * T2L);
+ T1M = T1K - T1L;
+ T1P = T1N + T1O;
+ T1Q = FMA(T2, T1M, Ti * T1P);
+ T4n = FNMS(T1P, T2N, T1M * T2O);
+ T1S = FNMS(Ti, T1M, T2 * T1P);
+ T2P = FMA(T1M, T2N, T1P * T2O);
+ }
+ T4l = T2M - T2P;
+ T4o = T4m - T4n;
+ T1U = FNMS(T1S, T1T, T1Q * T1R);
+ T44 = FMA(T1S, T1R, T1Q * T1T);
+ }
+ }
+ }
+ {
+ E T1i, T7V, T6i, T7D, T42, T5e, T5A, T60, T6o, T6Y, TL, T6f, T3F, T5t, T7I;
+ E T8q, T7W, T8c, T3Q, T8p, T5w, T89, T4d, T61, T5f, T5D, T2a, T6t, T7O, T7C;
+ E T7g, T6Z, T4w, T64, T65, T4F, T5i, T5I, T5L, T5j, T2S, T7l, T7y, T6A, T6F;
+ E T73, T7i, T72, T4X, T67, T68, T56, T5l, T5P, T5S, T5m, T3z, T7q, T7z, T6L;
+ E T6Q, T76, T7n, T75;
+ {
+ E TY, T6g, T3W, T41;
+ TY = TQ + TX;
+ T1i = TY + T1h;
+ T7V = T1h - TY;
+ T6g = T3G + T3H;
+ T6i = T6g - T6h;
+ T7D = T6g + T6h;
+ T3W = T3U + T3V;
+ T41 = T3X - T40;
+ T42 = FNMS(KP923879532, T41, KP382683432 * T3W);
+ T5e = FMA(KP923879532, T3W, KP382683432 * T41);
+ }
+ {
+ E T5y, T5z, T6m, T6n;
+ T5y = T3U - T3V;
+ T5z = T3X + T40;
+ T5A = FNMS(KP382683432, T5z, KP923879532 * T5y);
+ T60 = FMA(KP382683432, T5y, KP923879532 * T5z);
+ T6m = T6k - T6l;
+ T6n = T1s - T1D;
+ T6o = T6m - T6n;
+ T6Y = T6n + T6m;
+ }
+ {
+ E Tr, T3B, Tq, T7H, T8a, T7F;
+ Tq = FMA(Tm, Tn, To * Tp);
+ Tr = T1 + Tq;
+ T3B = T1 - Tq;
+ TL = Tr + TK;
+ T6f = Tr - TK;
+ T3F = T3B - T3E;
+ T5t = T3B + T3E;
+ T7F = FNMS(To, Tn, Tm * Tp);
+ T7H = T7F + T7G;
+ T8a = T7G - T7F;
+ T7I = T7E + T7H;
+ T8q = T8b + T8a;
+ T7W = T7H - T7E;
+ T8c = T8a - T8b;
+ }
+ {
+ E T3P, T5v, T3K, T5u, T3I, T3J;
+ T3P = T3L + T3O;
+ T5v = T3L - T3O;
+ T3I = T3G - T3H;
+ T3J = TQ - TX;
+ T3K = T3I - T3J;
+ T5u = T3J + T3I;
+ T3Q = KP707106781 * (T3K - T3P);
+ T8p = KP707106781 * (T5v - T5u);
+ T5w = KP707106781 * (T5u + T5v);
+ T89 = KP707106781 * (T3K + T3P);
+ }
+ {
+ E T47, T5B, T4c, T5C;
+ {
+ E T45, T46, T48, T4b;
+ T45 = T43 - T44;
+ T46 = T20 - T27;
+ T47 = T45 + T46;
+ T5B = T45 - T46;
+ T48 = T1J - T1U;
+ T4b = T49 - T4a;
+ T4c = T48 - T4b;
+ T5C = T48 + T4b;
+ }
+ T4d = FMA(KP382683432, T47, KP923879532 * T4c);
+ T61 = FNMS(KP382683432, T5B, KP923879532 * T5C);
+ T5f = FNMS(KP923879532, T47, KP382683432 * T4c);
+ T5D = FMA(KP923879532, T5B, KP382683432 * T5C);
+ }
+ {
+ E T1E, T7e, T29, T6p, T6s, T7f;
+ T1E = T1s + T1D;
+ T7e = T6k + T6l;
+ {
+ E T1V, T28, T6q, T6r;
+ T1V = T1J + T1U;
+ T28 = T20 + T27;
+ T29 = T1V + T28;
+ T6p = T1V - T28;
+ T6q = T43 + T44;
+ T6r = T49 + T4a;
+ T6s = T6q - T6r;
+ T7f = T6q + T6r;
+ }
+ T2a = T1E + T29;
+ T6t = T6p + T6s;
+ T7O = T29 - T1E;
+ T7C = T7e + T7f;
+ T7g = T7e - T7f;
+ T6Z = T6p - T6s;
+ }
+ {
+ E T4k, T5J, T4B, T5G, T4v, T5H, T4E, T5K, T4j, T4A;
+ T4j = T2n - T2w;
+ T4k = T4i + T4j;
+ T5J = T4i - T4j;
+ T4A = T4y - T4z;
+ T4B = T4x - T4A;
+ T5G = T4x + T4A;
+ {
+ E T4p, T4u, T4C, T4D;
+ T4p = T4l - T4o;
+ T4u = T4q + T4t;
+ T4v = KP707106781 * (T4p - T4u);
+ T5H = KP707106781 * (T4u + T4p);
+ T4C = T4t - T4q;
+ T4D = T4l + T4o;
+ T4E = KP707106781 * (T4C - T4D);
+ T5K = KP707106781 * (T4C + T4D);
+ }
+ T4w = T4k - T4v;
+ T64 = T5G + T5H;
+ T65 = T5J + T5K;
+ T4F = T4B - T4E;
+ T5i = T4k + T4v;
+ T5I = T5G - T5H;
+ T5L = T5J - T5K;
+ T5j = T4B + T4E;
+ }
+ {
+ E T2y, T6B, T6y, T7j, T2R, T6z, T6E, T7k, T2x, T6x;
+ T2x = T2n + T2w;
+ T2y = T2k + T2x;
+ T6B = T2k - T2x;
+ T6x = T4y + T4z;
+ T6y = T6w - T6x;
+ T7j = T6w + T6x;
+ {
+ E T2H, T2Q, T6C, T6D;
+ T2H = T2B + T2G;
+ T2Q = T2M + T2P;
+ T2R = T2H + T2Q;
+ T6z = T2Q - T2H;
+ T6C = T4r + T4s;
+ T6D = T4m + T4n;
+ T6E = T6C - T6D;
+ T7k = T6C + T6D;
+ }
+ T2S = T2y + T2R;
+ T7l = T7j - T7k;
+ T7y = T7j + T7k;
+ T6A = T6y - T6z;
+ T6F = T6B - T6E;
+ T73 = T6B + T6E;
+ T7i = T2y - T2R;
+ T72 = T6y + T6z;
+ }
+ {
+ E T4L, T5N, T55, T5O, T4W, T5R, T52, T5Q;
+ {
+ E T4H, T4K, T53, T54;
+ T4H = T31 - T36;
+ T4K = T4I - T4J;
+ T4L = T4H - T4K;
+ T5N = T4H + T4K;
+ T53 = T4R - T4U;
+ T54 = T4P + T4O;
+ T55 = KP707106781 * (T53 - T54);
+ T5O = KP707106781 * (T54 + T53);
+ }
+ {
+ E T4Q, T4V, T50, T51;
+ T4Q = T4O - T4P;
+ T4V = T4R + T4U;
+ T4W = KP707106781 * (T4Q - T4V);
+ T5R = KP707106781 * (T4Q + T4V);
+ T50 = T4Y - T4Z;
+ T51 = T3a - T3f;
+ T52 = T50 + T51;
+ T5Q = T50 - T51;
+ }
+ T4X = T4L - T4W;
+ T67 = T5N + T5O;
+ T68 = T5Q + T5R;
+ T56 = T52 - T55;
+ T5l = T4L + T4W;
+ T5P = T5N - T5O;
+ T5S = T5Q - T5R;
+ T5m = T52 + T55;
+ }
+ {
+ E T3y, T6P, T6K, T7p, T3h, T6H, T6O, T7o, T3x, T6J;
+ T3x = T3t + T3w;
+ T3y = T3q + T3x;
+ T6P = T3x - T3q;
+ T6J = T4S + T4T;
+ T6K = T6I - T6J;
+ T7p = T6I + T6J;
+ {
+ E T37, T3g, T6M, T6N;
+ T37 = T31 + T36;
+ T3g = T3a + T3f;
+ T3h = T37 + T3g;
+ T6H = T37 - T3g;
+ T6M = T4Y + T4Z;
+ T6N = T4I + T4J;
+ T6O = T6M - T6N;
+ T7o = T6M + T6N;
+ }
+ T3z = T3h + T3y;
+ T7q = T7o - T7p;
+ T7z = T7o + T7p;
+ T6L = T6H - T6K;
+ T6Q = T6O - T6P;
+ T76 = T6O + T6P;
+ T7n = T3h - T3y;
+ T75 = T6H + T6K;
+ }
+ {
+ E T3A, T7A, T2b, T7x, T1j;
+ T3A = T2S + T3z;
+ T7A = T7y - T7z;
+ T1j = TL + T1i;
+ T2b = T1j + T2a;
+ T7x = T1j - T2a;
+ ri[WS(ios, 16)] = T2b - T3A;
+ ri[WS(ios, 8)] = T7x + T7A;
+ ri[0] = T2b + T3A;
+ ri[WS(ios, 24)] = T7x - T7A;
+ }
+ {
+ E T7B, T7L, T7K, T7M, T7J;
+ T7B = T7y + T7z;
+ T7L = T3z - T2S;
+ T7J = T7D + T7I;
+ T7K = T7C + T7J;
+ T7M = T7J - T7C;
+ ii[0] = T7B + T7K;
+ ii[WS(ios, 24)] = T7M - T7L;
+ ii[WS(ios, 16)] = T7K - T7B;
+ ii[WS(ios, 8)] = T7L + T7M;
+ }
+ {
+ E T7h, T7t, T7Q, T7S, T7s, T7R, T7w, T7N, T7d, T7P;
+ T7d = TL - T1i;
+ T7h = T7d + T7g;
+ T7t = T7d - T7g;
+ T7P = T7I - T7D;
+ T7Q = T7O + T7P;
+ T7S = T7P - T7O;
+ {
+ E T7m, T7r, T7u, T7v;
+ T7m = T7i + T7l;
+ T7r = T7n - T7q;
+ T7s = KP707106781 * (T7m + T7r);
+ T7R = KP707106781 * (T7r - T7m);
+ T7u = T7l - T7i;
+ T7v = T7n + T7q;
+ T7w = KP707106781 * (T7u - T7v);
+ T7N = KP707106781 * (T7u + T7v);
+ }
+ ri[WS(ios, 20)] = T7h - T7s;
+ ii[WS(ios, 20)] = T7Q - T7N;
+ ri[WS(ios, 4)] = T7h + T7s;
+ ii[WS(ios, 4)] = T7N + T7Q;
+ ri[WS(ios, 28)] = T7t - T7w;
+ ii[WS(ios, 28)] = T7S - T7R;
+ ri[WS(ios, 12)] = T7t + T7w;
+ ii[WS(ios, 12)] = T7R + T7S;
+ }
+ {
+ E T71, T79, T7Y, T80, T78, T7Z, T7c, T7T;
+ {
+ E T6X, T70, T7U, T7X;
+ T6X = T6f + T6i;
+ T70 = KP707106781 * (T6Y + T6Z);
+ T71 = T6X + T70;
+ T79 = T6X - T70;
+ T7U = KP707106781 * (T6o + T6t);
+ T7X = T7V + T7W;
+ T7Y = T7U + T7X;
+ T80 = T7X - T7U;
+ }
+ {
+ E T74, T77, T7a, T7b;
+ T74 = FMA(KP382683432, T72, KP923879532 * T73);
+ T77 = FNMS(KP382683432, T76, KP923879532 * T75);
+ T78 = T74 + T77;
+ T7Z = T77 - T74;
+ T7a = FNMS(KP382683432, T73, KP923879532 * T72);
+ T7b = FMA(KP923879532, T76, KP382683432 * T75);
+ T7c = T7a - T7b;
+ T7T = T7a + T7b;
+ }
+ ri[WS(ios, 18)] = T71 - T78;
+ ii[WS(ios, 18)] = T7Y - T7T;
+ ri[WS(ios, 2)] = T71 + T78;
+ ii[WS(ios, 2)] = T7T + T7Y;
+ ri[WS(ios, 26)] = T79 - T7c;
+ ii[WS(ios, 26)] = T80 - T7Z;
+ ri[WS(ios, 10)] = T79 + T7c;
+ ii[WS(ios, 10)] = T7Z + T80;
+ }
+ {
+ E T4f, T59, T8y, T8A, T58, T8z, T5c, T8v;
+ {
+ E T3R, T4e, T8w, T8x;
+ T3R = T3F - T3Q;
+ T4e = T42 - T4d;
+ T4f = T3R + T4e;
+ T59 = T3R - T4e;
+ T8w = T5f - T5e;
+ T8x = T8q - T8p;
+ T8y = T8w + T8x;
+ T8A = T8x - T8w;
+ }
+ {
+ E T4G, T57, T5a, T5b;
+ T4G = FMA(KP980785280, T4w, KP195090322 * T4F);
+ T57 = FNMS(KP980785280, T56, KP195090322 * T4X);
+ T58 = T4G + T57;
+ T8z = T57 - T4G;
+ T5a = FNMS(KP980785280, T4F, KP195090322 * T4w);
+ T5b = FMA(KP195090322, T56, KP980785280 * T4X);
+ T5c = T5a - T5b;
+ T8v = T5a + T5b;
+ }
+ ri[WS(ios, 23)] = T4f - T58;
+ ii[WS(ios, 23)] = T8y - T8v;
+ ri[WS(ios, 7)] = T4f + T58;
+ ii[WS(ios, 7)] = T8v + T8y;
+ ri[WS(ios, 31)] = T59 - T5c;
+ ii[WS(ios, 31)] = T8A - T8z;
+ ri[WS(ios, 15)] = T59 + T5c;
+ ii[WS(ios, 15)] = T8z + T8A;
+ }
+ {
+ E T5F, T5V, T8k, T8m, T5U, T8l, T5Y, T8h;
+ {
+ E T5x, T5E, T8i, T8j;
+ T5x = T5t - T5w;
+ T5E = T5A - T5D;
+ T5F = T5x + T5E;
+ T5V = T5x - T5E;
+ T8i = T61 - T60;
+ T8j = T8c - T89;
+ T8k = T8i + T8j;
+ T8m = T8j - T8i;
+ }
+ {
+ E T5M, T5T, T5W, T5X;
+ T5M = FMA(KP555570233, T5I, KP831469612 * T5L);
+ T5T = FNMS(KP831469612, T5S, KP555570233 * T5P);
+ T5U = T5M + T5T;
+ T8l = T5T - T5M;
+ T5W = FNMS(KP831469612, T5I, KP555570233 * T5L);
+ T5X = FMA(KP831469612, T5P, KP555570233 * T5S);
+ T5Y = T5W - T5X;
+ T8h = T5W + T5X;
+ }
+ ri[WS(ios, 21)] = T5F - T5U;
+ ii[WS(ios, 21)] = T8k - T8h;
+ ri[WS(ios, 5)] = T5F + T5U;
+ ii[WS(ios, 5)] = T8h + T8k;
+ ri[WS(ios, 29)] = T5V - T5Y;
+ ii[WS(ios, 29)] = T8m - T8l;
+ ri[WS(ios, 13)] = T5V + T5Y;
+ ii[WS(ios, 13)] = T8l + T8m;
+ }
+ {
+ E T6v, T6T, T84, T86, T6S, T85, T6W, T81;
+ {
+ E T6j, T6u, T82, T83;
+ T6j = T6f - T6i;
+ T6u = KP707106781 * (T6o - T6t);
+ T6v = T6j + T6u;
+ T6T = T6j - T6u;
+ T82 = KP707106781 * (T6Z - T6Y);
+ T83 = T7W - T7V;
+ T84 = T82 + T83;
+ T86 = T83 - T82;
+ }
+ {
+ E T6G, T6R, T6U, T6V;
+ T6G = FMA(KP923879532, T6A, KP382683432 * T6F);
+ T6R = FNMS(KP923879532, T6Q, KP382683432 * T6L);
+ T6S = T6G + T6R;
+ T85 = T6R - T6G;
+ T6U = FNMS(KP923879532, T6F, KP382683432 * T6A);
+ T6V = FMA(KP382683432, T6Q, KP923879532 * T6L);
+ T6W = T6U - T6V;
+ T81 = T6U + T6V;
+ }
+ ri[WS(ios, 22)] = T6v - T6S;
+ ii[WS(ios, 22)] = T84 - T81;
+ ri[WS(ios, 6)] = T6v + T6S;
+ ii[WS(ios, 6)] = T81 + T84;
+ ri[WS(ios, 30)] = T6T - T6W;
+ ii[WS(ios, 30)] = T86 - T85;
+ ri[WS(ios, 14)] = T6T + T6W;
+ ii[WS(ios, 14)] = T85 + T86;
+ }
+ {
+ E T5h, T5p, T8s, T8u, T5o, T8t, T5s, T8n;
+ {
+ E T5d, T5g, T8o, T8r;
+ T5d = T3F + T3Q;
+ T5g = T5e + T5f;
+ T5h = T5d + T5g;
+ T5p = T5d - T5g;
+ T8o = T42 + T4d;
+ T8r = T8p + T8q;
+ T8s = T8o + T8r;
+ T8u = T8r - T8o;
+ }
+ {
+ E T5k, T5n, T5q, T5r;
+ T5k = FMA(KP555570233, T5i, KP831469612 * T5j);
+ T5n = FNMS(KP555570233, T5m, KP831469612 * T5l);
+ T5o = T5k + T5n;
+ T8t = T5n - T5k;
+ T5q = FNMS(KP555570233, T5j, KP831469612 * T5i);
+ T5r = FMA(KP831469612, T5m, KP555570233 * T5l);
+ T5s = T5q - T5r;
+ T8n = T5q + T5r;
+ }
+ ri[WS(ios, 19)] = T5h - T5o;
+ ii[WS(ios, 19)] = T8s - T8n;
+ ri[WS(ios, 3)] = T5h + T5o;
+ ii[WS(ios, 3)] = T8n + T8s;
+ ri[WS(ios, 27)] = T5p - T5s;
+ ii[WS(ios, 27)] = T8u - T8t;
+ ri[WS(ios, 11)] = T5p + T5s;
+ ii[WS(ios, 11)] = T8t + T8u;
+ }
+ {
+ E T63, T6b, T8e, T8g, T6a, T8f, T6e, T87;
+ {
+ E T5Z, T62, T88, T8d;
+ T5Z = T5t + T5w;
+ T62 = T60 + T61;
+ T63 = T5Z + T62;
+ T6b = T5Z - T62;
+ T88 = T5A + T5D;
+ T8d = T89 + T8c;
+ T8e = T88 + T8d;
+ T8g = T8d - T88;
+ }
+ {
+ E T66, T69, T6c, T6d;
+ T66 = FMA(KP980785280, T64, KP195090322 * T65);
+ T69 = FNMS(KP195090322, T68, KP980785280 * T67);
+ T6a = T66 + T69;
+ T8f = T69 - T66;
+ T6c = FNMS(KP195090322, T64, KP980785280 * T65);
+ T6d = FMA(KP195090322, T67, KP980785280 * T68);
+ T6e = T6c - T6d;
+ T87 = T6c + T6d;
+ }
+ ri[WS(ios, 17)] = T63 - T6a;
+ ii[WS(ios, 17)] = T8e - T87;
+ ri[WS(ios, 1)] = T63 + T6a;
+ ii[WS(ios, 1)] = T87 + T8e;
+ ri[WS(ios, 25)] = T6b - T6e;
+ ii[WS(ios, 25)] = T8g - T8f;
+ ri[WS(ios, 9)] = T6b + T6e;
+ ii[WS(ios, 9)] = T8f + T8g;
+ }
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_COS, 0, 1},
+ {TW_SIN, 0, 1},
+ {TW_COS, 0, 3},
+ {TW_SIN, 0, 3},
+ {TW_COS, 0, 9},
+ {TW_SIN, 0, 9},
+ {TW_COS, 0, 27},
+ {TW_SIN, 0, 27},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 32, "t2_32", twinstr, {376, 168, 112, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t2_32) (planner *p) {
+ X(kdft_dit_register) (p, t2_32, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t2_4.c b/src/fftw3/dft/codelets/standard/t2_4.c
new file mode 100644
index 0000000..ced1a63
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t2_4.c
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:30:08 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -twiddle-log3 -n 4 -name t2_4 -include t.h */
+
+/*
+ * This function contains 24 FP additions, 16 FP multiplications,
+ * (or, 16 additions, 8 multiplications, 8 fused multiply/add),
+ * 21 stack variables, and 16 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t2_4.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t2_4.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t2_4.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t2_4(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 4) {
+ E T1, Tp, Ta, Te, To, Tl, Tk, Th;
+ T1 = ri[0];
+ Tp = ii[0];
+ {
+ E T7, T9, Tc, Td, Tg, Tf, T2, T4, T3, T5, T6, T8;
+ T7 = ri[WS(ios, 2)];
+ T9 = ii[WS(ios, 2)];
+ Tc = ri[WS(ios, 1)];
+ Td = ii[WS(ios, 1)];
+ Tg = ii[WS(ios, 3)];
+ Tf = ri[WS(ios, 3)];
+ T2 = W[2];
+ T4 = W[3];
+ T3 = W[0];
+ T5 = W[1];
+ T6 = FMA(T2, T3, T4 * T5);
+ T8 = FNMS(T4, T3, T2 * T5);
+ Ta = FNMS(T8, T9, T6 * T7);
+ Te = FMA(T3, Tc, T5 * Td);
+ To = FMA(T8, T7, T6 * T9);
+ Tl = FNMS(T4, Tf, T2 * Tg);
+ Tk = FNMS(T5, Tc, T3 * Td);
+ Th = FMA(T2, Tf, T4 * Tg);
+ }
+ {
+ E Tb, Ti, Tn, Tq;
+ Tb = T1 + Ta;
+ Ti = Te + Th;
+ ri[WS(ios, 2)] = Tb - Ti;
+ ri[0] = Tb + Ti;
+ Tn = Tk + Tl;
+ Tq = To + Tp;
+ ii[0] = Tn + Tq;
+ ii[WS(ios, 2)] = Tq - Tn;
+ }
+ {
+ E Tj, Tm, Tr, Ts;
+ Tj = T1 - Ta;
+ Tm = Tk - Tl;
+ ri[WS(ios, 3)] = Tj - Tm;
+ ri[WS(ios, 1)] = Tj + Tm;
+ Tr = Tp - To;
+ Ts = Te - Th;
+ ii[WS(ios, 1)] = Tr - Ts;
+ ii[WS(ios, 3)] = Ts + Tr;
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_COS, 0, 1},
+ {TW_SIN, 0, 1},
+ {TW_COS, 0, 3},
+ {TW_SIN, 0, 3},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 4, "t2_4", twinstr, {16, 8, 8, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t2_4) (planner *p) {
+ X(kdft_dit_register) (p, t2_4, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t2_64.c b/src/fftw3/dft/codelets/standard/t2_64.c
new file mode 100644
index 0000000..6fc7efd
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t2_64.c
@@ -0,0 +1,1906 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:30:32 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -twiddle-log3 -n 64 -name t2_64 -include t.h */
+
+/*
+ * This function contains 1154 FP additions, 660 FP multiplications,
+ * (or, 880 additions, 386 multiplications, 274 fused multiply/add),
+ * 382 stack variables, and 256 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t2_64.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t2_64.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t2_64.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t2_64(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ DK(KP290284677, +0.290284677254462367636192375817395274691476278);
+ DK(KP956940335, +0.956940335732208864935797886980269969482849206);
+ DK(KP881921264, +0.881921264348355029712756863660388349508442621);
+ DK(KP471396736, +0.471396736825997648556387625905254377657460319);
+ DK(KP098017140, +0.098017140329560601994195563888641845861136673);
+ DK(KP995184726, +0.995184726672196886244836953109479921575474869);
+ DK(KP773010453, +0.773010453362736960810906609758469800971041293);
+ DK(KP634393284, +0.634393284163645498215171613225493370675687095);
+ DK(KP555570233, +0.555570233019602224742830813948532874374937191);
+ DK(KP831469612, +0.831469612302545237078788377617905756738560812);
+ DK(KP980785280, +0.980785280403230449126182236134239036973933731);
+ DK(KP195090322, +0.195090322016128267848284868477022240927691618);
+ DK(KP707106781, +0.707106781186547524400844362104849039284835938);
+ DK(KP923879532, +0.923879532511286756128183189396788286822416626);
+ DK(KP382683432, +0.382683432365089771728459984030398866761344562);
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 10) {
+ E T1, Ti1, Tp, Tt, TH, TL, T6a, T6c, T4J, T4H, T1g, T91, T7W, T7m, T2O;
+ E T4j, T7P, T4P, T8y, T2w, T8t, T2Z, T8e, T48, T1z, T7s, T1I, T7t, T8p, Ten;
+ E T1Y, T7D, T2t, T7O, T7L, Te6, T3N, T8E, T7A, Te0, T4C, TeA, T8S, T9v, T65;
+ E Tfi, T9J, Taq, T6K, Tf6, Ta2, Ta5, T73, Tfc, Tad, Tag, T3z, T83, T3u, T82;
+ E T81, T84, T15, T9K, T68, T7j, T43, T9w, T4F, T8G, T5l, TeL, T9k, T9n, T6o;
+ E Tf2, T9Q, T9R, T6z, Tf3, T9T, T9W, To, Ts, T4o, T8u, T4U, T92, T5a, TeT;
+ E T8V, T8Y, T5G, TeG, T97, T9e, T27, T7X, T2T, T7E, T7b, Tai, T6T, Ta3, Tf7;
+ E Ta8, T7Q, T2H, T2c, T76, Tah, T7F, T4d, T8z, TG, TK, T69, T6b, T3b, T87;
+ E T5u, T9l, TeM, T9q, T88, T89, T3o, T86, T5P, T9f, TeH, T9a, T34, T8f, T1r;
+ E T7n, T3S, T8F, T4G, T4I;
+ T1 = ri[0];
+ Ti1 = ii[0];
+ Tp = ri[WS(ios, 32)];
+ Tt = ii[WS(ios, 32)];
+ TH = ri[WS(ios, 16)];
+ TL = ii[WS(ios, 16)];
+ T6a = ri[WS(ios, 47)];
+ T6c = ii[WS(ios, 47)];
+ T4J = ii[WS(ios, 49)];
+ T4H = ri[WS(ios, 49)];
+ {
+ E T12, T14, T1b, T1f, T1q, T1m, T1w, T1y, T1D, T1H, T1S, T1M, T1N, T1W, T2M;
+ E T2g, T2b, T29, T26, T22, T2i, T2E, T2G, T2v, T2u, T2r, T2n, T2N, T3a, T38;
+ E T3l, T3n, T3r, T3t, T33, T31, T2Y, T2W, T4g, T2S, T2Q, T3w, T3y, T3E, T3G;
+ E T3P, T3J, T3L, T3R, T4a, T4c, T47, T46, T42, T40, T4i, T6P, T6R, T6M, T6L;
+ E T6I, T6G, T6W, T6Y, T74, T75, T5I, T78, T7a, T6x, T6v, T6s, T6q, T6h, T6m;
+ E T6k, T6g, T5N, T5L, T5Z, T63, T66, T67, T5H, T54, T4D, T4A, T4y, T4n, T4l;
+ E T4E, T4X, T4Z, T4T, T4R, T4O, T4N, T58, T5s, T5q, T5x, T5z, T5C, T5E, T5n;
+ E T5m, T5j, T5h, T5d, T5e, Ta, Ty, Tf, Tw, T2, Tj, T3, Tc, T1E, T1B;
+ E T1F, T1A, T1R, T3x, T2m, T3K, T61, T1V, T60, T3I, T51, T52, T2V, T56, T5X;
+ E T3v, T55, T2X, T2q, T5W, T4w, T6E, Ta0, T8Q, Tac, T72, Tb, Tg, Th, T3e;
+ E T3f, T3h, T1a, T2x, T2B, TU, TV, TY, T1e, T2y, T2A, TC, TD, T1u, Tk;
+ E Tl, Tm, T39, T3U, T3W, T37, T3T, T3X, TQ, TR, TZ, T3c, T3d, T3i, Tx;
+ E Tz, T1t, TN, TX, T2f, T5V, Tao, T2h, T3D, T4f, T4h, T3F, T3q, T3s;
+ T12 = ri[WS(ios, 48)];
+ T14 = ii[WS(ios, 48)];
+ T1b = ri[WS(ios, 8)];
+ T1f = ii[WS(ios, 8)];
+ T1q = ii[WS(ios, 40)];
+ T1m = ri[WS(ios, 40)];
+ T1w = ri[WS(ios, 56)];
+ T1y = ii[WS(ios, 56)];
+ T1D = ri[WS(ios, 24)];
+ T1H = ii[WS(ios, 24)];
+ T1S = ri[WS(ios, 36)];
+ T1M = ri[WS(ios, 4)];
+ T1N = ii[WS(ios, 4)];
+ T1W = ii[WS(ios, 36)];
+ T2M = ri[WS(ios, 2)];
+ T2g = ri[WS(ios, 60)];
+ T2b = ii[WS(ios, 52)];
+ T29 = ri[WS(ios, 52)];
+ T26 = ii[WS(ios, 20)];
+ T22 = ri[WS(ios, 20)];
+ T2i = ii[WS(ios, 60)];
+ T2E = ri[WS(ios, 44)];
+ T2G = ii[WS(ios, 44)];
+ T2v = ii[WS(ios, 12)];
+ T2u = ri[WS(ios, 12)];
+ T2r = ii[WS(ios, 28)];
+ T2n = ri[WS(ios, 28)];
+ T2N = ii[WS(ios, 2)];
+ T3a = ii[WS(ios, 10)];
+ T38 = ri[WS(ios, 10)];
+ T3l = ri[WS(ios, 42)];
+ T3n = ii[WS(ios, 42)];
+ T3r = ri[WS(ios, 58)];
+ T3t = ii[WS(ios, 58)];
+ T33 = ii[WS(ios, 50)];
+ T31 = ri[WS(ios, 50)];
+ T2Y = ii[WS(ios, 18)];
+ T2W = ri[WS(ios, 18)];
+ T4g = ri[WS(ios, 54)];
+ T2S = ii[WS(ios, 34)];
+ T2Q = ri[WS(ios, 34)];
+ T3w = ri[WS(ios, 26)];
+ T3y = ii[WS(ios, 26)];
+ T3E = ri[WS(ios, 62)];
+ T3G = ii[WS(ios, 62)];
+ T3P = ri[WS(ios, 14)];
+ T3J = ri[WS(ios, 30)];
+ T3L = ii[WS(ios, 30)];
+ T3R = ii[WS(ios, 14)];
+ T4a = ri[WS(ios, 38)];
+ T4c = ii[WS(ios, 38)];
+ T47 = ii[WS(ios, 6)];
+ T46 = ri[WS(ios, 6)];
+ T42 = ii[WS(ios, 46)];
+ T40 = ri[WS(ios, 46)];
+ T4i = ii[WS(ios, 54)];
+ T6P = ri[WS(ios, 51)];
+ T6R = ii[WS(ios, 51)];
+ T6M = ii[WS(ios, 19)];
+ T6L = ri[WS(ios, 19)];
+ T6I = ii[WS(ios, 35)];
+ T6G = ri[WS(ios, 35)];
+ T6W = ri[WS(ios, 59)];
+ T6Y = ii[WS(ios, 59)];
+ T74 = ri[WS(ios, 11)];
+ T75 = ii[WS(ios, 11)];
+ T5I = ii[WS(ios, 13)];
+ T78 = ri[WS(ios, 43)];
+ T7a = ii[WS(ios, 43)];
+ T6x = ii[WS(ios, 23)];
+ T6v = ri[WS(ios, 23)];
+ T6s = ii[WS(ios, 55)];
+ T6q = ri[WS(ios, 55)];
+ T6h = ii[WS(ios, 7)];
+ T6m = ii[WS(ios, 39)];
+ T6k = ri[WS(ios, 39)];
+ T6g = ri[WS(ios, 7)];
+ T5N = ii[WS(ios, 45)];
+ T5L = ri[WS(ios, 45)];
+ T5Z = ri[WS(ios, 31)];
+ T63 = ii[WS(ios, 31)];
+ T66 = ri[WS(ios, 15)];
+ T67 = ii[WS(ios, 15)];
+ T5H = ri[WS(ios, 13)];
+ T54 = ri[WS(ios, 25)];
+ T4D = ri[WS(ios, 17)];
+ T4A = ii[WS(ios, 33)];
+ T4y = ri[WS(ios, 33)];
+ T4n = ii[WS(ios, 22)];
+ T4l = ri[WS(ios, 22)];
+ T4E = ii[WS(ios, 17)];
+ T4X = ri[WS(ios, 57)];
+ T4Z = ii[WS(ios, 57)];
+ T4T = ii[WS(ios, 41)];
+ T4R = ri[WS(ios, 41)];
+ T4O = ii[WS(ios, 9)];
+ T4N = ri[WS(ios, 9)];
+ T58 = ii[WS(ios, 25)];
+ T5s = ii[WS(ios, 53)];
+ T5q = ri[WS(ios, 53)];
+ T5x = ri[WS(ios, 61)];
+ T5z = ii[WS(ios, 61)];
+ T5C = ri[WS(ios, 29)];
+ T5E = ii[WS(ios, 29)];
+ T5n = ii[WS(ios, 21)];
+ T5m = ri[WS(ios, 21)];
+ T5j = ii[WS(ios, 37)];
+ T5h = ri[WS(ios, 37)];
+ T5d = ri[WS(ios, 5)];
+ T5e = ii[WS(ios, 5)];
+ {
+ E T4u, T4v, T5T, T5U, T6C, T6D, T70, T71, T4, T7, T5, T8, TO, TP, T1U;
+ E T2p, T18, T2k, T2l, T2o, TT, TS, T19, T1c, T1T, T1P, T1Q, T1d;
+ T4u = ri[WS(ios, 1)];
+ T4v = ii[WS(ios, 1)];
+ T5T = ri[WS(ios, 63)];
+ T5U = ii[WS(ios, 63)];
+ T6C = ri[WS(ios, 3)];
+ T6D = ii[WS(ios, 3)];
+ T70 = ri[WS(ios, 27)];
+ T71 = ii[WS(ios, 27)];
+ {
+ E T6, Te, T9, Td;
+ T4 = W[2];
+ T7 = W[3];
+ T5 = W[0];
+ T8 = W[1];
+ T6 = T4 * T5;
+ Te = T7 * T5;
+ T9 = T7 * T8;
+ Td = T4 * T8;
+ Ta = T6 - T9;
+ Ty = Td - Te;
+ Tf = Td + Te;
+ Tw = T6 + T9;
+ T2 = W[6];
+ Tj = W[7];
+ T3 = W[4];
+ Tc = W[5];
+ TO = T3 * T4;
+ TP = Tc * T7;
+ T1U = Tj * T3;
+ T2p = Tj * T5;
+ T18 = T3 * T5;
+ T2k = T2 * T5;
+ T2l = Tj * T8;
+ T2o = T2 * T8;
+ TT = Tc * T4;
+ TS = T3 * T7;
+ T19 = Tc * T8;
+ T1c = T3 * T8;
+ T1E = T2 * T7;
+ T1T = T2 * Tc;
+ T1B = Tj * T7;
+ T1F = Tj * T4;
+ T1P = T2 * T3;
+ T1Q = Tj * Tc;
+ T1A = T2 * T4;
+ T1d = Tc * T5;
+ }
+ T1R = T1P - T1Q;
+ T3x = T2o - T2p;
+ T2m = T2k - T2l;
+ T3K = T1E + T1F;
+ T61 = Tj * Ta;
+ T1V = T1T + T1U;
+ T60 = T2 * Tf;
+ T3I = T1A - T1B;
+ T51 = T2 * Tw;
+ T52 = Tj * Ty;
+ T2V = T1P + T1Q;
+ T56 = Tj * Tw;
+ T5X = Tj * Tf;
+ T3v = T2k + T2l;
+ T55 = T2 * Ty;
+ T2X = T1T - T1U;
+ T2q = T2o + T2p;
+ T5W = T2 * Ta;
+ T4w = FMA(T5, T4u, T8 * T4v);
+ T6E = FMA(T4, T6C, T7 * T6D);
+ Ta0 = FNMS(T7, T6C, T4 * T6D);
+ T8Q = FNMS(T8, T4u, T5 * T4v);
+ Tac = FNMS(Tj, T70, T2 * T71);
+ T72 = FMA(T2, T70, Tj * T71);
+ Tb = T3 * Ta;
+ Tg = Tc * Tf;
+ Th = Tb + Tg;
+ T3e = TS - TT;
+ T3f = Tj * T3e;
+ T3h = T2 * T3e;
+ T1a = T18 + T19;
+ T2x = T2 * T1a;
+ T2B = Tj * T1a;
+ TU = TS + TT;
+ TV = Tj * TU;
+ TY = T2 * TU;
+ T1e = T1c - T1d;
+ T2y = Tj * T1e;
+ T2A = T2 * T1e;
+ TC = T3 * Ty;
+ TD = Tc * Tw;
+ T1u = TC + TD;
+ Tk = T3 * Tf;
+ Tl = Tc * Ta;
+ Tm = Tk - Tl;
+ T39 = T1c + T1d;
+ T3U = Tj * T39;
+ T3W = T2 * T39;
+ T37 = T18 - T19;
+ T3T = T2 * T37;
+ T3X = Tj * T37;
+ TQ = TO - TP;
+ TR = T2 * TQ;
+ TZ = Tj * TQ;
+ T3c = TO + TP;
+ T3d = T2 * T3c;
+ T3i = Tj * T3c;
+ Tx = T3 * Tw;
+ Tz = Tc * Ty;
+ T1t = Tx - Tz;
+ TN = W[8];
+ TX = W[9];
+ T2f = FMA(TN, T4, TX * T7);
+ T5V = FMA(TN, T5T, TX * T5U);
+ Tao = FNMS(TX, T5T, TN * T5U);
+ T2h = FNMS(TX, T4, TN * T7);
+ T3D = FMA(TN, T5, TX * T8);
+ T4f = FMA(TN, T3, TX * Tc);
+ T4h = FNMS(TX, T3, TN * Tc);
+ T3F = FNMS(TX, T5, TN * T8);
+ }
+ T1g = FNMS(T1e, T1f, T1a * T1b);
+ T91 = FNMS(Tc, T4N, T3 * T4O);
+ T7W = FMA(Ty, T2M, Tw * T2N);
+ T7m = FMA(T1e, T1b, T1a * T1f);
+ T2O = FNMS(Ty, T2N, Tw * T2M);
+ T4j = FNMS(T4h, T4i, T4f * T4g);
+ T7P = FNMS(TU, T2u, TQ * T2v);
+ T4P = FMA(T3, T4N, Tc * T4O);
+ T8y = FMA(T3e, T46, T3c * T47);
+ T2w = FMA(TQ, T2u, TU * T2v);
+ {
+ E T1v, T1x, T1O, T1X;
+ T8t = FMA(T4h, T4g, T4f * T4i);
+ T2Z = FNMS(T2X, T2Y, T2V * T2W);
+ T8e = FMA(T2X, T2W, T2V * T2Y);
+ T48 = FNMS(T3e, T47, T3c * T46);
+ T1v = FMA(TN, T1t, TX * T1u);
+ T1x = FNMS(TX, T1t, TN * T1u);
+ T1z = FNMS(T1x, T1y, T1v * T1w);
+ T7s = FMA(T1x, T1w, T1v * T1y);
+ {
+ E T1C, T1G, T8n, T8o;
+ T1C = T1A + T1B;
+ T1G = T1E - T1F;
+ T1I = FNMS(T1G, T1H, T1C * T1D);
+ T7t = FMA(T1G, T1D, T1C * T1H);
+ T8n = FMA(T3F, T3E, T3D * T3G);
+ T8o = FNMS(T3K, T3J, T3I * T3L);
+ T8p = T8n - T8o;
+ Ten = T8n + T8o;
+ }
+ T1O = FMA(Ta, T1M, Tf * T1N);
+ T1X = FMA(T1R, T1S, T1V * T1W);
+ T1Y = T1O + T1X;
+ T7D = T1O - T1X;
+ {
+ E T2j, T2s, T7J, T7K;
+ T2j = FNMS(T2h, T2i, T2f * T2g);
+ T2s = FMA(T2m, T2n, T2q * T2r);
+ T2t = T2j + T2s;
+ T7O = T2j - T2s;
+ T7J = FMA(T2h, T2g, T2f * T2i);
+ T7K = FNMS(T2q, T2n, T2m * T2r);
+ T7L = T7J - T7K;
+ Te6 = T7J + T7K;
+ }
+ }
+ {
+ E T3H, T3M, T7y, T7z;
+ T3H = FNMS(T3F, T3G, T3D * T3E);
+ T3M = FMA(T3I, T3J, T3K * T3L);
+ T3N = T3H + T3M;
+ T8E = T3H - T3M;
+ T7y = FNMS(Tf, T1M, Ta * T1N);
+ T7z = FNMS(T1V, T1S, T1R * T1W);
+ T7A = T7y - T7z;
+ Te0 = T7y + T7z;
+ }
+ {
+ E T4B, T8R, T4x, T4z;
+ T4x = T3d + T3f;
+ T4z = T3h - T3i;
+ T4B = FNMS(T4z, T4A, T4x * T4y);
+ T8R = FMA(T4z, T4y, T4x * T4A);
+ T4C = T4w + T4B;
+ TeA = T8Q + T8R;
+ T8S = T8Q - T8R;
+ T9v = T4w - T4B;
+ }
+ {
+ E T64, Tap, T5Y, T62;
+ T5Y = T5W - T5X;
+ T62 = T60 + T61;
+ T64 = FMA(T5Y, T5Z, T62 * T63);
+ Tap = FNMS(T62, T5Z, T5Y * T63);
+ T65 = T5V + T64;
+ Tfi = Tao + Tap;
+ T9J = T5V - T64;
+ Taq = Tao - Tap;
+ }
+ {
+ E T6J, Ta1, T6F, T6H;
+ T6F = T2x + T2y;
+ T6H = T2A - T2B;
+ T6J = FNMS(T6H, T6I, T6F * T6G);
+ Ta1 = FMA(T6H, T6G, T6F * T6I);
+ T6K = T6E + T6J;
+ Tf6 = Ta0 + Ta1;
+ Ta2 = Ta0 - Ta1;
+ Ta5 = T6E - T6J;
+ }
+ {
+ E T6Z, Tab, T6V, T6X;
+ T6V = FMA(TN, Ta, TX * Tf);
+ T6X = FNMS(TX, Ta, TN * Tf);
+ T6Z = FNMS(T6X, T6Y, T6V * T6W);
+ Tab = FMA(T6X, T6W, T6V * T6Y);
+ T73 = T6Z + T72;
+ Tfc = Tab + Tac;
+ Tad = Tab - Tac;
+ Tag = T6Z - T72;
+ }
+ T3z = FNMS(T3x, T3y, T3v * T3w);
+ T83 = FMA(T3x, T3w, T3v * T3y);
+ T3q = FNMS(TX, Tm, TN * Th);
+ T3s = FMA(TN, Tm, TX * Th);
+ T3u = FMA(T3q, T3r, T3s * T3t);
+ T82 = FNMS(T3s, T3r, T3q * T3t);
+ T81 = T3u - T3z;
+ T84 = T82 - T83;
+ {
+ E TW, T10, T11, T13;
+ TW = TR + TV;
+ T10 = TY - TZ;
+ T11 = FNMS(TX, T10, TN * TW);
+ T13 = FMA(TN, T10, TX * TW);
+ T15 = FMA(T11, T12, T13 * T14);
+ T9K = FMA(T10, T66, TW * T67);
+ T68 = FNMS(T10, T67, TW * T66);
+ T7j = FNMS(T13, T12, T11 * T14);
+ }
+ {
+ E T3V, T3Y, T3Z, T41;
+ T3V = T3T + T3U;
+ T3Y = T3W - T3X;
+ T3Z = FNMS(TX, T3Y, TN * T3V);
+ T41 = FMA(TN, T3Y, TX * T3V);
+ T43 = FMA(T3Z, T40, T41 * T42);
+ T9w = FMA(T3Y, T4D, T3V * T4E);
+ T4F = FNMS(T3Y, T4E, T3V * T4D);
+ T8G = FNMS(T41, T40, T3Z * T42);
+ }
+ {
+ E T5f, T9i, T5k, T9j, T5g, T5i;
+ T5f = FNMS(Tm, T5e, Th * T5d);
+ T9i = FMA(Tm, T5d, Th * T5e);
+ T5g = T3T - T3U;
+ T5i = T3W + T3X;
+ T5k = FMA(T5g, T5h, T5i * T5j);
+ T9j = FNMS(T5i, T5h, T5g * T5j);
+ T5l = T5f + T5k;
+ TeL = T9i + T9j;
+ T9k = T9i - T9j;
+ T9n = T5f - T5k;
+ }
+ {
+ E T6i, T9O, T6n, T9P, T6j, T6l;
+ T6i = FMA(T1t, T6g, T1u * T6h);
+ T9O = FNMS(T1u, T6g, T1t * T6h);
+ T6j = TR - TV;
+ T6l = TY + TZ;
+ T6n = FMA(T6j, T6k, T6l * T6m);
+ T9P = FNMS(T6l, T6k, T6j * T6m);
+ T6o = T6i + T6n;
+ Tf2 = T9O + T9P;
+ T9Q = T9O - T9P;
+ T9R = T6i - T6n;
+ }
+ {
+ E T6t, T9U, T6y, T9V;
+ {
+ E T6p, T6r, T6u, T6w;
+ T6p = FNMS(TX, T1e, TN * T1a);
+ T6r = FMA(TN, T1e, TX * T1a);
+ T6t = FMA(T6p, T6q, T6r * T6s);
+ T9U = FNMS(T6r, T6q, T6p * T6s);
+ T6u = T5W + T5X;
+ T6w = T60 - T61;
+ T6y = FNMS(T6w, T6x, T6u * T6v);
+ T9V = FMA(T6w, T6v, T6u * T6x);
+ }
+ T6z = T6t + T6y;
+ Tf3 = T9U + T9V;
+ T9T = T6t - T6y;
+ T9W = T9U - T9V;
+ }
+ {
+ E Ti, Tn, T4k, Tq, Tr, T4m, T4Q, T4S;
+ Ti = T2 * Th;
+ Tn = Tj * Tm;
+ T4k = Ti - Tn;
+ Tq = T2 * Tm;
+ Tr = Tj * Th;
+ T4m = Tq + Tr;
+ To = Ti + Tn;
+ Ts = Tq - Tr;
+ T4o = FMA(T4k, T4l, T4m * T4n);
+ T8u = FNMS(T4m, T4l, T4k * T4n);
+ T4Q = FMA(TN, T4k, TX * T4m);
+ T4S = FNMS(TX, T4k, TN * T4m);
+ T4U = FNMS(T4S, T4T, T4Q * T4R);
+ T92 = FMA(T4S, T4R, T4Q * T4T);
+ }
+ {
+ E T50, T8W, T59, T8X;
+ {
+ E T4W, T4Y, T53, T57;
+ T4W = FNMS(TX, T3e, TN * T3c);
+ T4Y = FMA(TN, T3e, TX * T3c);
+ T50 = FMA(T4W, T4X, T4Y * T4Z);
+ T8W = FNMS(T4Y, T4X, T4W * T4Z);
+ T53 = T51 - T52;
+ T57 = T55 + T56;
+ T59 = FMA(T53, T54, T57 * T58);
+ T8X = FNMS(T57, T54, T53 * T58);
+ }
+ T5a = T50 + T59;
+ TeT = T8W + T8X;
+ T8V = T50 - T59;
+ T8Y = T8W - T8X;
+ }
+ {
+ E T5A, T9c, T5F, T9d;
+ {
+ E T5w, T5y, T5B, T5D;
+ T5w = FNMS(TX, Ty, TN * Tw);
+ T5y = FMA(TN, Ty, TX * Tw);
+ T5A = FMA(T5w, T5x, T5y * T5z);
+ T9c = FNMS(T5y, T5x, T5w * T5z);
+ T5B = T51 + T52;
+ T5D = T55 - T56;
+ T5F = FNMS(T5D, T5E, T5B * T5C);
+ T9d = FMA(T5D, T5C, T5B * T5E);
+ }
+ T5G = T5A + T5F;
+ TeG = T9c + T9d;
+ T97 = T5A - T5F;
+ T9e = T9c - T9d;
+ }
+ {
+ E T21, T2P, T25, T2R, T77, T79;
+ {
+ E T1Z, T20, T23, T24;
+ T1Z = T2 * T1t;
+ T20 = Tj * T1u;
+ T21 = T1Z + T20;
+ T2P = T1Z - T20;
+ T23 = T2 * T1u;
+ T24 = Tj * T1t;
+ T25 = T23 - T24;
+ T2R = T23 + T24;
+ }
+ T27 = FNMS(T25, T26, T21 * T22);
+ T7X = FNMS(T2R, T2Q, T2P * T2S);
+ T2T = FMA(T2P, T2Q, T2R * T2S);
+ T7E = FMA(T25, T22, T21 * T26);
+ T77 = FNMS(TX, T25, TN * T21);
+ T79 = FMA(TN, T25, TX * T21);
+ T7b = FMA(T77, T78, T79 * T7a);
+ Tai = FNMS(T79, T78, T77 * T7a);
+ }
+ {
+ E T6S, Ta7, T2D, Ta6, T2F, T6N;
+ {
+ E T6O, T6Q, T2z, T2C;
+ T6O = FMA(TN, TQ, TX * TU);
+ T6Q = FNMS(TX, TQ, TN * TU);
+ T6S = FNMS(T6Q, T6R, T6O * T6P);
+ Ta7 = FMA(T6Q, T6P, T6O * T6R);
+ T2z = T2x - T2y;
+ T2C = T2A + T2B;
+ T2D = FMA(TN, T2z, TX * T2C);
+ Ta6 = FNMS(T2C, T6L, T2z * T6M);
+ T2F = FNMS(TX, T2z, TN * T2C);
+ T6N = FMA(T2z, T6L, T2C * T6M);
+ }
+ T6T = T6N + T6S;
+ Ta3 = T6N - T6S;
+ Tf7 = Ta6 + Ta7;
+ Ta8 = Ta6 - Ta7;
+ T7Q = FMA(T2F, T2E, T2D * T2G);
+ T2H = FNMS(T2F, T2G, T2D * T2E);
+ }
+ {
+ E TA, TE, TB, TF, TJ, TI, T2a, T28, T49, T4b;
+ TA = Tx + Tz;
+ TE = TC - TD;
+ TB = T2 * TA;
+ TF = Tj * TE;
+ TJ = Tj * TA;
+ TI = T2 * TE;
+ T2a = FMA(TN, TE, TX * TA);
+ T28 = FNMS(TX, TE, TN * TA);
+ T2c = FMA(T28, T29, T2a * T2b);
+ T76 = FNMS(TE, T75, TA * T74);
+ Tah = FMA(TE, T74, TA * T75);
+ T7F = FNMS(T2a, T29, T28 * T2b);
+ T49 = TB + TF;
+ T4b = TI - TJ;
+ T4d = FNMS(T4b, T4c, T49 * T4a);
+ T8z = FMA(T4b, T4a, T49 * T4c);
+ TG = TB - TF;
+ TK = TI + TJ;
+ T69 = FMA(TN, TG, TX * TK);
+ T6b = FNMS(TX, TG, TN * TK);
+ }
+ {
+ E T5t, T9p, T3k, T9o, T3m, T5o;
+ T3b = FMA(T37, T38, T39 * T3a);
+ T87 = FNMS(T39, T38, T37 * T3a);
+ {
+ E T5p, T5r, T3g, T3j;
+ T5p = FMA(TN, T37, TX * T39);
+ T5r = FNMS(TX, T37, TN * T39);
+ T5t = FNMS(T5r, T5s, T5p * T5q);
+ T9p = FMA(T5r, T5q, T5p * T5s);
+ T3g = T3d - T3f;
+ T3j = T3h + T3i;
+ T3k = FMA(TN, T3g, TX * T3j);
+ T9o = FNMS(T3j, T5m, T3g * T5n);
+ T3m = FNMS(TX, T3g, TN * T3j);
+ T5o = FMA(T3g, T5m, T3j * T5n);
+ }
+ T5u = T5o + T5t;
+ T9l = T5o - T5t;
+ TeM = T9o + T9p;
+ T9q = T9o - T9p;
+ T88 = FMA(T3m, T3l, T3k * T3n);
+ T89 = T87 - T88;
+ T3o = FNMS(T3m, T3n, T3k * T3l);
+ T86 = T3b - T3o;
+ }
+ {
+ E T5O, T99, T1i, T1n, T1o, T1k, T30, T5J, T98, T32;
+ {
+ E T5K, T5M, T1h, T1j;
+ T5K = FNMS(TX, T2X, TN * T2V);
+ T5M = FMA(TN, T2X, TX * T2V);
+ T5O = FMA(T5K, T5L, T5M * T5N);
+ T99 = FNMS(T5M, T5L, T5K * T5N);
+ T1h = Tb - Tg;
+ T1j = Tk + Tl;
+ T1i = T2 * T1h;
+ T1n = T2 * T1j;
+ T1o = Tj * T1h;
+ T1k = Tj * T1j;
+ T30 = FMA(TN, T1h, TX * T1j);
+ T5J = FMA(T1h, T5H, T1j * T5I);
+ T98 = FNMS(T1j, T5H, T1h * T5I);
+ T32 = FNMS(TX, T1h, TN * T1j);
+ }
+ T5P = T5J + T5O;
+ T9f = T5J - T5O;
+ TeH = T98 + T99;
+ T9a = T98 - T99;
+ T34 = FNMS(T32, T33, T30 * T31);
+ T8f = FMA(T32, T31, T30 * T33);
+ {
+ E T1l, T1p, T3O, T3Q;
+ T1l = T1i - T1k;
+ T1p = T1n + T1o;
+ T1r = FMA(T1l, T1m, T1p * T1q);
+ T7n = FNMS(T1p, T1m, T1l * T1q);
+ T3O = T1i + T1k;
+ T3Q = T1n - T1o;
+ T3S = FNMS(T3Q, T3R, T3O * T3P);
+ T8F = FMA(T3Q, T3P, T3O * T3R);
+ T4G = FNMS(TX, T3Q, TN * T3O);
+ T4I = FMA(TN, T3Q, TX * T3O);
+ }
+ }
+ }
+ {
+ E T5R, TgT, TgY, ThE, T9t, Tbe, T9G, Tbb, Tcl, Tdq, Tcs, Tdn, TeP, Tg4, TeY;
+ E Tg1, T7e, Th4, ThJ, Th9, Tfp, Tg8, Tfg, Tgb, T2K, TgC, Tih, ThX, TfQ, TiL;
+ E Tea, Tiv, Tam, Tbl, TcL, Tdu, Taz, Tbi, TcE, Tdx, T7U, Tjv, Tdc, Tjh, Tb0;
+ E TjL, TbU, TiZ, T8D, Tb5, Tc8, Tdi, T8M, Tb6, Tc5, Tdh, T4r, Thz, Tex, Tfz;
+ E TfX, Tgl, TgN, Thj, T8m, TaI, Tdg, TdG, Tb4, Tbu, Tc2, TcU, T3C, Thy, Tem;
+ E Tfy, TfU, Tgk, TgI, Thi, T6B, Th1, Tfm, Tga, Th8, ThI, T9Z, Tbh, Taw, Tbk;
+ E TcI, Tdw, Tf5, Tg7, Tcx, Tdt, T5c, TgV, TeV, Tg0, TgS, ThD, TeE, Tg3, T96;
+ E Tbd, Tce, Tdp, Tcp, Tdm, T9D, Tba, T1L, Tgz, Ti4, Tii, Tiy, TiM, TdZ, TfN;
+ E T7x, TaX, Tj4, Tji, Tjy, TjM, TbN, Td9;
+ {
+ E T5v, T5Q, TgW, TgX;
+ T5v = T5l + T5u;
+ T5Q = T5G + T5P;
+ T5R = T5v + T5Q;
+ TgT = T5Q - T5v;
+ TgW = TeL + TeM;
+ TgX = TeG + TeH;
+ TgY = TgW - TgX;
+ ThE = TgW + TgX;
+ }
+ {
+ E T9h, T9F, T9s, T9E;
+ {
+ E T9b, T9g, T9m, T9r;
+ T9b = T97 - T9a;
+ T9g = T9e + T9f;
+ T9h = FNMS(KP923879532, T9g, KP382683432 * T9b);
+ T9F = FMA(KP382683432, T9g, KP923879532 * T9b);
+ T9m = T9k + T9l;
+ T9r = T9n - T9q;
+ T9s = FMA(KP923879532, T9m, KP382683432 * T9r);
+ T9E = FNMS(KP923879532, T9r, KP382683432 * T9m);
+ }
+ T9t = T9h - T9s;
+ Tbe = T9E + T9F;
+ T9G = T9E - T9F;
+ Tbb = T9s + T9h;
+ }
+ {
+ E Tch, Tcr, Tck, Tcq;
+ {
+ E Tcf, Tcg, Tci, Tcj;
+ Tcf = T97 + T9a;
+ Tcg = T9e - T9f;
+ Tch = FNMS(KP382683432, Tcg, KP923879532 * Tcf);
+ Tcr = FMA(KP923879532, Tcg, KP382683432 * Tcf);
+ Tci = T9k - T9l;
+ Tcj = T9n + T9q;
+ Tck = FMA(KP382683432, Tci, KP923879532 * Tcj);
+ Tcq = FNMS(KP382683432, Tcj, KP923879532 * Tci);
+ }
+ Tcl = Tch - Tck;
+ Tdq = Tcq + Tcr;
+ Tcs = Tcq - Tcr;
+ Tdn = Tck + Tch;
+ }
+ {
+ E TeJ, TeX, TeO, TeW;
+ {
+ E TeF, TeI, TeK, TeN;
+ TeF = T5G - T5P;
+ TeI = TeG - TeH;
+ TeJ = TeF - TeI;
+ TeX = TeF + TeI;
+ TeK = T5l - T5u;
+ TeN = TeL - TeM;
+ TeO = TeK + TeN;
+ TeW = TeN - TeK;
+ }
+ TeP = KP707106781 * (TeJ - TeO);
+ Tg4 = KP707106781 * (TeW + TeX);
+ TeY = KP707106781 * (TeW - TeX);
+ Tg1 = KP707106781 * (TeO + TeJ);
+ }
+ {
+ E T6U, Th2, T7d, Tfb, Tfe, Th3, Tfa, Tfo, Tfn, Tff;
+ T6U = T6K + T6T;
+ Th2 = Tf6 + Tf7;
+ {
+ E T7c, Tfd, Tf8, Tf9;
+ T7c = T76 + T7b;
+ T7d = T73 + T7c;
+ Tfb = T73 - T7c;
+ Tfd = Tah + Tai;
+ Tfe = Tfc - Tfd;
+ Th3 = Tfc + Tfd;
+ Tf8 = Tf6 - Tf7;
+ Tf9 = T6K - T6T;
+ Tfa = Tf8 - Tf9;
+ Tfo = Tf9 + Tf8;
+ }
+ T7e = T6U + T7d;
+ Th4 = Th2 - Th3;
+ ThJ = Th2 + Th3;
+ Th9 = T7d - T6U;
+ Tfn = Tfb - Tfe;
+ Tfp = KP707106781 * (Tfn - Tfo);
+ Tg8 = KP707106781 * (Tfo + Tfn);
+ Tff = Tfb + Tfe;
+ Tfg = KP707106781 * (Tfa - Tff);
+ Tgb = KP707106781 * (Tfa + Tff);
+ }
+ {
+ E T2e, Te3, Te8, TgB, T2J, Te5, Te2, TgA;
+ {
+ E T2d, Te7, T2I, Te1;
+ T2d = T27 + T2c;
+ T2e = T1Y + T2d;
+ Te3 = T1Y - T2d;
+ Te7 = T7P + T7Q;
+ Te8 = Te6 - Te7;
+ TgB = Te6 + Te7;
+ T2I = T2w + T2H;
+ T2J = T2t + T2I;
+ Te5 = T2t - T2I;
+ Te1 = T7E + T7F;
+ Te2 = Te0 - Te1;
+ TgA = Te0 + Te1;
+ }
+ T2K = T2e + T2J;
+ TgC = TgA - TgB;
+ Tih = T2J - T2e;
+ ThX = TgA + TgB;
+ {
+ E TfO, TfP, Te4, Te9;
+ TfO = Te3 + Te2;
+ TfP = Te5 - Te8;
+ TfQ = KP707106781 * (TfO + TfP);
+ TiL = KP707106781 * (TfP - TfO);
+ Te4 = Te2 - Te3;
+ Te9 = Te5 + Te8;
+ Tea = KP707106781 * (Te4 - Te9);
+ Tiv = KP707106781 * (Te4 + Te9);
+ }
+ }
+ {
+ E Taf, TcB, Tak, TcC, Taa, Tay, TcA, TcK, Tae, Taj;
+ Tae = T76 - T7b;
+ Taf = Tad + Tae;
+ TcB = Tad - Tae;
+ Taj = Tah - Tai;
+ Tak = Tag - Taj;
+ TcC = Tag + Taj;
+ {
+ E Ta4, Ta9, Tcy, Tcz;
+ Ta4 = Ta2 + Ta3;
+ Ta9 = Ta5 - Ta8;
+ Taa = FNMS(KP923879532, Ta9, KP382683432 * Ta4);
+ Tay = FMA(KP923879532, Ta4, KP382683432 * Ta9);
+ Tcy = Ta2 - Ta3;
+ Tcz = Ta5 + Ta8;
+ TcA = FNMS(KP382683432, Tcz, KP923879532 * Tcy);
+ TcK = FMA(KP382683432, Tcy, KP923879532 * Tcz);
+ }
+ {
+ E Tal, TcJ, Tax, TcD;
+ Tal = FMA(KP382683432, Taf, KP923879532 * Tak);
+ Tam = Taa - Tal;
+ Tbl = Taa + Tal;
+ TcJ = FNMS(KP382683432, TcB, KP923879532 * TcC);
+ TcL = TcJ - TcK;
+ Tdu = TcK + TcJ;
+ Tax = FNMS(KP923879532, Taf, KP382683432 * Tak);
+ Taz = Tax - Tay;
+ Tbi = Tay + Tax;
+ TcD = FMA(KP923879532, TcB, KP382683432 * TcC);
+ TcE = TcA - TcD;
+ Tdx = TcA + TcD;
+ }
+ }
+ {
+ E T7C, TbO, T7S, TbS, T7H, TbP, T7N, TbR;
+ {
+ E T7B, T7R, T7G, T7M;
+ T7B = T27 - T2c;
+ T7C = T7A + T7B;
+ TbO = T7A - T7B;
+ T7R = T7P - T7Q;
+ T7S = T7O - T7R;
+ TbS = T7O + T7R;
+ T7G = T7E - T7F;
+ T7H = T7D - T7G;
+ TbP = T7D + T7G;
+ T7M = T2w - T2H;
+ T7N = T7L + T7M;
+ TbR = T7L - T7M;
+ }
+ {
+ E T7I, T7T, Tda, Tdb;
+ T7I = FNMS(KP923879532, T7H, KP382683432 * T7C);
+ T7T = FMA(KP382683432, T7N, KP923879532 * T7S);
+ T7U = T7I - T7T;
+ Tjv = T7I + T7T;
+ Tda = FMA(KP382683432, TbO, KP923879532 * TbP);
+ Tdb = FNMS(KP382683432, TbR, KP923879532 * TbS);
+ Tdc = Tda + Tdb;
+ Tjh = Tdb - Tda;
+ }
+ {
+ E TaY, TaZ, TbQ, TbT;
+ TaY = FMA(KP923879532, T7C, KP382683432 * T7H);
+ TaZ = FNMS(KP923879532, T7N, KP382683432 * T7S);
+ Tb0 = TaY + TaZ;
+ TjL = TaZ - TaY;
+ TbQ = FNMS(KP382683432, TbP, KP923879532 * TbO);
+ TbT = FMA(KP923879532, TbR, KP382683432 * TbS);
+ TbU = TbQ - TbT;
+ TiZ = TbQ + TbT;
+ }
+ }
+ {
+ E T8r, Tc6, T8I, Tc3, T8w, T8K, T8B, T8J, T8q, T8H;
+ T8q = T3S - T43;
+ T8r = T8p + T8q;
+ Tc6 = T8p - T8q;
+ T8H = T8F - T8G;
+ T8I = T8E - T8H;
+ Tc3 = T8E + T8H;
+ {
+ E T8s, T8v, T8x, T8A;
+ T8s = T4j - T4o;
+ T8v = T8t - T8u;
+ T8w = T8s - T8v;
+ T8K = T8s + T8v;
+ T8x = T48 - T4d;
+ T8A = T8y - T8z;
+ T8B = T8x + T8A;
+ T8J = T8A - T8x;
+ }
+ {
+ E T8C, Tc7, T8L, Tc4;
+ T8C = KP707106781 * (T8w - T8B);
+ T8D = T8r - T8C;
+ Tb5 = T8r + T8C;
+ Tc7 = KP707106781 * (T8J + T8K);
+ Tc8 = Tc6 - Tc7;
+ Tdi = Tc6 + Tc7;
+ T8L = KP707106781 * (T8J - T8K);
+ T8M = T8I - T8L;
+ Tb6 = T8I + T8L;
+ Tc4 = KP707106781 * (T8B + T8w);
+ Tc5 = Tc3 - Tc4;
+ Tdh = Tc3 + Tc4;
+ }
+ }
+ {
+ E T45, Tes, Tep, TgK, T4q, Teq, Tev, TgL, T44, Teo, Ter, Tew;
+ T44 = T3S + T43;
+ T45 = T3N + T44;
+ Tes = T3N - T44;
+ Teo = T8F + T8G;
+ Tep = Ten - Teo;
+ TgK = Ten + Teo;
+ {
+ E T4e, T4p, Tet, Teu;
+ T4e = T48 + T4d;
+ T4p = T4j + T4o;
+ T4q = T4e + T4p;
+ Teq = T4p - T4e;
+ Tet = T8y + T8z;
+ Teu = T8t + T8u;
+ Tev = Tet - Teu;
+ TgL = Tet + Teu;
+ }
+ T4r = T45 + T4q;
+ Thz = TgK + TgL;
+ Ter = Tep - Teq;
+ Tew = Tes - Tev;
+ Tex = FMA(KP382683432, Ter, KP923879532 * Tew);
+ Tfz = FNMS(KP923879532, Ter, KP382683432 * Tew);
+ {
+ E TfV, TfW, TgJ, TgM;
+ TfV = Tep + Teq;
+ TfW = Tes + Tev;
+ TfX = FMA(KP923879532, TfV, KP382683432 * TfW);
+ Tgl = FNMS(KP382683432, TfV, KP923879532 * TfW);
+ TgJ = T45 - T4q;
+ TgM = TgK - TgL;
+ TgN = TgJ + TgM;
+ Thj = TgJ - TgM;
+ }
+ }
+ {
+ E T80, TbW, T8k, TbX, T8b, Tc0, T8h, TbZ;
+ {
+ E T7Y, T7Z, T8i, T8j;
+ T7Y = T7W - T7X;
+ T7Z = T2Z - T34;
+ T80 = T7Y + T7Z;
+ TbW = T7Y - T7Z;
+ T8i = T89 - T86;
+ T8j = T81 + T84;
+ T8k = KP707106781 * (T8i - T8j);
+ TbX = KP707106781 * (T8i + T8j);
+ }
+ {
+ E T85, T8a, T8d, T8g;
+ T85 = T81 - T84;
+ T8a = T86 + T89;
+ T8b = KP707106781 * (T85 - T8a);
+ Tc0 = KP707106781 * (T8a + T85);
+ T8d = T2O - T2T;
+ T8g = T8e - T8f;
+ T8h = T8d - T8g;
+ TbZ = T8d + T8g;
+ }
+ {
+ E T8c, T8l, Tde, Tdf;
+ T8c = T80 - T8b;
+ T8l = T8h - T8k;
+ T8m = FNMS(KP980785280, T8l, KP195090322 * T8c);
+ TaI = FMA(KP980785280, T8c, KP195090322 * T8l);
+ Tde = TbW + TbX;
+ Tdf = TbZ + Tc0;
+ Tdg = FNMS(KP195090322, Tdf, KP980785280 * Tde);
+ TdG = FMA(KP980785280, Tdf, KP195090322 * Tde);
+ }
+ {
+ E Tb2, Tb3, TbY, Tc1;
+ Tb2 = T80 + T8b;
+ Tb3 = T8h + T8k;
+ Tb4 = FNMS(KP555570233, Tb3, KP831469612 * Tb2);
+ Tbu = FMA(KP555570233, Tb2, KP831469612 * Tb3);
+ TbY = TbW - TbX;
+ Tc1 = TbZ - Tc0;
+ Tc2 = FNMS(KP831469612, Tc1, KP555570233 * TbY);
+ TcU = FMA(KP555570233, Tc1, KP831469612 * TbY);
+ }
+ }
+ {
+ E T36, Teh, Tek, TgF, T3B, Tef, Tee, TgE, Teg, Tel;
+ {
+ E T2U, T35, Tei, Tej;
+ T2U = T2O + T2T;
+ T35 = T2Z + T34;
+ T36 = T2U + T35;
+ Teh = T2U - T35;
+ Tei = T87 + T88;
+ Tej = T82 + T83;
+ Tek = Tei - Tej;
+ TgF = Tei + Tej;
+ }
+ {
+ E T3p, T3A, Tec, Ted;
+ T3p = T3b + T3o;
+ T3A = T3u + T3z;
+ T3B = T3p + T3A;
+ Tef = T3A - T3p;
+ Tec = T7W + T7X;
+ Ted = T8e + T8f;
+ Tee = Tec - Ted;
+ TgE = Tec + Ted;
+ }
+ T3C = T36 + T3B;
+ Thy = TgE + TgF;
+ Teg = Tee - Tef;
+ Tel = Teh - Tek;
+ Tem = FNMS(KP923879532, Tel, KP382683432 * Teg);
+ Tfy = FMA(KP923879532, Teg, KP382683432 * Tel);
+ {
+ E TfS, TfT, TgG, TgH;
+ TfS = Tee + Tef;
+ TfT = Teh + Tek;
+ TfU = FNMS(KP382683432, TfT, KP923879532 * TfS);
+ Tgk = FMA(KP382683432, TfS, KP923879532 * TfT);
+ TgG = TgE - TgF;
+ TgH = T36 - T3B;
+ TgI = TgG - TgH;
+ Thi = TgH + TgG;
+ }
+ }
+ {
+ E T6A, Tfl, Th7, Tf4, T6e, Tar, T9Y, TcH, Tav, Tcw, T9M, Tfj;
+ T6A = T6o + T6z;
+ Tfl = T6z - T6o;
+ Th7 = Tf2 + Tf3;
+ Tf4 = Tf2 - Tf3;
+ {
+ E T6d, T9S, T9X, Tat, Tau, T9L;
+ T6d = FNMS(T6b, T6c, T69 * T6a);
+ T6e = T68 + T6d;
+ Tar = T68 - T6d;
+ T9S = T9Q - T9R;
+ T9X = T9T + T9W;
+ T9Y = KP707106781 * (T9S - T9X);
+ TcH = KP707106781 * (T9S + T9X);
+ Tat = T9T - T9W;
+ Tau = T9R + T9Q;
+ Tav = KP707106781 * (Tat - Tau);
+ Tcw = KP707106781 * (Tau + Tat);
+ T9L = FMA(T6b, T6a, T69 * T6c);
+ T9M = T9K - T9L;
+ Tfj = T9K + T9L;
+ }
+ {
+ E T6f, Tfk, Th6, T9N;
+ T6f = T65 + T6e;
+ T6B = T6f + T6A;
+ Th1 = T6f - T6A;
+ Tfk = Tfi - Tfj;
+ Tfm = Tfk - Tfl;
+ Tga = Tfk + Tfl;
+ Th6 = Tfi + Tfj;
+ Th8 = Th6 - Th7;
+ ThI = Th6 + Th7;
+ T9N = T9J - T9M;
+ T9Z = T9N - T9Y;
+ Tbh = T9N + T9Y;
+ }
+ {
+ E Tas, TcG, Tf1, Tcv;
+ Tas = Taq + Tar;
+ Taw = Tas - Tav;
+ Tbk = Tas + Tav;
+ TcG = Taq - Tar;
+ TcI = TcG - TcH;
+ Tdw = TcG + TcH;
+ Tf1 = T65 - T6e;
+ Tf5 = Tf1 - Tf4;
+ Tg7 = Tf1 + Tf4;
+ Tcv = T9J + T9M;
+ Tcx = Tcv - Tcw;
+ Tdt = Tcv + Tcw;
+ }
+ }
+ {
+ E T8Z, T9B, T5b, TeD, TeU, TgR, T94, T9A, T4L, T8T, T9y, TeB, T4V;
+ T8Z = T8V - T8Y;
+ T9B = T8V + T8Y;
+ T4V = T4P + T4U;
+ T5b = T4V + T5a;
+ TeD = T5a - T4V;
+ {
+ E TeS, T90, T93, T4K, T9x;
+ TeS = T91 + T92;
+ TeU = TeS - TeT;
+ TgR = TeS + TeT;
+ T90 = T4P - T4U;
+ T93 = T91 - T92;
+ T94 = T90 + T93;
+ T9A = T93 - T90;
+ T4K = FMA(T4G, T4H, T4I * T4J);
+ T4L = T4F + T4K;
+ T8T = T4F - T4K;
+ T9x = FNMS(T4I, T4H, T4G * T4J);
+ T9y = T9w - T9x;
+ TeB = T9w + T9x;
+ }
+ {
+ E T4M, TeR, TgQ, TeC;
+ T4M = T4C + T4L;
+ T5c = T4M + T5b;
+ TgV = T4M - T5b;
+ TeR = T4C - T4L;
+ TeV = TeR - TeU;
+ Tg0 = TeR + TeU;
+ TgQ = TeA + TeB;
+ TgS = TgQ - TgR;
+ ThD = TgQ + TgR;
+ TeC = TeA - TeB;
+ TeE = TeC - TeD;
+ Tg3 = TeC + TeD;
+ }
+ {
+ E T8U, T95, Tcc, Tcd;
+ T8U = T8S + T8T;
+ T95 = KP707106781 * (T8Z - T94);
+ T96 = T8U - T95;
+ Tbd = T8U + T95;
+ Tcc = T8S - T8T;
+ Tcd = KP707106781 * (T9A + T9B);
+ Tce = Tcc - Tcd;
+ Tdp = Tcc + Tcd;
+ }
+ {
+ E Tcn, Tco, T9z, T9C;
+ Tcn = T9v + T9y;
+ Tco = KP707106781 * (T94 + T8Z);
+ Tcp = Tcn - Tco;
+ Tdm = Tcn + Tco;
+ T9z = T9v - T9y;
+ T9C = KP707106781 * (T9A - T9B);
+ T9D = T9z - T9C;
+ Tba = T9z + T9C;
+ }
+ }
+ {
+ E Tv, T7h, TdY, ThY, Ti2, Tj1, T16, Tj2, T1K, Tiw, T7q, TbK, T7v, TbL, T7k;
+ E ThZ, T7r, T7u, T7i;
+ {
+ E Tu, TdW, TdX, Ti0, TM;
+ Tu = FNMS(Ts, Tt, To * Tp);
+ Tv = T1 + Tu;
+ T7h = T1 - Tu;
+ TdW = T7m + T7n;
+ TdX = T7s + T7t;
+ TdY = TdW - TdX;
+ ThY = TdW + TdX;
+ Ti0 = FMA(Ts, Tp, To * Tt);
+ Ti2 = Ti0 + Ti1;
+ Tj1 = Ti1 - Ti0;
+ TM = FMA(TG, TH, TK * TL);
+ T16 = TM + T15;
+ Tj2 = TM - T15;
+ }
+ {
+ E T1s, T1J, T7o, T7p;
+ T1s = T1g + T1r;
+ T1J = T1z + T1I;
+ T1K = T1s + T1J;
+ Tiw = T1J - T1s;
+ T7o = T7m - T7n;
+ T7p = T1g - T1r;
+ T7q = T7o - T7p;
+ TbK = T7p + T7o;
+ }
+ T7r = T1z - T1I;
+ T7u = T7s - T7t;
+ T7v = T7r + T7u;
+ TbL = T7r - T7u;
+ T7i = FNMS(TK, TH, TG * TL);
+ T7k = T7i - T7j;
+ ThZ = T7i + T7j;
+ {
+ E T17, Ti3, Tix, TdV;
+ T17 = Tv + T16;
+ T1L = T17 + T1K;
+ Tgz = T17 - T1K;
+ Ti3 = ThZ + Ti2;
+ Ti4 = ThY + Ti3;
+ Tii = Ti3 - ThY;
+ Tix = Ti2 - ThZ;
+ Tiy = Tiw + Tix;
+ TiM = Tix - Tiw;
+ TdV = Tv - T16;
+ TdZ = TdV - TdY;
+ TfN = TdV + TdY;
+ }
+ {
+ E T7l, T7w, Tj0, Tj3;
+ T7l = T7h - T7k;
+ T7w = KP707106781 * (T7q - T7v);
+ T7x = T7l - T7w;
+ TaX = T7l + T7w;
+ Tj0 = KP707106781 * (T7q + T7v);
+ Tj3 = Tj1 - Tj2;
+ Tj4 = Tj0 + Tj3;
+ Tji = Tj3 - Tj0;
+ }
+ {
+ E Tjw, Tjx, TbJ, TbM;
+ Tjw = KP707106781 * (TbL - TbK);
+ Tjx = Tj2 + Tj1;
+ Tjy = Tjw + Tjx;
+ TjM = Tjx - Tjw;
+ TbJ = T7h + T7k;
+ TbM = KP707106781 * (TbK + TbL);
+ TbN = TbJ - TbM;
+ Td9 = TbJ + TbM;
+ }
+ }
+ {
+ E T4t, ThR, Ti6, Ti8, T7g, Ti7, ThU, ThV;
+ {
+ E T2L, T4s, ThW, Ti5;
+ T2L = T1L + T2K;
+ T4s = T3C + T4r;
+ T4t = T2L + T4s;
+ ThR = T2L - T4s;
+ ThW = Thy + Thz;
+ Ti5 = ThX + Ti4;
+ Ti6 = ThW + Ti5;
+ Ti8 = Ti5 - ThW;
+ }
+ {
+ E T5S, T7f, ThS, ThT;
+ T5S = T5c + T5R;
+ T7f = T6B + T7e;
+ T7g = T5S + T7f;
+ Ti7 = T7f - T5S;
+ ThS = ThD + ThE;
+ ThT = ThI + ThJ;
+ ThU = ThS - ThT;
+ ThV = ThS + ThT;
+ }
+ ri[WS(ios, 32)] = T4t - T7g;
+ ii[WS(ios, 32)] = Ti6 - ThV;
+ ri[0] = T4t + T7g;
+ ii[0] = ThV + Ti6;
+ ri[WS(ios, 48)] = ThR - ThU;
+ ii[WS(ios, 48)] = Ti8 - Ti7;
+ ri[WS(ios, 16)] = ThR + ThU;
+ ii[WS(ios, 16)] = Ti7 + Ti8;
+ }
+ {
+ E ThB, ThN, Tic, Tie, ThG, ThO, ThL, ThP;
+ {
+ E Thx, ThA, Tia, Tib;
+ Thx = T1L - T2K;
+ ThA = Thy - Thz;
+ ThB = Thx + ThA;
+ ThN = Thx - ThA;
+ Tia = T4r - T3C;
+ Tib = Ti4 - ThX;
+ Tic = Tia + Tib;
+ Tie = Tib - Tia;
+ }
+ {
+ E ThC, ThF, ThH, ThK;
+ ThC = T5c - T5R;
+ ThF = ThD - ThE;
+ ThG = ThC + ThF;
+ ThO = ThF - ThC;
+ ThH = T6B - T7e;
+ ThK = ThI - ThJ;
+ ThL = ThH - ThK;
+ ThP = ThH + ThK;
+ }
+ {
+ E ThM, Ti9, ThQ, Tid;
+ ThM = KP707106781 * (ThG + ThL);
+ ri[WS(ios, 40)] = ThB - ThM;
+ ri[WS(ios, 8)] = ThB + ThM;
+ Ti9 = KP707106781 * (ThO + ThP);
+ ii[WS(ios, 8)] = Ti9 + Tic;
+ ii[WS(ios, 40)] = Tic - Ti9;
+ ThQ = KP707106781 * (ThO - ThP);
+ ri[WS(ios, 56)] = ThN - ThQ;
+ ri[WS(ios, 24)] = ThN + ThQ;
+ Tid = KP707106781 * (ThL - ThG);
+ ii[WS(ios, 24)] = Tid + Tie;
+ ii[WS(ios, 56)] = Tie - Tid;
+ }
+ }
+ {
+ E TgP, Thd, Tiq, Tis, Th0, The, Thb, Thf;
+ {
+ E TgD, TgO, Tio, Tip;
+ TgD = Tgz - TgC;
+ TgO = KP707106781 * (TgI - TgN);
+ TgP = TgD + TgO;
+ Thd = TgD - TgO;
+ Tio = KP707106781 * (Thj - Thi);
+ Tip = Tii - Tih;
+ Tiq = Tio + Tip;
+ Tis = Tip - Tio;
+ }
+ {
+ E TgU, TgZ, Th5, Tha;
+ TgU = TgS - TgT;
+ TgZ = TgV - TgY;
+ Th0 = FMA(KP923879532, TgU, KP382683432 * TgZ);
+ The = FNMS(KP923879532, TgZ, KP382683432 * TgU);
+ Th5 = Th1 - Th4;
+ Tha = Th8 - Th9;
+ Thb = FNMS(KP923879532, Tha, KP382683432 * Th5);
+ Thf = FMA(KP382683432, Tha, KP923879532 * Th5);
+ }
+ {
+ E Thc, Tin, Thg, Tir;
+ Thc = Th0 + Thb;
+ ri[WS(ios, 44)] = TgP - Thc;
+ ri[WS(ios, 12)] = TgP + Thc;
+ Tin = The + Thf;
+ ii[WS(ios, 12)] = Tin + Tiq;
+ ii[WS(ios, 44)] = Tiq - Tin;
+ Thg = The - Thf;
+ ri[WS(ios, 60)] = Thd - Thg;
+ ri[WS(ios, 28)] = Thd + Thg;
+ Tir = Thb - Th0;
+ ii[WS(ios, 28)] = Tir + Tis;
+ ii[WS(ios, 60)] = Tis - Tir;
+ }
+ }
+ {
+ E TfB, TfJ, TiO, TiQ, TfE, TfK, TfH, TfL;
+ {
+ E Tfx, TfA, TiK, TiN;
+ Tfx = TdZ + Tea;
+ TfA = Tfy + Tfz;
+ TfB = Tfx + TfA;
+ TfJ = Tfx - TfA;
+ TiK = Tem + Tex;
+ TiN = TiL + TiM;
+ TiO = TiK + TiN;
+ TiQ = TiN - TiK;
+ }
+ {
+ E TfC, TfD, TfF, TfG;
+ TfC = TeE + TeP;
+ TfD = TeV + TeY;
+ TfE = FMA(KP555570233, TfC, KP831469612 * TfD);
+ TfK = FNMS(KP555570233, TfD, KP831469612 * TfC);
+ TfF = Tf5 + Tfg;
+ TfG = Tfm + Tfp;
+ TfH = FNMS(KP555570233, TfG, KP831469612 * TfF);
+ TfL = FMA(KP831469612, TfG, KP555570233 * TfF);
+ }
+ {
+ E TfI, TiJ, TfM, TiP;
+ TfI = TfE + TfH;
+ ri[WS(ios, 38)] = TfB - TfI;
+ ri[WS(ios, 6)] = TfB + TfI;
+ TiJ = TfK + TfL;
+ ii[WS(ios, 6)] = TiJ + TiO;
+ ii[WS(ios, 38)] = TiO - TiJ;
+ TfM = TfK - TfL;
+ ri[WS(ios, 54)] = TfJ - TfM;
+ ri[WS(ios, 22)] = TfJ + TfM;
+ TiP = TfH - TfE;
+ ii[WS(ios, 22)] = TiP + TiQ;
+ ii[WS(ios, 54)] = TiQ - TiP;
+ }
+ }
+ {
+ E Thl, Tht, Tik, Tim, Tho, Thu, Thr, Thv;
+ {
+ E Thh, Thk, Tig, Tij;
+ Thh = Tgz + TgC;
+ Thk = KP707106781 * (Thi + Thj);
+ Thl = Thh + Thk;
+ Tht = Thh - Thk;
+ Tig = KP707106781 * (TgI + TgN);
+ Tij = Tih + Tii;
+ Tik = Tig + Tij;
+ Tim = Tij - Tig;
+ }
+ {
+ E Thm, Thn, Thp, Thq;
+ Thm = TgS + TgT;
+ Thn = TgV + TgY;
+ Tho = FMA(KP382683432, Thm, KP923879532 * Thn);
+ Thu = FNMS(KP382683432, Thn, KP923879532 * Thm);
+ Thp = Th1 + Th4;
+ Thq = Th8 + Th9;
+ Thr = FNMS(KP382683432, Thq, KP923879532 * Thp);
+ Thv = FMA(KP923879532, Thq, KP382683432 * Thp);
+ }
+ {
+ E Ths, Tif, Thw, Til;
+ Ths = Tho + Thr;
+ ri[WS(ios, 36)] = Thl - Ths;
+ ri[WS(ios, 4)] = Thl + Ths;
+ Tif = Thu + Thv;
+ ii[WS(ios, 4)] = Tif + Tik;
+ ii[WS(ios, 36)] = Tik - Tif;
+ Thw = Thu - Thv;
+ ri[WS(ios, 52)] = Tht - Thw;
+ ri[WS(ios, 20)] = Tht + Thw;
+ Til = Thr - Tho;
+ ii[WS(ios, 20)] = Til + Tim;
+ ii[WS(ios, 52)] = Tim - Til;
+ }
+ }
+ {
+ E Tez, Tft, TiU, TiW, Tf0, Tfu, Tfr, Tfv;
+ {
+ E Teb, Tey, TiS, TiT;
+ Teb = TdZ - Tea;
+ Tey = Tem - Tex;
+ Tez = Teb + Tey;
+ Tft = Teb - Tey;
+ TiS = Tfz - Tfy;
+ TiT = TiM - TiL;
+ TiU = TiS + TiT;
+ TiW = TiT - TiS;
+ }
+ {
+ E TeQ, TeZ, Tfh, Tfq;
+ TeQ = TeE - TeP;
+ TeZ = TeV - TeY;
+ Tf0 = FMA(KP980785280, TeQ, KP195090322 * TeZ);
+ Tfu = FNMS(KP980785280, TeZ, KP195090322 * TeQ);
+ Tfh = Tf5 - Tfg;
+ Tfq = Tfm - Tfp;
+ Tfr = FNMS(KP980785280, Tfq, KP195090322 * Tfh);
+ Tfv = FMA(KP195090322, Tfq, KP980785280 * Tfh);
+ }
+ {
+ E Tfs, TiR, Tfw, TiV;
+ Tfs = Tf0 + Tfr;
+ ri[WS(ios, 46)] = Tez - Tfs;
+ ri[WS(ios, 14)] = Tez + Tfs;
+ TiR = Tfu + Tfv;
+ ii[WS(ios, 14)] = TiR + TiU;
+ ii[WS(ios, 46)] = TiU - TiR;
+ Tfw = Tfu - Tfv;
+ ri[WS(ios, 62)] = Tft - Tfw;
+ ri[WS(ios, 30)] = Tft + Tfw;
+ TiV = Tfr - Tf0;
+ ii[WS(ios, 30)] = TiV + TiW;
+ ii[WS(ios, 62)] = TiW - TiV;
+ }
+ }
+ {
+ E TfZ, Tgf, TiG, TiI, Tg6, Tgg, Tgd, Tgh;
+ {
+ E TfR, TfY, TiE, TiF;
+ TfR = TfN - TfQ;
+ TfY = TfU - TfX;
+ TfZ = TfR + TfY;
+ Tgf = TfR - TfY;
+ TiE = Tgl - Tgk;
+ TiF = Tiy - Tiv;
+ TiG = TiE + TiF;
+ TiI = TiF - TiE;
+ }
+ {
+ E Tg2, Tg5, Tg9, Tgc;
+ Tg2 = Tg0 - Tg1;
+ Tg5 = Tg3 - Tg4;
+ Tg6 = FMA(KP555570233, Tg2, KP831469612 * Tg5);
+ Tgg = FNMS(KP831469612, Tg2, KP555570233 * Tg5);
+ Tg9 = Tg7 - Tg8;
+ Tgc = Tga - Tgb;
+ Tgd = FNMS(KP831469612, Tgc, KP555570233 * Tg9);
+ Tgh = FMA(KP831469612, Tg9, KP555570233 * Tgc);
+ }
+ {
+ E Tge, TiD, Tgi, TiH;
+ Tge = Tg6 + Tgd;
+ ri[WS(ios, 42)] = TfZ - Tge;
+ ri[WS(ios, 10)] = TfZ + Tge;
+ TiD = Tgg + Tgh;
+ ii[WS(ios, 10)] = TiD + TiG;
+ ii[WS(ios, 42)] = TiG - TiD;
+ Tgi = Tgg - Tgh;
+ ri[WS(ios, 58)] = Tgf - Tgi;
+ ri[WS(ios, 26)] = Tgf + Tgi;
+ TiH = Tgd - Tg6;
+ ii[WS(ios, 26)] = TiH + TiI;
+ ii[WS(ios, 58)] = TiI - TiH;
+ }
+ }
+ {
+ E Tgn, Tgv, TiA, TiC, Tgq, Tgw, Tgt, Tgx;
+ {
+ E Tgj, Tgm, Tiu, Tiz;
+ Tgj = TfN + TfQ;
+ Tgm = Tgk + Tgl;
+ Tgn = Tgj + Tgm;
+ Tgv = Tgj - Tgm;
+ Tiu = TfU + TfX;
+ Tiz = Tiv + Tiy;
+ TiA = Tiu + Tiz;
+ TiC = Tiz - Tiu;
+ }
+ {
+ E Tgo, Tgp, Tgr, Tgs;
+ Tgo = Tg0 + Tg1;
+ Tgp = Tg3 + Tg4;
+ Tgq = FMA(KP980785280, Tgo, KP195090322 * Tgp);
+ Tgw = FNMS(KP195090322, Tgo, KP980785280 * Tgp);
+ Tgr = Tg7 + Tg8;
+ Tgs = Tga + Tgb;
+ Tgt = FNMS(KP195090322, Tgs, KP980785280 * Tgr);
+ Tgx = FMA(KP195090322, Tgr, KP980785280 * Tgs);
+ }
+ {
+ E Tgu, Tit, Tgy, TiB;
+ Tgu = Tgq + Tgt;
+ ri[WS(ios, 34)] = Tgn - Tgu;
+ ri[WS(ios, 2)] = Tgn + Tgu;
+ Tit = Tgw + Tgx;
+ ii[WS(ios, 2)] = Tit + TiA;
+ ii[WS(ios, 34)] = TiA - Tit;
+ Tgy = Tgw - Tgx;
+ ri[WS(ios, 50)] = Tgv - Tgy;
+ ri[WS(ios, 18)] = Tgv + Tgy;
+ TiB = Tgt - Tgq;
+ ii[WS(ios, 18)] = TiB + TiC;
+ ii[WS(ios, 50)] = TiC - TiB;
+ }
+ }
+ {
+ E T7V, TjN, TjT, TaH, T8O, TjK, TaK, TjS, TaO, TaU, T9I, TaE, TaR, TaV, TaB;
+ E TaF, T8N;
+ T7V = T7x - T7U;
+ TjN = TjL + TjM;
+ TjT = TjM - TjL;
+ TaH = T7x + T7U;
+ T8N = FMA(KP195090322, T8D, KP980785280 * T8M);
+ T8O = T8m - T8N;
+ TjK = T8m + T8N;
+ {
+ E TaJ, TaM, TaN, T9u, T9H;
+ TaJ = FNMS(KP980785280, T8D, KP195090322 * T8M);
+ TaK = TaI + TaJ;
+ TjS = TaJ - TaI;
+ TaM = T96 + T9t;
+ TaN = T9D + T9G;
+ TaO = FMA(KP634393284, TaM, KP773010453 * TaN);
+ TaU = FNMS(KP634393284, TaN, KP773010453 * TaM);
+ T9u = T96 - T9t;
+ T9H = T9D - T9G;
+ T9I = FMA(KP995184726, T9u, KP098017140 * T9H);
+ TaE = FNMS(KP995184726, T9H, KP098017140 * T9u);
+ {
+ E TaP, TaQ, Tan, TaA;
+ TaP = T9Z + Tam;
+ TaQ = Taw + Taz;
+ TaR = FNMS(KP634393284, TaQ, KP773010453 * TaP);
+ TaV = FMA(KP773010453, TaQ, KP634393284 * TaP);
+ Tan = T9Z - Tam;
+ TaA = Taw - Taz;
+ TaB = FNMS(KP995184726, TaA, KP098017140 * Tan);
+ TaF = FMA(KP098017140, TaA, KP995184726 * Tan);
+ }
+ }
+ {
+ E T8P, TaC, TjR, TjU;
+ T8P = T7V + T8O;
+ TaC = T9I + TaB;
+ ri[WS(ios, 47)] = T8P - TaC;
+ ri[WS(ios, 15)] = T8P + TaC;
+ TjR = TaE + TaF;
+ TjU = TjS + TjT;
+ ii[WS(ios, 15)] = TjR + TjU;
+ ii[WS(ios, 47)] = TjU - TjR;
+ }
+ {
+ E TaD, TaG, TjV, TjW;
+ TaD = T7V - T8O;
+ TaG = TaE - TaF;
+ ri[WS(ios, 63)] = TaD - TaG;
+ ri[WS(ios, 31)] = TaD + TaG;
+ TjV = TaB - T9I;
+ TjW = TjT - TjS;
+ ii[WS(ios, 31)] = TjV + TjW;
+ ii[WS(ios, 63)] = TjW - TjV;
+ }
+ {
+ E TaL, TaS, TjJ, TjO;
+ TaL = TaH + TaK;
+ TaS = TaO + TaR;
+ ri[WS(ios, 39)] = TaL - TaS;
+ ri[WS(ios, 7)] = TaL + TaS;
+ TjJ = TaU + TaV;
+ TjO = TjK + TjN;
+ ii[WS(ios, 7)] = TjJ + TjO;
+ ii[WS(ios, 39)] = TjO - TjJ;
+ }
+ {
+ E TaT, TaW, TjP, TjQ;
+ TaT = TaH - TaK;
+ TaW = TaU - TaV;
+ ri[WS(ios, 55)] = TaT - TaW;
+ ri[WS(ios, 23)] = TaT + TaW;
+ TjP = TaR - TaO;
+ TjQ = TjN - TjK;
+ ii[WS(ios, 23)] = TjP + TjQ;
+ ii[WS(ios, 55)] = TjQ - TjP;
+ }
+ }
+ {
+ E TbV, Tjj, Tjp, TcT, Tca, Tjg, TcW, Tjo, Td0, Td6, Tcu, TcQ, Td3, Td7, TcN;
+ E TcR, Tc9;
+ TbV = TbN - TbU;
+ Tjj = Tjh + Tji;
+ Tjp = Tji - Tjh;
+ TcT = TbN + TbU;
+ Tc9 = FMA(KP831469612, Tc5, KP555570233 * Tc8);
+ Tca = Tc2 - Tc9;
+ Tjg = Tc2 + Tc9;
+ {
+ E TcV, TcY, TcZ, Tcm, Tct;
+ TcV = FNMS(KP831469612, Tc8, KP555570233 * Tc5);
+ TcW = TcU + TcV;
+ Tjo = TcV - TcU;
+ TcY = Tce + Tcl;
+ TcZ = Tcp + Tcs;
+ Td0 = FMA(KP471396736, TcY, KP881921264 * TcZ);
+ Td6 = FNMS(KP471396736, TcZ, KP881921264 * TcY);
+ Tcm = Tce - Tcl;
+ Tct = Tcp - Tcs;
+ Tcu = FMA(KP956940335, Tcm, KP290284677 * Tct);
+ TcQ = FNMS(KP956940335, Tct, KP290284677 * Tcm);
+ {
+ E Td1, Td2, TcF, TcM;
+ Td1 = Tcx + TcE;
+ Td2 = TcI + TcL;
+ Td3 = FNMS(KP471396736, Td2, KP881921264 * Td1);
+ Td7 = FMA(KP881921264, Td2, KP471396736 * Td1);
+ TcF = Tcx - TcE;
+ TcM = TcI - TcL;
+ TcN = FNMS(KP956940335, TcM, KP290284677 * TcF);
+ TcR = FMA(KP290284677, TcM, KP956940335 * TcF);
+ }
+ }
+ {
+ E Tcb, TcO, Tjn, Tjq;
+ Tcb = TbV + Tca;
+ TcO = Tcu + TcN;
+ ri[WS(ios, 45)] = Tcb - TcO;
+ ri[WS(ios, 13)] = Tcb + TcO;
+ Tjn = TcQ + TcR;
+ Tjq = Tjo + Tjp;
+ ii[WS(ios, 13)] = Tjn + Tjq;
+ ii[WS(ios, 45)] = Tjq - Tjn;
+ }
+ {
+ E TcP, TcS, Tjr, Tjs;
+ TcP = TbV - Tca;
+ TcS = TcQ - TcR;
+ ri[WS(ios, 61)] = TcP - TcS;
+ ri[WS(ios, 29)] = TcP + TcS;
+ Tjr = TcN - Tcu;
+ Tjs = Tjp - Tjo;
+ ii[WS(ios, 29)] = Tjr + Tjs;
+ ii[WS(ios, 61)] = Tjs - Tjr;
+ }
+ {
+ E TcX, Td4, Tjf, Tjk;
+ TcX = TcT + TcW;
+ Td4 = Td0 + Td3;
+ ri[WS(ios, 37)] = TcX - Td4;
+ ri[WS(ios, 5)] = TcX + Td4;
+ Tjf = Td6 + Td7;
+ Tjk = Tjg + Tjj;
+ ii[WS(ios, 5)] = Tjf + Tjk;
+ ii[WS(ios, 37)] = Tjk - Tjf;
+ }
+ {
+ E Td5, Td8, Tjl, Tjm;
+ Td5 = TcT - TcW;
+ Td8 = Td6 - Td7;
+ ri[WS(ios, 53)] = Td5 - Td8;
+ ri[WS(ios, 21)] = Td5 + Td8;
+ Tjl = Td3 - Td0;
+ Tjm = Tjj - Tjg;
+ ii[WS(ios, 21)] = Tjl + Tjm;
+ ii[WS(ios, 53)] = Tjm - Tjl;
+ }
+ }
+ {
+ E Tb1, Tjz, TjF, Tbt, Tb8, Tju, Tbw, TjE, TbA, TbG, Tbg, Tbq, TbD, TbH, Tbn;
+ E Tbr, Tb7;
+ Tb1 = TaX - Tb0;
+ Tjz = Tjv + Tjy;
+ TjF = Tjy - Tjv;
+ Tbt = TaX + Tb0;
+ Tb7 = FMA(KP831469612, Tb5, KP555570233 * Tb6);
+ Tb8 = Tb4 - Tb7;
+ Tju = Tb4 + Tb7;
+ {
+ E Tbv, Tby, Tbz, Tbc, Tbf;
+ Tbv = FNMS(KP555570233, Tb5, KP831469612 * Tb6);
+ Tbw = Tbu + Tbv;
+ TjE = Tbv - Tbu;
+ Tby = Tba + Tbb;
+ Tbz = Tbd + Tbe;
+ TbA = FMA(KP956940335, Tby, KP290284677 * Tbz);
+ TbG = FNMS(KP290284677, Tby, KP956940335 * Tbz);
+ Tbc = Tba - Tbb;
+ Tbf = Tbd - Tbe;
+ Tbg = FMA(KP471396736, Tbc, KP881921264 * Tbf);
+ Tbq = FNMS(KP881921264, Tbc, KP471396736 * Tbf);
+ {
+ E TbB, TbC, Tbj, Tbm;
+ TbB = Tbh + Tbi;
+ TbC = Tbk + Tbl;
+ TbD = FNMS(KP290284677, TbC, KP956940335 * TbB);
+ TbH = FMA(KP290284677, TbB, KP956940335 * TbC);
+ Tbj = Tbh - Tbi;
+ Tbm = Tbk - Tbl;
+ Tbn = FNMS(KP881921264, Tbm, KP471396736 * Tbj);
+ Tbr = FMA(KP881921264, Tbj, KP471396736 * Tbm);
+ }
+ }
+ {
+ E Tb9, Tbo, TjD, TjG;
+ Tb9 = Tb1 + Tb8;
+ Tbo = Tbg + Tbn;
+ ri[WS(ios, 43)] = Tb9 - Tbo;
+ ri[WS(ios, 11)] = Tb9 + Tbo;
+ TjD = Tbq + Tbr;
+ TjG = TjE + TjF;
+ ii[WS(ios, 11)] = TjD + TjG;
+ ii[WS(ios, 43)] = TjG - TjD;
+ }
+ {
+ E Tbp, Tbs, TjH, TjI;
+ Tbp = Tb1 - Tb8;
+ Tbs = Tbq - Tbr;
+ ri[WS(ios, 59)] = Tbp - Tbs;
+ ri[WS(ios, 27)] = Tbp + Tbs;
+ TjH = Tbn - Tbg;
+ TjI = TjF - TjE;
+ ii[WS(ios, 27)] = TjH + TjI;
+ ii[WS(ios, 59)] = TjI - TjH;
+ }
+ {
+ E Tbx, TbE, Tjt, TjA;
+ Tbx = Tbt + Tbw;
+ TbE = TbA + TbD;
+ ri[WS(ios, 35)] = Tbx - TbE;
+ ri[WS(ios, 3)] = Tbx + TbE;
+ Tjt = TbG + TbH;
+ TjA = Tju + Tjz;
+ ii[WS(ios, 3)] = Tjt + TjA;
+ ii[WS(ios, 35)] = TjA - Tjt;
+ }
+ {
+ E TbF, TbI, TjB, TjC;
+ TbF = Tbt - Tbw;
+ TbI = TbG - TbH;
+ ri[WS(ios, 51)] = TbF - TbI;
+ ri[WS(ios, 19)] = TbF + TbI;
+ TjB = TbD - TbA;
+ TjC = Tjz - Tju;
+ ii[WS(ios, 19)] = TjB + TjC;
+ ii[WS(ios, 51)] = TjC - TjB;
+ }
+ }
+ {
+ E Tdd, Tj5, Tjb, TdF, Tdk, TiY, TdI, Tja, TdM, TdS, Tds, TdC, TdP, TdT, Tdz;
+ E TdD, Tdj;
+ Tdd = Td9 - Tdc;
+ Tj5 = TiZ + Tj4;
+ Tjb = Tj4 - TiZ;
+ TdF = Td9 + Tdc;
+ Tdj = FMA(KP195090322, Tdh, KP980785280 * Tdi);
+ Tdk = Tdg - Tdj;
+ TiY = Tdg + Tdj;
+ {
+ E TdH, TdK, TdL, Tdo, Tdr;
+ TdH = FNMS(KP195090322, Tdi, KP980785280 * Tdh);
+ TdI = TdG + TdH;
+ Tja = TdH - TdG;
+ TdK = Tdm + Tdn;
+ TdL = Tdp + Tdq;
+ TdM = FMA(KP995184726, TdK, KP098017140 * TdL);
+ TdS = FNMS(KP098017140, TdK, KP995184726 * TdL);
+ Tdo = Tdm - Tdn;
+ Tdr = Tdp - Tdq;
+ Tds = FMA(KP634393284, Tdo, KP773010453 * Tdr);
+ TdC = FNMS(KP773010453, Tdo, KP634393284 * Tdr);
+ {
+ E TdN, TdO, Tdv, Tdy;
+ TdN = Tdt + Tdu;
+ TdO = Tdw + Tdx;
+ TdP = FNMS(KP098017140, TdO, KP995184726 * TdN);
+ TdT = FMA(KP098017140, TdN, KP995184726 * TdO);
+ Tdv = Tdt - Tdu;
+ Tdy = Tdw - Tdx;
+ Tdz = FNMS(KP773010453, Tdy, KP634393284 * Tdv);
+ TdD = FMA(KP773010453, Tdv, KP634393284 * Tdy);
+ }
+ }
+ {
+ E Tdl, TdA, Tj9, Tjc;
+ Tdl = Tdd + Tdk;
+ TdA = Tds + Tdz;
+ ri[WS(ios, 41)] = Tdl - TdA;
+ ri[WS(ios, 9)] = Tdl + TdA;
+ Tj9 = TdC + TdD;
+ Tjc = Tja + Tjb;
+ ii[WS(ios, 9)] = Tj9 + Tjc;
+ ii[WS(ios, 41)] = Tjc - Tj9;
+ }
+ {
+ E TdB, TdE, Tjd, Tje;
+ TdB = Tdd - Tdk;
+ TdE = TdC - TdD;
+ ri[WS(ios, 57)] = TdB - TdE;
+ ri[WS(ios, 25)] = TdB + TdE;
+ Tjd = Tdz - Tds;
+ Tje = Tjb - Tja;
+ ii[WS(ios, 25)] = Tjd + Tje;
+ ii[WS(ios, 57)] = Tje - Tjd;
+ }
+ {
+ E TdJ, TdQ, TiX, Tj6;
+ TdJ = TdF + TdI;
+ TdQ = TdM + TdP;
+ ri[WS(ios, 33)] = TdJ - TdQ;
+ ri[WS(ios, 1)] = TdJ + TdQ;
+ TiX = TdS + TdT;
+ Tj6 = TiY + Tj5;
+ ii[WS(ios, 1)] = TiX + Tj6;
+ ii[WS(ios, 33)] = Tj6 - TiX;
+ }
+ {
+ E TdR, TdU, Tj7, Tj8;
+ TdR = TdF - TdI;
+ TdU = TdS - TdT;
+ ri[WS(ios, 49)] = TdR - TdU;
+ ri[WS(ios, 17)] = TdR + TdU;
+ Tj7 = TdP - TdM;
+ Tj8 = Tj5 - TiY;
+ ii[WS(ios, 17)] = Tj7 + Tj8;
+ ii[WS(ios, 49)] = Tj8 - Tj7;
+ }
+ }
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_COS, 0, 1},
+ {TW_SIN, 0, 1},
+ {TW_COS, 0, 3},
+ {TW_SIN, 0, 3},
+ {TW_COS, 0, 9},
+ {TW_SIN, 0, 9},
+ {TW_COS, 0, 27},
+ {TW_SIN, 0, 27},
+ {TW_COS, 0, 63},
+ {TW_SIN, 0, 63},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 64, "t2_64", twinstr, {880, 386, 274, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t2_64) (planner *p) {
+ X(kdft_dit_register) (p, t2_64, &desc);
+}
diff --git a/src/fftw3/dft/codelets/standard/t2_8.c b/src/fftw3/dft/codelets/standard/t2_8.c
new file mode 100644
index 0000000..d9aec9a
--- /dev/null
+++ b/src/fftw3/dft/codelets/standard/t2_8.c
@@ -0,0 +1,192 @@
+/*
+ * Copyright (c) 2003 Matteo Frigo
+ * Copyright (c) 2003 Massachusetts Institute of Technology
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* This file was automatically generated --- DO NOT EDIT */
+/* Generated on Sat Jul 5 21:30:08 EDT 2003 */
+
+#include "codelet-dft.h"
+
+/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_twiddle -compact -variables 4 -twiddle-log3 -n 8 -name t2_8 -include t.h */
+
+/*
+ * This function contains 74 FP additions, 44 FP multiplications,
+ * (or, 56 additions, 26 multiplications, 18 fused multiply/add),
+ * 50 stack variables, and 32 memory accesses
+ */
+/*
+ * Generator Id's :
+ * $Id: t2_8.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t2_8.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ * $Id: t2_8.c,v 1.1 2008/10/17 06:11:09 scuri Exp $
+ */
+
+#include "t.h"
+
+static const R *t2_8(R *ri, R *ii, const R *W, stride ios, int m, int dist)
+{
+ DK(KP707106781, +0.707106781186547524400844362104849039284835938);
+ int i;
+ for (i = m; i > 0; i = i - 1, ri = ri + dist, ii = ii + dist, W = W + 6) {
+ E T1, T1c, TJ, T17, TY, TV, TR, Tk, Tr, TN, TM, Tw, TB, TS, Te;
+ E T1b;
+ T1 = ri[0];
+ T1c = ii[0];
+ {
+ E T9, Td, Th, Tj, To, Tq, Ty, TA, Tv, Tu, T3, T6, T4, Tb, T7;
+ E Ta, Tg, Ti, TI, TX, Tl, Tm, Tn, TW, Tp, TF;
+ T9 = ri[WS(ios, 4)];
+ Td = ii[WS(ios, 4)];
+ Th = ri[WS(ios, 2)];
+ Tj = ii[WS(ios, 2)];
+ To = ri[WS(ios, 6)];
+ Tq = ii[WS(ios, 6)];
+ Ty = ri[WS(ios, 5)];
+ TA = ii[WS(ios, 5)];
+ Tv = ii[WS(ios, 1)];
+ Tu = ri[WS(ios, 1)];
+ {
+ E TD, TE, TG, TH, T2, T5;
+ TD = ri[WS(ios, 7)];
+ TE = ii[WS(ios, 7)];
+ TG = ri[WS(ios, 3)];
+ TH = ii[WS(ios, 3)];
+ T2 = W[2];
+ T5 = W[3];
+ T3 = W[0];
+ T6 = W[1];
+ T4 = T2 * T3;
+ Tb = T5 * T3;
+ T7 = T5 * T6;
+ Ta = T2 * T6;
+ Tg = T4 + T7;
+ Ti = Ta - Tb;
+ TI = FMA(T2, TG, T5 * TH);
+ TX = FNMS(T5, TG, T2 * TH);
+ Tl = W[4];
+ Tm = W[5];
+ Tn = FMA(Tl, T3, Tm * T6);
+ TW = FNMS(Tm, TD, Tl * TE);
+ Tp = FNMS(Tm, T3, Tl * T6);
+ TF = FMA(Tl, TD, Tm * TE);
+ }
+ TJ = TF + TI;
+ T17 = TW + TX;
+ TY = TW - TX;
+ TV = TF - TI;
+ TR = FNMS(T6, Tu, T3 * Tv);
+ Tk = FNMS(Ti, Tj, Tg * Th);
+ Tr = FNMS(Tp, Tq, Tn * To);
+ TN = FMA(Tp, To, Tn * Tq);
+ TM = FMA(Ti, Th, Tg * Tj);
+ Tw = FMA(T3, Tu, T6 * Tv);
+ {
+ E Tx, Tz, T8, Tc;
+ Tx = FNMS(Tm, Ti, Tl * Tg);
+ Tz = FMA(Tl, Ti, Tm * Tg);
+ TB = FMA(Tx, Ty, Tz * TA);
+ TS = FNMS(Tz, Ty, Tx * TA);
+ T8 = T4 - T7;
+ Tc = Ta + Tb;
+ Te = FMA(T8, T9, Tc * Td);
+ T1b = FNMS(Tc, T9, T8 * Td);
+ }
+ }
+ {
+ E TK, T1f, T18, T19, Tt, T15, T1e, T1g, TC, T16;
+ TC = Tw + TB;
+ TK = TC + TJ;
+ T1f = TJ - TC;
+ T16 = TR + TS;
+ T18 = T16 - T17;
+ T19 = T16 + T17;
+ {
+ E Tf, Ts, T1a, T1d;
+ Tf = T1 + Te;
+ Ts = Tk + Tr;
+ Tt = Tf + Ts;
+ T15 = Tf - Ts;
+ T1a = TM + TN;
+ T1d = T1b + T1c;
+ T1e = T1a + T1d;
+ T1g = T1d - T1a;
+ }
+ ri[WS(ios, 4)] = Tt - TK;
+ ii[WS(ios, 4)] = T1e - T19;
+ ri[0] = Tt + TK;
+ ii[0] = T19 + T1e;
+ ri[WS(ios, 6)] = T15 - T18;
+ ii[WS(ios, 6)] = T1g - T1f;
+ ri[WS(ios, 2)] = T15 + T18;
+ ii[WS(ios, 2)] = T1f + T1g;
+ }
+ {
+ E TZ, T13, TP, T11, TU, T12, T1k, T1m, TL, TO;
+ TZ = TV - TY;
+ T13 = TV + TY;
+ TL = T1 - Te;
+ TO = TM - TN;
+ TP = TL + TO;
+ T11 = TL - TO;
+ {
+ E TQ, TT, T1i, T1j;
+ TQ = Tw - TB;
+ TT = TR - TS;
+ TU = TQ + TT;
+ T12 = TT - TQ;
+ T1i = T1c - T1b;
+ T1j = Tk - Tr;
+ T1k = T1i - T1j;
+ T1m = T1j + T1i;
+ }
+ {
+ E T10, T1h, T14, T1l;
+ T10 = KP707106781 * (TU + TZ);
+ ri[WS(ios, 5)] = TP - T10;
+ ri[WS(ios, 1)] = TP + T10;
+ T1h = KP707106781 * (T12 + T13);
+ ii[WS(ios, 1)] = T1h + T1k;
+ ii[WS(ios, 5)] = T1k - T1h;
+ T14 = KP707106781 * (T12 - T13);
+ ri[WS(ios, 7)] = T11 - T14;
+ ri[WS(ios, 3)] = T11 + T14;
+ T1l = KP707106781 * (TZ - TU);
+ ii[WS(ios, 3)] = T1l + T1m;
+ ii[WS(ios, 7)] = T1m - T1l;
+ }
+ }
+ }
+ return W;
+}
+
+static const tw_instr twinstr[] = {
+ {TW_COS, 0, 1},
+ {TW_SIN, 0, 1},
+ {TW_COS, 0, 3},
+ {TW_SIN, 0, 3},
+ {TW_COS, 0, 7},
+ {TW_SIN, 0, 7},
+ {TW_NEXT, 1, 0}
+};
+
+static const ct_desc desc = { 8, "t2_8", twinstr, {56, 26, 18, 0}, &GENUS, 0, 0, 0 };
+
+void X(codelet_t2_8) (planner *p) {
+ X(kdft_dit_register) (p, t2_8, &desc);
+}