Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Travis CLI


Install FFTW

Install on Linux (debian, fedora or opensuse compatible)

git clone
cd fftw

This installs to the home directory so root access is only needed to install system required libraries but not fftw3 or the fftw gem itself.

Install on OSX

Follow the instructions on installing nmatrix

git clone
cd fftw

Conventions and Style for the FFTW Gem

  • Do not repeat code.

Common names

 R       : real type, aka fftw_real
 E       : real type for local variables (possibly extra precision)
 C       : complex type
 sz      : size
 vecsz   : vector size
 is, os  : input/output stride
 ri, ii  : real/imag input (complex data)
 ro, io  : real/imag output (complex data)
 I, O    : real input/output (real data)
 A       : assert
 CK      : check
 S       : solver, defined internally to each solver file
 P       : plan, defined internally to each solver file
 k       : codelet
 X(...)  : used for mangling of external names (see below)
 K(...)  : floating-point constant, in E precision

Conventions in FFTW3

If a name is used often and must have the form fftw_foo to avoid namespace pollution, #define FOO fftw_foo and use the short name: Use foo instead.

foo is lowercase so that it does not look like a DOS program.

Exception: typedef struct foo_s {...} foo; instead of:

typedef struct foo {...} foo;

for C++ compatibility.

Donate with Pledgie