mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-02 08:39:46 +02:00
71 lines
2.8 KiB
Plaintext
71 lines
2.8 KiB
Plaintext
This directory contains a public domain FFT library which was optimized
|
|
for speed on RISC processors such as the PowerPC. All ffts
|
|
use single precision floats, for double precision just use a
|
|
global search and replace to change float to double in all
|
|
source files.
|
|
Codewarrier Pro 1.0 project files are also supplied.
|
|
|
|
** Warning ** Perform rigorous testing to
|
|
your own standards before using this code.
|
|
|
|
(John Green) green_jt@vsdec.npt.nuwc.navy.mil
|
|
|
|
files:
|
|
fftTiming
|
|
Application to time complex ffts
|
|
|
|
rfftTiming
|
|
Application to time real ffts
|
|
|
|
// Directory: fft libraries
|
|
|
|
files:
|
|
|
|
fftext.c
|
|
Library of in-place fast fourier transforms. Contains forward
|
|
and inverse complex and real transforms. The real fft's expect the
|
|
frequency domain data to have the real part of the fsamp/2 bin (which
|
|
has a 0 imaginary part) to be stored in the location for the imaginary
|
|
part of the DC bin (the DC bin of real data is also strictly real.)
|
|
You must first call an initialization routine fftInit before calling
|
|
the fft computation routines ffts, iffts, rffts and riffts.
|
|
The init routines malloc the memory to store the cosine and
|
|
bit reversed counter tables as well as initializing their values.
|
|
|
|
fftlib.c
|
|
Lower level library of in-place fast fourier transforms. Same as fftext.c but you
|
|
need to manage the mallocs for the cosine and bit reversed tables yourself.
|
|
|
|
|
|
fft2d.c
|
|
Library of 2d and 3d complex and 2d real in-place fast fourier transforms.
|
|
The init routine fft2dInit must be called before using the 2d routines and
|
|
fft3dInit must be called before using the 3d routines. These init routines
|
|
will also call the appropriate 1d init routines in fftext.c
|
|
|
|
matlib.c
|
|
Matrix transpose routines used by fft2d.c and complex vector multiply
|
|
for forming the product of two spectra.
|
|
|
|
dxpose.c
|
|
Double precision matrix transpose for quick single precision complex transposing
|
|
|
|
// Directory: timing code
|
|
This directory contains the source to fftTiming and rfftTiming
|
|
|
|
// Directory: Numerical Recipes testing
|
|
This directory contains files used to test the various fft routines using
|
|
the Numerical Recipes in C routines as a baseline. These routines can be purchased
|
|
in PeeCee (after expanding you can move them to a Mac) format from:
|
|
http://cfata2.harvard.edu/numerical-recipes/
|
|
Unfortunately Numerical Recipes defines its forward and inverse fft's backwards.
|
|
For complex fft's I just use their inverse fft as a forward one, but for real ffts
|
|
their forward fft followed by my inverse fft reverses the data. They also have ugly matrix
|
|
and tensor data types and start their indices with one, Fortran style, but these are
|
|
minor annoyances.
|
|
|
|
// Directory: Matlab testing
|
|
This directory contains files to test fast 1d and 2d convolution with Matlab used to
|
|
verify the results. An example of using Matlab to test the fft library routines is
|
|
also given for the 2d real fft.
|