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

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

?? kiss_fftr.c

?? 混合基FFT算法的C語言實(shí)現(xiàn)
?? C
字號:
/*
Copyright (c) 2003-2004, Mark Borgerding

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
    * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include "kiss_fftr.h"
#include "_kiss_fft_guts.h"

struct kiss_fftr_state{
    kiss_fft_cfg substate;
    kiss_fft_cpx * tmpbuf;
    kiss_fft_cpx * super_twiddles;
#ifdef USE_SIMD    
    long pad;
#endif    
};

kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem)
{
    int i;
    kiss_fftr_cfg st = NULL;
    size_t subsize, memneeded;

    if (nfft & 1) {
        speex_warning("Real FFT optimization must be even.\n");
        return NULL;
    }
    nfft >>= 1;

    kiss_fft_alloc (nfft, inverse_fft, NULL, &subsize);
    memneeded = sizeof(struct kiss_fftr_state) + subsize + sizeof(kiss_fft_cpx) * ( nfft * 2);

    if (lenmem == NULL) {
        st = (kiss_fftr_cfg) KISS_FFT_MALLOC (memneeded);
    } else {
        if (*lenmem >= memneeded)
            st = (kiss_fftr_cfg) mem;
        *lenmem = memneeded;
    }
    if (!st)
        return NULL;

    st->substate = (kiss_fft_cfg) (st + 1); /*just beyond kiss_fftr_state struct */
    st->tmpbuf = (kiss_fft_cpx *) (((char *) st->substate) + subsize);
    st->super_twiddles = st->tmpbuf + nfft;
    kiss_fft_alloc(nfft, inverse_fft, st->substate, &subsize);

    for (i = 0; i < nfft; ++i) {
        double phase =
            -3.14159265358979323846264338327 * ((double) i / nfft + .5);
        if (inverse_fft)
            phase *= -1;
        kf_cexp (st->super_twiddles+i,phase);
    }
    return st;
}

void kiss_fftr(kiss_fftr_cfg st,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata)
{
    /* input buffer timedata is stored row-wise */
    int k,ncfft;
    kiss_fft_cpx fpnk,fpk,f1k,f2k,tw,tdc;

    if ( st->substate->inverse) {
        speex_warning("kiss fft usage error: improper alloc\n");
        exit(1);
    }

    ncfft = st->substate->nfft;

    /*perform the parallel fft of two real signals packed in real,imag*/
    kiss_fft( st->substate , (const kiss_fft_cpx*)timedata, st->tmpbuf );
    /* The real part of the DC element of the frequency spectrum in st->tmpbuf
     * contains the sum of the even-numbered elements of the input time sequence
     * The imag part is the sum of the odd-numbered elements
     *
     * The sum of tdc.r and tdc.i is the sum of the input time sequence. 
     *      yielding DC of input time sequence
     * The difference of tdc.r - tdc.i is the sum of the input (dot product) [1,-1,1,-1... 
     *      yielding Nyquist bin of input time sequence
     */
 
    tdc.r = st->tmpbuf[0].r;
    tdc.i = st->tmpbuf[0].i;
    C_FIXDIV(tdc,2);
    CHECK_OVERFLOW_OP(tdc.r ,+, tdc.i);
    CHECK_OVERFLOW_OP(tdc.r ,-, tdc.i);
    freqdata[0].r = tdc.r + tdc.i;
    freqdata[ncfft].r = tdc.r - tdc.i;
#ifdef USE_SIMD    
    freqdata[ncfft].i = freqdata[0].i = _mm_set1_ps(0);
#else
    freqdata[ncfft].i = freqdata[0].i = 0;
#endif

    for ( k=1;k <= ncfft/2 ; ++k ) {
        fpk    = st->tmpbuf[k]; 
        fpnk.r =   st->tmpbuf[ncfft-k].r;
        fpnk.i = - st->tmpbuf[ncfft-k].i;
        C_FIXDIV(fpk,2);
        C_FIXDIV(fpnk,2);

        C_ADD( f1k, fpk , fpnk );
        C_SUB( f2k, fpk , fpnk );
        C_MUL( tw , f2k , st->super_twiddles[k]);

        freqdata[k].r = HALF_OF(f1k.r + tw.r);
        freqdata[k].i = HALF_OF(f1k.i + tw.i);
        freqdata[ncfft-k].r = HALF_OF(f1k.r - tw.r);
        freqdata[ncfft-k].i = HALF_OF(tw.i - f1k.i);
    }
}

