📄 mr2hc_128.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 21:56:49 EDT 2003 */#include "codelet-rdft.h"/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_r2hc_noinline -compact -variables 4 -n 128 -name mr2hc_128 -include r2hc.h *//* * This function contains 956 FP additions, 330 FP multiplications, * (or, 812 additions, 186 multiplications, 144 fused multiply/add), * 185 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_r2hc_noinline.ml,v 1.1 2003/04/17 19:25:50 athena Exp $ */#include "r2hc.h"static void mr2hc_128_0(const R *I, R *ro, R *io, stride is, stride ros, stride ios){ DK(KP803207531, +0.803207531480644909806676512963141923879569427); DK(KP595699304, +0.595699304492433343467036528829969889511926338); DK(KP146730474, +0.146730474455361751658850129646717819706215317); DK(KP989176509, +0.989176509964780973451673738016243063983689533); DK(KP740951125, +0.740951125354959091175616897495162729728955309); DK(KP671558954, +0.671558954847018400625376850427421803228750632); DK(KP049067674, +0.049067674327418014254954976942682658314745363); DK(KP998795456, +0.998795456205172392714771604759100694443203615); DK(KP242980179, +0.242980179903263889948274162077471118320990783); DK(KP970031253, +0.970031253194543992603984207286100251456865962); DK(KP514102744, +0.514102744193221726593693838968815772608049120); DK(KP857728610, +0.857728610000272069902269984284770137042490799); DK(KP336889853, +0.336889853392220050689253212619147570477766780); DK(KP941544065, +0.941544065183020778412509402599502357185589796); DK(KP427555093, +0.427555093430282094320966856888798534304578629); DK(KP903989293, +0.903989293123443331586200297230537048710132025); DK(KP098017140, +0.098017140329560601994195563888641845861136673); DK(KP995184726, +0.995184726672196886244836953109479921575474869); DK(KP634393284, +0.634393284163645498215171613225493370675687095); DK(KP773010453, +0.773010453362736960810906609758469800971041293); DK(KP881921264, +0.881921264348355029712756863660388349508442621); DK(KP471396736, +0.471396736825997648556387625905254377657460319); DK(KP956940335, +0.956940335732208864935797886980269969482849206); DK(KP290284677, +0.290284677254462367636192375817395274691476278); DK(KP555570233, +0.555570233019602224742830813948532874374937191); DK(KP831469612, +0.831469612302545237078788377617905756738560812); DK(KP195090322, +0.195090322016128267848284868477022240927691618); DK(KP980785280, +0.980785280403230449126182236134239036973933731); DK(KP382683432, +0.382683432365089771728459984030398866761344562); DK(KP923879532, +0.923879532511286756128183189396788286822416626); DK(KP707106781, +0.707106781186547524400844362104849039284835938); { E TcD, TdU, T27, T7r, T5S, T8y, Tf, Ta5, Tu, Tbq, TcG, TdV, T2e, T8z, T5V; E T7s, TK, Ta6, TcK, TdX, T2o, T5X, T7w, T8B, TZ, Ta7, TcN, TdY, T2x, T5Y; E T7z, T8C, T1g, Taa, TcU, TeA, TcX, Tez, T1v, Tab, T2M, T6z, T7E, T9e, T7H; E T9d, T2T, T6A, T4X, T6L, Tdz, TeL, TdK, TeP, T5G, T6P, T8d, T9p, TaV, Tc3; E Tbi, Tc4, T8o, T9t, T3I, T6H, Tde, TeH, Tdp, TeF, T4r, T6F, T7U, T9l, Tao; E TbW, TaL, TbX, T85, T9j, T1L, Tad, Td3, Tew, Td6, Tex, T20, Tae, T37, T6x; E T7L, T9a, T7O, T9b, T3e, T6w, TbZ, Tc0, T3Z, T4s, Tds, TeI, T4g, T4t, T80; E T87, Tdl, TeE, T7X, T86, TaD, TaM, Tc6, Tc7, T5e, T5H, TdN, TeM, T5v, T5I; E T8j, T8q, TdG, TeO, T8g, T8p, Tba, Tbj; { E T3, T23, Td, T25, T6, T5R, Ta, T24; { E T1, T2, Tb, Tc; T1 = I[0]; T2 = I[WS(is, 64)]; T3 = T1 + T2; T23 = T1 - T2; Tb = I[WS(is, 112)]; Tc = I[WS(is, 48)]; Td = Tb + Tc; T25 = Tb - Tc; } { E T4, T5, T8, T9; T4 = I[WS(is, 32)]; T5 = I[WS(is, 96)]; T6 = T4 + T5; T5R = T4 - T5; T8 = I[WS(is, 16)]; T9 = I[WS(is, 80)]; Ta = T8 + T9; T24 = T8 - T9; } TcD = T3 - T6; TdU = Td - Ta; { E T26, T5Q, T7, Te; T26 = KP707106781 * (T24 + T25); T27 = T23 + T26; T7r = T23 - T26; T5Q = KP707106781 * (T25 - T24); T5S = T5Q - T5R; T8y = T5R + T5Q; T7 = T3 + T6; Te = Ta + Td; Tf = T7 + Te; Ta5 = T7 - Te; } } { E Ti, T28, Ts, T2c, Tl, T29, Tp, T2b; { E Tg, Th, Tq, Tr; Tg = I[WS(is, 8)]; Th = I[WS(is, 72)]; Ti = Tg + Th; T28 = Tg - Th; Tq = I[WS(is, 24)]; Tr = I[WS(is, 88)]; Ts = Tq + Tr; T2c = Tq - Tr; } { E Tj, Tk, Tn, To; Tj = I[WS(is, 40)]; Tk = I[WS(is, 104)]; Tl = Tj + Tk; T29 = Tj - Tk; Tn = I[WS(is, 120)]; To = I[WS(is, 56)]; Tp = Tn + To; T2b = Tn - To; } { E Tm, Tt, TcE, TcF; Tm = Ti + Tl; Tt = Tp + Ts; Tu = Tm + Tt; Tbq = Tt - Tm; TcE = Ti - Tl; TcF = Tp - Ts; TcG = KP707106781 * (TcE + TcF); TdV = KP707106781 * (TcF - TcE); } { E T2a, T2d, T5T, T5U; T2a = FNMS(KP382683432, T29, KP923879532 * T28); T2d = FMA(KP923879532, T2b, KP382683432 * T2c); T2e = T2a + T2d; T8z = T2d - T2a; T5T = FNMS(KP923879532, T2c, KP382683432 * T2b); T5U = FMA(KP382683432, T28, KP923879532 * T29); T5V = T5T - T5U; T7s = T5U + T5T; } } { E Ty, T2g, TB, T2m, TF, T2l, TI, T2j; { E Tw, Tx, Tz, TA; Tw = I[WS(is, 4)]; Tx = I[WS(is, 68)]; Ty = Tw + Tx; T2g = Tw - Tx; Tz = I[WS(is, 36)]; TA = I[WS(is, 100)]; TB = Tz + TA; T2m = Tz - TA; { E TD, TE, T2h, TG, TH, T2i; TD = I[WS(is, 20)]; TE = I[WS(is, 84)]; T2h = TD - TE; TG = I[WS(is, 116)]; TH = I[WS(is, 52)]; T2i = TG - TH; TF = TD + TE; T2l = KP707106781 * (T2i - T2h); TI = TG + TH; T2j = KP707106781 * (T2h + T2i); } } { E TC, TJ, TcI, TcJ; TC = Ty + TB; TJ = TF + TI; TK = TC + TJ; Ta6 = TC - TJ; TcI = Ty - TB; TcJ = TI - TF; TcK = FMA(KP923879532, TcI, KP382683432 * TcJ); TdX = FNMS(KP382683432, TcI, KP923879532 * TcJ); } { E T2k, T2n, T7u, T7v; T2k = T2g + T2j; T2n = T2l - T2m; T2o = FMA(KP980785280, T2k, KP195090322 * T2n); T5X = FNMS(KP195090322, T2k, KP980785280 * T2n); T7u = T2g - T2j; T7v = T2m + T2l; T7w = FMA(KP831469612, T7u, KP555570233 * T7v); T8B = FNMS(KP555570233, T7u, KP831469612 * T7v); } } { E TN, T2p, TQ, T2v, TU, T2u, TX, T2s; { E TL, TM, TO, TP; TL = I[WS(is, 124)]; TM = I[WS(is, 60)]; TN = TL + TM; T2p = TL - TM; TO = I[WS(is, 28)]; TP = I[WS(is, 92)]; TQ = TO + TP; T2v = TO - TP; { E TS, TT, T2q, TV, TW, T2r; TS = I[WS(is, 12)]; TT = I[WS(is, 76)]; T2q = TS - TT; TV = I[WS(is, 108)]; TW = I[WS(is, 44)]; T2r = TV - TW; TU = TS + TT; T2u = KP707106781 * (T2r - T2q); TX = TV + TW; T2s = KP707106781 * (T2q + T2r); } } { E TR, TY, TcL, TcM; TR = TN + TQ; TY = TU + TX; TZ = TR + TY; Ta7 = TR - TY; TcL = TN - TQ; TcM = TX - TU; TcN = FNMS(KP382683432, TcM, KP923879532 * TcL); TdY = FMA(KP382683432, TcL, KP923879532 * TcM); } { E T2t, T2w, T7x, T7y; T2t = T2p + T2s; T2w = T2u - T2v; T2x = FNMS(KP195090322, T2w, KP980785280 * T2t); T5Y = FMA(KP195090322, T2t, KP980785280 * T2w); T7x = T2p - T2s; T7y = T2v + T2u; T7z = FNMS(KP555570233, T7y, KP831469612 * T7x); T8C = FMA(KP555570233, T7x, KP831469612 * T7y); } } { E T14, T2N, T17, T2D, T1b, T2O, T1e, T2C, T1j, T1m, T2K, TcR, T2Q, T1q, T1t; E T2H, TcS, T2R; { E T12, T13, T15, T16; T12 = I[WS(is, 2)]; T13 = I[WS(is, 66)]; T14 = T12 + T13; T2N = T12 - T13; T15 = I[WS(is, 34)]; T16 = I[WS(is, 98)]; T17 = T15 + T16; T2D = T15 - T16; } { E T19, T1a, T2B, T1c, T1d, T2A; T19 = I[WS(is, 18)]; T1a = I[WS(is, 82)]; T2B = T19 - T1a; T1c = I[WS(is, 114)]; T1d = I[WS(is, 50)]; T2A = T1c - T1d; T1b = T19 + T1a; T2O = KP707106781 * (T2B + T2A); T1e = T1c + T1d; T2C = KP707106781 * (T2A - T2B); } { E T2I, T2J, T2F, T2G; { E T1h, T1i, T1k, T1l; T1h = I[WS(is, 10)]; T1i = I[WS(is, 74)]; T1j = T1h + T1i; T2I = T1h - T1i; T1k = I[WS(is, 42)]; T1l = I[WS(is, 106)]; T1m = T1k + T1l; T2J = T1k - T1l; } T2K = FMA(KP382683432, T2I, KP923879532 * T2J); TcR = T1j - T1m; T2Q = FNMS(KP382683432, T2J, KP923879532 * T2I); { E T1o, T1p, T1r, T1s; T1o = I[WS(is, 122)]; T1p = I[WS(is, 58)]; T1q = T1o + T1p; T2F = T1o - T1p; T1r = I[WS(is, 26)]; T1s = I[WS(is, 90)]; T1t = T1r + T1s; T2G = T1r - T1s; } T2H = FNMS(KP923879532, T2G, KP382683432 * T2F); TcS = T1q - T1t; T2R = FMA(KP923879532, T2F, KP382683432 * T2G); } { E T18, T1f, TcQ, TcT; T18 = T14 + T17; T1f = T1b + T1e; T1g = T18 + T1f; Taa = T18 - T1f; TcQ = T14 - T17; TcT = KP707106781 * (TcR + TcS); TcU = TcQ + TcT; TeA = TcQ - TcT; } { E TcV, TcW, T1n, T1u; TcV = T1e - T1b; TcW = KP707106781 * (TcS - TcR); TcX = TcV + TcW; Tez = TcW - TcV; T1n = T1j + T1m; T1u = T1q + T1t; T1v = T1n + T1u; Tab = T1u - T1n; } { E T2E, T2L, T7C, T7D; T2E = T2C - T2D; T2L = T2H - T2K; T2M = T2E + T2L; T6z = T2L - T2E; T7C = T2N - T2O; T7D = T2K + T2H; T7E = T7C + T7D; T9e = T7C - T7D; } { E T7F, T7G, T2P, T2S; T7F = T2D + T2C; T7G = T2R - T2Q; T7H = T7F + T7G; T9d = T7G - T7F; T2P = T2N + T2O; T2S = T2Q + T2R; T2T = T2P + T2S; T6A = T2P - T2S; } } { E T4z, TaP, T5B, TaQ, T4G, TaT, T5y, TaS, Tbf, Tbg, T4O, Tdw, T5E, Tbc, Tbd; E T4V, Tdx, T5D; { E T4x, T4y, T5z, T5A; T4x = I[WS(is, 127)]; T4y = I[WS(is, 63)]; T4z = T4x - T4y; TaP = T4x + T4y; T5z = I[WS(is, 31)]; T5A = I[WS(is, 95)]; T5B = T5z - T5A; TaQ = T5z + T5A; } { E T4A, T4B, T4C, T4D, T4E, T4F; T4A = I[WS(is, 15)]; T4B = I[WS(is, 79)]; T4C = T4A - T4B; T4D = I[WS(is, 111)]; T4E = I[WS(is, 47)]; T4F = T4D - T4E; T4G = KP707106781 * (T4C + T4F); TaT = T4D + T4E; T5y = KP707106781 * (T4F - T4C); TaS = T4A + T4B; } { E T4K, T4N, T4R, T4U; { E T4I, T4J, T4L, T4M; T4I = I[WS(is, 7)]; T4J = I[WS(is, 71)]; T4K = T4I - T4J; Tbf = T4I + T4J; T4L = I[WS(is, 39)]; T4M = I[WS(is, 103)]; T4N = T4L - T4M; Tbg = T4L + T4M; } T4O = FNMS(KP382683432, T4N, KP923879532 * T4K); Tdw = Tbf - Tbg; T5E = FMA(KP382683432, T4K, KP923879532 * T4N); { E T4P, T4Q, T4S, T4T; T4P = I[WS(is, 119)]; T4Q = I[WS(is, 55)]; T4R = T4P - T4Q; Tbc = T4P + T4Q; T4S = I[WS(is, 23)]; T4T = I[WS(is, 87)]; T4U = T4S - T4T; Tbd = T4S + T4T; } T4V = FMA(KP923879532, T4R, KP382683432 * T4U); Tdx = Tbc - Tbd; T5D = FNMS(KP923879532, T4U, KP382683432 * T4R); } { E T4H, T4W, Tdv, Tdy; T4H = T4z + T4G; T4W = T4O + T4V; T4X = T4H + T4W; T6L = T4H - T4W; Tdv = TaP - TaQ; Tdy = KP707106781 * (Tdw + Tdx); Tdz = Tdv + Tdy; TeL = Tdv - Tdy; } { E TdI, TdJ, T5C, T5F; TdI = TaT - TaS; TdJ = KP707106781 * (Tdx - Tdw); TdK = TdI + TdJ; TeP = TdJ - TdI; T5C = T5y - T5B; T5F = T5D - T5E; T5G = T5C + T5F; T6P = T5F - T5C; } { E T8b, T8c, TaR, TaU; T8b = T4z - T4G; T8c = T5E + T5D; T8d = T8b + T8c; T9p = T8b - T8c; TaR = TaP + TaQ; TaU = TaS + TaT; TaV = TaR - TaU; Tc3 = TaR + TaU; } { E Tbe, Tbh, T8m, T8n; Tbe = Tbc + Tbd; Tbh = Tbf + Tbg; Tbi = Tbe - Tbh; Tc4 = Tbh + Tbe; T8m = T5B + T5y; T8n = T4V - T4O; T8o = T8m + T8n; T9t = T8n - T8m; } } { E T3k, Tai, T4m, Taj, T3r, Tam, T4j, Tal, TaI, TaJ, T3z, Tdb, T4p, TaF, TaG; E T3G, Tdc, T4o; { E T3i, T3j, T4k, T4l; T3i = I[WS(is, 1)]; T3j = I[WS(is, 65)]; T3k = T3i - T3j; Tai = T3i + T3j; T4k = I[WS(is, 33)]; T4l = I[WS(is, 97)]; T4m = T4k - T4l; Taj = T4k + T4l; } { E T3l, T3m, T3n, T3o, T3p, T3q; T3l = I[WS(is, 17)]; T3m = I[WS(is, 81)]; T3n = T3l - T3m; T3o = I[WS(is, 113)]; T3p = I[WS(is, 49)]; T3q = T3o - T3p; T3r = KP707106781 * (T3n + T3q); Tam = T3o + T3p; T4j = KP707106781 * (T3q - T3n); Tal = T3l + T3m; } { E T3v, T3y, T3C, T3F; { E T3t, T3u, T3w, T3x; T3t = I[WS(is, 9)]; T3u = I[WS(is, 73)]; T3v = T3t - T3u; TaI = T3t + T3u; T3w = I[WS(is, 41)]; T3x = I[WS(is, 105)]; T3y = T3w - T3x; TaJ = T3w + T3x; } T3z = FNMS(KP382683432, T3y, KP923879532 * T3v); Tdb = TaI - TaJ; T4p = FMA(KP382683432, T3v, KP923879532 * T3y); { E T3A, T3B, T3D, T3E; T3A = I[WS(is, 121)]; T3B = I[WS(is, 57)]; T3C = T3A - T3B; TaF = T3A + T3B; T3D = I[WS(is, 25)]; T3E = I[WS(is, 89)]; T3F = T3D - T3E; TaG = T3D + T3E; } T3G = FMA(KP923879532, T3C, KP382683432 * T3F); Tdc = TaF - TaG; T4o = FNMS(KP923879532, T3F, KP382683432 * T3C); } { E T3s, T3H, Tda, Tdd; T3s = T3k + T3r; T3H = T3z + T3G; T3I = T3s + T3H; T6H = T3s - T3H; Tda = Tai - Taj; Tdd = KP707106781 * (Tdb + Tdc); Tde = Tda + Tdd; TeH = Tda - Tdd; } { E Tdn, Tdo, T4n, T4q; Tdn = Tam - Tal; Tdo = KP707106781 * (Tdc - Tdb); Tdp = Tdn + Tdo; TeF = Tdo - Tdn;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -