home *** CD-ROM | disk | FTP | other *** search
- /* fft.c */
-
-
- static void fft2(float *a, float *b, int m);
- extern int MCRevbin(int , int);
- extern void MCstepfft(float *a, float *b, int n, int span);
- extern void MCSwap(float *a, float *b);
-
-
- static void fft2(float a[], float b[], int m)
- {
- int i; /* index for permutation and, if inverse, scaling */
- int j; /* reverse binary index for permutation */
- int n; /* length of operand */
- int span; /* butterfly span distance */
- int e;
-
- e = m;
- n = 2; /* get n = 2**(m+1) */
- while (m--) n <<= 1;
-
- for (i = 0; i < n; i++) {
- if ((j = MCRevbin(i,e)) > i) MCSwap(a+j, a+i);
- b[i] = 0;
- }
- for (span = 1; span < n; span <<= 1) MCstepfft(a, b, n, span);
-
- }
-
-
-
-
-