Mentions légales du service

Skip to content
Snippets Groups Projects

befft is C library for radix 2 Fast Fourier Transform (FFT) of vectors in double precision floating points with bounded error. It implements the Cooley-Tukey FFT (see references below) for vectors of length 2^n (where n>=1 is an integer).

befft has no internal engine for computing the 2^n-th order roots of units for arbitrary n. For n<=12 roots of units are pre-computed and stored in a table. For n>=13, the 2^n-th order roots of units have to be provided to befft.

Optionally, befft can be linked with the ball arithmetic library arb (https://arblib.org/) in which cases it uses arb to compute the 2^n*-th order roots of units for n>=13.

Dependencies

By default, befft has no dependencies, but can be linked with arb to use its engine for getting roots of units.

Compilation

The library can be compiled with:

make

or

make withArb

to be linked with Arb (in which case the latter library together with its dependencies have to be installed on the system).

Source organisation

src contains the source code. The main header file is befft.h.

examples contains simple examples of use in C.

Licence

befft is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See http://www.gnu.org/licenses/.

References

befft library is based on

@article{brisebarre2020error, title={Error analysis of some operations involved in the Cooley-Tukey Fast Fourier Transform}, author={Brisebarre, Nicolas and Jolde{\c{s}}, Mioara and Muller, Jean-Michel and Nane{\c{s}}, Ana-Maria and Picot, Joris}, journal={ACM Transactions on Mathematical Software (TOMS)}, volume={46}, number={2}, pages={1--27}, year={2020}, publisher={ACM New York, NY, USA} }

and

@book{muller2018handbook, title={Handbook of floating-point arithmetic}, author={Muller, Jean-Michel and Brisebarre, Nicolas and De Dinechin, Florent and Jeannerod, Claude-Pierre and Lefevre, Vincent and Melquiond, Guillaume and Revol, Nathalie and Stehl{'e}, Damien and Torres, Serge and others}, volume={1}, year={2018}, publisher={Springer} }

Other usefull references:

@article{jeannerod2018relative, title={On relative errors of floating-point operations: optimal bounds and applications}, author={Jeannerod, Claude-Pierre and Rump, Siegfried M}, journal={Mathematics of Computation}, volume={87}, number={310}, pages={803--819}, year={2018} } (HAL link: https://hal.inria.fr/hal-00934443v2 )