Acknowledgments

FINUFFT was initiated by Jeremy Magland and Alex Barnett at the Center for Computational Mathematics, Flatiron Institute (then called Simons Center for Data Analysis) in early 2017. The main developer and maintainer is:

  • Alex Barnett

Major code contributions (loosely in chronological order) by:

  • Jeremy Magland - early multithreaded spreader, benchmark vs other libraries, py wrapper

  • Ludvig af Klinteberg - SIMD vectorization/acceleration of spreader, Julia wrapper

  • Yu-Hsuan (“Melody”) Shih - 2d1many, 2d2many vectorized interface, GPU version, including 1D

  • Andrea Malleo - guru interface prototype and tests

  • Libin Lu - guru Fortran, python/wheels, MATLAB/MEX (including GPU), Julia interfaces, cmake, CI, user support, SIMD kernel, PSWF optimization and integration, detective work…

  • Joakim Andén - python, MATLAB/FFTW issues, dual-precision, performance tests, GPU python/docs/tests

  • Robert Blackwell - atomic OMP add_wrapped_subgrid, GPU version merge

  • Marco Barbone - SIMD kernel manual vectorization, benchmarking, Cmake/packaging, Windows, CI, GPU type 3 and output-driven method, on-the-fly kernel polynomials…

  • Martin Reinecke - early SIMD kernel and interp auto-vectorization, binsort, switchable FFT to DUCC0, exploiting FFT zero blocks, de-macro-izing, malloc reduction, adjoint execute, good ideas…

Other contributors to code either directly or indirectly include:

  • Leslie Greengard and June-Yub Lee - CMCL Fortran test drivers

  • Dan Foreman-Mackey - early python wrappers

  • David Stein - python wrappers, finding “pi-1ULP” spreadcheck error

  • Garrett Wright - dual-precision build, py packaging, GPU version

  • Wenda Zhou - Cmake build, code review, professionalization, SIMD ideas

  • Vladimir Rokhlin - PSWF evaluation (C versions of legeexps and prolcrea)

Testing, bug reports, helpful discussions, contributions:

  • Dan Fortunato - MATLAB setpts temp array bug and fix

  • Hannah Lawrence - user testing and finding bugs

  • Marina Spivak - Fortran testing

  • Hugo Strand - python bugs

  • Amit Moscovich - Mac OSX build

  • Dylan Simon - sphinx help

  • Zydrunas Gimbutas - MWrap extension, explanation that NFFT uses Kaiser-Bessel backwards

  • Charlie Epstein - help with analysis of kernel Fourier transform sums

  • Christian Muller - optimization (CMA-ES) for early kernel design

  • Andras Pataki - complex number speed in C++, thread-safety of FFTW

  • Jonas Krimmer - thread safety of FFTW, Windows makefile

  • Timo Heister - pass/fail numdiff testing ideas

  • Vladimir Rokhlin - idea of piecewise polynomial approximation on complex boxes (used up to v2.4.1)

  • Reinhard Neder - fortran90 demo using finufft as module, OSX build

  • Vineet Bansal - py packaging

  • Jason Kaye - Gauss-Legendre quadrature code from cppdlr

  • Juan Ignacio Polanco - GPU output driven idea, discussions

  • Julius Herb - Poisson equation tutorial in Python

  • Felix F. Zimmermann - Python dependency issues in cufinufft

  • Yuwei Sun - Available thread count fix

  • Maxim Ermenko - CUDA type 3 simple interface in Python

Logo design: Sherry Choi with input from Alex Barnett and Lucy Reading-Ikkanda.

We are also indebted to the authors of other NUFFT codes such as NFFT3, CMCL NUFFT, MIRT, BART, DUCC0, NonuniformFFTs.jl, etc, upon whose interfaces, code, and algorithms we have built.