vector-fftw
Safe HaskellNone
LanguageHaskell2010

Numeric.FFT.Vector.Unnormalized.Multi

Description

Raw, unnormalized multi-dimensional versions of the transforms in fftw.

Note that the forwards and backwards transforms of this module are not actually inverses. For example, run idft (run dft v) /= v in general.

For more information on the individual transforms, see http://www.fftw.org/fftw3_doc/What-FFTW-Really-Computes.html.

Since: 0.2

Synopsis

Creating and executing Plans

run :: (Vector v a, Vector v b, Storable a, Storable b) => Transform a b -> v a -> v b Source #

Create and run a Plan for the given transform.

plan :: (Storable a, Storable b) => Transform a b -> Int -> Plan a b Source #

Create a Plan of a specific size. This function is equivalent to planOfType Estimate.

execute :: (Vector v a, Vector v b, Storable a, Storable b) => Plan a b -> v a -> v b Source #

Run a plan on the given Vector.

If planInputSize p /= length v, then calling execute p v will throw an exception.

Complex-to-complex transforms

dft :: TransformND (Complex Double) (Complex Double) Source #

A forward discrete Fourier transform. The output and input sizes are the same (n).

idft :: TransformND (Complex Double) (Complex Double) Source #

A backward discrete Fourier transform. The output and input sizes are the same (n).

Real-to-complex transforms

dftR2C :: TransformND Double (Complex Double) Source #

A forward discrete Fourier transform with real data. If the input size is n0 * ... * nk, the output size will be n0 * ... * nk `div` 2 + 1.

dftC2R :: TransformND (Complex Double) Double Source #

A backward discrete Fourier transform which produces real data.

This Transform behaves differently than the others:

  • Calling plan dftC2R n creates a Plan whose output size is n, and whose input size is n `div` 2 + 1.
  • If length v == n, then length (run dftC2R v) == 2*(n-1).