📄 mhc2r_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 22:11:20 EDT 2003 */#include "codelet-rdft.h"/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_hc2r_noinline -compact -variables 4 -sign 1 -n 128 -name mhc2r_128 -include hc2r.h *//* * This function contains 956 FP additions, 342 FP multiplications, * (or, 812 additions, 198 multiplications, 144 fused multiply/add), * 197 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_hc2r_noinline.ml,v 1.1 2003/04/17 19:25:50 athena Exp $ */#include "hc2r.h"static void mhc2r_128_0(const R *ri, const R *ii, R *O, stride ris, stride iis, stride os){ DK(KP1_028205488, +1.028205488386443453187387677937631545216098241); DK(KP1_715457220, +1.715457220000544139804539968569540274084981599); DK(KP1_606415062, +1.606415062961289819613353025926283847759138854); DK(KP1_191398608, +1.191398608984866686934073057659939779023852677); DK(KP1_940062506, +1.940062506389087985207968414572200502913731924); DK(KP485960359, +0.485960359806527779896548324154942236641981567); DK(KP293460948, +0.293460948910723503317700259293435639412430633); DK(KP1_978353019, +1.978353019929561946903347476032486127967379067); DK(KP831469612, +0.831469612302545237078788377617905756738560812); DK(KP555570233, +0.555570233019602224742830813948532874374937191); DK(KP855110186, +0.855110186860564188641933713777597068609157259); DK(KP1_807978586, +1.807978586246886663172400594461074097420264050); DK(KP1_481902250, +1.481902250709918182351233794990325459457910619); DK(KP1_343117909, +1.343117909694036801250753700854843606457501264); DK(KP1_883088130, +1.883088130366041556825018805199004714371179592); DK(KP673779706, +0.673779706784440101378506425238295140955533559); DK(KP098135348, +0.098135348654836028509909953885365316629490726); DK(KP1_997590912, +1.997590912410344785429543209518201388886407229); DK(KP980785280, +0.980785280403230449126182236134239036973933731); DK(KP195090322, +0.195090322016128267848284868477022240927691618); DK(KP580569354, +0.580569354508924735272384751634790549382952557); DK(KP1_913880671, +1.913880671464417729871595773960539938965698411); DK(KP942793473, +0.942793473651995297112775251810508755314920638); DK(KP1_763842528, +1.763842528696710059425513727320776699016885241); DK(KP1_111140466, +1.111140466039204449485661627897065748749874382); DK(KP1_662939224, +1.662939224605090474157576755235811513477121624); DK(KP1_268786568, +1.268786568327290996430343226450986741351374190); DK(KP1_546020906, +1.546020906725473921621813219516939601942082586); DK(KP196034280, +0.196034280659121203988391127777283691722273346); DK(KP1_990369453, +1.990369453344393772489673906218959843150949737); DK(KP390180644, +0.390180644032256535696569736954044481855383236); DK(KP1_961570560, +1.961570560806460898252364472268478073947867462); DK(KP382683432, +0.382683432365089771728459984030398866761344562); DK(KP923879532, +0.923879532511286756128183189396788286822416626); DK(KP707106781, +0.707106781186547524400844362104849039284835938); DK(KP765366864, +0.765366864730179543456919968060797733522689125); DK(KP1_847759065, +1.847759065022573512256366378793576573644833252); DK(KP1_414213562, +1.414213562373095048801688724209698078569671875); DK(KP2_000000000, +2.000000000000000000000000000000000000000000000); { E Ta, T6q, T2a, T5k, T8x, Tbx, TcF, Ten, Th, T6r, T2j, T5l, T8E, Tby, TcI; E Teo, Tx, T6t, TcM, Teq, TcP, Ter, T2t, T5n, T2C, T5o, T8Q, TbA, T8X, TbB; E T6w, T7L, T1j, T6L, Tde, TeC, TdL, TeR, T3v, T5z, T4I, T5O, T9O, TbM, TaV; E Tc1, T78, T7Z, TN, T6z, TcU, Teu, Td8, Tey, T2N, T5r, T3j, T5v, T9a, TbE; E T9A, TbI, T6H, T7O, T1O, T7V, T48, T4u, Tds, TeG, T5E, T5K, Taf, TbP, Tdp; E TeF, T6U, T72, Tam, TbQ, T23, T7U, T4r, T4v, Tdz, TeJ, T5H, T5L, Tay, TbS; E Tdw, TeI, T6Z, T73, TaF, TbT, T1y, T75, Tdl, TeQ, TdI, TeD, T3O, T5N, T4z; E T5A, Ta3, Tc0, TaO, TbN, T6O, T80, T12, T6E, Td1, Tex, Td5, Tev, T36, T5u; E T3a, T5s, T9p, TbH, T9t, TbF, T6C, T7P; { E T5, T8s, T3, T8q, T9, T8u, T29, T8v, T6, T26; { E T4, T8r, T1, T2; T4 = ri[WS(ris, 32)]; T5 = KP2_000000000 * T4; T8r = ii[WS(iis, 32)]; T8s = KP2_000000000 * T8r; T1 = ri[0]; T2 = ri[WS(ris, 64)]; T3 = T1 + T2; T8q = T1 - T2; { E T7, T8, T27, T28; T7 = ri[WS(ris, 16)]; T8 = ri[WS(ris, 48)]; T9 = KP2_000000000 * (T7 + T8); T8u = T7 - T8; T27 = ii[WS(iis, 16)]; T28 = ii[WS(iis, 48)]; T29 = KP2_000000000 * (T27 - T28); T8v = T27 + T28; } } T6 = T3 + T5; Ta = T6 + T9; T6q = T6 - T9; T26 = T3 - T5; T2a = T26 - T29; T5k = T26 + T29; { E T8t, T8w, TcD, TcE; T8t = T8q - T8s; T8w = KP1_414213562 * (T8u - T8v); T8x = T8t + T8w; Tbx = T8t - T8w; TcD = T8q + T8s; TcE = KP1_414213562 * (T8u + T8v); TcF = TcD - TcE; Ten = TcD + TcE; } } { E Td, T8y, T2e, T8C, Tg, T8B, T2h, T8z, T2b, T2i; { E Tb, Tc, T2c, T2d; Tb = ri[WS(ris, 8)]; Tc = ri[WS(ris, 56)]; Td = Tb + Tc; T8y = Tb - Tc; T2c = ii[WS(iis, 8)]; T2d = ii[WS(iis, 56)]; T2e = T2c - T2d; T8C = T2c + T2d; } { E Te, Tf, T2f, T2g; Te = ri[WS(ris, 40)]; Tf = ri[WS(ris, 24)]; Tg = Te + Tf; T8B = Te - Tf; T2f = ii[WS(iis, 40)]; T2g = ii[WS(iis, 24)]; T2h = T2f - T2g; T8z = T2f + T2g; } Th = KP2_000000000 * (Td + Tg); T6r = KP2_000000000 * (T2h + T2e); T2b = Td - Tg; T2i = T2e - T2h; T2j = KP1_414213562 * (T2b - T2i); T5l = KP1_414213562 * (T2b + T2i); { E T8A, T8D, TcG, TcH; T8A = T8y - T8z; T8D = T8B + T8C; T8E = FNMS(KP765366864, T8D, KP1_847759065 * T8A); Tby = FMA(KP765366864, T8A, KP1_847759065 * T8D); TcG = T8y + T8z; TcH = T8C - T8B; TcI = FNMS(KP1_847759065, TcH, KP765366864 * TcG); Teo = FMA(KP1_847759065, TcG, KP765366864 * TcH); } } { E Tl, T8G, T2x, T8V, To, T8U, T2A, T8H, Tv, T8S, T2o, T8O, Ts, T8R, T2r; E T8L; { E Tj, Tk, T2y, T2z; Tj = ri[WS(ris, 4)]; Tk = ri[WS(ris, 60)]; Tl = Tj + Tk; T8G = Tj - Tk; { E T2v, T2w, Tm, Tn; T2v = ii[WS(iis, 4)]; T2w = ii[WS(iis, 60)]; T2x = T2v - T2w; T8V = T2v + T2w; Tm = ri[WS(ris, 36)]; Tn = ri[WS(ris, 28)]; To = Tm + Tn; T8U = Tm - Tn; } T2y = ii[WS(iis, 36)]; T2z = ii[WS(iis, 28)]; T2A = T2y - T2z; T8H = T2y + T2z; { E Tt, Tu, T8M, T2m, T2n, T8N; Tt = ri[WS(ris, 12)]; Tu = ri[WS(ris, 52)]; T8M = Tt - Tu; T2m = ii[WS(iis, 52)]; T2n = ii[WS(iis, 12)]; T8N = T2n + T2m; Tv = Tt + Tu; T8S = T8M + T8N; T2o = T2m - T2n; T8O = T8M - T8N; } { E Tq, Tr, T8J, T2p, T2q, T8K; Tq = ri[WS(ris, 20)]; Tr = ri[WS(ris, 44)]; T8J = Tq - Tr; T2p = ii[WS(iis, 20)]; T2q = ii[WS(iis, 44)]; T8K = T2p + T2q; Ts = Tq + Tr; T8R = T8J + T8K; T2r = T2p - T2q; T8L = T8J - T8K; } } { E Tp, Tw, TcK, TcL; Tp = Tl + To; Tw = Ts + Tv; Tx = KP2_000000000 * (Tp + Tw); T6t = Tp - Tw; TcK = T8G + T8H; TcL = KP707106781 * (T8R + T8S); TcM = TcK - TcL; Teq = TcK + TcL; } { E TcN, TcO, T2l, T2s; TcN = KP707106781 * (T8L - T8O); TcO = T8V - T8U; TcP = TcN + TcO; Ter = TcO - TcN; T2l = Tl - To; T2s = T2o - T2r; T2t = T2l + T2s; T5n = T2l - T2s; } { E T2u, T2B, T8I, T8P; T2u = Ts - Tv; T2B = T2x - T2A; T2C = T2u + T2B; T5o = T2B - T2u; T8I = T8G - T8H; T8P = KP707106781 * (T8L + T8O); T8Q = T8I + T8P; TbA = T8I - T8P; } { E T8T, T8W, T6u, T6v; T8T = KP707106781 * (T8R - T8S); T8W = T8U + T8V; T8X = T8T + T8W; TbB = T8W - T8T; T6u = T2A + T2x; T6v = T2r + T2o; T6w = T6u - T6v; T7L = KP2_000000000 * (T6v + T6u); } } { E T17, T9E, T4D, TaT, T1a, TaS, T4G, T9F, T1h, TaQ, T3q, T9M, T1e, TaP, T3t; E T9J; { E T15, T16, T4E, T4F; T15 = ri[WS(ris, 1)]; T16 = ri[WS(ris, 63)]; T17 = T15 + T16; T9E = T15 - T16; { E T4B, T4C, T18, T19; T4B = ii[WS(iis, 1)]; T4C = ii[WS(iis, 63)]; T4D = T4B - T4C; TaT = T4B + T4C; T18 = ri[WS(ris, 33)]; T19 = ri[WS(ris, 31)]; T1a = T18 + T19; TaS = T18 - T19; } T4E = ii[WS(iis, 33)]; T4F = ii[WS(iis, 31)]; T4G = T4E - T4F; T9F = T4E + T4F; { E T1f, T1g, T9K, T3o, T3p, T9L; T1f = ri[WS(ris, 15)]; T1g = ri[WS(ris, 49)]; T9K = T1f - T1g; T3o = ii[WS(iis, 49)]; T3p = ii[WS(iis, 15)]; T9L = T3p + T3o; T1h = T1f + T1g; TaQ = T9K + T9L; T3q = T3o - T3p; T9M = T9K - T9L; } { E T1c, T1d, T9H, T3r, T3s, T9I; T1c = ri[WS(ris, 17)]; T1d = ri[WS(ris, 47)]; T9H = T1c - T1d; T3r = ii[WS(iis, 17)]; T3s = ii[WS(iis, 47)]; T9I = T3r + T3s; T1e = T1c + T1d; TaP = T9H + T9I; T3t = T3r - T3s; T9J = T9H - T9I; } } { E T1b, T1i, Tdc, Tdd; T1b = T17 + T1a; T1i = T1e + T1h; T1j = T1b + T1i; T6L = T1b - T1i; Tdc = T9E + T9F; Tdd = KP707106781 * (TaP + TaQ); Tde = Tdc - Tdd; TeC = Tdc + Tdd; } { E TdJ, TdK, T3n, T3u; TdJ = KP707106781 * (T9J - T9M); TdK = TaT - TaS; TdL = TdJ + TdK; TeR = TdK - TdJ; T3n = T17 - T1a; T3u = T3q - T3t; T3v = T3n + T3u; T5z = T3n - T3u; } { E T4A, T4H, T9G, T9N; T4A = T1e - T1h; T4H = T4D - T4G; T4I = T4A + T4H; T5O = T4H - T4A; T9G = T9E - T9F; T9N = KP707106781 * (T9J + T9M); T9O = T9G + T9N; TbM = T9G - T9N; } { E TaR, TaU, T76, T77; TaR = KP707106781 * (TaP - TaQ); TaU = TaS + TaT; TaV = TaR + TaU; Tc1 = TaU - TaR; T76 = T4G + T4D; T77 = T3t + T3q; T78 = T76 - T77; T7Z = T77 + T76; } } { E TB, T90, T3e, T9y, TE, T9x, T3h, T91, TL, T9v, T2I, T98, TI, T9u, T2L; E T95; { E Tz, TA, T3f, T3g; Tz = ri[WS(ris, 2)]; TA = ri[WS(ris, 62)]; TB = Tz + TA; T90 = Tz - TA; { E T3c, T3d, TC, TD; T3c = ii[WS(iis, 2)]; T3d = ii[WS(iis, 62)]; T3e = T3c - T3d; T9y = T3c + T3d; TC = ri[WS(ris, 34)]; TD = ri[WS(ris, 30)]; TE = TC + TD; T9x = TC - TD; } T3f = ii[WS(iis, 34)]; T3g = ii[WS(iis, 30)]; T3h = T3f - T3g; T91 = T3f + T3g; { E TJ, TK, T96, T2G, T2H, T97; TJ = ri[WS(ris, 14)]; TK = ri[WS(ris, 50)]; T96 = TJ - TK; T2G = ii[WS(iis, 50)]; T2H = ii[WS(iis, 14)]; T97 = T2H + T2G; TL = TJ + TK; T9v = T96 + T97; T2I = T2G - T2H; T98 = T96 - T97; } { E TG, TH, T93, T2J, T2K, T94; TG = ri[WS(ris, 18)]; TH = ri[WS(ris, 46)]; T93 = TG - TH; T2J = ii[WS(iis, 18)]; T2K = ii[WS(iis, 46)]; T94 = T2J + T2K; TI = TG + TH; T9u = T93 + T94; T2L = T2J - T2K; T95 = T93 - T94; } } { E TF, TM, TcS, TcT; TF = TB + TE; TM = TI + TL; TN = TF + TM; T6z = TF - TM; TcS = T90 + T91; TcT = KP707106781 * (T9u + T9v); TcU = TcS - TcT; Teu = TcS + TcT; } { E Td6, Td7, T2F, T2M; Td6 = KP707106781 * (T95 - T98); Td7 = T9y - T9x; Td8 = Td6 + Td7; Tey = Td7 - Td6; T2F = TB - TE; T2M = T2I - T2L; T2N = T2F + T2M; T5r = T2F - T2M; } { E T3b, T3i, T92, T99; T3b = TI - TL; T3i = T3e - T3h; T3j = T3b + T3i; T5v = T3i - T3b; T92 = T90 - T91; T99 = KP707106781 * (T95 + T98); T9a = T92 + T99; TbE = T92 - T99; } { E T9w, T9z, T6F, T6G; T9w = KP707106781 * (T9u - T9v); T9z = T9x + T9y; T9A = T9w + T9z; TbI = T9z - T9w; T6F = T3h + T3e; T6G = T2L + T2I; T6H = T6F - T6G; T7O = T6G + T6F; } } { E T1G, Taj, T3Q, Ta5, T46, Tak, T6R, Ta6, T1N, Tag, Tah, T3X, T3Z, Taa, Tad; E T6S, Tdn, Tdo; { E T1A, T1B, T1C, T1D, T1E, T1F; T1A = ri[WS(ris, 5)]; T1B = ri[WS(ris, 59)]; T1C = T1A + T1B; T1D = ri[WS(ris, 37)]; T1E = ri[WS(ris, 27)]; T1F = T1D + T1E; T1G = T1C + T1F; Taj = T1D - T1E; T3Q = T1C - T1F; Ta5 = T1A - T1B; } { E T40, T41, T42, T43, T44, T45; T40 = ii[WS(iis, 5)]; T41 = ii[WS(iis, 59)]; T42 = T40 - T41; T43 = ii[WS(iis, 37)]; T44 = ii[WS(iis, 27)]; T45 = T43 - T44; T46 = T42 - T45; Tak = T40 + T41; T6R = T45 + T42; Ta6 = T43 + T44; } { E T1J, Ta8, T3W, Ta9, T1M, Tab, T3T, Tac; { E T1H, T1I, T3U, T3V; T1H = ri[WS(ris, 21)]; T1I = ri[WS(ris, 43)]; T1J = T1H + T1I; Ta8 = T1H - T1I; T3U = ii[WS(iis, 21)]; T3V = ii[WS(iis, 43)]; T3W = T3U - T3V; Ta9 = T3U + T3V; } { E T1K, T1L, T3R, T3S; T1K = ri[WS(ris, 11)]; T1L = ri[WS(ris, 53)]; T1M = T1K + T1L; Tab = T1K - T1L; T3R = ii[WS(iis, 53)]; T3S = ii[WS(iis, 11)]; T3T = T3R - T3S; Tac = T3S + T3R; } T1N = T1J + T1M; Tag = Ta8 + Ta9; Tah = Tab + Tac; T3X = T3T - T3W; T3Z = T1J - T1M; Taa = Ta8 - Ta9; Tad = Tab - Tac; T6S = T3W + T3T; } T1O = T1G + T1N; T7V = T6S + T6R; { E T3Y, T47, Tdq, Tdr; T3Y = T3Q + T3X; T47 = T3Z + T46; T48 = FNMS(KP382683432, T47, KP923879532 * T3Y); T4u = FMA(KP382683432, T3Y, KP923879532 * T47); Tdq = KP707106781 * (Taa - Tad); Tdr = Tak - Taj; Tds = Tdq + Tdr; TeG = Tdr - Tdq; } { E T5C, T5D, Ta7, Tae; T5C = T3Q - T3X; T5D = T46 - T3Z; T5E = FNMS(KP923879532, T5D, KP382683432 * T5C); T5K = FMA(KP923879532, T5C, KP382683432 * T5D); Ta7 = Ta5 - Ta6; Tae = KP707106781 * (Taa + Tad); Taf = Ta7 + Tae; TbP = Ta7 - Tae; } Tdn = Ta5 + Ta6;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -