/gosfft

Simple FFT library for multidimensional FFTs in Go

Primary LanguageGoMozilla Public License 2.0MPL-2.0

gosfft

Build status Coverage Status Go Report Card

Simple FFT (SFFT) is a simple FFT library that is based on Gonum's FFT routine. It implements a simple interface for 1D, 2D and 3D transforms.

Examples

Below is a selection of examples whoen

Fourier transform of a square pulse

Signal 1D Fourier Transform

Fourier transform of a square

Signal 2D Fourier Transform

Fourier transform of a 3D cube

Parallelization

GOSFFT implements parallel versions of the multidimensional FFTs. In the following testcase a 2D 128 x 128 matrix is Fourier Transformed. The following results where obtained (Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz)

Number of workers Execution time per FFT
1 1.34 ms
2 0.85 ms
4 0.67 ms
8 0.45 ms

The testcase runs a similar test in 3D for 128 x 128 x 128 dataset. The timing results are shown below

Number of workers Execution time per FFT
1 280 ms
2 146 ms
4 87 ms
8 68 ms