Interface for FFTW version 3.
We advise against opening this module as it contains submodules with the same names as the
Bigarray ones. Instead, declare
module FFT = Fftw3.D
module FFT = Fftw3.S
depending to the precision you need (this way of proceeding makes it easy to change the precision of the FFT sould it be necessary) and then use it as
let input = FFT.Array1.create FFT.complex Bigarray.c_layout dim in let output = FFT.Array1.create FFT.complex Bigarray.c_layout dim in let dft = FFT.Array1.dft FFT.Forward input output in (* code to initialize input and output arrays here *) FFT.exec dft (* compute the DFT *)
The plan creation function will raise
FFT.Failure in case of problems. The last line can be repeated as many times as needed to compute the FFT of
output. Beware that creating the plan (
FFT.Array1.dft) usually destroys the content of
output, so only fill them afterwards.
HINT: Plan creation functions like
Fftw3.Sig.Array1.dft have many optional arguments for maximum flexibility. The important one is
~meas. The other ones can be ignored at first.
If you use Async or Lwt, please read the
guidelines of FFTW. If you encounter problems, please
let us know.
module type Sig = sig ... end
Precision independent signature for FFTW3 submodules.
module D : Sig with type float_elt = Bigarray.float64_elt and type complex_elt = Bigarray.complex64_elt
Double precision FFTW.
module S : Sig with type float_elt = Bigarray.float32_elt and type complex_elt = Bigarray.complex32_elt
Single precision FFTW. This is only available if the single precision FFTW3 library was found when this module was compiled (if not, all functions raise
module Wisdom : sig ... end
Managing wisdom. Save and restore plans to/from disk or other media.