/*FFT8MC.C - 8-POINT REAL-VALUED FFT. CALLS FFT_RL.ASM IN C3X CODE*/ #include "math.h" #define N 8 /*FFT length */ #define M 3 /*# of stages */ float data[N] = {1,1,1,1,0,0,0,0}; /*real-valued input samples*/ float real1, img1; extern void fft_rl(int, int, float *); /*generic FFT function*/ volatile int *IO_OUT = (volatile int *) 0x809802; /*starting out addr*/ main() { int loop; fft_rl(N, M, (float *)data); *IO_OUT++ = (int)(data[0]*1000); /* XR(0) */ for (loop = 1; loop < N/2; loop++) { real1 = data[loop]; img1 = data[N-loop]; *IO_OUT++ = (int)(real1*1000); /*XR(1)-XR(3) */ *IO_OUT++ = (int)(img1*1000); /*XI(1)-XI(3) */ } *IO_OUT++ = (int)(data[N/2]*1000); /* XR(4) */ for (loop = N/2+1; loop < N; loop++) { real1 = data[N-loop]; img1 = data[loop]; *IO_OUT++ = (int)(real1*1000); /*XR(5)-XR(7) */ *IO_OUT++ = (int)(img1*(-1000)); /*XI(5)-XI(7) */ } }