On Mar 30, 2021, at 20:01, Eduardo Quintana via Boost wrote:
Though some work it is already done and it only needs polishing.
I went through the excercise of choosing a FFT implementation for C++ a few weeks ago.
Your project as it is on github, already carries with it five or more dependencies ( + tbb ? ):
• Boost
• FFTW
• google/benchmark
• alglib
• meson
For myself that is too much, so I could not even try your library.
Q1) Do you plan to get rid of external dependencies other than FFTW?
I ended up using FFTW++ which was painless enough.
It is written by pros (meaning: mathematicians published the algorithms in a peer-reviewed paper)
and manages the nitty-gritty of FFTW for you.
There is nothing to learn, basically, three liner usage:
auto f=array2(w,h,size_t align=64);
fft2d Forward2d=fft2d(w,h,1,f,f); // SETUP THE TRANSFORM FOR USE AND REUSE
Forward2d.fft(f, f);
Q2) What do plan offering that exceeds FFTW++ capability?
In you file fft-2d.cpp, presumably the example use, it is
vector FA;
FFT_dim<2>(FA.begin(), FA.end(), N, e);
This applies your own templated naive implementations of FFT. However,
FFTW does not wrap into this API ! You are using the plain old C interface for FFTW.
Q3) Is it really within your capabilities to implement the dispatch mechanisms necessary to wrap FFTW into such an API as that one template, FFT_dim<2>?
So three question, Q1,Q2,Q3. Thanks!
Kostas
===============
Institute of Nuclear and Particle Physics
NCSR Demokritos
http://inspirehep.net/author/profile/K.G.Savvidy.1
https://github.com/kotika/random
https://mixmax.hepforge.org