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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? radix4fft.c

?? FFT算法c程序for ARM
?? C
字號:
/* radix4fft.c   Fast routines to do mixed radix-4/5 DIF FFTs. Supported sizes   include 20, 64 and 80 complex points.   Optimized for ARM. If possible compile with -fomit-frame-pointer ,    as this gives the compiler another register to work with.   Created: 20001212, JDB.   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   Copyright (C)2001 Jan-Derk Bakker, jdb@lartmaker.nl*/#include <stdio.h>#include <stdlib.h>#include <math.h>#include <assert.h>#include "fft.h"#include "bflymacro.h"#include "shuffletab.h"/* Static functions */static void twiddle(struct complex *tw, int N, double f_t);static void reorder_generic(fixpoint *io, unsigned char *shuffletab);static void fft64(fixpoint *io);static void fft64_rev(fixpoint *io);static void fft5_inittab(fixpoint *B, double scale);static void fft4_inittab(fixpoint *twtab, int numPoints);static void fft20(fixpoint *io, fixpoint *twtab, int numIters);static void fft80(fixpoint *io, fixpoint *twtab);static void dofft64(fixpoint *io);static void dofft20(fixpoint *io);static void dofft80(fixpoint *io);/* Static twiddle/multiplication tables */static fixpoint fft5_B_20[6];static fixpoint fft5_B_80[6];#define TWTAB_SIZE(x) (((x) / 4) * 3 * 2)static fixpoint tw_fft80[TWTAB_SIZE(80)];static fixpoint tw_fft20[TWTAB_SIZE(20)];static fixpoint tw_fft4[TWTAB_SIZE(4)];static fixpoint tw_fft16[TWTAB_SIZE(16)];static fixpoint tw_fft64[TWTAB_SIZE(64)];void InitFFTTables(void) {  fft5_inittab(fft5_B_20, 1);  fft5_inittab(fft5_B_80, 0.5);  fft4_inittab(tw_fft80, 80);  fft4_inittab(tw_fft20, 20);  fft4_inittab(tw_fft4, 4);  fft4_inittab(tw_fft16, 16);  fft4_inittab(tw_fft64, 64);} /* InitFFTTables */void DoFFT(struct complex *io, int numPoints) {  switch(numPoints) {  case 20:    dofft20((fixpoint *) io);    break;  case 64:    dofft64((fixpoint *) io);    break;  case 80:    dofft80((fixpoint *) io);    break;  default:    fprintf(stderr, "FFT size %d not implemented.\n", numPoints);    exit(2);  }} /* DoFFT */static void twiddle(struct complex *tw, int N, double f_t) {#if (EXP >= 31)  double val;  val = cos(2 * M_PI * f_t / N);  if(val > (1.0 - FIXP_EPSILON))    val = 1.0 - FIXP_EPSILON;  if(val < -1.0)    val = -1.0;  tw->r = DOUBLE2FIX(val);  val = -sin(2 * M_PI * f_t / N);  if(val > (1.0 - FIXP_EPSILON))    val = 1.0 - FIXP_EPSILON;  if(val < -1.0)    val = -1.0;  tw->i = DOUBLE2FIX(val);#else  tw->r = DOUBLE2FIX(cos(2 * M_PI * f_t / N));  tw->i = DOUBLE2FIX(-sin(2 * M_PI * f_t / N));#endif  } /* twiddle */static void reorder_generic(fixpoint *io, unsigned char *shuffletab) {#if 1  fixpoint ping_r, ping_i, pong_r, pong_i;  fixpoint *base_r = io, *base_i = io + 1;  int curfix = *shuffletab;  ping_r = base_r[2 * curfix];  ping_i = base_i[2 * curfix];  do {    pong_r = base_r[2 * curfix];    pong_i = base_i[2 * curfix];    base_r[2 * curfix] = ping_r;    base_i[2 * curfix] = ping_i;    curfix = *shuffletab++;    ping_r = base_r[2 * curfix];    ping_i = base_i[2 * curfix];    base_r[2 * curfix] = pong_r;    base_i[2 * curfix] = pong_i;    curfix = *shuffletab++;  } while(curfix != 0);#endif} /* reorder_generic */ static void fft4_gen_size(fixpoint *io, int numPoints) {/* Generic radix-4 FFT optimized for size. Good when you're low on cache;    not very fast though */  register fixpoint r0, r1, r2, r3, r4, r5, r6, r7;  register fixpoint_accu accu;  register fixpoint *twtab;  fixpoint *twtabs[3] = { tw_fft4, tw_fft16, tw_fft64 };  int numIters = 1, iter, numBlocks, block, numBflys, bfly;  int stride, offset, base;  while((1 << (2 * numIters)) < numPoints)    numIters++;  for(iter = 0; iter < numIters; iter++) {    numBlocks = 1 << (2 * iter);    numBflys = (numPoints / 4) / numBlocks;    stride = numBflys;    for(block = 0; block < numBlocks; block++) {      offset = 4 * block * numBflys;      twtab = twtabs[numIters - 1 - iter];      for(bfly = 0; bfly < numBflys; bfly++) {	    base = offset + bfly;#if 0	    printf("Butterfly lvl %d (%2d, %2d, %2d, %2d)\tmul ", iter, 	           base, base + stride, base + 2*stride, base + 3*stride);	    printf("0 ");	    printf("%d %d %d ", bfly, bfly * 2, bfly * 3);	    printf("/ %d JD\n", 4 * numBflys);#endif        DIF_BFLY4(io, io, base, stride, 1, twtab);      }    }  }} /* fft4_gen_size */static void fft64(fixpoint *io) {  fixpoint *io_end, *io_orig = io;  register fixpoint r0, r1, r2, r3, r4, r5, r6, r7;  register fixpoint_accu accu;  register fixpoint *twtab;  /* Level 1 */  twtab = tw_fft64;  io -= 2;  io_end = io + 32;  do {    io += 2;    DIF_BFLY4(io, io, 0, 16, 0, twtab);  } while (io < io_end);  /* Level 2 */  twtab = tw_fft16;  io = io_orig - 2;  io_end = io + 128;  do {    io += 2;    DIF_BFLY4(io, io, 0, 4, 0, twtab);    if((io_end - io) % 8 == 0) {	      twtab -= TWTAB_SIZE(16);      io += 24;	};  } while(io < io_end);  /* Level 3 */  io = io_orig - 8;  io_end = io + 128;  do {    io += 8;    DIF_BFLY4NOMUL(io, io, 0, 1, 3);  } while (io < io_end);} /* fft64 */static void fft64_rev(fixpoint *io) {  int base;  register fixpoint r0, r1, r2, r3, r4, r5, r6, r7;  register fixpoint_accu accu;  register fixpoint *twtab;  /* Level 1 */  twtab = tw_fft16;  for(base = 0; base < 128; base += 8) {    DIF_BFLY4(io, io, base, 1, 0, twtab);  }  /* Level 2 */  twtab = tw_fft64;  for(base = 0; base < 128; base += 2) {    DIF_BFLY4(io, io, base, 4, 0, twtab);    if((base & 6) == 6) {      base += 24;    }  }  /* Level 3 */  for(base = 0; base < 32; base += 2) {    DIF_BFLY4NOMUL(io, io, base, 16, 3);  }} /* fft64_rev */static void dofft64(fixpoint *io) {  fft64(io);  reorder_generic((fixpoint *)io, fft64shuf);} /* dofft64 */#define THETA (2.0 * M_PI / 5.0)#define F5SCALE (2.0 / sqrt(5))static void fft5_inittab(fixpoint *B, double scale) {  B[0] = DOUBLE2FIX(1.0 * F5SCALE * scale);  B[1] = DOUBLE2FIX((0.5 * (cos(THETA) + cos(2 * THETA)) - 1) * F5SCALE * scale);  B[2] = DOUBLE2FIX((0.5 * (cos(THETA) - cos(2 * THETA))) * F5SCALE * scale);  B[3] = DOUBLE2FIX(sin(THETA) * F5SCALE * scale);  B[4] = DOUBLE2FIX((sin(THETA) + sin(2 * THETA)) * F5SCALE * scale);  B[5] = DOUBLE2FIX((sin(2 * THETA) - sin(THETA)) * F5SCALE * scale);} /* fft5_inittab */static void fft5(fixpoint *io, fixpoint *B, int numIters) {  /* Do a 5-point FFT on the input data */  register fixpoint r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10;   do {    DIF_BFLY5NOMUL(io, 2);  } while(--numIters > 0);} /* fft_5 */static void fft4_inittab(fixpoint *twtab, int numPoints) {  int bfly;  struct complex tw;  for(bfly = 0; bfly < numPoints / 4; bfly++) {    twiddle(&tw, numPoints, bfly);    *twtab++ = tw.r;    *twtab++ = tw.i;    twiddle(&tw, numPoints, bfly * 2);    *twtab++ = tw.r;    *twtab++ = tw.i;    twiddle(&tw, numPoints, bfly * 3);    *twtab++ = tw.r;    *twtab++ = tw.i;  }} /* fft4_inittab */static void fft20(fixpoint *io, fixpoint *twtab, int numIters) {  register fixpoint r0, r1, r2, r3, r4, r5, r6, r7;  register fixpoint_accu accu;  int i;  do {    for(i = 0; i < 10; i += 2)      DIF_BFLY4(io, io, i, 5, 0, twtab);    twtab -= TWTAB_SIZE(20);    io += 40;  } while(--numIters > 0);} /* fft20 */static void dofft20(fixpoint *io) {  fft20(io, tw_fft20, 1);  fft5(io, fft5_B_20, 4);  reorder_generic(io, fft20shuf);} /* dofft20 */static void fft80(fixpoint *io, fixpoint *twtab) {  register fixpoint r0, r1, r2, r3, r4, r5, r6, r7;  register fixpoint_accu accu;  int i;  for(i = 0; i < 40; i += 2)    DIF_BFLY4(io, io, i, 20, 0, twtab);} /* fft80 */static void dofft80(fixpoint *io) {  fft80(io, tw_fft80);  fft20(io, tw_fft20, 4);  fft5(io, fft5_B_80, 16);  reorder_generic(io, fft80shuf);} /* dofft80 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲欧洲997久久综合| 欧美探花视频资源| 国产三级一区二区| 成人激情小说网站| 亚洲三级免费电影| 91在线免费视频观看| 亚洲免费资源在线播放| 欧美日韩1234| 麻豆精品视频在线观看免费| 精品美女一区二区| 丁香天五香天堂综合| 国产精品美女久久久久久久久久久 | 尤物av一区二区| 在线日韩av片| 国模冰冰炮一区二区| 国产日韩欧美精品综合| 99精品国产热久久91蜜凸| 亚洲一区二区视频在线| 精品噜噜噜噜久久久久久久久试看| 激情综合亚洲精品| 亚洲精品国产第一综合99久久 | 久久精品无码一区二区三区| 成人黄色小视频| 亚洲成人免费观看| 国产亚洲婷婷免费| 欧美日韩不卡一区| 成人在线一区二区三区| 爽好久久久欧美精品| 国产午夜精品福利| 欧美午夜精品电影| 国产福利一区二区三区视频| 一区二区三区视频在线看| 欧美一区午夜精品| 99精品桃花视频在线观看| 日韩va亚洲va欧美va久久| 国产精品久久久久久一区二区三区| 欧美日产国产精品| 成人av免费在线观看| 日日摸夜夜添夜夜添亚洲女人| 久久影音资源网| 欧美日韩高清一区二区| av一本久道久久综合久久鬼色| 无码av中文一区二区三区桃花岛| 中文字幕在线视频一区| 日韩一区二区在线观看视频播放| 99久久婷婷国产综合精品电影| 久久97超碰国产精品超碰| 一区二区三区视频在线看| 国产无一区二区| 日韩欧美一区在线| 91福利小视频| 一本大道久久a久久精二百| 国内成人精品2018免费看| 天堂成人免费av电影一区| 综合久久给合久久狠狠狠97色| 2023国产精品自拍| 欧美久久久久久久久中文字幕| 色欲综合视频天天天| 国产成人免费视频网站 | 亚洲免费视频中文字幕| 中文字幕精品在线不卡| 精品少妇一区二区| 91精品国产综合久久国产大片 | 在线成人午夜影院| 欧美日韩国产在线播放网站| 99久久99久久精品免费看蜜桃| 成人中文字幕电影| 成人一区二区三区视频 | 亚洲欧美另类小说| 国产精品美女一区二区在线观看| 久久精品欧美一区二区三区麻豆| 欧美成人aa大片| 久久亚洲春色中文字幕久久久| 日韩一级黄色大片| 精品日韩av一区二区| 日韩视频中午一区| 久久先锋影音av| 久久婷婷综合激情| 国产欧美日韩三级| 国产精品九色蝌蚪自拍| 国产精品看片你懂得| 国产精品盗摄一区二区三区| 中文字幕免费不卡| 亚洲少妇屁股交4| 亚洲一区二区三区自拍| 亚洲成人动漫在线免费观看| 五月综合激情日本mⅴ| 蜜臀精品一区二区三区在线观看 | k8久久久一区二区三区 | 日本欧美一区二区三区| 久久国产精品99久久人人澡| 久久99精品国产91久久来源| 国产老妇另类xxxxx| 成人精品视频一区二区三区尤物| 99麻豆久久久国产精品免费| 91福利国产成人精品照片| 欧美男女性生活在线直播观看| 欧美一区二区三区视频免费播放 | 成熟亚洲日本毛茸茸凸凹| 99久久er热在这里只有精品66| 欧美性受xxxx| 精品毛片乱码1区2区3区| 国产精品国产三级国产专播品爱网| 最新国产成人在线观看| 亚洲一区二区三区自拍| 久久 天天综合| 91麻豆国产自产在线观看| 欧美日韩精品二区第二页| 欧美一卡2卡3卡4卡| 国产欧美日韩激情| 亚洲bt欧美bt精品777| 久久99久久99精品免视看婷婷 | 亚洲123区在线观看| 精品一区二区三区日韩| 99久久精品免费看国产| 中文字幕日韩av资源站| 亚洲成在人线免费| 国产成人午夜视频| 精品视频一区三区九区| 久久网站最新地址| 亚洲国产乱码最新视频 | 高清在线观看日韩| 欧美人与z0zoxxxx视频| 中文字幕巨乱亚洲| 秋霞国产午夜精品免费视频| 99v久久综合狠狠综合久久| 日韩一级大片在线| 亚洲国产你懂的| 成人激情av网| 久久婷婷色综合| 亚洲va欧美va人人爽| 成人午夜激情视频| 亚洲精品在线观看网站| 亚洲电影你懂得| 9人人澡人人爽人人精品| 日韩欧美中文字幕一区| 一级女性全黄久久生活片免费| 国产成人精品三级| 91精品久久久久久蜜臀| 亚洲激情图片一区| 国产成人精品1024| 久久这里只精品最新地址| 日韩va欧美va亚洲va久久| 色婷婷精品大视频在线蜜桃视频 | 91精品国产综合久久蜜臀| 亚洲情趣在线观看| 成人网男人的天堂| 国产亚洲午夜高清国产拍精品| 美脚の诱脚舐め脚责91| 欧美亚洲综合久久| 亚洲精品国产成人久久av盗摄| 国产精品一级片| 精品国产乱码久久| 蜜臀精品久久久久久蜜臀| 欧美精品日日鲁夜夜添| 亚洲一区二区视频在线观看| 色综合久久久久综合99| 成人欧美一区二区三区| 成人免费视频一区| 国产精品蜜臀av| 99久久免费视频.com| 亚洲欧洲成人精品av97| gogo大胆日本视频一区| 国产精品久久久久7777按摩| fc2成人免费人成在线观看播放| 国产日韩欧美制服另类| 国产精品小仙女| 日本一区二区在线不卡| 成人网页在线观看| 成人欧美一区二区三区白人 | 国产精品传媒在线| 99国产麻豆精品| 亚洲欧美日韩在线不卡| 一本一道久久a久久精品| 一区二区三区在线免费视频 | 色综合婷婷久久| 一区av在线播放| 欧美一级二级三级乱码| 蜜桃视频在线观看一区二区| 欧美成人a视频| 成人免费视频播放| 亚洲欧美日韩国产成人精品影院 | 国产99久久久国产精品| 日本一区二区综合亚洲| 91一区二区在线观看| 亚洲国产综合91精品麻豆| 欧美日韩久久久一区| 九一久久久久久| 国产拍欧美日韩视频二区| 99久久精品国产网站| 亚洲成人av在线电影| 日韩视频免费直播| 国产寡妇亲子伦一区二区| 国产精品久久影院| 欧美人体做爰大胆视频| 国产一区二区三区不卡在线观看| 国产精品美女www爽爽爽| 色狠狠一区二区三区香蕉| 免费不卡在线观看| 亚洲天堂精品在线观看|