function x=FastFourierIterative(x1)

%Iterative FFT (wesentlich schneller... etwa 2x als die rekursive)

N=length(x1);
L=round(log(N)/log(2));
x=x1(bitrevorder(1:N));
j=1;
while j<=L
    m=2^(j-1);
    d=exp(-pi*1i/m).^([0:m-1]');
    k=1;
    while k<=2^(L-j)
   
        s=(k-1)*2*m+1;
        e=k*2*m;
        r=s+(e-s+1)/2;
        y_top=x(s:(r-1));
        z=d.*x(r:e);
        x(s:e)=[y_top+z , y_top-z];
        k=k+1;
        
    end
    j=j+1;
end


end
