Principal author Alex H. Barnett ([email protected]),
main co-developers Jeremy F. Magland,
Ludvig af Klinteberg, Yu-hsuan "Melody" Shih, Libin Lu,
Joakim Andén, Marco Barbone, Robert Blackwell, and Martin Reinecke;
see docs/ackn.rst for full list of contributors.

This is a lightweight CPU library to compute the three standard types of nonuniform FFT to a specified precision, in one, two, or three dimensions. It is written in C++ with interfaces to C, Fortran, MATLAB/octave, Python, and (in a separate repository) Julia. It now also integrates the GPU CUDA library cuFINUFFT.
Please see the online documentation which can also be downloaded as a PDF manual, and a project overview.
You will also want to see CPU example codes in the directories examples, test, fortran, matlab/test, matlab/examples, python/finufft/test, etc, and GPU examples in examples/cuda, test/cuda, etc.
If you cannot build via cMake, try the makefile. Python users try pip install finufft. See the docs for details. See our GitHub Issues for tips.
The matrix below is mirrored from the CI workflows (.github/workflows/cmake_ci.yml,
.github/workflows/powerpc.yml); status cells are live badges. To regenerate
after editing a workflow, run python tools/gen_platform_table.py and paste
the output back into this section.
| Platform | Toolchains (per-job CI status) |
|---|---|
| MSYS2 MINGW64 | |
| macos-14 | |
| macos-15 | |
| macos-15-intel | |
| manylinux_2_28 | |
| powerpc64 | |
| powerpc64le | |
| ubuntu-22.04 | |
| ubuntu-24.04 | |
| windows-2022 | |
| windows-2025 |
Each badge labels its toolchain and colours green/red with the latest status on master. CMake-CI rows on Linux/macOS exercise both DUCC FFT and FFTW; Windows builds DUCC FFT only. (make) rows share their workflow's overall status (legacy GNU-make build path); PowerPC rows likewise share powerpc.yml's overall status (cross-compile + QEMU).
See also the Supported CPU platforms section of the rendered install docs.
If you prefer to read text files, the source to generate the above documentation is in human-readable (mostly .rst) files as follows:
docs/install.rst: installation and compilation instructionsdocs/install_gpu.rst: installation and compilation for GPU (CUDA)docs/dirs.rst: explanation of directories and files in the packagedocs/math.rst: mathematical definitionsdocs/cex.rst: example usage from C++/Cdocs/c.rst: documentation of C++/C function APIdocs/c_gpu.rst: documentation of C++/C function API for GPU librarydocs/opts.rst: optional parametersdocs/error.rst: error codesdocs/trouble.rst: troubleshooting and accuracy advicedocs/performance.rst: CPU timing benchmarks compared to older versionsdocs/tut.rstandtutorial/*: tutorial application examplesdocs/fortran.rst: usage examples from Fortran, documentation of interfacedocs/matlab.rstanddocs/matlabhelp.raw: using the MATLAB/Octave interfacedocs/python.rstandpython/*/_interfaces.py: using the Python interfacedocs/python_gpu.rst: Python interface to GPU librarydocs/julia.rst: information for Julia usersdocs/nfft_migr.rstanddocs/cufinufft_migration: guides for migrationdocs/impl_gpu.rst: implementation notes for GPU codedocs/devnotes.rst: notes/guide for developersdocs/related.rst: other recommended NUFFT packagesdocs/users.rst: some known users of FINUFFT, dependent packagesdocs/ackn.rst: authors and acknowledgmentsdocs/refs.rst: journal article references (ours and others)
For license info for FINUFFT (CPU/GPU source), see LICENSE.
For info for dependencies and contributed code, see NOTICE.
FINUFFT/cuFINUFFT was developed at, and is supported by, the Flatiron Institute at the Simons Foundation.
If you find (cu)FINUFFT useful in your work, please star this repository and cite it and the following. It will help us to improve the library if you also describe your use case parameters here.
For FINUFFT (CPU library):
A parallel non-uniform fast Fourier transform library based on an ``exponential of semicircle'' kernel. A. H. Barnett, J. F. Magland, and L. af Klinteberg. SIAM J. Sci. Comput. 41(5), C479-C504 (2019).
For cuFINUFFT (GPU library):
cuFINUFFT: a load-balanced GPU library for general-purpose nonuniform FFTs, Yu-hsuan Shih, Garrett Wright, Joakim Andén, Johannes Blaschke, Alex H. Barnett, PDSEC2021 workshop of the IPDPS2021 conference. https://arxiv.org/abs/2102.08463

