📄 hf2_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 21:57:57 EDT 2003 */#include "codelet-rdft.h"/* Generated by: /homee/stevenj/cvs/fftw3.0.1/genfft/gen_hc2hc -compact -variables 4 -twiddle-log3 -n 64 -dit -name hf2_64 -include hf.h *//* * This function contains 1154 FP additions, 660 FP multiplications, * (or, 880 additions, 386 multiplications, 274 fused multiply/add), * 382 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 "hf.h"static const R *hf2_64(R *rio, R *iio, const R *W, stride ios, int m, int dist){ DK(KP290284677, +0.290284677254462367636192375817395274691476278); DK(KP956940335, +0.956940335732208864935797886980269969482849206); DK(KP881921264, +0.881921264348355029712756863660388349508442621); DK(KP471396736, +0.471396736825997648556387625905254377657460319); DK(KP098017140, +0.098017140329560601994195563888641845861136673); DK(KP995184726, +0.995184726672196886244836953109479921575474869); DK(KP773010453, +0.773010453362736960810906609758469800971041293); DK(KP634393284, +0.634393284163645498215171613225493370675687095); DK(KP555570233, +0.555570233019602224742830813948532874374937191); DK(KP831469612, +0.831469612302545237078788377617905756738560812); DK(KP980785280, +0.980785280403230449126182236134239036973933731); DK(KP195090322, +0.195090322016128267848284868477022240927691618); DK(KP707106781, +0.707106781186547524400844362104849039284835938); DK(KP923879532, +0.923879532511286756128183189396788286822416626); DK(KP382683432, +0.382683432365089771728459984030398866761344562); int i; for (i = m - 2; i > 0; i = i - 2, rio = rio + dist, iio = iio - dist, W = W + 10) { E T1, T1g, T91, T7W, T7m, T2O, T4j, T7P, T4P, T8y, T2w, T8t, T2Z, T8e, T48; E T1z, T7s, T1I, T7t, T8p, Ten, T1Y, T7D, T2t, T7O, T7L, Te6, T3N, T8E, T7A; E Te0, T4C, TeA, T8S, T9v, T65, Tfi, T9J, Taq, T6K, Tf6, Ta2, Ta5, T73, Tfc; E Tad, Tag, T3z, T83, T3u, T82, T81, T84, T15, T9K, T68, T7j, T43, T9w, T4F; E T8G, T5l, TeL, T9k, T9n, T6o, Tf2, T9Q, T9R, T6z, Tf3, T9T, T9W, To, Ts; E T4o, T8u, T4U, T92, T5a, TeT, T8V, T8Y, T5G, TeG, T97, T9e, T27, T7X, T2T; E T7E, T7b, Tai, T6T, Ta3, Tf7, Ta8, T7Q, T2H, T2c, T76, Tah, T7F, T4d, T8z; E TG, TK, T69, T6b, T3b, T87, T5u, T9l, TeM, T9q, T88, T89, T3o, T86, T5P; E T9f, TeH, T9a, T34, T8f, T1r, T7n, T3S, T8F, T4G, T4I, Tp, T6c, TH, T6a; E TL, Ti1, T4H, T4J, Tt; T1 = rio[0]; { E T12, T67, T14, T66, T6s, T1b, T1f, T6q, T1m, T6x, T1w, T1q, T6v, T6h, T31; E T1D, T5I, T1y, T6g, T1S, T6m, T1N, T6W, T6Y, T1M, T6k, T1H, T2Y, T5L, T2W; E T5N, T2b, T74, T2g, T29, T75, T26, T78, T1W, T22, T7a, T6R, T2u, T6P, T2v; E T6L, T6M, T2E, T2G, T6I, T5Z, T2n, T63, T6G, T2r, T5H, T33, T5E, T2Q, T5z; E T5C, T2S, T2M, T5q, T3a, T38, T5s, T2N, T5x, T5n, T3l, T5m, T3n, T5h, T5j; E T3w, T3y, T58, T4a, T3t, T5d, T3r, T5e, T54, T4c, T4Z, T46, T4T, T4X, T47; E T4l, T4N, T4i, T4g, T4O, T4n, T4R, T4E, T40, T4D, T42, T4y, T4A, T3J, T3L; E T3R, T3G, T3E, T3P, T2i, Ta, Ty, Tf, Tw, T2, Tj, T3, Tc, T1E, T1B; E T1F, T1A, T1R, T3x, T2m, T3K, T61, T1V, T60, T3I, T51, T52, T2V, T56, T5X; E T3v, T55, T2X, T2q, T5W, T4w, T6E, Ta0, T8Q, Tac, T72, Tb, Tg, Th, T3e; E T3f, T3h, T1a, T2x, T2B, TU, TV, TY, T1e, T2y, T2A, TC, TD, T1u, Tk; E Tl, Tm, T39, T3U, T3W, T37, T3T, T3X, TQ, TR, TZ, T3c, T3d, T3i, Tx; E Tz, T1t, TN, TX, T2f, T5V, Tao, T2h, T3D, T4f, T4h, T3F, T3q, T3s; T12 = rio[WS(ios, 48)]; T67 = iio[-WS(ios, 48)]; T14 = iio[-WS(ios, 15)]; T66 = rio[WS(ios, 15)]; T6s = iio[-WS(ios, 8)]; T1b = rio[WS(ios, 8)]; T1f = iio[-WS(ios, 55)]; T6q = rio[WS(ios, 55)]; T1m = rio[WS(ios, 40)]; T6x = iio[-WS(ios, 40)]; T1w = rio[WS(ios, 56)]; T1q = iio[-WS(ios, 23)]; T6v = rio[WS(ios, 23)]; T6h = iio[-WS(ios, 56)]; T31 = rio[WS(ios, 50)]; T1D = rio[WS(ios, 24)]; T5I = iio[-WS(ios, 50)]; T1y = iio[-WS(ios, 7)]; T6g = rio[WS(ios, 7)]; T1S = rio[WS(ios, 36)]; T6m = iio[-WS(ios, 24)]; T1N = iio[-WS(ios, 59)]; T6W = rio[WS(ios, 59)]; T6Y = iio[-WS(ios, 4)]; T1M = rio[WS(ios, 4)]; T6k = rio[WS(ios, 39)]; T1H = iio[-WS(ios, 39)]; T2Y = iio[-WS(ios, 45)]; T5L = rio[WS(ios, 45)]; T2W = rio[WS(ios, 18)]; T5N = iio[-WS(ios, 18)]; T2b = iio[-WS(ios, 11)]; T74 = rio[WS(ios, 11)]; T2g = rio[WS(ios, 60)]; T29 = rio[WS(ios, 52)]; T75 = iio[-WS(ios, 52)]; T26 = iio[-WS(ios, 43)]; T78 = rio[WS(ios, 43)]; T1W = iio[-WS(ios, 27)]; T22 = rio[WS(ios, 20)]; T7a = iio[-WS(ios, 20)]; T6R = iio[-WS(ios, 12)]; T2u = rio[WS(ios, 12)]; T6P = rio[WS(ios, 51)]; T2v = iio[-WS(ios, 51)]; T6L = rio[WS(ios, 19)]; T6M = iio[-WS(ios, 44)]; T2E = rio[WS(ios, 44)]; T2G = iio[-WS(ios, 19)]; T6I = iio[-WS(ios, 28)]; T5Z = rio[WS(ios, 31)]; T2n = rio[WS(ios, 28)]; T63 = iio[-WS(ios, 32)]; T6G = rio[WS(ios, 35)]; T2r = iio[-WS(ios, 35)]; T5H = rio[WS(ios, 13)]; T33 = iio[-WS(ios, 13)]; T5E = iio[-WS(ios, 34)]; T2Q = rio[WS(ios, 34)]; T5z = iio[-WS(ios, 2)]; T5C = rio[WS(ios, 29)]; T2S = iio[-WS(ios, 29)]; T2M = rio[WS(ios, 2)]; T5q = rio[WS(ios, 53)]; T3a = iio[-WS(ios, 53)]; T38 = rio[WS(ios, 10)]; T5s = iio[-WS(ios, 10)]; T2N = iio[-WS(ios, 61)]; T5x = rio[WS(ios, 61)]; T5n = iio[-WS(ios, 42)]; T3l = rio[WS(ios, 42)]; T5m = rio[WS(ios, 21)]; T3n = iio[-WS(ios, 21)]; T5h = rio[WS(ios, 37)]; T5j = iio[-WS(ios, 26)]; T3w = rio[WS(ios, 26)]; T3y = iio[-WS(ios, 37)]; T58 = iio[-WS(ios, 38)]; T4a = rio[WS(ios, 38)]; T3t = iio[-WS(ios, 5)]; T5d = rio[WS(ios, 5)]; T3r = rio[WS(ios, 58)]; T5e = iio[-WS(ios, 58)]; T54 = rio[WS(ios, 25)]; T4c = iio[-WS(ios, 25)]; T4Z = iio[-WS(ios, 6)]; T46 = rio[WS(ios, 6)]; T4T = iio[-WS(ios, 22)]; T4X = rio[WS(ios, 57)]; T47 = iio[-WS(ios, 57)]; T4l = rio[WS(ios, 22)]; T4N = rio[WS(ios, 9)]; T4i = iio[-WS(ios, 9)]; T4g = rio[WS(ios, 54)]; T4O = iio[-WS(ios, 54)]; T4n = iio[-WS(ios, 41)]; T4R = rio[WS(ios, 41)]; T4E = iio[-WS(ios, 46)]; T40 = rio[WS(ios, 46)]; T4D = rio[WS(ios, 17)]; T42 = iio[-WS(ios, 17)]; T4y = rio[WS(ios, 33)]; T4A = iio[-WS(ios, 30)]; T3J = rio[WS(ios, 30)]; T3L = iio[-WS(ios, 33)]; T3R = iio[-WS(ios, 49)]; T3G = iio[-WS(ios, 1)]; T3E = rio[WS(ios, 62)]; T3P = rio[WS(ios, 14)]; T2i = iio[-WS(ios, 3)]; { E T4u, T70, T71, T4v, T5T, T6C, T6D, T5U, T4, T7, T5, T8, TO, TP, T1U; E T2p, T18, T2k, T2l, T2o, TT, TS, T19, T1c, T1T, T1P, T1Q, T1d; T4u = rio[WS(ios, 1)]; T70 = rio[WS(ios, 27)]; T71 = iio[-WS(ios, 36)]; T4v = iio[-WS(ios, 62)]; T5T = rio[WS(ios, 63)]; T6C = rio[WS(ios, 3)]; T6D = iio[-WS(ios, 60)]; T5U = iio[0]; { E T6, Te, T9, Td; T4 = W[2]; T7 = W[3]; T5 = W[0]; T8 = W[1]; T6 = T4 * T5; Te = T7 * T5; T9 = T7 * T8; Td = T4 * T8; Ta = T6 - T9; Ty = Td - Te; Tf = Td + Te; Tw = T6 + T9; T2 = W[6]; Tj = W[7]; T3 = W[4]; Tc = W[5]; TO = T3 * T4; TP = Tc * T7; T1U = Tj * T3; T2p = Tj * T5; T18 = T3 * T5; T2k = T2 * T5; T2l = Tj * T8; T2o = T2 * T8; TT = Tc * T4; TS = T3 * T7; T19 = Tc * T8; T1c = T3 * T8; T1E = T2 * T7; T1T = T2 * Tc; T1B = Tj * T7; T1F = Tj * T4; T1P = T2 * T3; T1Q = Tj * Tc; T1A = T2 * T4; T1d = Tc * T5; } T1R = T1P - T1Q; T3x = T2o - T2p; T2m = T2k - T2l; T3K = T1E + T1F; T61 = Tj * Ta; T1V = T1T + T1U; T60 = T2 * Tf; T3I = T1A - T1B; T51 = T2 * Tw; T52 = Tj * Ty; T2V = T1P + T1Q; T56 = Tj * Tw; T5X = Tj * Tf; T3v = T2k + T2l; T55 = T2 * Ty; T2X = T1T - T1U; T2q = T2o + T2p; T5W = T2 * Ta; T4w = FMA(T5, T4u, T8 * T4v); T6E = FMA(T4, T6C, T7 * T6D); Ta0 = FNMS(T7, T6C, T4 * T6D); T8Q = FNMS(T8, T4u, T5 * T4v); Tac = FNMS(Tj, T70, T2 * T71); T72 = FMA(T2, T70, Tj * T71); Tb = T3 * Ta; Tg = Tc * Tf; Th = Tb + Tg; T3e = TS - TT; T3f = Tj * T3e; T3h = T2 * T3e; T1a = T18 + T19; T2x = T2 * T1a; T2B = Tj * T1a; TU = TS + TT; TV = Tj * TU; TY = T2 * TU; T1e = T1c - T1d; T2y = Tj * T1e; T2A = T2 * T1e; TC = T3 * Ty; TD = Tc * Tw; T1u = TC + TD; Tk = T3 * Tf; Tl = Tc * Ta; Tm = Tk - Tl; T39 = T1c + T1d; T3U = Tj * T39; T3W = T2 * T39; T37 = T18 - T19; T3T = T2 * T37; T3X = Tj * T37; TQ = TO - TP; TR = T2 * TQ; TZ = Tj * TQ; T3c = TO + TP; T3d = T2 * T3c; T3i = Tj * T3c; Tx = T3 * Tw; Tz = Tc * Ty; T1t = Tx - Tz; TN = W[8]; TX = W[9]; T2f = FMA(TN, T4, TX * T7); T5V = FMA(TN, T5T, TX * T5U); Tao = FNMS(TX, T5T, TN * T5U); T2h = FNMS(TX, T4, TN * T7); T3D = FMA(TN, T5, TX * T8); T4f = FMA(TN, T3, TX * Tc); T4h = FNMS(TX, T3, TN * Tc); T3F = FNMS(TX, T5, TN * T8); } T1g = FNMS(T1e, T1f, T1a * T1b); T91 = FNMS(Tc, T4N, T3 * T4O); T7W = FMA(Ty, T2M, Tw * T2N); T7m = FMA(T1e, T1b, T1a * T1f); T2O = FNMS(Ty, T2N, Tw * T2M); T4j = FNMS(T4h, T4i, T4f * T4g); T7P = FNMS(TU, T2u, TQ * T2v); T4P = FMA(T3, T4N, Tc * T4O); T8y = FMA(T3e, T46, T3c * T47); T2w = FMA(TQ, T2u, TU * T2v); { E T1v, T1x, T1O, T1X; T8t = FMA(T4h, T4g, T4f * T4i); T2Z = FNMS(T2X, T2Y, T2V * T2W); T8e = FMA(T2X, T2W, T2V * T2Y); T48 = FNMS(T3e, T47, T3c * T46); T1v = FMA(TN, T1t, TX * T1u); T1x = FNMS(TX, T1t, TN * T1u); T1z = FNMS(T1x, T1y, T1v * T1w); T7s = FMA(T1x, T1w, T1v * T1y); { E T1C, T1G, T8n, T8o; T1C = T1A + T1B; T1G = T1E - T1F; T1I = FNMS(T1G, T1H, T1C * T1D); T7t = FMA(T1G, T1D, T1C * T1H); T8n = FMA(T3F, T3E, T3D * T3G); T8o = FNMS(T3K, T3J, T3I * T3L); T8p = T8n - T8o; Ten = T8n + T8o; } T1O = FMA(Ta, T1M, Tf * T1N); T1X = FMA(T1R, T1S, T1V * T1W); T1Y = T1O + T1X; T7D = T1O - T1X; { E T2j, T2s, T7J, T7K; T2j = FNMS(T2h, T2i, T2f * T2g); T2s = FMA(T2m, T2n, T2q * T2r); T2t = T2j + T2s; T7O = T2j - T2s; T7J = FMA(T2h, T2g, T2f * T2i); T7K = FNMS(T2q, T2n, T2m * T2r); T7L = T7J - T7K; Te6 = T7J + T7K; } } { E T3H, T3M, T7y, T7z; T3H = FNMS(T3F, T3G, T3D * T3E); T3M = FMA(T3I, T3J, T3K * T3L); T3N = T3H + T3M; T8E = T3H - T3M; T7y = FNMS(Tf, T1M, Ta * T1N); T7z = FNMS(T1V, T1S, T1R * T1W); T7A = T7y - T7z; Te0 = T7y + T7z; } { E T4B, T8R, T4x, T4z; T4x = T3d + T3f; T4z = T3h - T3i; T4B = FNMS(T4z, T4A, T4x * T4y); T8R = FMA(T4z, T4y, T4x * T4A); T4C = T4w + T4B; TeA = T8Q + T8R; T8S = T8Q - T8R; T9v = T4w - T4B; } { E T64, Tap, T5Y, T62; T5Y = T5W - T5X; T62 = T60 + T61; T64 = FMA(T5Y, T5Z, T62 * T63); Tap = FNMS(T62, T5Z, T5Y * T63); T65 = T5V + T64; Tfi = Tao + Tap; T9J = T5V - T64; Taq = Tao - Tap; } { E T6J, Ta1, T6F, T6H; T6F = T2x + T2y; T6H = T2A - T2B; T6J = FNMS(T6H, T6I, T6F * T6G); Ta1 = FMA(T6H, T6G, T6F * T6I); T6K = T6E + T6J; Tf6 = Ta0 + Ta1; Ta2 = Ta0 - Ta1; Ta5 = T6E - T6J; } { E T6Z, Tab, T6V, T6X; T6V = FMA(TN, Ta, TX * Tf); T6X = FNMS(TX, Ta, TN * Tf); T6Z = FNMS(T6X, T6Y, T6V * T6W); Tab = FMA(T6X, T6W, T6V * T6Y); T73 = T6Z + T72; Tfc = Tab + Tac; Tad = Tab - Tac; Tag = T6Z - T72; } T3z = FNMS(T3x, T3y, T3v * T3w); T83 = FMA(T3x, T3w, T3v * T3y); T3q = FNMS(TX, Tm, TN * Th); T3s = FMA(TN, Tm, TX * Th); T3u = FMA(T3q, T3r, T3s * T3t); T82 = FNMS(T3s, T3r, T3q * T3t); T81 = T3u - T3z; T84 = T82 - T83; { E TW, T10, T11, T13; TW = TR + TV; T10 = TY - TZ; T11 = FNMS(TX, T10, TN * TW); T13 = FMA(TN, T10, TX * TW); T15 = FMA(T11, T12, T13 * T14); T9K = FMA(T10, T66, TW * T67); T68 = FNMS(T10, T67, TW * T66); T7j = FNMS(T13, T12, T11 * T14); } { E T3V, T3Y, T3Z, T41; T3V = T3T + T3U; T3Y = T3W - T3X; T3Z = FNMS(TX, T3Y, TN * T3V); T41 = FMA(TN, T3Y, TX * T3V); T43 = FMA(T3Z, T40, T41 * T42); T9w = FMA(T3Y, T4D, T3V * T4E); T4F = FNMS(T3Y, T4E, T3V * T4D); T8G = FNMS(T41, T40, T3Z * T42); } { E T5f, T9i, T5k, T9j, T5g, T5i; T5f = FNMS(Tm, T5e, Th * T5d); T9i = FMA(Tm, T5d, Th * T5e); T5g = T3T - T3U; T5i = T3W + T3X; T5k = FMA(T5g, T5h, T5i * T5j); T9j = FNMS(T5i, T5h, T5g * T5j); T5l = T5f + T5k; TeL = T9i + T9j; T9k = T9i - T9j; T9n = T5f - T5k; } { E T6i, T9O, T6n, T9P, T6j, T6l; T6i = FMA(T1t, T6g, T1u * T6h); T9O = FNMS(T1u, T6g, T1t * T6h); T6j = TR - TV; T6l = TY + TZ; T6n = FMA(T6j, T6k, T6l * T6m); T9P = FNMS(T6l, T6k, T6j * T6m); T6o = T6i + T6n; Tf2 = T9O + T9P; T9Q = T9O - T9P; T9R = T6i - T6n; } { E T6t, T9U, T6y, T9V; {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -