www.pudn.com > kiss_fft_v1_2_5.zip > test_real.c


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

static double cputime(void)
{
    struct tms t;
    times(&t);
    return (double)(t.tms_utime + t.tms_stime)/  sysconf(_SC_CLK_TCK) ;
}

static
kiss_fft_scalar rand_scalar(void) 
{
#ifdef USE_SIMD
    return _mm_set1_ps(rand()-RAND_MAX/2);
#else
    kiss_fft_scalar s = (kiss_fft_scalar)(rand() -RAND_MAX/2);
    return s/2;
#endif
}

static
double snr_compare( kiss_fft_cpx * vec1,kiss_fft_cpx * vec2, int n)
{
    int k;
    double sigpow=1e-10,noisepow=1e-10,err,snr,scale=0;

#ifdef USE_SIMD
    float *fv1 = (float*)vec1;
    float *fv2 = (float*)vec2;
    for (k=0;k<8*n;++k) {
        sigpow += *fv1 * *fv1;
        err = *fv1 - *fv2;
        noisepow += err*err;
        ++fv1;
        ++fv2;
    }
#else
    for (k=0;k