for your info: ch. 11 mbe: fast fourier transforms
Subject: for your info: ch. 11 mbe: fast fourier transforms
From: Žiga Lenarčič
Date: Sun, 3 May 2009 21:47:44 +0200
> OK, great. Just for the record, I'm going to make the fft functions
> handle lists as well as arrays, and also handle a single argument
> from which real and imaginary parts are extracted. I'm guessing
> these changes will make it easier to use.
>
> I am also considering changing the name of the inverse function
> from ift to ifft, since it is the inverse of fft, not ft.
> What do you think of this name change? Another possibility is
> fft_inverse.
>
> best
>
> Robert Dodier
Hi!
My 2 euro-cents on naming matter: In general I'm in favour of naming
functions after what they do, not the underlying numerical algorithm
that does the calculation. So instead of romberg() or quad_qags() I
like to see nintegrate() or numeric_integrate() naming. I know Maxima
currently doesn't officially follow this, but I would be very glad to
see some progress into this direction.
Mathematica function names are a great example of this - there
discrete fourier transform is called Fourier[] and InverseFourier[].
For fourier transform, there are FourierTransform[] and
InverseFourierTransform[] functions. There are also FourierDCT[] and
FourierDST[] functions for discrete cosine and sine transforms.
I guess fft, though it's an algorithm name, is in engineer world
synonimus with discrete fourier transform, but mathematically fft is
just an algorithm. If we use fft, then also romberg, bisection,
levenberg and other function names make sense. This naming of
functions is common in numerical packages such as matlab, scilab,
octave - where it makes sense. But I think Maxima as a CAS should try
to avoid this.
FFT is somewhat special, because of it's synonimity with DFT in the
contex I presented earlier, but still, my propositions for names
would be:
dft() and inverse_dft() or rather
fourier() and inverse_fourier().
Though fft() and inverse_fft() are not so critical as some other
names of Maxima functions... but that's just my 2 euro-cents :)
As for the other part - fft working on lists - that's GREAT! Last
time I was looking at dft in Maxima, and found fft, but it's
requirement for arrays turned me off. Arrays are very convoluted to
use in Maxima, never really got round to really using them. Since
Maxima supports complex numbers it's somewhat backward to have to
supply 2 arrays (kind of C-like) with real and imaginary parts (I
know that it's because algorithm is written to operate on two
arrays :) ). I'm looking forward to fft working on lists.
Regards,
Ziga