diff --git a/fft.c b/fft.c index f0d495b..9d1550f 100644 --- a/fft.c +++ b/fft.c @@ -60,14 +60,11 @@ int fix_fft(fixed fr[], fixed fi[], int m, int inverse) nn = n - 1; scale = 0; + int mm = m; /* decimation in time - re-order data */ for(m=1; m<=nn; ++m) { - l = n; - do{ - l >>= 1; - }while(mr+l > nn); - mr = (mr & (l-1)) + l; + mr = FFT_bit_reverse(m, mm); if(mr <= m) continue; tr = fr[m]; @@ -119,23 +116,16 @@ int fix_fft(fixed fr[], fixed fi[], int m, int inverse) for(m=0; m>= 1; - wi >>= 1; - } + + FFT_twiddle(wr, wi, j, shift, inverse); + + FFT_reg reg; + fixed *reg_s = ((fixed*) ®); + for(i=m; i