Idiomatic FFT(W) Wrapper

John Colvin via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Jul 13 08:37:56 PDT 2017


On Thursday, 13 July 2017 at 12:49:40 UTC, Per Nordlöw wrote:
> Have anybody constructed an idiomatic D wrapper for FFTW?

No, sorry, although I have used the library quite a bit in D.

> http://www.fftw.org/fftw3_doc/Tutorial.html#Tutorial
>
> I'm specifically concerned about
>
> - `RefCounted`-wrapping of the C structures `fftw_complex` and 
> `fftw_plan`

Sounds useful perhaps for fftw_plan. fftw_complex is just 
`typedef double fftw_complex[2];` so I'm not sure what you're 
getting at there.

It's worth remembering that "wisdom" is separate from (and shared 
between) plans in fftw, so constructing and destroying plans can 
be very cheap and there's often no need to have multiple owners 
of a single plan.

> - range semantics, lazy evaluation and caching of result in
>   stream-based architectures; `fftw_plan`, `fftw_execute`

The discrete fourier transform is a global algorithm that can be 
lazy in input or output, but not both. I'm pretty sure the fast 
fourier transform algorithm for DFT cannot be lazy in either. Do 
you mean creating some sort of lazy short-time-fourier-transform 
(STFT or spectrogram or whatever other name people like)? Or are 
you thinking about 1-D transforms in multi-dimensional data 
(arguably the same thing actually)?

> - slicing and scope

??

> - seamless interoperability with Mir 
> (https://github.com/libmir/mir)

This would definitely be nice to have

For most common use-cases I find fftw is dead simple to use with 
the C API though. So simple that I never even bother making 
bindings, I just declare what I need as I need it (which in a 
single application has never been more than about 10 
declarations).


More information about the Digitalmars-d-learn mailing list