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

📄 hf2_25.c

📁 快速fft变换
💻 C
📖 第 1 页 / 共 4 页
字号:
					     }					     ci[WS(rs, 21)] = FNMS(KP998026728, T7K, T7H);					     T78 = FMA(KP906616052, T77, T70);					     T7a = FNMS(KP906616052, T77, T70);					}					{					     E T7G, T7E, T7k, T7i, T79, T7F, T7B, T7z, T6H, T7j, T7b;					     T7G = FMA(KP681693190, T7C, T7D);					     T7E = FNMS(KP560319534, T7D, T7C);					     ci[WS(rs, 22)] = FNMS(KP998026728, T7y, T7v);					     cr[WS(rs, 2)] = FMA(KP998026728, T78, T6T);					     T7z = FMA(KP249506682, T7y, T7v);					     T7k = FNMS(KP560319534, T7e, T7h);					     T7i = FMA(KP681693190, T7h, T7e);					     T79 = FNMS(KP249506682, T78, T6T);					     T7F = FMA(KP557913902, T7A, T7z);					     T7B = FNMS(KP557913902, T7A, T7z);					     T6S = FMA(KP614372930, T6M, T6P);					     T6Q = FNMS(KP621716863, T6P, T6M);					     cr[WS(rs, 22)] = FMS(KP860541664, T7G, T7F);					     ci[WS(rs, 17)] = FMA(KP860541664, T7G, T7F);					     ci[WS(rs, 12)] = FNMS(KP949179823, T7E, T7B);					     cr[WS(rs, 17)] = -(FMA(KP949179823, T7E, T7B));					     T7j = FMA(KP557913902, T7a, T79);					     T7b = FNMS(KP557913902, T7a, T79);					     T6H = FNMS(KP249506682, T6G, T6b);					     ci[WS(rs, 7)] = FMA(KP949179823, T7k, T7j);					     cr[WS(rs, 12)] = FNMS(KP949179823, T7k, T7j);					     cr[WS(rs, 7)] = FMA(KP860541664, T7i, T7b);					     ci[WS(rs, 2)] = FNMS(KP860541664, T7i, T7b);					     T7S = FMA(KP621716863, T7O, T7P);					     T7Q = FNMS(KP614372930, T7P, T7O);					     T7L = FMA(KP249506682, T7K, T7H);					     T6R = FMA(KP557913902, T6I, T6H);					     T6J = FNMS(KP557913902, T6I, T6H);					}				   }			      }			 }		    }	       }	  }	  ci[WS(rs, 6)] = FNMS(KP949179823, T6S, T6R);	  ci[WS(rs, 11)] = FMA(KP949179823, T6S, T6R);	  cr[WS(rs, 8)] = FMA(KP943557151, T6Q, T6J);	  ci[WS(rs, 1)] = FNMS(KP943557151, T6Q, T6J);	  T7N = FNMS(KP557913902, T7M, T7L);	  T7R = FMA(KP557913902, T7M, T7L);	  cr[WS(rs, 23)] = -(FMA(KP943557151, T7S, T7R));	  ci[WS(rs, 16)] = FNMS(KP943557151, T7S, T7R);	  cr[WS(rs, 18)] = FMS(KP949179823, T7Q, T7N);	  cr[WS(rs, 13)] = -(FMA(KP949179823, T7Q, T7N));     }}static const tw_instr twinstr[] = {     {TW_CEXP, 1, 1},     {TW_CEXP, 1, 3},     {TW_CEXP, 1, 9},     {TW_CEXP, 1, 24},     {TW_NEXT, 1, 0}};static const hc2hc_desc desc = { 25, "hf2_25", twinstr, &GENUS, {84, 78, 356, 0} };void X(codelet_hf2_25) (planner *p) {     X(khc2hc_register) (p, hf2_25, &desc);}#else				/* HAVE_FMA *//* Generated by: ../../../genfft/gen_hc2hc -compact -variables 4 -pipeline-latency 4 -twiddle-log3 -precompute-twiddles -n 25 -dit -name hf2_25 -include hf.h *//* * This function contains 440 FP additions, 340 FP multiplications, * (or, 280 additions, 180 multiplications, 160 fused multiply/add), * 149 stack variables, 20 constants, and 100 memory accesses */#include "hf.h"static void hf2_25(R *cr, R *ci, const R *W, stride rs, INT mb, INT me, INT ms){     DK(KP998026728, +0.998026728428271561952336806863450553336905220);     DK(KP062790519, +0.062790519529313376076178224565631133122484832);     DK(KP684547105, +0.684547105928688673732283357621209269889519233);     DK(KP728968627, +0.728968627421411523146730319055259111372571664);     DK(KP481753674, +0.481753674101715274987191502872129653528542010);     DK(KP876306680, +0.876306680043863587308115903922062583399064238);     DK(KP248689887, +0.248689887164854788242283746006447968417567406);     DK(KP968583161, +0.968583161128631119490168375464735813836012403);     DK(KP992114701, +0.992114701314477831049793042785778521453036709);     DK(KP125333233, +0.125333233564304245373118759816508793942918247);     DK(KP425779291, +0.425779291565072648862502445744251703979973042);     DK(KP904827052, +0.904827052466019527713668647932697593970413911);     DK(KP637423989, +0.637423989748689710176712811676016195434917298);     DK(KP770513242, +0.770513242775789230803009636396177847271667672);     DK(KP844327925, +0.844327925502015078548558063966681505381659241);     DK(KP535826794, +0.535826794978996618271308767867639978063575346);     DK(KP587785252, +0.587785252292473129168705954639072768597652438);     DK(KP951056516, +0.951056516295153572116439333379382143405698634);     DK(KP250000000, +0.250000000000000000000000000000000000000000000);     DK(KP559016994, +0.559016994374947424102293417182819058860154590);     INT m;     for (m = mb, W = W + ((mb - 1) * 8); m < me; m = m + 1, cr = cr + ms, ci = ci - ms, W = W + 8, MAKE_VOLATILE_STRIDE(rs)) {	  E T2, T5, T3, T6, T8, Td, T16, T14, Te, T9, T21, T23, Tx, TR, T1g;	  E TB, T1f, TV, T1Q, Tg, T1S, Tk, T18, T2s, T1c, T2q, Tn, To, Tp, Tr;	  E T28, T2x, TY, T2k, T2m, T2v, TG, TE, T10, T1h, T1E, T26, T1B, T1G, T1V;	  E T1X, T1z, T1j;	  {	       E Tw, TT, Tz, TQ, Tv, TU, TA, TP;	       {		    E T4, Tc, T7, Tb;		    T2 = W[0];		    T5 = W[1];		    T3 = W[2];		    T6 = W[3];		    T4 = T2 * T3;		    Tc = T5 * T3;		    T7 = T5 * T6;		    Tb = T2 * T6;		    T8 = T4 - T7;		    Td = Tb + Tc;		    T16 = Tb - Tc;		    T14 = T4 + T7;		    Te = W[5];		    Tw = T5 * Te;		    TT = T3 * Te;		    Tz = T2 * Te;		    TQ = T6 * Te;		    T9 = W[4];		    Tv = T2 * T9;		    TU = T6 * T9;		    TA = T5 * T9;		    TP = T3 * T9;	       }	       T21 = TP - TQ;	       T23 = TT + TU;	       {		    E T15, T17, Ta, Tf, T1a, T1b, Ti, Tj;		    Tx = Tv - Tw;		    TR = TP + TQ;		    T1g = Tz - TA;		    TB = Tz + TA;		    T1f = Tv + Tw;		    TV = TT - TU;		    T15 = T14 * T9;		    T17 = T16 * Te;		    T1Q = T15 + T17;		    Ta = T8 * T9;		    Tf = Td * Te;		    Tg = Ta + Tf;		    T1a = T14 * Te;		    T1b = T16 * T9;		    T1S = T1a - T1b;		    Ti = T8 * Te;		    Tj = Td * T9;		    Tk = Ti - Tj;		    T18 = T15 - T17;		    T2s = Ti + Tj;		    T1c = T1a + T1b;		    T2q = Ta - Tf;		    Tn = W[6];		    To = W[7];		    Tp = FMA(T8, Tn, Td * To);		    Tr = FNMS(Td, Tn, T8 * To);		    T28 = FNMS(T1S, Tn, T1Q * To);		    T2x = FNMS(TV, Tn, TR * To);		    TY = FMA(T3, Tn, T6 * To);		    T2k = FMA(T2, Tn, T5 * To);		    T2m = FNMS(T5, Tn, T2 * To);		    T2v = FMA(TR, Tn, TV * To);		    TG = FNMS(Te, Tn, T9 * To);		    TE = FMA(T9, Tn, Te * To);		    T10 = FNMS(T6, Tn, T3 * To);		    T1h = FMA(T1f, Tn, T1g * To);		    T1E = FMA(Tg, Tn, Tk * To);		    T26 = FMA(T1Q, Tn, T1S * To);		    T1B = FNMS(TB, Tn, Tx * To);		    T1G = FNMS(Tk, Tn, Tg * To);		    T1V = FMA(T14, Tn, T16 * To);		    T1X = FNMS(T16, Tn, T14 * To);		    T1z = FMA(Tx, Tn, TB * To);		    T1j = FNMS(T1g, Tn, T1f * To);	       }	  }	  {	       E T1, T6v, T2F, T6A, TK, T2G, T6y, T6z, T6u, T71, T2O, T52, T2C, T6k, T4c;	       E T5X, T4L, T5s, T4j, T5W, T4K, T5v, T1o, T6g, T30, T5M, T4A, T56, T3b, T5N;	       E T4B, T59, T1L, T6h, T3r, T5P, T4E, T5d, T3y, T5Q, T4D, T5g, T2d, T6j, T3P;	       E T5U, T4I, T5o, T3W, T5T, T4H, T5l;	       {		    E Tm, T2I, Tt, T2J, Tu, T6w, TD, T2L, TI, T2M, TJ, T6x;		    T1 = cr[0];		    T6v = ci[0];		    {			 E Th, Tl, Tq, Ts;			 Th = cr[WS(rs, 5)];			 Tl = ci[WS(rs, 5)];			 Tm = FMA(Tg, Th, Tk * Tl);			 T2I = FNMS(Tk, Th, Tg * Tl);			 Tq = cr[WS(rs, 20)];			 Ts = ci[WS(rs, 20)];			 Tt = FMA(Tp, Tq, Tr * Ts);			 T2J = FNMS(Tr, Tq, Tp * Ts);		    }		    Tu = Tm + Tt;		    T6w = T2I + T2J;		    {			 E Ty, TC, TF, TH;			 Ty = cr[WS(rs, 10)];			 TC = ci[WS(rs, 10)];			 TD = FMA(Tx, Ty, TB * TC);			 T2L = FNMS(TB, Ty, Tx * TC);			 TF = cr[WS(rs, 15)];			 TH = ci[WS(rs, 15)];			 TI = FMA(TE, TF, TG * TH);			 T2M = FNMS(TG, TF, TE * TH);		    }		    TJ = TD + TI;		    T6x = T2L + T2M;		    T2F = KP559016994 * (Tu - TJ);		    T6A = KP559016994 * (T6w - T6x);		    TK = Tu + TJ;		    T2G = FNMS(KP250000000, TK, T1);		    T6y = T6w + T6x;		    T6z = FNMS(KP250000000, T6y, T6v);		    {			 E T6s, T6t, T2K, T2N;			 T6s = TD - TI;			 T6t = Tm - Tt;			 T6u = FNMS(KP587785252, T6t, KP951056516 * T6s);			 T71 = FMA(KP951056516, T6t, KP587785252 * T6s);			 T2K = T2I - T2J;			 T2N = T2L - T2M;			 T2O = FMA(KP951056516, T2K, KP587785252 * T2N);			 T52 = FNMS(KP587785252, T2K, KP951056516 * T2N);		    }	       }	       {		    E T2g, T48, T3Y, T3Z, T4h, T4g, T43, T46, T49, T2p, T2A, T2B, T2e, T2f;		    T2e = cr[WS(rs, 3)];		    T2f = ci[WS(rs, 3)];		    T2g = FMA(T3, T2e, T6 * T2f);		    T48 = FNMS(T6, T2e, T3 * T2f);		    {			 E T2j, T41, T2z, T45, T2o, T42, T2u, T44;			 {			      E T2h, T2i, T2w, T2y;			      T2h = cr[WS(rs, 8)];			      T2i = ci[WS(rs, 8)];			      T2j = FMA(T1f, T2h, T1g * T2i);			      T41 = FNMS(T1g, T2h, T1f * T2i);			      T2w = cr[WS(rs, 18)];			      T2y = ci[WS(rs, 18)];			      T2z = FMA(T2v, T2w, T2x * T2y);			      T45 = FNMS(T2x, T2w, T2v * T2y);			 }			 {			      E T2l, T2n, T2r, T2t;			      T2l = cr[WS(rs, 23)];			      T2n = ci[WS(rs, 23)];			      T2o = FMA(T2k, T2l, T2m * T2n);			      T42 = FNMS(T2m, T2l, T2k * T2n);			      T2r = cr[WS(rs, 13)];			      T2t = ci[WS(rs, 13)];			      T2u = FMA(T2q, T2r, T2s * T2t);			      T44 = FNMS(T2s, T2r, T2q * T2t);			 }			 T3Y = T2j - T2o;			 T3Z = T2u - T2z;			 T4h = T44 - T45;			 T4g = T41 - T42;			 T43 = T41 + T42;			 T46 = T44 + T45;			 T49 = T43 + T46;			 T2p = T2j + T2o;			 T2A = T2u + T2z;			 T2B = T2p + T2A;		    }		    T2C = T2g + T2B;		    T6k = T48 + T49;		    {			 E T40, T5r, T4b, T5q, T47, T4a;			 T40 = FMA(KP951056516, T3Y, KP587785252 * T3Z);			 T5r = FNMS(KP587785252, T3Y, KP951056516 * T3Z);			 T47 = KP559016994 * (T43 - T46);			 T4a = FNMS(KP250000000, T49, T48);			 T4b = T47 + T4a;			 T5q = T4a - T47;			 T4c = T40 + T4b;			 T5X = T5r + T5q;			 T4L = T4b - T40;			 T5s = T5q - T5r;		    }		    {			 E T4i, T5u, T4f, T5t, T4d, T4e;			 T4i = FMA(KP951056516, T4g, KP587785252 * T4h);			 T5u = FNMS(KP587785252, T4g, KP951056516 * T4h);			 T4d = KP559016994 * (T2p - T2A);			 T4e = FNMS(KP250000000, T2B, T2g);			 T4f = T4d + T4e;			 T5t = T4e - T4d;			 T4j = T4f - T4i;			 T5W = T5t - T5u;			 T4K = T4f + T4i;			 T5v = T5t + T5u;		    }	       }	       {		    E TO, T37, T2V, T2Y, T32, T31, T34, T35, T38, T13, T1m, T1n, TM, TN;		    TM = cr[WS(rs, 1)];		    TN = ci[WS(rs, 1)];		    TO = FMA(T2, TM, T5 * TN);		    T37 = FNMS(T5, TM, T2 * TN);		    {			 E TX, T2T, T1l, T2X, T12, T2U, T1e, T2W;			 {			      E TS, TW, T1i, T1k;			      TS = cr[WS(rs, 6)];			      TW = ci[WS(rs, 6)];			      TX = FMA(TR, TS, TV * TW);			      T2T = FNMS(TV, TS, TR * TW);			      T1i = cr[WS(rs, 16)];			      T1k = ci[WS(rs, 16)];			      T1l = FMA(T1h, T1i, T1j * T1k);			      T2X = FNMS(T1j, T1i, T1h * T1k);			 }			 {			      E TZ, T11, T19, T1d;			      TZ = cr[WS(rs, 21)];			      T11 = ci[WS(rs, 21)];			      T12 = FMA(TY, TZ, T10 * T11);			      T2U = FNMS(T10, TZ, TY * T11);			      T19 = cr[WS(rs, 11)];			      T1d = ci[WS(rs, 11)];			      T1e = FMA(T18, T19, T1c * T1d);			      T2W = FNMS(T1c, T19, T18 * T1d);			 }			 T2V = T2T - T2U;			 T2Y = T2W - T2X;			 T32 = T1e - T1l;			 T31 = TX - T12;			 T34 = T2T + T2U;			 T35 = T2W + T2X;			 T38 = T34 + T35;			 T13 = TX + T12;			 T1m = T1e + T1l;			 T1n = T13 + T1m;		    }		    T1o = TO + T1n;		    T6g = T37 + T38;		    {			 E T2Z, T55, T2S, T54, T2Q, T2R;			 T2Z = FMA(KP951056516, T2V, KP587785252 * T2Y);			 T55 = FNMS(KP587785252, T2V, KP951056516 * T2Y);			 T2Q = KP559016994 * (T13 - T1m);			 T2R = FNMS(KP250000000, T1n, TO);			 T2S = T2Q + T2R;			 T54 = T2R - T2Q;			 T30 = T2S - T2Z;			 T5M = T54 - T55;			 T4A = T2S + T2Z;			 T56 = T54 + T55;		    }		    {			 E T33, T58, T3a, T57, T36, T39;			 T33 = FMA(KP951056516, T31, KP587785252 * T32);			 T58 = FNMS(KP587785252, T31, KP951056516 * T32);			 T36 = KP559016994 * (T34 - T35);			 T39 = FNMS(KP250000000, T38, T37);			 T3a = T36 + T39;			 T57 = T39 - T36;			 T3b = T33 + T3a;			 T5N = T58 + T57;			 T4B = T3a - T33;			 T59 = T57 - T58;		    }	       }	       {		    E T1r, T3n, T3d, T3e, T3w, T3v, T3i, T3l, T3o, T1y, T1J, T1K, T1p, T1q;		    T1p = cr[WS(rs, 4)];		    T1q = ci[WS(rs, 4)];		    T1r = FMA(T8, T1p, Td * T1q);		    T3n = FNMS(Td, T1p, T8 * T1q);		    {			 E T1u, T3g, T1I, T3k, T1x, T3h, T1D, T3j;			 {			      E T1s, T1t, T1F, T1H;			      T1s = cr[WS(rs, 9)];			      T1t = ci[WS(rs, 9)];			      T1u = FMA(T9, T1s, Te * T1t);			      T3g = FNMS(Te, T1s, T9 * T1t);			      T1F = cr[WS(rs, 19)];			      T1H = ci[WS(rs, 19)];			      T1I = FMA(T1E, T1F, T1G * T1H);			      T3k = FNMS(T1G, T1F, T1E * T1H);			 }			 {			      E T1v, T1w, T1A, T1C;			      T1v = cr[WS(rs, 24)];			      T1w = ci[WS(rs, 24)];			      T1x = FMA(Tn, T1v, To * T1w);			      T3h = FNMS(To, T1v, Tn * T1w);			      T1A = cr[WS(rs, 14)];			      T1C = ci[WS(rs, 14)];			      T1D = FMA(T1z, T1A, T1B * T1C);			      T3j = FNMS(T1B, T1A, T1z * T1C);

⌨️ 快捷键说明

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