⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t1_64.c

📁 快速fft变换
💻 C
📖 第 1 页 / 共 5 页
字号:
/* * Copyright (c) 2003, 2007-8 Matteo Frigo * Copyright (c) 2003, 2007-8 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 Nov 15 20:37:51 EST 2008 */#include "codelet-dft.h"#ifdef HAVE_FMA/* Generated by: ../../../genfft/gen_twiddle -fma -reorder-insns -schedule-for-pipeline -compact -variables 4 -pipeline-latency 4 -n 64 -name t1_64 -include t.h *//* * This function contains 1038 FP additions, 644 FP multiplications, * (or, 520 additions, 126 multiplications, 518 fused multiply/add), * 228 stack variables, 15 constants, and 256 memory accesses */#include "t.h"static void t1_64(R *ri, R *ii, const R *W, stride rs, INT mb, INT me, INT ms){     DK(KP995184726, +0.995184726672196886244836953109479921575474869);     DK(KP773010453, +0.773010453362736960810906609758469800971041293);     DK(KP956940335, +0.956940335732208864935797886980269969482849206);     DK(KP881921264, +0.881921264348355029712756863660388349508442621);     DK(KP820678790, +0.820678790828660330972281985331011598767386482);     DK(KP098491403, +0.098491403357164253077197521291327432293052451);     DK(KP534511135, +0.534511135950791641089685961295362908582039528);     DK(KP303346683, +0.303346683607342391675883946941299872384187453);     DK(KP831469612, +0.831469612302545237078788377617905756738560812);     DK(KP980785280, +0.980785280403230449126182236134239036973933731);     DK(KP668178637, +0.668178637919298919997757686523080761552472251);     DK(KP198912367, +0.198912367379658006911597622644676228597850501);     DK(KP923879532, +0.923879532511286756128183189396788286822416626);     DK(KP707106781, +0.707106781186547524400844362104849039284835938);     DK(KP414213562, +0.414213562373095048801688724209698078569671875);     INT m;     for (m = mb, W = W + (mb * 126); m < me; m = m + 1, ri = ri + ms, ii = ii + ms, W = W + 126, MAKE_VOLATILE_STRIDE(rs)) {	  E TeI, Tkk, Tkj, TeL;	  {	       E TiV, Tjm, T7e, TcA, TjR, Tkl, Tm, TeM, TeZ, Ths, T7Q, TcJ, T1G, TeW, TcI;	       E T7X, Tf5, Thv, T87, TcN, T29, Tf8, TcQ, T8u, TfU, ThS, Taq, Tdm, T5K, Tg9;	       E Tdx, Tbj, TcB, T7l, TiP, TeP, Tjl, TN, TcC, T7s, T7I, TcF, TeU, Thr, T7B;	       E TcG, T1f, TeR, Tfg, ThB, T8G, TcU, T32, Tfj, TcX, T93, Tft, ThH, T9h, Td3;	       E T3X, TfI, Tde, Taa, Thw, Tfb, Tf6, T2A, T8x, TcO, T8m, TcR, Tfm, ThC, T3t;	       E Tfh, T96, TcV, T8V, TcY, ThI, TfL, Tfu, T4o, Tad, Td4, T9w, Tdf, Tgc, ThT;	       E T6b, TfV, Tbm, Tdn, TaF, Tdy, ThN, T4Q, TfN, TfA, Taf, Ta1, Td8, Tdh, ThO;	       E T5h, TfO, TfF, Tag, T9M, Tdb, Tdi, ThY, T6D, Tge, Tg1, Tbo, Tba, Tdr, TdA;	       E TaN, Tdt, Tg5, ThZ, Tg2, T74, Tds, TaU;	       {		    E T7a, Te, T78, T8, TjP, TiU, T7c, Tk;		    {			 E T1, TiT, TiS, T7, Tg, Tj, Tf, Ti, T7b, Th;			 T1 = ri[0];			 TiT = ii[0];			 {			      E T3, T6, T2, T5;			      T3 = ri[WS(rs, 32)];			      T6 = ii[WS(rs, 32)];			      T2 = W[62];			      T5 = W[63];			      {				   E Ta, Td, Tc, T79, Tb, TiR, T4, T9;				   Ta = ri[WS(rs, 16)];				   Td = ii[WS(rs, 16)];				   TiR = T2 * T6;				   T4 = T2 * T3;				   T9 = W[30];				   Tc = W[31];				   TiS = FNMS(T5, T3, TiR);				   T7 = FMA(T5, T6, T4);				   T79 = T9 * Td;				   Tb = T9 * Ta;				   Tg = ri[WS(rs, 48)];				   Tj = ii[WS(rs, 48)];				   T7a = FNMS(Tc, Ta, T79);				   Te = FMA(Tc, Td, Tb);				   Tf = W[94];				   Ti = W[95];			      }			 }			 T78 = T1 - T7;			 T8 = T1 + T7;			 TjP = TiT - TiS;			 TiU = TiS + TiT;			 T7b = Tf * Tj;			 Th = Tf * Tg;			 T7c = FNMS(Ti, Tg, T7b);			 Tk = FMA(Ti, Tj, Th);		    }		    {			 E T7L, T1l, T7V, T1E, T1u, T1x, T1w, T7N, T1r, T7S, T1v;			 {			      E T1A, T1D, T1C, T7U, T1B;			      {				   E T1h, T1k, T1g, T1j, T7K, T1i, T1z;				   T1h = ri[WS(rs, 60)];				   T1k = ii[WS(rs, 60)];				   {					E T7d, TiQ, Tl, TjQ;					T7d = T7a - T7c;					TiQ = T7a + T7c;					Tl = Te + Tk;					TjQ = Te - Tk;					TiV = TiQ + TiU;					Tjm = TiU - TiQ;					T7e = T78 - T7d;					TcA = T78 + T7d;					TjR = TjP - TjQ;					Tkl = TjQ + TjP;					Tm = T8 + Tl;					TeM = T8 - Tl;					T1g = W[118];				   }				   T1j = W[119];				   T1A = ri[WS(rs, 44)];				   T1D = ii[WS(rs, 44)];				   T7K = T1g * T1k;				   T1i = T1g * T1h;				   T1z = W[86];				   T1C = W[87];				   T7L = FNMS(T1j, T1h, T7K);				   T1l = FMA(T1j, T1k, T1i);				   T7U = T1z * T1D;				   T1B = T1z * T1A;			      }			      {				   E T1n, T1q, T1m, T1p, T7M, T1o, T1t;				   T1n = ri[WS(rs, 28)];				   T1q = ii[WS(rs, 28)];				   T7V = FNMS(T1C, T1A, T7U);				   T1E = FMA(T1C, T1D, T1B);				   T1m = W[54];				   T1p = W[55];				   T1u = ri[WS(rs, 12)];				   T1x = ii[WS(rs, 12)];				   T7M = T1m * T1q;				   T1o = T1m * T1n;				   T1t = W[22];				   T1w = W[23];				   T7N = FNMS(T1p, T1n, T7M);				   T1r = FMA(T1p, T1q, T1o);				   T7S = T1t * T1x;				   T1v = T1t * T1u;			      }			 }			 {			      E T7O, TeX, T1s, T7R, T7T, T1y;			      T7O = T7L - T7N;			      TeX = T7L + T7N;			      T1s = T1l + T1r;			      T7R = T1l - T1r;			      T7T = FNMS(T1w, T1u, T7S);			      T1y = FMA(T1w, T1x, T1v);			      {				   E T7W, TeY, T7P, T1F;				   T7W = T7T - T7V;				   TeY = T7T + T7V;				   T7P = T1y - T1E;				   T1F = T1y + T1E;				   TeZ = TeX - TeY;				   Ths = TeX + TeY;				   T7Q = T7O + T7P;				   TcJ = T7O - T7P;				   T1G = T1s + T1F;				   TeW = T1s - T1F;				   TcI = T7R + T7W;				   T7X = T7R - T7W;			      }			 }		    }	       }	       {		    E T82, T1O, T8s, T27, T1X, T20, T1Z, T84, T1U, T8p, T1Y;		    {			 E T23, T26, T25, T8r, T24;			 {			      E T1K, T1N, T1J, T1M, T81, T1L, T22;			      T1K = ri[WS(rs, 2)];			      T1N = ii[WS(rs, 2)];			      T1J = W[2];			      T1M = W[3];			      T23 = ri[WS(rs, 50)];			      T26 = ii[WS(rs, 50)];			      T81 = T1J * T1N;			      T1L = T1J * T1K;			      T22 = W[98];			      T25 = W[99];			      T82 = FNMS(T1M, T1K, T81);			      T1O = FMA(T1M, T1N, T1L);			      T8r = T22 * T26;			      T24 = T22 * T23;			 }			 {			      E T1Q, T1T, T1P, T1S, T83, T1R, T1W;			      T1Q = ri[WS(rs, 34)];			      T1T = ii[WS(rs, 34)];			      T8s = FNMS(T25, T23, T8r);			      T27 = FMA(T25, T26, T24);			      T1P = W[66];			      T1S = W[67];			      T1X = ri[WS(rs, 18)];			      T20 = ii[WS(rs, 18)];			      T83 = T1P * T1T;			      T1R = T1P * T1Q;			      T1W = W[34];			      T1Z = W[35];			      T84 = FNMS(T1S, T1Q, T83);			      T1U = FMA(T1S, T1T, T1R);			      T8p = T1W * T20;			      T1Y = T1W * T1X;			 }		    }		    {			 E T85, Tf3, T1V, T8o, T8q, T21;			 T85 = T82 - T84;			 Tf3 = T82 + T84;			 T1V = T1O + T1U;			 T8o = T1O - T1U;			 T8q = FNMS(T1Z, T1X, T8p);			 T21 = FMA(T1Z, T20, T1Y);			 {			      E T8t, Tf4, T86, T28;			      T8t = T8q - T8s;			      Tf4 = T8q + T8s;			      T86 = T21 - T27;			      T28 = T21 + T27;			      Tf5 = Tf3 - Tf4;			      Thv = Tf3 + Tf4;			      T87 = T85 + T86;			      TcN = T85 - T86;			      T29 = T1V + T28;			      Tf8 = T1V - T28;			      TcQ = T8o + T8t;			      T8u = T8o - T8t;			 }		    }	       }	       {		    E Tal, T5p, Tbh, T5I, T5y, T5B, T5A, Tan, T5v, Tbe, T5z;		    {			 E T5E, T5H, T5G, Tbg, T5F;			 {			      E T5l, T5o, T5k, T5n, Tak, T5m, T5D;			      T5l = ri[WS(rs, 63)];			      T5o = ii[WS(rs, 63)];			      T5k = W[124];			      T5n = W[125];			      T5E = ri[WS(rs, 47)];			      T5H = ii[WS(rs, 47)];			      Tak = T5k * T5o;			      T5m = T5k * T5l;			      T5D = W[92];			      T5G = W[93];			      Tal = FNMS(T5n, T5l, Tak);			      T5p = FMA(T5n, T5o, T5m);			      Tbg = T5D * T5H;			      T5F = T5D * T5E;			 }			 {			      E T5r, T5u, T5q, T5t, Tam, T5s, T5x;			      T5r = ri[WS(rs, 31)];			      T5u = ii[WS(rs, 31)];			      Tbh = FNMS(T5G, T5E, Tbg);			      T5I = FMA(T5G, T5H, T5F);			      T5q = W[60];			      T5t = W[61];			      T5y = ri[WS(rs, 15)];			      T5B = ii[WS(rs, 15)];			      Tam = T5q * T5u;			      T5s = T5q * T5r;			      T5x = W[28];			      T5A = W[29];			      Tan = FNMS(T5t, T5r, Tam);			      T5v = FMA(T5t, T5u, T5s);			      Tbe = T5x * T5B;			      T5z = T5x * T5y;			 }		    }		    {			 E Tao, TfS, T5w, Tbd, Tbf, T5C;			 Tao = Tal - Tan;			 TfS = Tal + Tan;			 T5w = T5p + T5v;			 Tbd = T5p - T5v;			 Tbf = FNMS(T5A, T5y, Tbe);			 T5C = FMA(T5A, T5B, T5z);			 {			      E Tbi, TfT, Tap, T5J;			      Tbi = Tbf - Tbh;			      TfT = Tbf + Tbh;			      Tap = T5C - T5I;			      T5J = T5C + T5I;			      TfU = TfS - TfT;			      ThS = TfS + TfT;			      Taq = Tao + Tap;			      Tdm = Tao - Tap;			      T5K = T5w + T5J;			      Tg9 = T5w - T5J;			      Tdx = Tbd + Tbi;			      Tbj = Tbd - Tbi;			 }		    }	       }	       {		    E T7G, T1d, T7z, TeS, T11, T7C, T7E, T17, T7r, T7m;		    {			 E T7g, Ts, T7q, TL, TB, TE, TD, T7i, Ty, T7n, TC;			 {			      E TH, TK, TJ, T7p, TI;			      {				   E To, Tr, Tn, Tq, T7f, Tp, TG;				   To = ri[WS(rs, 8)];				   Tr = ii[WS(rs, 8)];				   Tn = W[14];				   Tq = W[15];				   TH = ri[WS(rs, 24)];				   TK = ii[WS(rs, 24)];				   T7f = Tn * Tr;				   Tp = Tn * To;				   TG = W[46];				   TJ = W[47];				   T7g = FNMS(Tq, To, T7f);				   Ts = FMA(Tq, Tr, Tp);				   T7p = TG * TK;				   TI = TG * TH;			      }			      {				   E Tu, Tx, Tt, Tw, T7h, Tv, TA;				   Tu = ri[WS(rs, 40)];				   Tx = ii[WS(rs, 40)];				   T7q = FNMS(TJ, TH, T7p);				   TL = FMA(TJ, TK, TI);				   Tt = W[78];				   Tw = W[79];				   TB = ri[WS(rs, 56)];				   TE = ii[WS(rs, 56)];				   T7h = Tt * Tx;				   Tv = Tt * Tu;				   TA = W[110];				   TD = W[111];				   T7i = FNMS(Tw, Tu, T7h);				   Ty = FMA(Tw, Tx, Tv);				   T7n = TA * TE;				   TC = TA * TB;			      }			 }			 {			      E T7j, TeN, Tz, T7k, T7o, TF, TeO, TM;			      T7j = T7g - T7i;			      TeN = T7g + T7i;			      Tz = Ts + Ty;			      T7k = Ts - Ty;			      T7o = FNMS(TD, TB, T7n);			      TF = FMA(TD, TE, TC);			      T7r = T7o - T7q;			      TeO = T7o + T7q;			      TM = TF + TL;			      T7m = TF - TL;			      TcB = T7k + T7j;			      T7l = T7j - T7k;			      TiP = TeN + TeO;			      TeP = TeN - TeO;			      Tjl = TM - Tz;			      TN = Tz + TM;			 }		    }		    {			 E T7w, TU, T13, T16, T7y, T10, T12, T15, T7D, T14;			 {			      E T19, T1c, T18, T1b;			      {				   E TQ, TT, TS, T7v, TR, TP;				   TQ = ri[WS(rs, 4)];				   TT = ii[WS(rs, 4)];				   TP = W[6];				   TcC = T7m - T7r;				   T7s = T7m + T7r;				   TS = W[7];				   T7v = TP * TT;				   TR = TP * TQ;				   T19 = ri[WS(rs, 52)];				   T1c = ii[WS(rs, 52)];				   T7w = FNMS(TS, TQ, T7v);				   TU = FMA(TS, TT, TR);				   T18 = W[102];				   T1b = W[103];			      }			      {				   E TW, TZ, TY, T7x, TX, T7F, T1a, TV;				   TW = ri[WS(rs, 36)];				   TZ = ii[WS(rs, 36)];				   T7F = T18 * T1c;				   T1a = T18 * T19;				   TV = W[70];				   TY = W[71];				   T7G = FNMS(T1b, T19, T7F);				   T1d = FMA(T1b, T1c, T1a);				   T7x = TV * TZ;				   TX = TV * TW;				   T13 = ri[WS(rs, 20)];				   T16 = ii[WS(rs, 20)];				   T7y = FNMS(TY, TW, T7x);				   T10 = FMA(TY, TZ, TX);				   T12 = W[38];				   T15 = W[39];			      }			 }			 T7z = T7w - T7y;			 TeS = T7w + T7y;			 T11 = TU + T10;			 T7C = TU - T10;			 T7D = T12 * T16;			 T14 = T12 * T13;			 T7E = FNMS(T15, T13, T7D);			 T17 = FMA(T15, T16, T14);		    }		    {			 E T8B, T2H, T91, T30, T2Q, T2T, T2S, T8D, T2N, T8Y, T2R;			 {			      E T2W, T2Z, T2Y, T90, T2X;			      {				   E T2D, T2G, T2C, T2F, T8A, T2E, T2V;				   T2D = ri[WS(rs, 62)];				   T2G = ii[WS(rs, 62)];				   {					E TeT, T7H, T1e, T7A;					TeT = T7E + T7G;					T7H = T7E - T7G;					T1e = T17 + T1d;					T7A = T17 - T1d;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -