Jump to main content
Nonequispaced fast Fourier transform
Download

Downloads

  1. Source code
  2. Binaries of Matlab interface
  3. Binaries of Julia interface
  4. Windows DLL and Applications

Source code

Development code

Current release

  • Version nfft-3.5.3.tar.gz is available, 02 April 2022 (Added function set_num_threads to set number of threads in Matlab, Matlab interface with single precision, additional node at South Pole in NFSFT_EQUISPACED, various bugfixes. See release notes).
    Also available nfft_simple_test.tar.gz. A simple example, how to use the libary.
    Installation instructions can be found on the Installation page.
  • Version nfft-3.5.2.tar.gz is available, 25 August 2020 (Julia interface for fastsum, support for odd bandwidth in NDCT/NFST, in-place fftw for dimensions d>1, various bugfixes. See release notes).
  • Version nfft-3.5.1.tar.gz is available, 9 August 2019 (spherical Fourier transform with equidistant nodes, added Julia interface for NFST/NFCT, iNFFT via frame approach, various bugfixes, see release notes).
  • Version nfft-3.5.0.tar.gz is available, 28 January 2019 (performance improvements for NFFT, NFSFT, NFSOFT and fastsum, added Julia interface, added FPT Matlab interface, various bugfixes, see release notes).
  • Version nfft-3.4.1.tar.gz is available, 12 March 2018 (added Octave tests, added NFSFT Matlab class, various bugfixes, see release notes).
  • Version nfft-3.4.0.tar.gz is available, 21 October 2017 (added mex interfaces for NFCT/NFST/NFSOFT/fastsum, added dynamic maximal numbers of plans in mex interfaces, various bugfixes on windows, see release notes).
  • Version nfft-3.3.2.tar.gz is available, 16 October 2016 (added support for GNU Octave via MEX interface, bugfix for make check on windows, fixed issue in bessel_i0 for quadruple precision, see release notes).
  • Version nfft-3.3.1.tar.gz is available, 24 April 2016 (bugfixes for nfft, nfst, nfct, nfsft, fastsum, bspline helper function, configure script, see release notes).
  • Version nfft-3.3.0.tar.gz is available, 16 May 2015 (added multiprecision support, added CUnit tests)
  • Version nfft-3.2.4.tar.gz is available, 7 May 2015 (fixed some bugs in the functions nfct_init, nfst_init and nnfft_init of the modules NFCT, NFST and NNFFT)
  • Version nfft-3.2.3.tar.gz is available, 30 April 2013 (workaround for an internal compiler error for gcc 4.7.1, workaround for a compilation error in Matlab interface for gcc 4.7.1)
  • Version nfft-3.2.2.tar.gz is available, 15 October 2012 (fixed several problems introduced in version 3.2.1)
  • Version nfft-3.2.1.tar.gz is available, 28 August 2012 (added unit tests based on CUnit, added Matlab class matlab/nfft/nfft.m for the mex interface)
  • Version nfft-3.2.0.tar.gz is available, 13 June 2012 (added support for OpenMP, please see also ChangeLog).
  • Version nfft-3.1.3.tar.gz is available, 22 December 2009 (fixed some issues that can cause C++ compilers to fail)
  • Version nfft-3.1.2.tar.gz is available, 16 September 2009 (fixed a bug in the fpt module that lead to wrong output)
  • Version nfft-3.1.1.tar.gz is available, 17 August 2009 (workaround for an internal compiler error for gcc 4.3.2)
  • Version nfft-3.1.0.tar.gz is available, 16 March 2009 (configure recognises several --enable and --with options for different modules, by default only the nfft and the solver modules are compiled)
  • Version nfft-3.0.3.tar.gz is available, 6 February 2007 (fixed a bug in ...mri2d/precompute_weights{_2d}.m)
  • Version nfft-3.0.2.tar.gz is available, 22 January 2007 (fixed a bug in fast polynomial transform)
  • Version nfft-3.0.1.tar.gz is available, 5 December 2006 (add examples for MRI)
  • Version nfft-3.0.tar.gz is available, 2 November 2006
  • Version nfft2.0.3.tar (also available .tar.gz)
  • Homepage of Version 2

 

Matlab interface (x64 Windows/Linux/macOS) and Octave interface for Windows

 

The pre-compiled Matlab interfaces of NFFT 3.5.3 with AVX2 and OpenMP support are available:

