Boost logo

Boost :

From: Kostas Savvidis (kotika98_at_[hidden])
Date: 2021-03-30 19:34:54


> On Mar 30, 2021, at 20:01, Eduardo Quintana via Boost <boost_at_[hidden]> 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<complex<double>>(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<complex<double>> 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


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk