/*FFT.C - FFT RADIX-2 USING DIF. FOR UP TO 512 POINTS */ #include "complex.h" /*complex structure definition */ #include "twiddle.h" /*header file with twiddle constants*/ void FFT(COMPLEX *Y, int N) /*input sample array, # of points */ { COMPLEX temp1,temp2; /*temporary storage variables */ int i,j,k; /*loop counter variables */ int upper_leg, lower_leg; /*index of upper/lower butterfly leg */ int leg_diff; /*difference between upper/lower leg */ int num_stages=0; /*number of FFT stages, or iterations */ int index, step; /*index and step between twiddle factor*/ i=1; /* log(base 2) of # of points = # of stages */ do { num_stages+=1; i=i*2; } while (i!=N); leg_diff=N/2; /*starting difference between upper & lower legs*/ step=512/N; /*step between values in twiddle.h */ for (i=0;i