亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fft32x32.asm

?? davinci技術(shù) 源碼 視頻監(jiān)控匯編源碼
?? ASM
?? 第 1 頁 / 共 4 頁
字號(hào):
* ======================================================================== *
*  TEXAS INSTRUMENTS, INC.                                                 *
*                                                                          *
*  NAME                                                                    *
*      fft32x32 -- fft32x32                                                *
*                                                                          *
*                                                                          *
*  REVISION DATE                                                           *
*      06-May-2005                                                         *
*                                                                          *
*   USAGE                                                                   *
*                                                                           *
*       This routine is C-callable and can be called as:                    *
*                                                                           *
*       void fft                                                            *
*       (                                                                   *
*           int * w,                                                        *
*           int nx,                                                         *
*           int * x,                                                        *
*           int * y                                                         *
*       )                                                                   *
*                                                                           *
*       w[2*nx]:    Pointer to vector of Q.31 FFT coefficients of size      *
*                   2*nx elements.                                          *
*                                                                           *
*       nx:         Number of complex elements in vector x.                 *
*                                                                           *
*       x[2*nx]:    Pointer to input vector of size 2*nx elements.          *
*                                                                           *
*       y[2*nx]:    Pointer to output vector of size 2*nx elements.         *
*                                                                           *
*                                                                           *
*   DESCRIPTION                                                             *
*                                                                           *
*       This code performs a Radix-4 FFT with digit reversal.  The code     *
*       uses a special ordering of twiddle factors and memory accesses      *
*       to improve performance in the presence of cache.  It operates       *
*       largely in-place, but the final digit-reversed output is written    *
*       out-of-place.                                                       *
*                                                                           *
*       This code requires a special sequence of twiddle factors stored     *
*       in Q1.31 fixed-point format.  The following C code illustrates      *
*       one way to generate the desired twiddle-factor array:               *
*                                                                           *
*       #include <math.h>                                                   *
*                                                                           *
*       #ifndef PI                                                          *
*       # define PI (3.14159265358979323846)                                *
*       #endif                                                              *
*                                                                           *
*                                                                           *
*       static int d2i(double d)                                            *
*       {                                                                   *
*          if (d >=  2147483647.0) return (int)0x7FFFFFFF;                  *
*          if (d <= -2147483648.0) return (int)0x80000000;                  *
*          return (int)d;                                                   *
*       }                                                                   *
*                                                                           *
*                                                                           *
*       int gen_twiddle_fft32x32(int *w, int n, double scale)               *
*       {                                                                   *
*           int i, j, k, s=0, t;                                            *
*                                                                           *
*           for (j = 1, k = 0; j < n >> 2; j = j << 2, s++)                 *
*           {                                                               *
*               for (i = t=0; i < n >> 2; i += j, t++)                      *
*               {                                                           *
*                  w[k +  5] = d2i(scale * cos(6.0 * PI * i / n));          *
*                  w[k +  4] = d2i(scale * sin(6.0 * PI * i / n));          *
*                                                                           *
*                  w[k +  3] = d2i(scale * cos(4.0 * PI * i / n));          *
*                  w[k +  2] = d2i(scale * sin(4.0 * PI * i / n));          *
*                                                                           *
*                  w[k +  1] = d2i(scale * cos(2.0 * PI * i / n));          *
*                  w[k +  0] = d2i(scale * sin(2.0 * PI * i / n));          *
*                                                                           *
*                                                                           *
*                  k += 6;                                                  *
*                  }                                                        *
*              }                                                            *
*                                                                           *
*           return k;                                                       *
*         }                                                                 *
*                                                                           *
*                                                                           *
*                                                                           *
*   TECHNIQUES                                                              *
*                                                                           *
*       The following C code represents an implementation of the Cooley     *
*       Tukey radix 4 DIF FFT. It accepts the inputs in normal order and    *
*       produces the outputs in digit reversed order. The natural C code    *
*       shown in this file on the other hand, accepts the inputs in nor-    *
*       mal order and produces the outputs in normal order.                 *
*                                                                           *
*       Several transformations have been applied to the original Cooley    *
*       Tukey code to produce the natural C code description shown here.    *
*       In order to understand these it would first be educational to       *
*       understand some of the issues involved in the conventional Cooley   *
*       Tukey FFT code.                                                     *
*                                                                           *
*       void radix4(int n, short x[], short wn[])                           *
*       {                                                                   *
*           int    n1,  n2,  ie,   ia1,  ia2, ia3;                          *
*           int    i0,  i1,  i2,    i3,    i, j,     k;                     *
*           short  co1, co2, co3,  si1,  si2, si3;                          *
*           short  xt0, yt0, xt1,  yt1,  xt2, yt2;                          *
*           short  xh0, xh1, xh20, xh21, xl0, xl1,xl20,xl21;                *
*                                                                           *
*           n2 = n;                                                         *
*           ie = 1;                                                         *
*           for (k = n; k > 1; k >>= 2)                                     *
*           {                                                               *
*               n1 = n2;                                                    *
*               n2 >>= 2;                                                   *
*               ia1 = 0;                                                    *
*                                                                           *
*               for (j = 0; j < n2; j++)                                    *
*               {                                                           *
*                    ia2 = ia1 + ia1;                                       *
*                    ia3 = ia2 + ia1;                                       *
*                                                                           *
*                    co1 = wn[2 * ia1    ];                                 *
*                    si1 = wn[2 * ia1 + 1];                                 *
*                    co2 = wn[2 * ia2    ];                                 *
*                    si2 = wn[2 * ia2 + 1];                                 *
*                    co3 = wn[2 * ia3    ];                                 *
*                    si3 = wn[2 * ia3 + 1];                                 *
*                    ia1 = ia1 + ie;                                        *
*                                                                           *
*                    for (i0 = j; i0< n; i0 += n1)                          *
*                    {                                                      *
*                        i1 = i0 + n2;                                      *
*                        i2 = i1 + n2;                                      *
*                        i3 = i2 + n2;                                      *
*                                                                           *
*                                                                           *
*                        xh0  = x[2 * i0    ] + x[2 * i2    ];              *
*                        xh1  = x[2 * i0 + 1] + x[2 * i2 + 1];              *
*                        xl0  = x[2 * i0    ] - x[2 * i2    ];              *
*                        xl1  = x[2 * i0 + 1] - x[2 * i2 + 1];              *
*                                                                           *
*                        xh20 = x[2 * i1    ] + x[2 * i3    ];              *
*                        xh21 = x[2 * i1 + 1] + x[2 * i3 + 1];              *
*                        xl20 = x[2 * i1    ] - x[2 * i3    ];              *
*                        xl21 = x[2 * i1 + 1] - x[2 * i3 + 1];              *
*                                                                           *
*                        x[2 * i0    ] = xh0 + xh20;                        *
*                        x[2 * i0 + 1] = xh1 + xh21;                        *
*                                                                           *
*                        xt0  = xh0 - xh20;                                 *
*                        yt0  = xh1 - xh21;                                 *
*                        xt1  = xl0 + xl21;                                 *
*                        yt2  = xl1 + xl20;                                 *
*                        xt2  = xl0 - xl21;                                 *
*                        yt1  = xl1 - xl20;                                 *
*                                                                           *
*                        x[2 * i1    ] = (xt1 * co1 + yt1 * si1) >> 15;     *
*                        x[2 * i1 + 1] = (yt1 * co1 - xt1 * si1) >> 15;     *
*                        x[2 * i2    ] = (xt0 * co2 + yt0 * si2) >> 15;     *
*                        x[2 * i2 + 1] = (yt0 * co2 - xt0 * si2) >> 15;     *
*                        x[2 * i3    ] = (xt2 * co3 + yt2 * si3) >> 15;     *
*                        x[2 * i3 + 1] = (yt2 * co3 - xt2 * si3) >> 15;     *
*                    }                                                      *
*              }                                                            *
*                                                                           *
*              ie <<= 2;                                                    *
*          }                                                                *
*      }                                                                    *
*                                                                           *
*       The conventional Cooley Tukey FFT, is written using three loops.    *
*       The outermost loop "k" cycles through the stages. There are log     *
*       N to the base 4 stages in all. The loop "j" cycles through the      *
*       groups of butterflies with different twiddle factors, loop "i"      *
*       reuses the twiddle factors for the different butterflies within     *
*       a stage. It is interesting to note the following:                   *
*                                                                           *
* ------------------------------------------------------------------------- *
*       Stage#     #Groups     # Butterflies with common     #Groups*Bflys  *
*                                twiddle factors                            *
* ------------------------------------------------------------------------- *
*        1         N/4          1                            N/4            *
*        2         N/16         4                            N/4            *
*        ..                                                                 *
*        logN      1            N/4                          N/4            *
* ------------------------------------------------------------------------- *
*                                                                           *
*       The following statements can be made based on above observations:   *
*                                                                           *
*       a) Inner loop "i0" iterates a variable number of times. In          *
*       particular the number of iterations quadruples every time from      *
*       1..N/4. Hence software pipelining a loop that iterates a variable   *
*       number of times is not profitable.                                  *
*                                                                           *
*       b) Outer loop "j" iterates a variable number of times as well.      *
*       However the number of iterations is quartered every time from       *
*       N/4 ..1. Hence the behaviour in (a) and (b) are exactly opposite    *
*       to each other.                                                      *
*                                                                           *
*       c) If the two loops "i" and "j" are colaesced together then they    *
*       will iterate for a fixed number of times namely N/4. This allows    *
*       us to combine the "i" and "j" loops into 1 loop. Optimized impl-    *
*       ementations will make use of this fact.                             *
*                                                                           *
*       In addition the Cooley Tukey FFT accesses three twiddle factors     *
*       per iteration of the inner loop, as the butterflies that re-use     *
*       twiddle factors are lumped together. This leads to accessing the    *
*       twiddle factor array at three points each sepearted by "ie". Note   *
*       that "ie" is initially 1, and is quadrupled with every iteration.   *
*       Therfore these three twiddle factors are not even contiguous in     *
*       the array.                                                          *
*                                                                           *
*       In order to vectorize the FFT, it is desirable to access twiddle    *
*       factor array using double word wide loads and fetch the twiddle     *
*       factors needed. In order to do this a modified twiddle factor       *
*       array is created, in which the factors WN/4, WN/2, W3N/4 are        *
*       arranged to be contiguous. This eliminates the seperation between   *
*       twiddle factors within a butterfly. However this implies that as    *
*       the loop is traversed from one stage to another, that we maintain   *
*       a redundant version of the twiddle factor array. Hence the size     *
*       of the twiddle factor array increases as compared to the normal     *
*       Cooley Tukey FFT.  The modified twiddle factor array is of size     *
*       "2 * N" where the conventional Cooley Tukey FFT is of size"3N/4"    *
*       where N is the number of complex points to be transformed. The      *
*       routine that generates the modified twiddle factor array was        *
*       presented earlier. With the above transformation of the FFT,        *
*       both the input data and the twiddle factor array can be accessed    *
*       using double-word wide loads to enable packed data processing.      *
*                                                                           *
*       The final stage is optimised to remove the multiplication as        *
*       w0 = 1.  This stage also performs digit reversal on the data,       *
*       so the final output is in natural order.                            *
*                                                                           *
*       The fft() code shown here performs the bulk of the computation      *
*       in place. However, because digit-reversal cannot be performed       *
*       in-place, the final result is written to a separate array, y[].     *
*                                                                           *
*       There is one slight break in the flow of packed processing that     *
*       needs to be comprehended. The real part of the complex number is    *
*       in the lower half, and the imaginary part is in the upper half.     *
*       The flow breaks in case of "xl0" and "xl1" because in this case     *
*       the real part needs to be combined with the imaginary part because  *
*       of the multiplication by "j". This requires a packed quantity like  *
*       "xl21xl20" to be rotated as "xl20xl21" so that it can be combined   *
*        using add2's and sub2's. Hence the natural version of C code       *
*       shown below is transformed using packed data processing as shown:   *

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜精品一区二区三区视频 | 国产色综合久久| 成人高清伦理免费影院在线观看| 亚洲一区二区三区四区的| 日韩精品一区二| 色悠悠久久综合| 国产一区二区三区日韩 | 久久久久久久久久久久久夜| 在线亚洲免费视频| 成人久久久精品乱码一区二区三区| 天天影视网天天综合色在线播放| 国产人久久人人人人爽| 欧美高清视频一二三区| 91小视频在线| 国产福利不卡视频| 蜜臀av性久久久久蜜臀aⅴ| 亚洲精品国久久99热| 日本一区二区在线不卡| 成人国产在线观看| 国产精品自拍av| 久久精品国产亚洲高清剧情介绍| 一级精品视频在线观看宜春院| 欧美国产一区在线| 国产亚洲综合av| 欧美xfplay| 日韩欧美色电影| 欧美一区二区三区思思人| 欧美在线|欧美| 色婷婷亚洲一区二区三区| 成人av电影在线播放| 国产乱一区二区| 久久99精品久久久| 美国av一区二区| 免费高清在线一区| 日日夜夜精品视频天天综合网| 一区二区免费在线| 一区二区三区影院| 亚洲欧美日韩国产成人精品影院| 中文字幕第一区二区| 欧美国产日韩a欧美在线观看 | 日韩三级av在线播放| 欧美日韩第一区日日骚| 欧美视频精品在线观看| 欧美色成人综合| 正在播放一区二区| 欧美一区在线视频| 日韩视频免费观看高清完整版| 欧美精品欧美精品系列| 9191成人精品久久| 欧美大白屁股肥臀xxxxxx| 日韩欧美不卡在线观看视频| 精品国产伦一区二区三区免费| 精品播放一区二区| 国产亚洲福利社区一区| 国产女主播视频一区二区| 亚洲欧洲日韩综合一区二区| 亚洲欧美一区二区三区国产精品 | 自拍偷拍亚洲激情| 亚洲伊人伊色伊影伊综合网| 香蕉av福利精品导航| 日本不卡一区二区三区高清视频| 日本视频一区二区三区| 国产资源在线一区| av电影一区二区| 欧美色图免费看| 欧美成人a视频| 欧美激情一区二区在线| 亚洲乱码国产乱码精品精可以看| 亚洲愉拍自拍另类高清精品| 麻豆国产欧美一区二区三区| 国产成人午夜视频| 91热门视频在线观看| 欧美日韩精品二区第二页| 精品噜噜噜噜久久久久久久久试看| 久久亚洲精精品中文字幕早川悠里 | 国产日韩欧美在线一区| 亚洲欧美国产高清| 麻豆精品久久精品色综合| 成人免费视频视频| 欧美日韩日日摸| 久久亚洲综合色一区二区三区| 亚洲三级小视频| 久久国产精品露脸对白| 一本久道久久综合中文字幕| 日韩视频123| 亚洲欧洲国产日韩| 视频在线在亚洲| 成人视屏免费看| 91精品国产综合久久久蜜臀粉嫩 | 欧美日韩免费一区二区三区视频| 日韩欧美一二三区| 亚洲乱码日产精品bd| 狠狠狠色丁香婷婷综合激情| 色欧美乱欧美15图片| 亚洲精品在线电影| 亚洲一区视频在线| 国产成人精品影视| 欧美精品高清视频| 亚洲欧美综合网| 久久99精品国产.久久久久 | 不卡的av电影在线观看| 日韩午夜av一区| 亚洲黄色av一区| 国产成人鲁色资源国产91色综| 欧美浪妇xxxx高跟鞋交| 亚洲欧洲精品一区二区精品久久久| 老司机精品视频在线| 在线影视一区二区三区| 国产欧美日韩久久| 久久99精品久久久久久国产越南 | 亚洲另类在线视频| 国产乱码精品一区二区三| 欧美日韩高清一区二区不卡| 国产精品久久久久久户外露出| 久久er精品视频| 欧美精品99久久久**| 亚洲电影一级黄| 在线精品视频免费播放| 国产精品电影院| 高清shemale亚洲人妖| 精品欧美黑人一区二区三区| 日韩精品欧美精品| 欧美少妇bbb| 一区二区三区日韩精品| 99国产精品久久久久久久久久久| 国产日韩欧美一区二区三区乱码| 免费观看91视频大全| 欧美一级一区二区| 日韩精品成人一区二区在线| 欧美亚洲自拍偷拍| 亚洲线精品一区二区三区| 91网站最新网址| 日韩美女精品在线| 色94色欧美sute亚洲线路一ni | 在线精品国精品国产尤物884a| 亚洲欧美另类综合偷拍| 99r国产精品| 亚洲男人的天堂av| 91免费观看国产| 亚洲美女淫视频| 欧美中文字幕一区二区三区| 亚洲精品综合在线| 在线免费不卡电影| 偷拍亚洲欧洲综合| 欧美一区二区三区在线看| 蜜桃av一区二区| 精品88久久久久88久久久| 国产精品一区二区黑丝| 国产欧美日韩麻豆91| 99综合电影在线视频| 亚洲免费三区一区二区| 日本高清不卡aⅴ免费网站| 亚洲午夜电影网| 777亚洲妇女| 久久精品国产一区二区三区免费看 | 欧美日韩国产影片| 日本在线不卡视频一二三区| 欧美成va人片在线观看| 国产精品自在欧美一区| 亚洲欧洲日韩一区二区三区| 欧美无乱码久久久免费午夜一区| 亚洲成人福利片| 精品国产一区二区三区不卡 | 欧美猛男超大videosgay| 日本伊人午夜精品| 国产欧美日韩在线看| 一道本成人在线| 青青草精品视频| 欧美激情中文字幕一区二区| 91精彩视频在线观看| 奇米精品一区二区三区四区| 亚洲国产精品成人综合色在线婷婷 | 欧美二区三区的天堂| 久草中文综合在线| 国产精品久久久久影视| 欧美日韩精品福利| 国产成人无遮挡在线视频| 亚洲一卡二卡三卡四卡五卡| 精品国产凹凸成av人导航| aaa欧美大片| 蜜桃视频免费观看一区| 国产精品久久久久久久蜜臀| 欧美日本在线视频| 国产福利91精品一区| 夜夜嗨av一区二区三区四季av| 精品日韩一区二区三区免费视频| 成人国产一区二区三区精品| 男女男精品视频| 亚洲精品高清在线| 26uuu欧美日本| 欧美视频一区二区三区四区| 国产一本一道久久香蕉| 亚洲一区影音先锋| 国产精品色哟哟网站| 91精品国产品国语在线不卡| 91麻豆国产自产在线观看| 激情国产一区二区| 亚洲成人午夜电影| 亚洲欧洲性图库| 久久精品一区蜜桃臀影院|