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

📄 hc2cfdft_10.c

📁 快速fft变换
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * 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 21:03:19 EST 2008 */#include "codelet-rdft.h"#ifdef HAVE_FMA/* Generated by: ../../../genfft/gen_hc2cdft -fma -reorder-insns -schedule-for-pipeline -compact -variables 4 -pipeline-latency 4 -n 10 -dit -name hc2cfdft_10 -include hc2cf.h *//* * This function contains 122 FP additions, 92 FP multiplications, * (or, 68 additions, 38 multiplications, 54 fused multiply/add), * 94 stack variables, 5 constants, and 40 memory accesses */#include "hc2cf.h"static void hc2cfdft_10(R *Rp, R *Ip, R *Rm, R *Im, const R *W, stride rs, INT mb, INT me, INT ms){     DK(KP951056516, +0.951056516295153572116439333379382143405698634);     DK(KP559016994, +0.559016994374947424102293417182819058860154590);     DK(KP250000000, +0.250000000000000000000000000000000000000000000);     DK(KP500000000, +0.500000000000000000000000000000000000000000000);     DK(KP618033988, +0.618033988749894848204586834365638117720309180);     INT m;     for (m = mb, W = W + ((mb - 1) * 18); m < me; m = m + 1, Rp = Rp + ms, Ip = Ip + ms, Rm = Rm - ms, Im = Im - ms, W = W + 18, MAKE_VOLATILE_STRIDE(rs)) {	  E T1x, T1I, T1T, T22, T20;	  {	       E T3, T1u, T1S, T2f, Td, T1w, T14, T1p, T1j, T1q, T1N, T2e, T1z, To, T2i;	       E T1H, TQ, T1n, Ty, T1B;	       {		    E T1h, TW, Tc, T1b, T1g, T1f, T1Q, TV, T7, TS, T1J, TU, Ts, T19, T18;		    E T15, Tx, T17, T1O, T1A, Tt, TD, Ti, TE, Tn, TA, T1F, TC, T1y, Tj;		    E T11, T12, TJ, TZ, TO, TY, TG, T1L, T1e, T1, T2;		    T1 = Ip[0];		    T2 = Im[0];		    {			 E Ta, Tb, T1c, T1d;			 Ta = Rp[WS(rs, 2)];			 Tb = Rm[WS(rs, 2)];			 T1c = Rm[0];			 T1h = T1 + T2;			 T3 = T1 - T2;			 T1d = Rp[0];			 TW = Ta + Tb;			 Tc = Ta - Tb;			 T1b = W[0];			 T1u = T1d + T1c;			 T1e = T1c - T1d;			 T1g = W[1];		    }		    {			 E T16, Tp, TT, T5, T6, TB, Tf;			 T5 = Ip[WS(rs, 2)];			 T6 = Im[WS(rs, 2)];			 T1f = T1b * T1e;			 T1Q = T1g * T1e;			 TV = W[7];			 T7 = T5 + T6;			 TT = T5 - T6;			 TS = W[6];			 {			      E Tv, Tw, Tq, Tr;			      Tq = Rm[WS(rs, 3)];			      Tr = Rp[WS(rs, 3)];			      T1J = TV * TT;			      TU = TS * TT;			      Tv = Ip[WS(rs, 3)];			      Ts = Tq - Tr;			      T19 = Tr + Tq;			      Tw = Im[WS(rs, 3)];			      T18 = W[11];			      T15 = W[10];			      Tx = Tv + Tw;			      T16 = Tv - Tw;			      Tp = W[12];			 }			 {			      E Tg, Th, Tl, Tm;			      Tg = Ip[WS(rs, 1)];			      T17 = T15 * T16;			      T1O = T18 * T16;			      T1A = Tp * Tx;			      Tt = Tp * Ts;			      Th = Im[WS(rs, 1)];			      Tl = Rp[WS(rs, 1)];			      Tm = Rm[WS(rs, 1)];			      TD = W[5];			      Ti = Tg - Th;			      TE = Tg + Th;			      Tn = Tl + Tm;			      TB = Tm - Tl;			      TA = W[4];			      Tf = W[2];			      T1F = TD * TB;			 }			 {			      E TH, TI, TM, TN;			      TH = Ip[WS(rs, 4)];			      TC = TA * TB;			      T1y = Tf * Tn;			      Tj = Tf * Ti;			      TI = Im[WS(rs, 4)];			      TM = Rp[WS(rs, 4)];			      TN = Rm[WS(rs, 4)];			      T11 = W[17];			      T12 = TH + TI;			      TJ = TH - TI;			      TZ = TN - TM;			      TO = TM + TN;			      TY = W[16];			      TG = W[14];			      T1L = T11 * TZ;			 }		    }		    {			 E T10, T1D, TK, T4, T9, T1P, T1R, T8, T1v;			 T10 = TY * TZ;			 T1D = TG * TO;			 TK = TG * TJ;			 T4 = W[9];			 T9 = W[8];			 T1P = FMA(T15, T19, T1O);			 T1R = FMA(T1b, T1h, T1Q);			 T8 = T4 * T7;			 T1v = T9 * T7;			 {			      E TX, T13, T1a, T1i;			      TX = FNMS(TV, TW, TU);			      T1S = T1P - T1R;			      T2f = T1P + T1R;			      Td = FMA(T9, Tc, T8);			      T1w = FNMS(T4, Tc, T1v);			      T13 = FNMS(T11, T12, T10);			      T1a = FNMS(T18, T19, T17);			      T1i = FNMS(T1g, T1h, T1f);			      {				   E T1K, T1M, TF, T1G, TL;				   T1K = FMA(TS, TW, T1J);				   T14 = TX + T13;				   T1p = T13 - TX;				   T1j = T1a + T1i;				   T1q = T1i - T1a;				   T1M = FMA(TY, T12, T1L);				   TF = FNMS(TD, TE, TC);				   T1G = FMA(TA, TE, T1F);				   TL = W[15];				   T1N = T1K - T1M;				   T2e = T1K + T1M;				   {					E Tk, T1E, TP, Tu;					Tk = W[3];					T1E = FMA(TL, TJ, T1D);					TP = FNMS(TL, TO, TK);					Tu = W[13];					T1z = FMA(Tk, Ti, T1y);					To = FNMS(Tk, Tn, Tj);					T2i = T1G + T1E;					T1H = T1E - T1G;					TQ = TF + TP;					T1n = TF - TP;					Ty = FNMS(Tu, Tx, Tt);					T1B = FMA(Tu, Ts, T1A);				   }			      }			 }		    }	       }	       {		    E T2p, T1t, T1m, T1C, T2o, T2m, T2k, T2w, T2y, T2n, T2d, T2l;		    {			 E T2g, Te, T2h, T2u, T1k, TR, T2v, Tz;			 T2p = T2e + T2f;			 T2g = T2e - T2f;			 Te = T3 - Td;			 T1t = Td + T3;			 Tz = To + Ty;			 T1m = Ty - To;			 T2h = T1z + T1B;			 T1C = T1z - T1B;			 T2u = T14 - T1j;			 T1k = T14 + T1j;			 TR = Tz + TQ;			 T2v = Tz - TQ;			 {			      E T2c, T2b, T2j, T1l;			      T2j = T2h - T2i;			      T2o = T2h + T2i;			      T2c = TR - T1k;			      T1l = TR + T1k;			      T2m = FMA(KP618033988, T2g, T2j);			      T2k = FNMS(KP618033988, T2j, T2g);			      T2w = FNMS(KP618033988, T2v, T2u);			      T2y = FMA(KP618033988, T2u, T2v);			      Ip[0] = KP500000000 * (Te + T1l);			      T2b = FNMS(KP250000000, T1l, Te);			      T2n = T1u + T1w;			      T1x = T1u - T1w;			      T2d = FNMS(KP559016994, T2c, T2b);			      T2l = FMA(KP559016994, T2c, T2b);			 }		    }		    {			 E T1o, T1Y, T28, T2a, T1Z, T1r, T2t, T2x;			 {			      E T26, T2s, T2q, T27, T2r;			      T1I = T1C + T1H;			      T26 = T1H - T1C;			      Im[WS(rs, 1)] = -(KP500000000 * (FNMS(KP951056516, T2k, T2d)));			      Ip[WS(rs, 2)] = KP500000000 * (FMA(KP951056516, T2k, T2d));			      Im[WS(rs, 3)] = -(KP500000000 * (FNMS(KP951056516, T2m, T2l)));			      Ip[WS(rs, 4)] = KP500000000 * (FMA(KP951056516, T2m, T2l));			      T2s = T2o - T2p;			      T2q = T2o + T2p;			      T27 = T1S - T1N;			      T1T = T1N + T1S;			      T1o = T1m + T1n;			      T1Y = T1n - T1m;			      Rp[0] = KP500000000 * (T2n + T2q);			      T2r = FNMS(KP250000000, T2q, T2n);			      T28 = FMA(KP618033988, T27, T26);			      T2a = FNMS(KP618033988, T26, T27);			      T1Z = T1q - T1p;			      T1r = T1p + T1q;			      T2t = FNMS(KP559016994, T2s, T2r);			      T2x = FMA(KP559016994, T2s, T2r);			 }			 {			      E T24, T23, T1s, T25, T29;			      T1s = T1o + T1r;			      T24 = T1r - T1o;			      Rm[WS(rs, 1)] = KP500000000 * (FMA(KP951056516, T2w, T2t));			      Rp[WS(rs, 2)] = KP500000000 * (FNMS(KP951056516, T2w, T2t));			      Rm[WS(rs, 3)] = KP500000000 * (FMA(KP951056516, T2y, T2x));			      Rp[WS(rs, 4)] = KP500000000 * (FNMS(KP951056516, T2y, T2x));			      Im[WS(rs, 4)] = KP500000000 * (T1s - T1t);			      T23 = FMA(KP250000000, T1s, T1t);			      T25 = FMA(KP559016994, T24, T23);			      T29 = FNMS(KP559016994, T24, T23);			      T22 = FNMS(KP618033988, T1Y, T1Z);			      T20 = FMA(KP618033988, T1Z, T1Y);			      Im[0] = -(KP500000000 * (FNMS(KP951056516, T28, T25)));			      Ip[WS(rs, 1)] = KP500000000 * (FMA(KP951056516, T28, T25));			      Im[WS(rs, 2)] = -(KP500000000 * (FNMS(KP951056516, T2a, T29)));			      Ip[WS(rs, 3)] = KP500000000 * (FMA(KP951056516, T2a, T29));			 }		    }	       }	  }	  {	       E T1U, T1W, T1V, T21, T1X;	       T1U = T1I + T1T;	       T1W = T1I - T1T;

⌨️ 快捷键说明

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