📄 hb_64.c
字号:
/* * 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 22:11:42 EDT 2003 */#include "codelet-rdft.h"/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_hc2hc -compact -variables 4 -sign 1 -n 64 -dif -name hb_64 -include hb.h *//* * This function contains 1038 FP additions, 500 FP multiplications, * (or, 808 additions, 270 multiplications, 230 fused multiply/add), * 196 stack variables, and 256 memory accesses *//* * Generator Id's : * $Id: algsimp.ml,v 1.7 2003/03/15 20:29:42 stevenj Exp $ * $Id: fft.ml,v 1.2 2003/03/15 20:29:42 stevenj Exp $ * $Id: gen_hc2hc.ml,v 1.9 2003/04/17 19:25:50 athena Exp $ */#include "hb.h"static const R *hb_64(R *rio, R *iio, const R *W, stride ios, int m, int dist){ DK(KP634393284, +0.634393284163645498215171613225493370675687095); DK(KP773010453, +0.773010453362736960810906609758469800971041293); DK(KP098017140, +0.098017140329560601994195563888641845861136673); DK(KP995184726, +0.995184726672196886244836953109479921575474869); DK(KP471396736, +0.471396736825997648556387625905254377657460319); DK(KP881921264, +0.881921264348355029712756863660388349508442621); DK(KP290284677, +0.290284677254462367636192375817395274691476278); DK(KP956940335, +0.956940335732208864935797886980269969482849206); 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 - 2; i > 0; i = i - 2, rio = rio + dist, iio = iio - dist, W = W + 126) { E Tf, T7i, Tfa, ThM, Tgp, ThH, T2c, T5O, T4T, T6n, Tcp, Ted, TcA, TdE, T87; E T9o, TK, T93, T2P, T4F, Tfo, Thz, T5T, T6j, Tbx, TdI, Tfl, ThA, T7r, T81; E TbE, TdH, TZ, T94, T38, T4G, Tfv, ThC, T5W, T6k, TbQ, TdK, Tfs, ThD, T7w; E T82, TbX, TdL, Tu, T84, Tfh, ThG, Tgm, ThN, T2v, T6m, T4K, T5P, Tce, TdF; E TcD, Tec, T7l, T9p, T1L, T20, T9c, T9d, T9e, T9f, T40, T66, Tg1, Thu, Tg8; E Thv, Tg5, Thr, T4n, T67, T4j, T69, T4w, T6a, TaT, TdW, Tb8, TdZ, TfU, Ths; E T7O, T8y, T7T, T8z, Tbc, TdX, Tbj, Te0, T1g, T1v, T97, T98, T99, T9a, T3j; E T5Z, TfI, Thk, TfP, Thl, TfM, Tho, T3G, T60, T3C, T62, T3P, T63, Tak, TdQ; E Tav, TdT, TfB, Thn, T7D, T8v, T7I, T8w, TaD, TdP, TaG, TdS; { E T3, Tcm, T4O, Tcv, T6, Tcu, T4R, Tcn, Td, Tcy, T2a, Tch, Ta, Tcx, T27; E Tck; { E T1, T2, T4P, T4Q; T1 = rio[0]; T2 = iio[-WS(ios, 32)]; T3 = T1 + T2; Tcm = T1 - T2; { E T4M, T4N, T4, T5; T4M = iio[0]; T4N = rio[WS(ios, 32)]; T4O = T4M - T4N; Tcv = T4M + T4N; T4 = rio[WS(ios, 16)]; T5 = iio[-WS(ios, 48)]; T6 = T4 + T5; Tcu = T4 - T5; } T4P = iio[-WS(ios, 16)]; T4Q = rio[WS(ios, 48)]; T4R = T4P - T4Q; Tcn = T4P + T4Q; { E Tb, Tc, Tcf, T28, T29, Tcg; Tb = iio[-WS(ios, 56)]; Tc = rio[WS(ios, 24)]; Tcf = Tb - Tc; T28 = iio[-WS(ios, 24)]; T29 = rio[WS(ios, 56)]; Tcg = T29 + T28; Td = Tb + Tc; Tcy = Tcf + Tcg; T2a = T28 - T29; Tch = Tcf - Tcg; } { E T8, T9, Tcj, T25, T26, Tci; T8 = rio[WS(ios, 8)]; T9 = iio[-WS(ios, 40)]; Tcj = T8 - T9; T25 = iio[-WS(ios, 8)]; T26 = rio[WS(ios, 40)]; Tci = T25 + T26; Ta = T8 + T9; Tcx = Tcj + Tci; T27 = T25 - T26; Tck = Tci - Tcj; } } { E T7, Te, Tf8, Tf9; T7 = T3 + T6; Te = Ta + Td; Tf = T7 + Te; T7i = T7 - Te; Tf8 = Tcv - Tcu; Tf9 = KP707106781 * (Tck + Tch); Tfa = Tf8 + Tf9; ThM = Tf8 - Tf9; } { E Tgn, Tgo, T24, T2b; Tgn = KP707106781 * (Tcx + Tcy); Tgo = Tcm + Tcn; Tgp = Tgn + Tgo; ThH = Tgo - Tgn; T24 = T3 - T6; T2b = T27 - T2a; T2c = T24 + T2b; T5O = T24 - T2b; } { E T4L, T4S, Tcl, Tco; T4L = Td - Ta; T4S = T4O - T4R; T4T = T4L + T4S; T6n = T4S - T4L; Tcl = KP707106781 * (Tch - Tck); Tco = Tcm - Tcn; Tcp = Tcl + Tco; Ted = Tco - Tcl; } { E Tcw, Tcz, T85, T86; Tcw = Tcu + Tcv; Tcz = KP707106781 * (Tcx - Tcy); TcA = Tcw + Tcz; TdE = Tcw - Tcz; T85 = T4O + T4R; T86 = T27 + T2a; T87 = T85 - T86; T9o = T86 + T85; } } { E TC, Tby, T2x, Tbu, T2N, Tbz, T7o, Tbv, TJ, TbB, TbC, T2E, T2G, Tbp, Tbs; E T7p, Tfj, Tfk; { E Tw, Tx, Ty, Tz, TA, TB; Tw = rio[WS(ios, 2)]; Tx = iio[-WS(ios, 34)]; Ty = Tw + Tx; Tz = rio[WS(ios, 18)]; TA = iio[-WS(ios, 50)]; TB = Tz + TA; TC = Ty + TB; Tby = Tz - TA; T2x = Ty - TB; Tbu = Tw - Tx; } { E T2H, T2I, T2J, T2K, T2L, T2M; T2H = iio[-WS(ios, 2)]; T2I = rio[WS(ios, 34)]; T2J = T2H - T2I; T2K = iio[-WS(ios, 18)]; T2L = rio[WS(ios, 50)]; T2M = T2K - T2L; T2N = T2J - T2M; Tbz = T2H + T2I; T7o = T2J + T2M; Tbv = T2K + T2L; } { E TF, Tbr, T2A, Tbq, TI, Tbn, T2D, Tbo; { E TD, TE, T2y, T2z; TD = rio[WS(ios, 10)]; TE = iio[-WS(ios, 42)]; TF = TD + TE; Tbr = TD - TE; T2y = iio[-WS(ios, 10)]; T2z = rio[WS(ios, 42)]; T2A = T2y - T2z; Tbq = T2y + T2z; } { E TG, TH, T2B, T2C; TG = iio[-WS(ios, 58)]; TH = rio[WS(ios, 26)]; TI = TG + TH; Tbn = TG - TH; T2B = iio[-WS(ios, 26)]; T2C = rio[WS(ios, 58)]; T2D = T2B - T2C; Tbo = T2C + T2B; } TJ = TF + TI; TbB = Tbr + Tbq; TbC = Tbn + Tbo; T2E = T2A - T2D; T2G = TI - TF; Tbp = Tbn - Tbo; Tbs = Tbq - Tbr; T7p = T2A + T2D; } TK = TC + TJ; T93 = T7p + T7o; { E T2F, T2O, Tfm, Tfn; T2F = T2x + T2E; T2O = T2G + T2N; T2P = FMA(KP923879532, T2F, KP382683432 * T2O); T4F = FNMS(KP382683432, T2F, KP923879532 * T2O); Tfm = KP707106781 * (TbB + TbC); Tfn = Tbu + Tbv; Tfo = Tfm + Tfn; Thz = Tfn - Tfm; } { E T5R, T5S, Tbt, Tbw; T5R = T2x - T2E; T5S = T2N - T2G; T5T = FNMS(KP382683432, T5S, KP923879532 * T5R); T6j = FMA(KP382683432, T5R, KP923879532 * T5S); Tbt = KP707106781 * (Tbp - Tbs); Tbw = Tbu - Tbv; Tbx = Tbt + Tbw; TdI = Tbw - Tbt; } Tfj = Tbz - Tby; Tfk = KP707106781 * (Tbs + Tbp); Tfl = Tfj + Tfk; ThA = Tfj - Tfk; { E T7n, T7q, TbA, TbD; T7n = TC - TJ; T7q = T7o - T7p; T7r = T7n + T7q; T81 = T7q - T7n; TbA = Tby + Tbz; TbD = KP707106781 * (TbB - TbC); TbE = TbA + TbD; TdH = TbA - TbD; } } { E TR, TbU, T2Q, TbN, T36, TbV, T7t, TbO, TY, TbR, TbS, T2X, T2Z, TbI, TbL; E T7u, Tfq, Tfr; { E TL, TM, TN, TO, TP, TQ; TL = iio[-WS(ios, 62)]; TM = rio[WS(ios, 30)]; TN = TL + TM; TO = rio[WS(ios, 14)]; TP = iio[-WS(ios, 46)]; TQ = TO + TP; TR = TN + TQ; TbU = TL - TM; T2Q = TN - TQ; TbN = TO - TP; } { E T30, T31, T32, T33, T34, T35; T30 = iio[-WS(ios, 30)]; T31 = rio[WS(ios, 62)]; T32 = T30 - T31; T33 = iio[-WS(ios, 14)]; T34 = rio[WS(ios, 46)]; T35 = T33 - T34; T36 = T32 - T35; TbV = T33 + T34; T7t = T32 + T35; TbO = T31 + T30; } { E TU, TbG, T2T, TbH, TX, TbJ, T2W, TbK; { E TS, TT, T2R, T2S; TS = rio[WS(ios, 6)]; TT = iio[-WS(ios, 38)]; TU = TS + TT; TbG = TS - TT; T2R = iio[-WS(ios, 6)]; T2S = rio[WS(ios, 38)]; T2T = T2R - T2S; TbH = T2R + T2S; } { E TV, TW, T2U, T2V; TV = iio[-WS(ios, 54)]; TW = rio[WS(ios, 22)]; TX = TV + TW; TbJ = TV - TW; T2U = iio[-WS(ios, 22)]; T2V = rio[WS(ios, 54)]; T2W = T2U - T2V; TbK = T2V + T2U; } TY = TU + TX; TbR = TbJ - TbK; TbS = TbH - TbG; T2X = T2T - T2W; T2Z = TX - TU; TbI = TbG + TbH; TbL = TbJ + TbK; T7u = T2T + T2W; } TZ = TR + TY; T94 = T7u + T7t; { E T2Y, T37, Tft, Tfu; T2Y = T2Q + T2X; T37 = T2Z + T36; T38 = FNMS(KP382683432, T37, KP923879532 * T2Y); T4G = FMA(KP382683432, T2Y, KP923879532 * T37); Tft = KP707106781 * (TbI + TbL); Tfu = TbU + TbV; Tfv = Tft + Tfu; ThC = Tfu - Tft; } { E T5U, T5V, TbM, TbP; T5U = T2Q - T2X; T5V = T36 - T2Z; T5W = FMA(KP923879532, T5U, KP382683432 * T5V); T6k = FNMS(KP382683432, T5U, KP923879532 * T5V); TbM = KP707106781 * (TbI - TbL); TbP = TbN - TbO; TbQ = TbM + TbP; TdK = TbP - TbM; } Tfq = KP707106781 * (TbS + TbR); Tfr = TbN + TbO; Tfs = Tfq - Tfr; ThD = Tfq + Tfr; { E T7s, T7v, TbT, TbW; T7s = TR - TY; T7v = T7t - T7u; T7w = T7s - T7v; T82 = T7s + T7v; TbT = KP707106781 * (TbR - TbS); TbW = TbU - TbV; TbX = TbT + TbW; TdL = TbW - TbT; } } { E Ti, T2g, Tl, T2j, T2d, T2k, Tfc, Tfb, Tc5, Tc2, Tp, T2p, Ts, T2s, T2m; E T2t, Tff, Tfe, Tcc, Tc9; { E Tc0, Tc4, Tc3, Tc1; { E Tg, Th, T2e, T2f; Tg = rio[WS(ios, 4)]; Th = iio[-WS(ios, 36)]; Ti = Tg + Th; Tc0 = Tg - Th; T2e = iio[-WS(ios, 4)]; T2f = rio[WS(ios, 36)]; T2g = T2e - T2f; Tc4 = T2e + T2f; } { E Tj, Tk, T2h, T2i; Tj = rio[WS(ios, 20)]; Tk = iio[-WS(ios, 52)]; Tl = Tj + Tk; Tc3 = Tj - Tk; T2h = iio[-WS(ios, 20)]; T2i = rio[WS(ios, 52)]; T2j = T2h - T2i; Tc1 = T2h + T2i; } T2d = Ti - Tl; T2k = T2g - T2j; Tfc = Tc0 + Tc1; Tfb = Tc4 - Tc3; Tc5 = Tc3 + Tc4; Tc2 = Tc0 - Tc1; } { E Tc7, Tcb, Tca, Tc8; { E Tn, To, T2n, T2o; Tn = iio[-WS(ios, 60)]; To = rio[WS(ios, 28)]; Tp = Tn + To; Tc7 = Tn - To; T2n = iio[-WS(ios, 28)]; T2o = rio[WS(ios, 60)]; T2p = T2n - T2o; Tcb = T2o + T2n; } { E Tq, Tr, T2q, T2r; Tq = rio[WS(ios, 12)]; Tr = iio[-WS(ios, 44)]; Ts = Tq + Tr; Tca = Tq - Tr; T2q = iio[-WS(ios, 12)]; T2r = rio[WS(ios, 44)]; T2s = T2q - T2r; Tc8 = T2q + T2r; } T2m = Tp - Ts; T2t = T2p - T2s; Tff = Tca + Tcb; Tfe = Tc7 + Tc8; Tcc = Tca - Tcb; Tc9 = Tc7 - Tc8; } { E Tm, Tt, Tfd, Tfg; Tm = Ti + Tl; Tt = Tp + Ts; Tu = Tm + Tt; T84 = Tt - Tm; Tfd = FNMS(KP382683432, Tfc, KP923879532 * Tfb); Tfg = FNMS(KP923879532, Tff, KP382683432 * Tfe); Tfh = Tfd + Tfg; ThG = Tfg - Tfd; } { E Tgk, Tgl, T2l, T2u; Tgk = FMA(KP382683432, Tfb, KP923879532 * Tfc); Tgl = FMA(KP923879532, Tfe, KP382683432 * Tff); Tgm = Tgk + Tgl; ThN = Tgk - Tgl; T2l = T2d + T2k; T2u = T2m - T2t; T2v = KP707106781 * (T2l + T2u); T6m = KP707106781 * (T2l - T2u); } { E T4I, T4J, Tc6, Tcd; T4I = T2k - T2d; T4J = T2m + T2t; T4K = KP707106781 * (T4I + T4J); T5P = KP707106781 * (T4J - T4I); Tc6 = FNMS(KP382683432, Tc5, KP923879532 * Tc2); Tcd = FMA(KP923879532, Tc9, KP382683432 * Tcc); Tce = Tc6 + Tcd; TdF = Tcd - Tc6; } { E TcB, TcC, T7j, T7k; TcB = FMA(KP923879532, Tc5, KP382683432 * Tc2); TcC = FNMS(KP382683432, Tc9, KP923879532 * Tcc); TcD = TcB + TcC; Tec = TcB - TcC; T7j = T2g + T2j; T7k = T2s + T2p; T7l = T7j - T7k; T9p = T7j + T7k; } } { E T1z, T1C, T1D, Tbg, TaQ, T4r, T4u, T7Q, Tbh, TaR, T1G, T3V, T1J, T3Y, T1K; E T7R, Tbe, Tbd, TaO, TaL, T1S, TfV, TfW, T41, T48, TaW, TaZ, T7L, T1Z, TfY; E TfZ, T4a, T4h, Tb3, Tb6, T7M; { E T1x, T1y, T1A, T1B; T1x = iio[-WS(ios, 63)]; T1y = rio[WS(ios, 31)]; T1z = T1x + T1y; T1A = rio[WS(ios, 15)]; T1B = iio[-WS(ios, 47)]; T1C = T1A + T1B; T1D = T1z + T1C; Tbg = T1x - T1y; TaQ = T1A - T1B;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -