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

📄 r2hcii_32.c

📁 最新的FFT程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (c) 2003, 2006 Matteo Frigo * Copyright (c) 2003, 2006 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 Fri Jan 27 20:32:12 EST 2006 */#include "codelet-rdft.h"#ifdef HAVE_FMA/* Generated by: ../../../genfft/gen_r2hc -fma -reorder-insns -schedule-for-pipeline -compact -variables 4 -pipeline-latency 4 -n 32 -name r2hcII_32 -dft-II -include r2hcII.h *//* * This function contains 174 FP additions, 128 FP multiplications, * (or, 46 additions, 0 multiplications, 128 fused multiply/add), * 96 stack variables, and 64 memory accesses *//* * Generator Id's :  * $Id: algsimp.ml,v 1.8 2006-01-05 03:04:27 stevenj Exp $ * $Id: fft.ml,v 1.4 2006-01-05 03:04:27 stevenj Exp $ * $Id: gen_r2hc.ml,v 1.17 2006-01-05 03:04:27 stevenj Exp $ */#include "r2hcII.h"static void r2hcII_32(const R *I, R *ro, R *io, stride is, stride ros, stride ios, INT v, INT ivs, INT ovs){     DK(KP773010453, +0.773010453362736960810906609758469800971041293);     DK(KP820678790, +0.820678790828660330972281985331011598767386482);     DK(KP956940335, +0.956940335732208864935797886980269969482849206);     DK(KP303346683, +0.303346683607342391675883946941299872384187453);     DK(KP995184726, +0.995184726672196886244836953109479921575474869);     DK(KP980785280, +0.980785280403230449126182236134239036973933731);     DK(KP098491403, +0.098491403357164253077197521291327432293052451);     DK(KP881921264, +0.881921264348355029712756863660388349508442621);     DK(KP831469612, +0.831469612302545237078788377617905756738560812);     DK(KP534511135, +0.534511135950791641089685961295362908582039528);     DK(KP923879532, +0.923879532511286756128183189396788286822416626);     DK(KP668178637, +0.668178637919298919997757686523080761552472251);     DK(KP198912367, +0.198912367379658006911597622644676228597850501);     DK(KP707106781, +0.707106781186547524400844362104849039284835938);     DK(KP414213562, +0.414213562373095048801688724209698078569671875);     INT i;     for (i = v; i > 0; i = i - 1, I = I + ivs, ro = ro + ovs, io = io + ovs, MAKE_VOLATILE_STRIDE(is), MAKE_VOLATILE_STRIDE(ros), MAKE_VOLATILE_STRIDE(ios)) {	  E T23, T1S, T21, T1L, T2z, T2x, T1Z, T22;	  {	       E T2n, T2B, T1z, T5, T1C, T2C, T2o, Tc, T27, T1J, T1l, Tm, T26, T1G, T1k;	       E Tv, T1s, T1c, T2e, T1Y, T1r, T15, T2d, T1V, TP, TF, T1M, TC, T1P, TN;	       E TO, TI;	       {		    E T1A, T8, Te, Tj, Tf, T1B, Tb, Tg;		    {			 E T1, T2l, T2, T3, T9, Ta;			 T1 = I[0];			 T2l = I[WS(is, 16)];			 T2 = I[WS(is, 8)];			 T3 = I[WS(is, 24)];			 {			      E T6, T7, T2m, T4;			      T6 = I[WS(is, 20)];			      T7 = I[WS(is, 4)];			      T9 = I[WS(is, 12)];			      T2m = T2 + T3;			      T4 = T2 - T3;			      T1A = FNMS(KP414213562, T6, T7);			      T8 = FMA(KP414213562, T7, T6);			      T2n = FMA(KP707106781, T2m, T2l);			      T2B = FNMS(KP707106781, T2m, T2l);			      T1z = FMA(KP707106781, T4, T1);			      T5 = FNMS(KP707106781, T4, T1);			      Ta = I[WS(is, 28)];			 }			 Te = I[WS(is, 14)];			 Tj = I[WS(is, 30)];			 Tf = I[WS(is, 6)];			 T1B = FMS(KP414213562, T9, Ta);			 Tb = FMA(KP414213562, Ta, T9);			 Tg = I[WS(is, 22)];		    }		    {			 E Tn, Ts, To, T1I, Tl, T1H, Ti, Tp, Tk, Th, T1T, T1U;			 Tn = I[WS(is, 18)];			 T1C = T1A + T1B;			 T2C = T1B - T1A;			 T2o = T8 + Tb;			 Tc = T8 - Tb;			 Tk = Tg - Tf;			 Th = Tf + Tg;			 Ts = I[WS(is, 2)];			 To = I[WS(is, 10)];			 T1I = FMA(KP707106781, Tk, Tj);			 Tl = FNMS(KP707106781, Tk, Tj);			 T1H = FMA(KP707106781, Th, Te);			 Ti = FNMS(KP707106781, Th, Te);			 Tp = I[WS(is, 26)];			 {			      E TT, T16, TY, T17, TW, TZ, T11, T12, Tt, Tq;			      TT = I[WS(is, 31)];			      T27 = FNMS(KP198912367, T1H, T1I);			      T1J = FMA(KP198912367, T1I, T1H);			      T1l = FMA(KP668178637, Ti, Tl);			      Tm = FNMS(KP668178637, Tl, Ti);			      Tt = To - Tp;			      Tq = To + Tp;			      T16 = I[WS(is, 15)];			      {				   E TU, T1F, Tu, T1E, Tr, TV;				   TU = I[WS(is, 7)];				   T1F = FMA(KP707106781, Tt, Ts);				   Tu = FNMS(KP707106781, Tt, Ts);				   T1E = FMA(KP707106781, Tq, Tn);				   Tr = FNMS(KP707106781, Tq, Tn);				   TV = I[WS(is, 23)];				   TY = I[WS(is, 19)];				   T26 = FNMS(KP198912367, T1E, T1F);				   T1G = FMA(KP198912367, T1F, T1E);				   T1k = FMA(KP668178637, Tr, Tu);				   Tv = FNMS(KP668178637, Tu, Tr);				   T17 = TU + TV;				   TW = TU - TV;				   TZ = I[WS(is, 3)];				   T11 = I[WS(is, 11)];				   T12 = I[WS(is, 27)];			      }			      {				   E TX, T1a, T10, T19, T13, T1W, T18, T1b, T14, T1X;				   T1T = FMS(KP707106781, TW, TT);				   TX = FMA(KP707106781, TW, TT);				   T1a = FNMS(KP414213562, TY, TZ);				   T10 = FMA(KP414213562, TZ, TY);				   T19 = FMS(KP414213562, T11, T12);				   T13 = FMA(KP414213562, T12, T11);				   T1W = FMA(KP707106781, T17, T16);				   T18 = FNMS(KP707106781, T17, T16);				   T1b = T19 - T1a;				   T1U = T1a + T19;				   T14 = T10 - T13;				   T1X = T10 + T13;				   T1s = FMA(KP923879532, T1b, T18);				   T1c = FNMS(KP923879532, T1b, T18);				   T2e = FMA(KP923879532, T1X, T1W);				   T1Y = FNMS(KP923879532, T1X, T1W);				   T1r = FNMS(KP923879532, T14, TX);				   T15 = FMA(KP923879532, T14, TX);			      }			 }			 {			      E Ty, TL, TG, TM, TB, TH;			      Ty = I[WS(is, 1)];			      TL = I[WS(is, 17)];			      {				   E Tz, TA, TD, TE;				   Tz = I[WS(is, 9)];				   T2d = FMA(KP923879532, T1U, T1T);				   T1V = FNMS(KP923879532, T1U, T1T);				   TA = I[WS(is, 25)];				   TD = I[WS(is, 21)];				   TE = I[WS(is, 5)];				   TG = I[WS(is, 13)];				   TM = Tz + TA;				   TB = Tz - TA;				   TP = FNMS(KP414213562, TD, TE);				   TF = FMA(KP414213562, TE, TD);				   TH = I[WS(is, 29)];			      }			      T1M = FMA(KP707106781, TB, Ty);			      TC = FNMS(KP707106781, TB, Ty);			      T1P = FMA(KP707106781, TM, TL);			      TN = FNMS(KP707106781, TM, TL);			      TO = FMS(KP414213562, TG, TH);			      TI = FMA(KP414213562, TH, TG);			 }		    }	       }	       {		    E T1j, T1O, T1p, T1R, T1o, T2E, T2D, T1m, T1D, T2w, T2v, T1K, T2i, T2c, T2h;		    E T29, T2t, T2r, T2f, T2j;		    {			 E T2a, T2b, T1g, TS, T1f, Tx, T2N, T2L, T1d, T1h;			 {			      E Td, TR, TK, Tw, T2J, T2K;			      T1j = FMA(KP923879532, Tc, T5);			      Td = FNMS(KP923879532, Tc, T5);			      {				   E T1N, TQ, T1Q, TJ;				   T1N = TP + TO;				   TQ = TO - TP;				   T1Q = TF + TI;				   TJ = TF - TI;				   T2a = FMA(KP923879532, T1N, T1M);				   T1O = FNMS(KP923879532, T1N, T1M);				   T1p = FMA(KP923879532, TQ, TN);				   TR = FNMS(KP923879532, TQ, TN);				   T2b = FMA(KP923879532, T1Q, T1P);				   T1R = FNMS(KP923879532, T1Q, T1P);				   T1o = FMA(KP923879532, TJ, TC);				   TK = FNMS(KP923879532, TJ, TC);				   Tw = Tm - Tv;				   T2E = Tv + Tm;			      }			      T2D = FMA(KP923879532, T2C, T2B);			      T2J = FNMS(KP923879532, T2C, T2B);			      T2K = T1k + T1l;			      T1m = T1k - T1l;			      T1g = FMA(KP534511135, TK, TR);			      TS = FNMS(KP534511135, TR, TK);			      T1f = FNMS(KP831469612, Tw, Td);			      Tx = FMA(KP831469612, Tw, Td);			      T2N = FNMS(KP831469612, T2K, T2J);			      T2L = FMA(KP831469612, T2K, T2J);			      T1d = FNMS(KP534511135, T1c, T15);			      T1h = FMA(KP534511135, T15, T1c);			 }			 {			      E T25, T28, T2p, T2q;			      T1D = FNMS(KP923879532, T1C, T1z);			      T25 = FMA(KP923879532, T1C, T1z);			      {				   E T2O, T1e, T2M, T1i;				   T2O = TS + T1d;				   T1e = TS - T1d;				   T2M = T1g + T1h;				   T1i = T1g - T1h;				   io[WS(ios, 5)] = FNMS(KP881921264, T2O, T2N);				   io[WS(ios, 10)] = -(FMA(KP881921264, T2O, T2N));				   ro[WS(ros, 2)] = FMA(KP881921264, T1e, Tx);				   ro[WS(ros, 13)] = FNMS(KP881921264, T1e, Tx);				   io[WS(ios, 2)] = -(FMA(KP881921264, T2M, T2L));				   io[WS(ios, 13)] = FNMS(KP881921264, T2M, T2L);				   ro[WS(ros, 5)] = FMA(KP881921264, T1i, T1f);				   ro[WS(ros, 10)] = FNMS(KP881921264, T1i, T1f);				   T28 = T26 - T27;				   T2w = T26 + T27;			      }			      T2v = FNMS(KP923879532, T2o, T2n);			      T2p = FMA(KP923879532, T2o, T2n);			      T2q = T1G + T1J;			      T1K = T1G - T1J;			      T2i = FMA(KP098491403, T2a, T2b);			      T2c = FNMS(KP098491403, T2b, T2a);			      T2h = FNMS(KP980785280, T28, T25);			      T29 = FMA(KP980785280, T28, T25);			      T2t = FNMS(KP980785280, T2q, T2p);			      T2r = FMA(KP980785280, T2q, T2p);			      T2f = FMA(KP098491403, T2e, T2d);			      T2j = FNMS(KP098491403, T2d, T2e);			 }		    }		    {			 E T1x, T1q, T1v, T1n, T2H, T2F, T1t, T1w;			 {			      E T2u, T2g, T2s, T2k;			      T2u = T2f - T2c;			      T2g = T2c + T2f;			      T2s = T2i + T2j;			      T2k = T2i - T2j;			      io[WS(ios, 7)] = FMA(KP995184726, T2u, T2t);			      io[WS(ios, 8)] = FMS(KP995184726, T2u, T2t);			      ro[0] = FMA(KP995184726, T2g, T29);			      ro[WS(ros, 15)] = FNMS(KP995184726, T2g, T29);			      io[0] = -(FMA(KP995184726, T2s, T2r));			      io[WS(ios, 15)] = FNMS(KP995184726, T2s, T2r);			      ro[WS(ros, 7)] = FMA(KP995184726, T2k, T2h);			      ro[WS(ros, 8)] = FNMS(KP995184726, T2k, T2h);			 }			 T1x = FNMS(KP303346683, T1o, T1p);			 T1q = FMA(KP303346683, T1p, T1o);			 T1v = FNMS(KP831469612, T1m, T1j);			 T1n = FMA(KP831469612, T1m, T1j);			 T2H = FNMS(KP831469612, T2E, T2D);			 T2F = FMA(KP831469612, T2E, T2D);			 T1t = FMA(KP303346683, T1s, T1r);			 T1w = FNMS(KP303346683, T1r, T1s);			 {			      E T2I, T1u, T2G, T1y;			      T2I = T1q + T1t;			      T1u = T1q - T1t;			      T2G = T1x + T1w;			      T1y = T1w - T1x;			      io[WS(ios, 6)] = -(FMA(KP956940335, T2I, T2H));			      io[WS(ios, 9)] = FNMS(KP956940335, T2I, T2H);			      ro[WS(ros, 1)] = FMA(KP956940335, T1u, T1n);			      ro[WS(ros, 14)] = FNMS(KP956940335, T1u, T1n);			      io[WS(ios, 1)] = FMA(KP956940335, T2G, T2F);			      io[WS(ios, 14)] = FMS(KP956940335, T2G, T2F);			      ro[WS(ros, 6)] = FMA(KP956940335, T1y, T1v);			      ro[WS(ros, 9)] = FNMS(KP956940335, T1y, T1v);			 }			 T23 = FNMS(KP820678790, T1O, T1R);			 T1S = FMA(KP820678790, T1R, T1O);			 T21 = FNMS(KP980785280, T1K, T1D);			 T1L = FMA(KP980785280, T1K, T1D);			 T2z = FMA(KP980785280, T2w, T2v);			 T2x = FNMS(KP980785280, T2w, T2v);			 T1Z = FNMS(KP820678790, T1Y, T1V);			 T22 = FMA(KP820678790, T1V, T1Y);		    }	       }	  }	  {	       E T20, T2A, T24, T2y;	       T20 = T1S + T1Z;	       T2A = T1Z - T1S;	       T24 = T22 - T23;	       T2y = T23 + T22;	       io[WS(ios, 4)] = FMS(KP773010453, T2A, T2z);	       io[WS(ios, 11)] = FMA(KP773010453, T2A, T2z);	       ro[WS(ros, 3)] = FMA(KP773010453, T20, T1L);	       ro[WS(ros, 12)] = FNMS(KP773010453, T20, T1L);	       io[WS(ios, 3)] = FMA(KP773010453, T2y, T2x);	       io[WS(ios, 12)] = FMS(KP773010453, T2y, T2x);	       ro[WS(ros, 4)] = FMA(KP773010453, T24, T21);	       ro[WS(ros, 11)] = FNMS(KP773010453, T24, T21);	  }     }}static const kr2hc_desc desc = { 32, "r2hcII_32", {46, 0, 128, 0}, &GENUS, 0, 0, 0, 0, 0 };void X(codelet_r2hcII_32) (planner *p) {     X(kr2hcII_register) (p, r2hcII_32, &desc);}

⌨️ 快捷键说明

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