They were compiled for 64-bit Windows using GCC 11.2.0 x86_64-w64-mingw32 with -march=haswell and Matlab R2020b Update 3, x86_64 Linux using GCC 11.2.0 with -march=haswell and Matlab R2021b, x86_64 macOS using GCC 11 with -march=haswell and Matlab R2021b Update 1. In addition, the binaries for Octave 7.1.0 on Windows are included.

Note: Since the binaries were compiled with gcc flag -march=haswell, they may not work on older CPUs (below Intel i3/i5/i7-4xxx or AMD Excavator/4th gen Bulldozer) as well as on some Intel Atom/Pentium CPUs.

For the Rosetta2 emulation on ARM M1 based Macs, we provide binaries without AVX2 support:

The modules NFFT, iNFFT (inverse NFFT), NFSFT, NNFFT, NFSOFT, FPT, Fastsum, NFCT and NFST are included.

Just extract the archive and run simple_test.m in Matlab or Octave. It was tested with Matlab 2010b or newer on Windows/Linux/macOS and with Octave 7.1.0 on Windows.

The pre-compiled Matlab interfaces of NFFT 3.5.2 with AVX2 and OpenMP support are available:

They were compiled on 64-bit Windows using GCC 9.3.0 x86_64-w64-mingw32 with -march=haswell and Matlab R2018b, x86_64 Linux using GCC 8.3.0 with -march=haswell and Matlab R2017b Update 9, x86_64 macOS using GCC 9.3.0 with -march=haswell and Matlab R2017b. In addition, the binaries for Octave 5.2.0 on Windows are included.

 

Note: Since the binaries were compiled with gcc flag -march=haswell, they may not work on older CPUs (below Intel i3/i5/i7-4xxx or AMD Excavator/4th gen Bulldozer) as well as on some Intel Atom/Pentium CPUs.

The modules NFFT, iNFFT (inverse NFFT), NFSFT, NNFFT, NFSOFT, FPT, Fastsum, NFCT and NFST are included.

Just extract the archive and run simple_test.m in Matlab or Octave. It was tested with Matlab 2017b or newer on Windows/Linux/macOS and with Octave 5.2.0 on Windows.

Julia interface for x64 Windows/Linux/macOS

The NFFT3 is now available as a Julia Package. The modules NFFT, Fastsum, NFCT and NFST are included. Installation from within Julia is straightforward:

using Pkg 
Pkg.add("NFFT3")
using NFFT3 

Furthermore, the pre-compiled Julia interfaces of NFFT 3.5.3 with AVX2 and OpenMP support are available for direct download:

They are compatible with Julia 1.0.0 or newer. They were compiled with double precision support for 64-bit Windows using GCC 11.2.0 x86_64-w64-mingw32 with -march=haswell and FFTW 3.3.10, x86_64 Linux using GCC 11.2.0 with -march=haswell and FFTW 3.3.10, x86_64 macOS using GCC 11 with -march=haswell and FFTW 3.3.10. Please note that since the binaries were compiled with gcc flag -march=haswell, they may not work on older CPUs (below Intel i3/i5/i7-4xxx or AMD Excavator/4th gen Bulldozer) as well as on some Intel Atom/Pentium CPUs.

For the Rosetta2 emulation on ARM M1 based Macs, we provide binaries without AVX2 support:

Furthermore, the pre-compiled Julia interfaces of NFFT 3.5.2 with AVX2 and OpenMP support are available for direct download:

They are compatible with Julia 1.0.0 or newer. They were compiled with double precision support for 64-bit Windows using GCC 9.3.0 x86_64-w64-mingw32 with -march=haswell and FFTW 3.3.8, x86_64 Linux using GCC 8.3.0 with -march=haswell and FFTW 3.3.8, x86_64 macOS using GCC 9.3.0 with -march=haswell and FFTW 3.3.8. Since the binaries were compiled with gcc flag -march=haswell, they may not work on older CPUs (below Intel i3/i5/i7-4xxx or AMD Excavator/4th gen Bulldozer) as well as on some Intel Atom/Pentium CPUs.

Just run simple_test*.jl within in any subdirectory.

 

We statically linked code of the FFTW library (Copyright 2003 and 2007-2014 by Matteo Frigo and Massachusetts Institute of Technology).

Windows DLL (x64) and Applications

Windows DLL

 

The pre-compiled Windows DLL of NFFT 3.5.3 with AVX2 and OpenMP support is available

The NFFT library was compiled with double precision support for 64-bit Windows using GCC 11.2.0 x86_64-w64-mingw32 with -march=haswell and FFTW 3.3.10.

 

In order to link the .dll file from Visual C++, you should run
   lib /def:libnfft3_threads-4.def

