1The following are a number of ideas for future work that we have 2thought of, or which have been suggested to us. Let us know 3(fftw@fftw.org) if you have other proposals, or if there is something 4that you want to work on. 5 6* Implement some sort of Prime Factor algorithm (Temperton's?) (PFA is 7now used in the codelets.) 8 9* Try the Winograd blocks for the base cases. (We now use Rader's 10algorithm for prime size codelets.) 11 12* Try on-the-fly generation of twiddle factors, to save space and 13cache. (Done. However, not yet enabled in the standard distribution. 14The codelet generator is capable of generating code that either loads 15or computes the twiddle factors, and the FFTW C code supports both 16ways. We do not have enough experimental numbers to determine which 17way is faster, however) 18 19* Since we now have "strided wisdom," it would be nice to keep the 20stride into account when planning 1D transform recursively. We should 21eliminate the planner table altogether, and just use the wisdom table 22for planning. 23 24* Implement fast DCT and DST codes (cosine and sine transforms); 25equivalently, implement fast algorithms for transforms of real/even 26and real/odd data. There are two parts to this: (i) modify the 27codelet generator to output hard-coded transforms of small sizes [this 28is done], and (ii) figure out & implement a recursive framework for 29combining these codelets to achieve transforms of general lengths. 30(Once this is done, implement multi-dimensional transforms, etcetera.) 31 32* Implement a library of convolution routines, windowing, filters, 33etcetera based on FFTW. As DSP isn't our field (we are interested in 34FFTs for other reasons), this sort of thing is probably best left to 35others. Let us know if you're interested in writing such a thing, 36though, and we'll be happy to link to your site and give you feedback. 37 38* Generate multi-dimensional codelets for use in two/three-dimensional 39transforms. (i.e. implement what is sometimes called a "vector-radix" 40algorithm.) There are potential cache benefits to this. 41 42* Take advantage of the vector instructions on the Pentium-III and 43forthcoming PowerPC architectures. (Coming from the old Cray vector 44supercomputers and the horrible coding they encouraged, this seems 45suspiciously like a giant step backwards in computer architectures...) 46We'd like to see better gcc support before we do anything along these 47lines, though. 48 49* In rfftw, implement a fast O(n lg n) algorithm for prime sizes and 50large prime factors (currently, only the complex FFTW has fast 51algorithms for prime sizes). The basic problem is that we don't know 52of any such algorithm specialized for real data; suggestions and/or 53references are welcome. 54 55* In the MPI transforms, implement a parallel 1D transform for real 56data (i.e. rfftw_mpi). (Currently, there are only parallel 1D 57transforms for complex data in the MPI code.) 58 59* In the MPI transforms, implement more sophisticated (i.e. faster) 60in-place and out-of-place transpose routines for the in-process 61transposes (used as subroutines by the distributed transpose). The 62current routines are quite simplistic, although it is not clear how 63much they hurt performance. 64