diff --git a/fft.py b/fft.py index f5633a8..ba54518 100644 --- a/fft.py +++ b/fft.py @@ -22,14 +22,17 @@ def fft(f): Fp = fft( fp ) Fm.extend( Fp ) - Fout=[0]*n - for k in range(n): - km = (k%m) - val = Fm[ km ] - for q in range(1,p): - t = e ** ( j*2*pi*k*q/n ) - val += Fm[ q*m + km ] * t - Fout[k] = val + Fout = [ 0 ] * n + for u in range(m): + scratch = Fm[u::m] # u to end in strides of m + for q1 in range(p): + k = q1*m + u # indices to Fout above that became scratch + val = Fm[ u ] + for q in range(1,p): + t = e ** ( j*2*pi*k*q/n ) + #Fout[ k ] += scratch[q] * t + val += Fm[ q*m + u ] * t + Fout[ k ] = val return Fout