As a small example, you can compile the NFFT simple test with the following command
   gcc -O3 simple_test.c -o simple_test.exe -I. -L. libnfft3_threads-4.dll

Note: Since the binaries were compiled with gcc flag -march=haswell, they may not work on older CPUs (below Intel i3/i5/i7-4xxx or AMD Excavator/4th gen Bulldozer) as well as on some Intel Atom/Pentium CPUs.

We statically linked code of the FFTW library (Copyright 2003 and 2007-2014 by Matteo Frigo and Massachusetts Institute of Technology) and MinGW libraries into the NFFT DLL, so that the NFFT DLL only depends on Windows system libraries.
If you want to compile the NFFT library yourself, please have a look at the step-by-step Installation guide. The binaries were created with the script windows-build-dll.sh.

Applications

The applications package includes the routines fastgauss, fastsum, fastsumS2, mri, polarFFT, quadratureS2, radon.

The pre-compiled Windows DLL of NFFT 3.5.2 with AVX2 and OpenMP support is available

The NFFT library was compiled with double precision support for 64-bit Windows using GCC 9.3.0 x86_64-w64-mingw32 with -march=haswell and FFTW 3.3.8.

 

In order to link the .dll file from Visual C++, you should run
   lib /def:libnfft3_threads-4.def

As a small example, you can compile the NFFT simple test with the following command
   gcc -O3 simple_test.c -o simple_test.exe -I. -L. libnfft3_threads-4.dll

Note: Since the binaries were compiled with gcc flag -march=haswell, they may not work on older CPUs (below Intel i3/i5/i7-4xxx or AMD Excavator/4th gen Bulldozer) as well as on some Intel Atom/Pentium CPUs.

We statically linked code of the FFTW library (Copyright 2003 and 2007-2014 by Matteo Frigo and Massachusetts Institute of Technology) and MinGW libraries into the NFFT DLL, so that the NFFT DLL only depends on Windows system libraries.
If you want to compile the NFFT library yourself, please have a look at the step-by-step Installation guide. The binaries were created with the script windows-build-dll.sh.

Applications

The applications package includes the routines fastgauss, fastsum, fastsumS2, mri, polarFFT, quadratureS2, radon.

 

Windows binaries

Matlab and Octave interfaces

The Matlab and Octave interfaces of NFFT are compiled for 64-bit Windows with Intel Core2 or newer. They include the modules NFFT, iNFFT (inverse NFFT), NFSFT, NNFFT, NFSOFT, FPT, Fastsum, NFCT and NFST. If you are not sure, nfft-3.5.1-mex64-openmp is the recommended download.

Just extract the archive and run simple_test.m in Matlab or Octave. It was tested with Matlab 2013 or newer and with Octave 5.1.0.

  with multicore support OpenMP without multicore support OpenMP
Matlab / Octave nfft-3.5.1-mexw64-openmp.zip nfft-3.5.1-mexw64.zip

Julia interface

The Julia interface is compatible with Julia 1.0.0 or newer. It includes the modules NFFT, NFCT and NFST. Just run simple_test_1d.jl (this file should be in your current directory).

  with multicore support OpenMP without multicore support OpenMP
Julia nfft-3.5.1-julia-w64-openmp.zip nfft-3.5.1-julia-w64.zip

DLL libraries

The Windows DLL of NFFT is compiled for 64-bit Windows with Intel Core2 or newer.

  with multicore support OpenMP without multicore support OpenMP
64 bit nfft-3.5.1-dll64-openmp.zip nfft-3.5.1-dll64.zip

