Scinovex
articleTop 1% cited

The Design and Implementation of FFTW3

Proceedings of the IEEE · 2005 · Vol. 93(2) · pp. 216–231
Matteo FrigoSteven G. Johnson

Abstract

FFTW is an implementation of the discrete Fourier transform (DFT) that adapts to the hardware in order to maximize performance. This paper shows that such an approach can yield an implementation that is competitive with hand-optimized libraries, and describes the software structure that makes our current FFTW3 version flexible and adaptive. We further discuss a new algorithm for real-data DFTs of prime size, a new way of implementing DFTs by means of machine-specific single-instruction, multiple-data (SIMD) instructions, and how a special-purpose compiler can derive optimized implementations of the discrete cosine and sine transforms automatically from a DFT algorithm.

Digital Filter Design and ImplementationNumerical Methods and AlgorithmsAdvancements in PLL and VCO TechnologiesCompilerComputer scienceSIMDImplementationSineDiscrete cosine transformPrime (order theory)Trigonometric functionsSoftwareDiscrete Fourier transform (general)
Citations
5,062
FWCI
201.37
field-weighted impact
References
71
Percentile
100%
vs. same field & year
Citations per year
Cited by
yambo: An ab initio tool for excited state calculations
Computer Physics Communications · 2009 · 1,180 citations
PyFAI, a versatile library for azimuthal regrouping
Journal of Physics Conference Series · 2013 · 272 citations
Roofline
Communications of the ACM · 2009 · 2,293 citations
Tinker 8: Software Tools for Molecular Design
Journal of Chemical Theory and Computation · 2018 · 1,232 citations
References
An algorithm for the machine calculation of complex Fourier series
Mathematics of Computation · 1965 · 12,024 citations
Numerical recipes in C: the art of scientific computing
Choice Reviews Online · 1993 · 17,990 citations
Introduction to Algorithms
Journal of the Operational Research Society · 1991 · 16,946 citations
Citation Network

How this paper connects to the literature. Drag to explore, click any node to open that paper.