home *** CD-ROM | disk | FTP | other *** search
- #define mulf(x,y) (((long)(x) * (long)(y)) >> 16)
-
- extern short x[], qf[];
-
- #define init \
- register short t1,t2,t3,t4,t5,t6,tt;\
- register long lt1,lt2;
-
- #define _fft1(i) \
- x[i] >>= 1;
-
- #define _fft2(i0,i1) \
- t1 = x[i0] >> 1;\
- t2 = x[i1] >> 1;\
- tt = t1; tt += t2; x[i0] = tt;\
- t1 -= t2; x[i1] = t1;
-
- #define _fft3(i1,i3,i4) \
- t1 = x[i1] >> 1;\
- t3 = x[i3] >> 1;\
- t4 = x[i4] >> 1;\
- tt = t4; tt += t3; tt >>= 1;\
- t4 -= t3; t4 >>= 1; x[i4] = t4;\
- t3 = t1; t3 -= tt; x[i3] = t3;\
- t1 += tt; x[i1] = t1;
-
- #define _fft4(i1,i2,i3,i4,cc1) \
- t1 = x[i1] >> 2;\
- t2 = x[i2] >> 1;\
- t3 = mulf (x[i3], cc1);\
- t4 = mulf (x[i4], cc1);\
- tt = t3; t3 -= t4; t4 += tt;\
- tt = t2; tt -= t4; x[i4] = tt;\
- t2 += t4; x[i3] = -t2;\
- tt = t1; tt -= t3; x[i2] = tt;\
- t1 += t3; x[i1] = t1;
-
- #define _fft5(i1,i2,i3,i4,i5,i6,i7,i8,sm1,sp1,cc1,sm3,sp3,cc3,ind) \
- t5 = x[i7];\
- t1 = mulf (t5, sm1);\
- t6 = x[i3];\
- if (ind)\
- t6 >>= 1;\
- t5 += t6;\
- t2 = mulf (t6, sp1);\
- t5 = mulf (t5, cc1);\
- t1 += t5;\
- t2 += t5;\
- \
- t5 = x[i8];\
- t3 = mulf (t5, sm3);\
- t6 = x[i4];\
- if (ind)\
- t6 >>= 1;\
- t5 += t6;\
- t4 = mulf (t6, sp3);\
- t5 = mulf (t5, cc3);\
- t3 += t5;\
- t4 += t5;\
- \
- t5 = t3; t5 -= t1;\
- t6 = x[i2] >> 1;\
- tt = t5; tt -= t6; x[i7] = tt;\
- t5 += t6; x[i4] = t5;\
- t5 = t2; t5 += t4;\
- t6 = x[i6] >> 1;\
- tt = t5; tt -= t6; x[i3] = tt;\
- t5 += t6; x[i8] = t5;\
- t5 = t1; t5 += t3;\
- t6 = x[i1] >> 1;\
- tt = t6; tt -= t5; x[i6] = tt;\
- t5 += t6; x[i1] = t5;\
- t5 = t2; t5 -= t4;\
- t6 = x[i5] >> 1;\
- tt = t6; tt -= t5; x[i5] = tt;\
- t6 += t5; x[i2] = t6;
-
- #define _fft7(i1,i2) \
- lt1 = x[i2]; lt1 <<= 1;\
- lt1 *= lt1;\
- qf[i1] = lt1 >> 16;
-
- #define _fft8(i1,i2,i3) \
- lt1 = x[i2]; lt1 <<= 1;\
- lt1 *= lt1;\
- lt2 = x[i3]; lt2 <<= 1;\
- lt2 *= lt2;\
- lt1 += lt2; qf[i1] = lt1 >> 16;
-