SFFT Documentation
Release 0.1
Jörn Schumacher
June 11, 2013
CONTENTS
1 Introduction
.
.
1.1 When Should I use the SFFT library? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
1.4 Disclaimer
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Credits .
1.5
.
Contact Information .
1.6
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Target Platform .
.
Limitations and Known Bugs
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 Installation
2.1
2.2
2.3
3 Usage
3.1
3.2
.
Prerequisites .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Compiling From Source and Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Linking against the SFFT Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
Computing Sparse DFTs .
SFFT Versions .
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 Development
4.1 Development and Benchmark Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 An Overview of the Sourcecode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 Indices and tables
3
3
3
3
3
3
4
5
5
5
6
7
7
8
11
11
12
13
i
ii
Contents:
SFFT Documentation, Release 0.1
CONTENTS
1
SFFT Documentation, Release 0.1
2
CONTENTS
CHAPTER
ONE
INTRODUCTION
The Sparse Fast Fourier Transform is a DFT algorithm specifically designed for signals with a sparse frequency
domain. This library is a high-performance C++ implementation of versions 1, 2, and 3 of the different SFFT variants.
1.1 When Should I use the SFFT library?
You should use the SFFT library when you want to compute the Discrete Fourier Transform of a signal and only a few
frequency components occur in the signal. Your signal may be noisy or not, but currently there are some limitations
for noisy signals (see Limitations and Known Bugs).
1.2 Target Platform
The SFFT library was optimized to run on modern x86 desktop CPUs with SSE support. Optionally the implementa-
tion can use the Intel IPP library, which is only available on Intel platforms.
1.3 Limitations and Known Bugs
The SFFT library features implementations of SFFT v1, v2, and v3. SFFT v1 and v2 currently only work with a few
specific input parameters. SFFT v3 cannot handle signals with noise.
There are no known bugs so far.
1.4 Disclaimer
The current SFFT implementation is in an experimental state. It is NOT intended to be used as a drop-in replacement
for the FFT library of your choice. Be prepared to find bugs. There is absolutely NO WARRANTY for the correct
functioning of this software.
1.5 Credits
The original SFFT sourcecode was developed by Haitham Hassanieh, Piotr Indyk, Dina Katabi, and Eric Price at
the Computer Science and Artifical Intelligence Lab at MIT. The original sourcecode and contact information can be
found at their website Sparse Fast Fourier Transform Website.
3
SFFT Documentation, Release 0.1
Performance optimizations were developed by Jörn Schumacher as part of his Master Thesis Project at the Computer
Science Department of ETH Zurich in 2013, under the supervision of Prof. Markus Püschel.
1.6 Contact Information
If you are interested in the theory behind the Sparse Fast Fourier Transform, contact the inventors of the SFFT, Haitham
Hassanieh, Piotr Indyk, Dina Katabi, and Eric Price, at their Sparse Fast Fourier Transform Website.
If you are interested in performance optimizations that were applied, contact Jörn Schumacher at
erns@student.ethz.ch.
jo-
4
Chapter 1.
Introduction