views:

133

answers:

1

I'm looking for an FFT library to translate into the D programming language for inclusion either in a library that I'm working on or (better yet) in the standard library. I need a fairly simple FFT with decent performance, not an uber-optimized one with blazing fast performance and zero simplicity/readability. However, it must meet the following requirements:

  1. Either written in pure D or simple enough to be reasonably translatable to pure D. For example, readable C code without any inline assembler or preprocessor abuse would work. (I'm aware that you can call C from D, but I have my reasons for not wanting to.)

  2. Licensed under terms that are free/open-source, non-copyleft (i.e. not GPL) and do not require attribution for binary-only distribution (i.e. not BSD). Acceptable licenses include Boost, zlib and public domain.

  3. The code must be readable enough that I can sanely modify it to give it a nice D interface. I do not want super-optimized but unreadable Fortran code from the '70s, no matter how well it works. I also don't want C code that was translated from super-optimized Fortran code and looks like Fortran code.

Please do not suggest FFTW no matter how good it is (I understand it's very good), as it's both GPL licensed and written for performance over simplicity.

+2  A: 

Kiss FFT, by Mark Borgerding, meets your requirements except that it's BSD licensed. It may be worth your while to contact him and see if he's interested in giving you an exception for the license. There's a bit of pre-processor abuse but only to handle fixed- and floating-point data types.

mtrw
+1 for Kiss FFT
Paul R