Utilises the Fastest Fourier Transform in the West (FFTW) via the 'fftwtools' package if available, else reverts to built-in functionality
fft2d(x, inverse = FALSE, fftw = fftw_available())
A numeric matrix to be transformed.
Whether it should compute the inverse transform (defaults to FALSE
).
Whether the fftwtools
R package is available.
The fast-Fourier (inverse) transform. A complex-valued matrix of the same size as x
.
This function is called wherever sparr
seeks to perform a 2D fast-Fourier
transform. Where available, computational expense is noticeably reduced by appealing to routines
in the independent `FFTW' toolbox. The user is encouraged to install the corresponding R package fftwtools
from CRAN;
this function will automatically detect and use the faster option, otherwise will
defer to the built-in fft
.
# \donttest{
# System check
sparr:::fftw_available()
#> [1] TRUE
system.time(fft(matrix(1:2000^2,2000)))
#> user system elapsed
#> 0.459 0.000 0.461
system.time(fft2d(matrix(1:2000^2,2000)))
#> user system elapsed
#> 0.603 0.015 0.636
# }