FFT Lib?
Mike James
foo at bar.com
Mon Aug 2 02:34:05 PDT 2010
"dsimcha" <dsimcha at yahoo.com> wrote in message
news:i2umov$2esa$1 at digitalmars.com...
> == Quote from Fawzi Mohamed (fawzi at gmx.ch)'s article
>> On 29-lug-10, at 15:31, dsimcha wrote:
>> > == Quote from Fawzi Mohamed (fawzi at gmx.ch)'s article
>> >> otherwise, as I already said http://www.netlib.org/fftpack/fft.c is
>> >> public domain, has reasonable performance, and supports all sizes.
>> >> It might not be the always beautiful, but it is stable and works
>> >> well...
>> >> Fawzi
>> >
>> > Yeah, I just looked at this code. The problem is that I wouldn't do
>> > a straight,
>> > mechanical port to D, I'd D-ify the code a little while I was at it
>> > (such as
>> > making it work on generic random access ranges if it's an out of
>> > place transform,
>> > making real-only inputs vs. complex inputs DRYer with templates,
>> > etc.). Since
>> > this code seems to have been straight-up translated from FORTRAN, it
>> > scores about
>> > a -2 the readability scale, from 1 to 10. In other words, I would
>> > probably be
>> > able to translate it and make it run, but even the slightest
>> > modification would be
>> > near impossible.
>> eheh this must meant that too much fortran inured me, I did not find
>> the code too bad, I classified it as a typical numerical intensive
>> code (even rather clean where one can easily find the boundaries of
>> the arrays, and without too many goto), and templating float, using
>> slices as input seemed easy.
>
> Yes, but typical numerics intensive code is basically unreadable. I think
> D is
> about the only language that has enough high-level stuff (templates, etc.)
> to
> write readable numerics code with a nice interface, but is also efficient
> enough
> to write efficient numerics code. Unfortunately, we're basically starting
> from
> scratch because C and Fortran numerics code is so crufty and unreadable
> that it's
> really, really hard to refactor it into readable D or even put a nice
> interface on it.
>
>> But yes probably it is not the best basis to develop your own thing.
>> Ahrg fortran ruined me ;).
>> ciao
>> Fawzi
>
> I got permission from Mark Borgerding to port kissfft and have the binary
> attribution clause waived, but unfortunately this code is almost as
> difficult to
> read due to its extreme preprocessor abuse. (Basically he implements
> complex
> numbers as a struct with an imaginary and real component and a bunch of
> preprocessor macros.) Part of the preprocessor abuse is necessary for
> supporting
> fixed point FFTs. Does anyone care about these (I sure don't), or can I
> just get
> rid of them?
Fixed-point FFTs could be important if your number-crunching data that could
have been collected by, say, a microcontroller-based system with 16-bit
ADCs. Integer-only FFTs are useful.
> I'm hoping I can refactor this code into a nice D interface, but it may
> end up
> being that I have to basically start from scratch. One thing I will
> absolutely
> not do is contribute code without a proper D-style (i.e. templated, works
> with
> std.complex, etc.) interface. If I can't understand kissfft well enough
> to do
> this refactoring, then maybe I'll just start from scratch using the
> Wikipedia FFT
> article and a textbook.
More information about the Digitalmars-d
mailing list