void kiss_fftri(kiss_fftr_cfg st,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata)
{
    /* input buffer timedata is stored row-wise */
    int k, ncfft;

    if (st->substate->inverse == 0) {
        speex_warning ("kiss fft usage error: improper alloc\n");
        exit (1);
    }

    ncfft = st->substate->nfft;

    st->tmpbuf[0].r = freqdata[0].r + freqdata[ncfft].r;
    st->tmpbuf[0].i = freqdata[0].r - freqdata[ncfft].r;
    /*C_FIXDIV(st->tmpbuf[0],2);*/

    for (k = 1; k <= ncfft / 2; ++k) {
        kiss_fft_cpx fk, fnkc, fek, fok, tmp;
        fk = freqdata[k];
        fnkc.r = freqdata[ncfft - k].r;
        fnkc.i = -freqdata[ncfft - k].i;
        /*C_FIXDIV( fk , 2 );
        C_FIXDIV( fnkc , 2 );*/

        C_ADD (fek, fk, fnkc);
        C_SUB (tmp, fk, fnkc);
        C_MUL (fok, tmp, st->super_twiddles[k]);
        C_ADD (st->tmpbuf[k],     fek, fok);
        C_SUB (st->tmpbuf[ncfft - k], fek, fok);
#ifdef USE_SIMD        
        st->tmpbuf[ncfft - k].i *= _mm_set1_ps(-1.0);
#else
        st->tmpbuf[ncfft - k].i *= -1;
#endif
    }
    kiss_fft (st->substate, st->tmpbuf, (kiss_fft_cpx *) timedata);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91婷婷韩国欧美一区二区| 亚洲欧洲国产日韩| 人禽交欧美网站| 欧美电影影音先锋| 免费在线观看视频一区| 欧美videos中文字幕| 国产精品99久久久久久有的能看| 久久久久久久久久久久久久久99 | 成人av在线播放网址| 中文字幕一区二区视频| 色猫猫国产区一区二在线视频| 亚洲一区二区在线播放相泽| 91精品免费在线观看| 国内精品视频一区二区三区八戒 | 99国产精品久久久久久久久久| 亚洲三级免费电影| 欧美老肥妇做.爰bbww| 韩日欧美一区二区三区| **欧美大码日韩| 欧美日韩激情在线| 国产成人精品免费看| 亚洲精品菠萝久久久久久久| 欧美一区二区三区男人的天堂| 国产一区二区不卡老阿姨| 亚洲黄色免费网站| 精品国产制服丝袜高跟| 成人高清av在线| 日韩不卡一二三区| 国产精品美女久久久久久久 | 精品久久久久久最新网址| eeuss鲁一区二区三区| 日韩成人免费看| 自拍偷拍国产精品| 久久综合视频网| 在线影院国内精品| 国产成人亚洲精品狼色在线| 亚洲成人精品一区| 亚洲欧美自拍偷拍色图| 日韩欧美你懂的| 欧美亚洲自拍偷拍| 国产suv一区二区三区88区| 亚洲一区二区三区四区在线观看| 精品日韩欧美在线| 欧美日韩一区二区不卡| 99久久精品情趣| 国产美女精品在线| 麻豆精品视频在线观看视频| 亚洲卡通动漫在线| 亚洲国产精品精华液ab| 日韩欧美123| 欧美精选午夜久久久乱码6080| 成人免费va视频| 国产精品综合久久| 久久爱www久久做| 日韩一区欧美二区| 午夜日韩在线观看| 九九九久久久精品| 香蕉加勒比综合久久| 一区二区三区在线影院| **欧美大码日韩| 国产日韩欧美不卡在线| 精品粉嫩超白一线天av| 91精品国产入口| 欧美日产国产精品| 欧美日韩一区成人| 欧美精选在线播放| 欧美电影一区二区| 欧美一级夜夜爽| 欧美变态tickling挠脚心| 91.com视频| 欧美区视频在线观看| 欧美日韩免费一区二区三区视频| 欧洲国内综合视频| 欧美人与z0zoxxxx视频| 欧美三电影在线| 欧美性受xxxx黑人xyx性爽| 在线视频一区二区三区| 色婷婷av一区二区三区之一色屋| 在线观看亚洲成人| 在线观看视频91| 欧美色图一区二区三区| 欧美猛男超大videosgay| 欧美丰满美乳xxx高潮www| 91精品视频网| 欧美挠脚心视频网站| 51精品久久久久久久蜜臀| 日韩一级大片在线| 欧美白人最猛性xxxxx69交| 精品福利在线导航| 国产女人aaa级久久久级| 中文字幕中文字幕一区| 亚洲乱码中文字幕综合| 亚洲国产精品精华液网站| 午夜久久福利影院| 国产原创一区二区三区| 成人一级视频在线观看| 91麻豆精东视频| 欧美精品99久久久**| 亚洲精品一区二区精华| 亚洲国产成人自拍| 亚洲一区在线电影| 美日韩一区二区三区| 国产精品系列在线播放| 色88888久久久久久影院按摩 | 欧美不卡123| 欧美国产激情二区三区| 亚洲精品国产第一综合99久久 | 国产99久久久国产精品免费看| 成人国产精品免费观看视频| 欧美综合天天夜夜久久| 日韩三级视频在线看| 国产欧美日韩激情| 亚洲一二三区视频在线观看| 久久99国产精品久久99果冻传媒| 国产91高潮流白浆在线麻豆| 欧美性猛交xxxx黑人交| 精品国产免费人成电影在线观看四季 | 一区二区三区不卡视频| 麻豆国产91在线播放| 91在线云播放| 精品国产一区二区三区av性色| 国产精品久久久久影视| 日本伊人午夜精品| 91在线丨porny丨国产| 欧美一区二区视频在线观看2022| 欧美国产一区二区在线观看| 亚洲自拍偷拍九九九| 国产91在线观看丝袜| 欧美久久一区二区| 国产精品美女久久久久久久 | 丁香啪啪综合成人亚洲小说| 在线不卡免费av| 国产真实乱对白精彩久久| 日本一区二区免费在线| 午夜精品福利一区二区三区蜜桃| 国产在线一区二区| 欧美日韩一二三| 国产精品电影院| 国产一区二区三区久久悠悠色av| 欧美日韩精品是欧美日韩精品| 中文子幕无线码一区tr| 开心九九激情九九欧美日韩精美视频电影| 色欲综合视频天天天| 久久久综合视频| 日本aⅴ免费视频一区二区三区| 91日韩一区二区三区| 欧美激情在线一区二区三区| 男人操女人的视频在线观看欧美| 欧美性感一类影片在线播放| 中文字幕中文字幕一区二区 | 国产精品69毛片高清亚洲| 欧美美女黄视频| 亚洲最新在线观看| 一本大道av一区二区在线播放| 国产精品毛片久久久久久久| 九九九久久久精品| 日韩欧美国产精品一区| 日韩高清一区在线| 欧美久久久久久久久| 天天综合网天天综合色| 91成人国产精品| 亚洲伊人伊色伊影伊综合网| 色婷婷狠狠综合| 亚洲蜜臀av乱码久久精品| 91看片淫黄大片一级在线观看| 国产精品免费丝袜| av资源站一区| 成人欧美一区二区三区| 精品国偷自产国产一区| 久久精品国产亚洲aⅴ| 欧美电影免费观看高清完整版在线 | 免费观看成人鲁鲁鲁鲁鲁视频| 91精品在线观看入口| 99久久伊人精品| 天堂久久一区二区三区| 中文字幕巨乱亚洲| 在线观看视频91| 成人免费视频播放| 日日骚欧美日韩| 一区二区三区免费观看| 欧美v日韩v国产v| 欧美三级韩国三级日本三斤| av成人免费在线观看| 首页综合国产亚洲丝袜| 亚洲精品在线观看网站| 一本到高清视频免费精品| 亚洲午夜日本在线观看| 国产视频一区不卡| 欧美精品一区二区三区蜜桃视频| 91浏览器在线视频| 欧美精品第1页| 高清在线观看日韩| 国产盗摄女厕一区二区三区| zzijzzij亚洲日本少妇熟睡| 亚洲精品乱码久久久久久久久| 7777精品伊人久久久大香线蕉经典版下载| 香蕉成人啪国产精品视频综合网| 午夜久久久久久久久久一区二区| 欧美一级生活片| 色狠狠色狠狠综合|