9
$\begingroup$

Does anyone know which Fast Fourier Transform algorithm Mathematica uses to compute a Discrete Fourier Transform using Fourier[...], and is there any option to change the algorithm to that of another type?

E.g. Cooley-Tukey (most common), or Bruun's Algorithm?

$\endgroup$
14
  • $\begingroup$ Just to check, are you trying to change the algorithm or the scaling? The latter is done using the option FourierParameters. $\endgroup$
    – Hugh
    Commented Feb 25, 2019 at 18:39
  • 1
    $\begingroup$ I don't know the algorithm used, sorry. A good question to ask. MathWorld discusses possible algorithms but does not state which is used in Mathematica. $\endgroup$
    – Hugh
    Commented Feb 25, 2019 at 18:56
  • 1
    $\begingroup$ Relevant (but as vague as we are used it by WRI ;)) reference.wolfram.com/language/tutorial/… The MKL is mentioned there with no word although I actually know that it is used at least somewhere... $\endgroup$ Commented Feb 25, 2019 at 19:21
  • 4
    $\begingroup$ "FourierOptions" /. SystemOptions[] will give some information though it will not indicate alternatives. $\endgroup$ Commented Feb 25, 2019 at 22:04
  • 1
    $\begingroup$ You can also use SystemOptions["FourierOptions"] directly, as an alternative to @Daniel's suggestion. On a different note, I had (apparently mistakenly) thought Mathematica was now using FFTW. $\endgroup$ Commented Feb 26, 2019 at 8:26

1 Answer 1

3
$\begingroup$

Thanks to everyone's contributions on this. After some further research it appears that the FFT Mathematica uses is indeed from Intel's Math Kernel Library (MKL) and they give some details in their documentation here.

The reason I wanted to know this is that apparently different implementations of the FFT can introduce errors and artifacts that vary from algorithm to algorithm.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.