Boost logo

Boost :

Subject: Re: [boost] Request to contribute boost::FFT
From: Pascal Germroth (pascal_at_[hidden])
Date: 2013-06-02 17:03:00


>>> My code, when run as a 2048-point FFT, agrees with
>>> the MIT FFTW one to a max error margin of 6 parts
>>> per million.
>> This might be of interest: I've ported FFTW's arbitrary-precision
>> FFT to boost::multiprecision
> Which FFTs did you concentrate on, dimensions, complex, etc.?

only 1D complex (radix-2 Cooley-Tukey, Bluestein for non-power-of-2
sizes), using std::complex with the multiprecision type.

> What precisions did you use?
> Which multiprecision FP backend did you use?

static_mpfr_float_50 to check float/double FFTs (and float1000 to check
float50 has the same error behaviour, around ~1e-50).

> How was the performance?

Very good, especially compared to FFTW's original implementation.

> Where do you see the main application of your work in this area?

I use it to verify an OpenCL-FFT implementation when debugging, so
performance isn't that important.

> How was your experience with multiprecision (critical suggestions are OK)?

Straightforward, this is the first time I've used it; there was an
inconsistency between float50 and float instances because pow(value,2)
occasionally seemed to return wrong results which caused some confusion
thanks to template magic; I ended up using boost::math::pow<2>(value)
which didn't show the same problem. I think it was a problem in my code,
not a bug in boost.


Pascal Germroth

Boost list run by bdawes at, gregod at, cpdaniel at, john at