We statically linked code of the FFTW library (http://www.fftw.org, Copyright 2003 and 2007-2014 by Matteo Frigo and Massachusetts Institute of Technology) and MinGW libraries into the NFFT DLL, so that the NFFT DLL only depends on Windows system libraries.
If you want to compile the NFFT library yourself, please have a look at the step-by-step guide in the FAQ section. The binaries are created with the script windows-build-dll.sh.

Applications

The applications package includes the routines fastgauss, fastsum, fastsumS2, mri, polarFFT, quadratureS2, radon. The archive for 64-bit Windows is available nfft-3.5.1-applications-w64.zip.

NFFT 3.5.0

  with multicore support OpenMP without multicore support OpenMP
64 bit nfft-3.5.0-mexw64-openmp.zip nfft-3.5.0-mexw64.zip
32 bit nfft-3.5.0-mexw32-openmp.zip nfft-3.5.0-mexw32.zip

It is tested with Matlab 2013 or newer and with Octave 4.4.1.

The Windows DLL libraries of NFFT is available compiled for Windows with Intel Core2 or newer.

  with multicore support OpenMP without multicore support OpenMP
64 bit nfft-3.5.0-dll64-openmp.zip nfft-3.5.0-dll64.zip
32 bit nfft-3.5.0-dll32-openmp.zip nfft-3.5.0-dll32.zip

The applications package includes the routines fastgauss, fastsum, fastsumS2, mri, polarFFT, quadratureS2, radon. The archive for 64-bit Windows is available nfft-3.5.0-applications-w64.zip.

NFFT 3.4.1

The Matlab and Octave interfaces of NFFT are available compiled for Windows with Intel Core2 or newer. These interfaces include the modules NFFT, iNFFT, NFSFT, NNFFT, NFSOFT, Fastsum, NFCT and NFST.

  with multicore support OpenMP without multicore support OpenMP
64 bit nfft-3.4.1-mexw64-openmp.zip nfft-3.4.1-mexw64.zip
32 bit nfft-3.4.1-mexw32-openmp.zip nfft-3.4.1-mexw32.zip

The Windows DLL libraries of NFFT is available compiled for Windows with Intel Core2 or newer.

  with multicore support OpenMP without multicore support OpenMP
64 bit nfft-3.4.1-dll64-openmp.zip nfft-3.4.1-dll64.zip
32 bit nfft-3.4.1-dll32-openmp.zip nfft-3.4.1-dll32.zip

We statically linked code of the FFTW library (http://www.fftw.org, Copyright 2003 and 2007-2014 by Matteo Frigo and Massachusetts Institute of Technology) and MinGW libraries into the NFFT DLL, so that the NFFT DLL only depends on Windows system libraries.

The Applications package includes the routines fastgauss, fastsum, fastsumS2, mri, polarFFT, quadratureS2, radon. The archive for 64-bit Windows is available nfft-3.4.1-applications-w64.zip.

NFFT 3.4.0

The Matlab and Octave interfaces of NFFT are available compiled for Windows with Intel Core2 and SSE2 features. These interfaces include the following modules: NFFT, NFSFT, NNFFT, NFSOFT, Fastsum, NFCT and NFST.

  with multicore support OpenMP without multicore support OpenMP
64 bit matlab-nfft-3.4.0-core2-openmp.zip matlab-nfft-3.4.0-core2.zip
32 bit matlab-nfft-3.4.0-pentium4-openmp.zip matlab-nfft-3.4.0-pentium4.zip

The Windows DLL libraries of NFFT is available compiled for Windows with Intel Core2 and SSE2 features.

  with multicore support OpenMP without multicore support OpenMP
64 bit nfft-3.4.0-core2-openmp-dll64.zip nfft-3.4.0-core2-dll64.zip
32 bit nfft-3.4.0-pentium4-openmp-dll32.zip nfft-3.4.0-pentium4-dll32.zip

We statically linked code of the FFTW library (http://www.fftw.org, Copyright 2003 and 2007-2014 by Matteo Frigo and Massachusetts Institute of Technology) and MinGW libraries into the NFFT DLL, so that the NFFT DLL only depends on Windows system libraries.

NFFT 3.3.2

The Matlab interface of NFFT 3.3.2 is available compiled for Windows with Intel Core2 and SSE2 features. These interfaces include the following modules: NFFT, NFSFT and NNFFT.

  with multicore support OpenMP without multicore support OpenMP
64 bit matlab-nfft-3.3.2-core2-openmp.zip matlab-nfft-3.3.2-core2.zip
32 bit matlab-nfft-3.3.2-win32-core2-openmp.zip matlab-nfft-3.3.2-win32-core2.zip

The Windows DLL libraries of NFFT 3.3.2 is available compiled for 64-bit Windows with Intel Core2 and SSE2 features.

  with multicore support OpenMP without multicore support OpenMP
64 bit nfft-3.3.2-core2-openmp-dll64.zip nfft-3.3.2-core2-dll64.zip
32 bit nfft-3.3.2-core2-openmp-dll32.zip nfft-3.3.2-core2-dll32.zip

We statically linked code of the FFTW library (http://www.fftw.org, Copyright 2003 and 2007-2014 by Matteo Frigo and Massachusetts Institute of Technology) and MinGW libraries into the NFFT DLL, so that the NFFT DLL only depends on Windows system libraries.

The Octave interface of NFFT 3.3.2 is available compiled for Windows with Intel Core2 features. These interfaces include the following modules: NFFT, NFSFT and NNFFT. The 64 bit version is to be used with the experimental 64bit Octave binary.

  with multicore support OpenMP without multicore support OpenMP
64 bit (experimental) octave-nfft-3.3.2-core2-openmp.zip octave-nfft-3.3.2-core2.zip ᅵ
32 bit octave-nfft-3.3.2-win32-openmp.zip octave-nfft-3.3.2-win32.zip ᅵ

The applications package includes the routines fastgauss, fastsum, fastsumS2, iterS2, mri, polarFFT, quadratureS2, radon. The archive for 64-bit Windows is available, nfft-3.3.2-core2-applications.7z.

Linux binaries

Matlab and Octave interface

The Matlab and Octave interfaces of NFFT are compiled for Ubuntu 18.10 Linux (amd64) with Intel Core2 and SSE2 features. These interfaces include the following modules: NFFT, iNFFT (inverse NFFT), NFSFT, NNFFT, NFSOFT, FPT, Fastsum, NFCT and NFST. If you are not sure, nfft-3.5.1-mexa64-openmp is the most recommended download.

Just extract the archive and run simple_test.m in Matlab or Octave. It was tested with Matlab 2017b or newer and with Octave 4.4.0.

  with multicore support OpenMP without multicore support OpenMP
64 bit Linux (MATLAB R2017b or later + Octave 4.4) nfft-3.5.1-mexa64-openmp.tar.gz nfft-3.5.1-mexa64.tar.gz

We statically linked code of the FFTW library (http://www.fftw.org, Copyright 2003 and 2007-2014 by Matteo Frigo and Massachusetts Institute of Technology) into the Octave interface files as well as libgcc and libgomp libraries into the MEX files.

For Octave 5.1, we also have binaries available compiled on Ubuntu 18.04 (amd64) using the Flatpak Octave version:

  with multicore support OpenMP without multicore support OpenMP
64 bit Linux (MATLAB R2017b or later + Octave 5.1) nfft-3.5.1-mexa64-openmp-octave-5.1.tar.gz nfft-3.5.1-octave-5.1-mexa64.tar.gz

Julia interface

The Julia interface is compatible with Julia 1.0.0 or newer. It includes the modules NFFT, NFCT and NFST. Just run simple_test_1d.jl (this file should be in your current directory).

  with multicore support OpenMP without multicore support OpenMP
Julia nfft-3.5.1-julia-linux_x86_64-openmp.tar.gz nfft-3.5.1-julia-linux_x86_64.tar.gz

We statically linked code of the FFTW library (http://www.fftw.org, Copyright 2003 and 2007-2014 by Matteo Frigo and Massachusetts Institute of Technology) as well as libgcc and libgomp libraries into the Julia interface files.

MacOS binaries

Matlab and Octave interface

The Matlab and Octave interfaces of NFFT are compiled for MacOS Mojave (Intel 64-bit) with Intel Core2 and SSE2 features. These interfaces include the following modules: NFFT, iNFFT (inverse NFFT), NFSFT, NNFFT, NFSOFT, FPT, Fastsum, NFCT and NFST. If you are not sure, nfft-3.5.1-mexmaci64-openmp.zip is recommended download.

Just extract the archive and run simple_test.m in Matlab or Octave. It was tested with Matlab 2017b or newer and with Octave 5.1.0.

  with multicore support OpenMP without multicore support OpenMP
64 bit nfft-3.5.1-mexmaci64-openmp.zip nfft-3.5.1-mexmaci64.zip

We statically linked code of the FFTW library (http://www.fftw.org, Copyright 2003 and 2007-2014 by Matteo Frigo and Massachusetts Institute of Technology) into the Octave interface files as well as libgcc and libgomp libraries into the MEX files.

Julia interface

The Julia interface is compatible with Julia 1.0.0 or newer. It includes the modules NFFT, NFCT and NFST. Just run simple_test_1d.jl (this file should be in your current directory).

  with multicore support OpenMP without multicore support OpenMP
Julia nfft-3.5.1-julia-macos_x86_64-openmp.zip nfft-3.5.1-julia-macos_x86_64.zip

We statically linked code of the FFTW library (http://www.fftw.org, Copyright 2003 and 2007-2014 by Matteo Frigo and Massachusetts Institute of Technology) as well as libgcc and libgomp libraries into the Julia interface files.

  with multicore support OpenMP without multicore support OpenMP
64 bit nfft-3.5.0-mexmaci64-openmp.zip nfft-3.5.0-mexmaci64.zip
  with multicore support OpenMP without multicore support OpenMP
64 bit nfft-3.4.1-mexmaci64-openmp.zip nfft-3.4.1-mexmaci64.zip