Abstract

Module types for Fast Fourier Transforms (FFTs), as well as transformations for automatically performing higher-dimensional FFTs. For specific FFT implementations, see e.g. stockham-radix-2.

Synopsis

module type fft_1d = {
type real
val fft [n]: [n](real, real) -> [n](real, real)
val ifft [n]: [n](real, real) -> [n](real, real)
val fft_re [n]: [n]real -> [n](real, real)
val ifft_re [n]: [n]real -> [n](real, real)
}
module type fft_2d = {
type real
val fft2 [n] [m]: [n][m](real, real) -> [n][m](real, real)
val ifft2 [n] [m]: [n][m](real, real) -> [n][m](real, real)
val fft2_re [n] [m]: [n][m]real -> [n][m](real, real)
val ifft2_re [n] [m]: [n][m]real -> [n][m](real, real)
}

Description

module type fft_1d
type real
val fft [n]: [n](real, real) -> [n](real, real)

Perform a forward FFT on an array of numbers, each being represented as the pair of the real and imaginary part of a complex number.

val ifft [n]: [n](real, real) -> [n](real, real)

The inverse of fft.

val fft_re [n]: [n]real -> [n](real, real)

Perform a forward FFT of an array of numbers, each representing the real part of a complex number.

val ifft_re [n]: [n]real -> [n](real, real)

The inverse of fft_re.

module type fft_2d
type real
val fft2 [n] [m]: [n][m](real, real) -> [n][m](real, real)

Perform a forward 2D FFT using the row-column algorithm.

val ifft2 [n] [m]: [n][m](real, real) -> [n][m](real, real)

The inverse of fft2.

val fft2_re [n] [m]: [n][m]real -> [n][m](real, real)

Perform a forward 2D FFT of an array of numbers, each representing the real part of a complex number.

val ifft2_re [n] [m]: [n][m]real -> [n][m](real, real)

The inverse of fft2_re.