  The nonuniform fast Fourier transform (NUFFT) generalizes the FFT to off-grid
data. Its many applications include image reconstruction, data analysis, and
the numerical solution of differential equations. We present FINUFFT, an
efficient parallel library for type 1 (nonuiform to uniform), type 2 (uniform
to nonuniform), or type 3 (nonuniform to nonuniform) transforms, in dimensions
1, 2, or 3. It uses minimal RAM, requires no precomputation or plan steps, and
has a simple interface to several languages. We perform the expensive
spreading/interpolation between nonuniform points and the fine grid via a
simple new kernel---the `exponential of semicircle' $e^{\beta \sqrt{1-x^2}}$ in
$x\in[-1,1]$---in a cache-aware load-balanced multithreaded implementation. The
deconvolution step requires the Fourier transform of the kernel, for which we
propose efficient numerical quadrature. For types 1 and 2, rigorous error
bounds asymptotic in the kernel width approach the fastest known exponential
rate, namely that of the Kaiser--Bessel kernel. We benchmark against several
popular CPU-based libraries, showing favorable speed and memory footprint,
especially in three dimensions when high accuracy and/or clustered point
distributions are desired.
