|
Boost : |
Subject: Re: [boost] Request to contribute boost::FFT
From: Pascal Germroth (pascal_at_[hidden])
Date: 2013-06-02 17:03:00
Hi,
>>> 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.
Cheers,
-- Pascal Germroth
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk