Article View: comp.dsp
Article #1263fft/dft progs wanted.
From: chris perkins
Date: Tue, 13 Oct 1992 08:23
Date: Tue, 13 Oct 1992 08:23
59 lines
1994 bytes
1994 bytes
(Continued from the previous message)
}
}
}
/* Inverse FFT */
void
c_ifft( float *buffer, int n )
{
int step;
int step2;
int index;
bit_reverse( buffer, n );
for( step = 2, step2 = 2*PI_2; step < 2*n; step *= 2, step2 /= 2 ) {
for( kk = 0, index = 0; kk < 2*PI_2; kk += step2, index++ ) {
for(ii = index, jj = index+step/2; ii < n; ii += step, jj += step) {
buffer[jj*2] = buffer[jj*2]*sines[kk+PI_2]
- buffer[jj*2+1]*sines[kk];
buffer[jj*2+1] = buffer[jj*2+1]*sines[kk+PI_2]
+ buffer[jj*2]*sines[kk];
buffer[ii*2] = buffer[ii*2] + buffer[jj*2];
buffer[jj*2] = buffer[ii*2] - 2*buffer[jj*2];
buffer[ii*2+1] = buffer[ii*2+1] + buffer[jj*2+1];
buffer[jj*2+1] = buffer[ii*2+1] - 2*buffer[jj*2+1];
}
}
}
}
/* Bit-reversed indexing */
void
bit_reverse( float *buffer, int n )
{
for( kk = 0, jj = 1; jj < n; jj++ ) {
ii = 2;
while( kk >= n/ii ) {
kk -= n/ii;
ii <<= 1;
}
kk += n/ii;
if( kk > jj ) {
temp = buffer[jj*2];
buffer[jj*2] = buffer[kk*2];
buffer[kk*2] = temp;
temp = buffer[jj*2+1];
buffer[jj*2+1] = buffer[kk*2+1];
buffer[kk*2+1] = temp;
}
}
}
---
þ DeLuxeý/386 1.25 #9629 þ Best wishes, Chris Perkins
--
Canada Remote Systems - Toronto, Ontario
World's Largest PCBOARD System - 416-629-7000/629-7044
Technical Details
Message-ID:
<1992Oct13.4381.3557@dosgate>Path:
arc1-ca.pugleaf.net!sparky!uunet!uunet.ca!unixbox!dosgate!dosgate![chris.perkins@canrem.com]Show Full Headers
Complete Article Headers
Newsgroups: comp.dsp Path: arc1-ca.pugleaf.net!sparky!uunet!uunet.ca!unixbox!dosgate!dosgate![chris.perkins@canrem.com] From: "chris perkins" <chris.perkins@canrem.com> Subject: fft/dft progs wanted. Message-ID: <1992Oct13.4381.3557@dosgate> Reply-To: "chris perkins" <chris.perkins@canrem.com> Organization: Canada Remote Systems Distribution: comp Date: 13 Oct 92 03:23:14 EST Lines: 59