c@174: #include "kiss_fftr.h" c@174: #include "_kiss_fft_guts.h" c@174: #include c@174: #include c@174: #include c@174: c@174: static double cputime(void) c@174: { c@174: struct tms t; c@174: times(&t); c@174: return (double)(t.tms_utime + t.tms_stime)/ sysconf(_SC_CLK_TCK) ; c@174: } c@174: c@174: static c@174: kiss_fft_scalar rand_scalar(void) c@174: { c@174: #ifdef USE_SIMD c@174: return _mm_set1_ps(rand()-RAND_MAX/2); c@174: #else c@174: kiss_fft_scalar s = (kiss_fft_scalar)(rand() -RAND_MAX/2); c@174: return s/2; c@174: #endif c@174: } c@174: c@174: static c@174: double snr_compare( kiss_fft_cpx * vec1,kiss_fft_cpx * vec2, int n) c@174: { c@174: int k; c@174: double sigpow=1e-10,noisepow=1e-10,err,snr,scale=0; c@174: c@174: #ifdef USE_SIMD c@174: float *fv1 = (float*)vec1; c@174: float *fv2 = (float*)vec2; c@174: for (k=0;k<8*n;++k) { c@174: sigpow += *fv1 * *fv1; c@174: err = *fv1 - *fv2; c@174: noisepow += err*err; c@174: ++fv1; c@174: ++fv2; c@174: } c@174: #else c@174: for (k=0;k1) c@174: nfft = atoi(argv[1]); c@174: kiss_fft_cpx cin[nfft]; c@174: kiss_fft_cpx cout[nfft]; c@174: kiss_fft_cpx sout[nfft]; c@174: kiss_fft_cfg kiss_fft_state; c@174: kiss_fftr_cfg kiss_fftr_state; c@174: c@174: kiss_fft_scalar rin[nfft+2]; c@174: kiss_fft_scalar rout[nfft+2]; c@174: kiss_fft_scalar zero; c@174: memset(&zero,0,sizeof(zero) ); // ugly way of setting short,int,float,double, or __m128 to zero c@174: c@174: srand(time(0)); c@174: c@174: for (i=0;i