Safe Haskell | None |
---|---|
Language | Haskell98 |
Raw, unnormalized 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.
- run :: (Vector v a, Vector v b, Storable a, Storable b) => Transform a b -> v a -> v b
- plan :: (Storable a, Storable b) => Transform a b -> Int -> Plan a b
- execute :: (Vector v a, Vector v b, Storable a, Storable b) => Plan a b -> v a -> v b
- dft :: Transform (Complex Double) (Complex Double)
- idft :: Transform (Complex Double) (Complex Double)
- dftR2C :: Transform Double (Complex Double)
- dftC2R :: Transform (Complex Double) Double
- dct1 :: Transform Double Double
- dct2 :: Transform Double Double
- dct3 :: Transform Double Double
- dct4 :: Transform Double Double
- dst1 :: Transform Double Double
- dst2 :: Transform Double Double
- dst3 :: Transform Double Double
- dst4 :: Transform Double Double
Creating and executing Plan
s
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
, then calling
planInputSize
p /= length vexecute p v
will throw an exception.
Complex-to-complex transforms
dft :: Transform (Complex Double) (Complex Double) Source #
A forward discrete Fourier transform. The output and input sizes are the same (n
).
y_k = sum_(j=0)^(n-1) x_j e^(-2pi i j k/n)
idft :: Transform (Complex Double) (Complex Double) Source #
A backward discrete Fourier transform. The output and input sizes are the same (n
).
y_k = sum_(j=0)^(n-1) x_j e^(2pi i j k/n)
Real-to-complex transforms
dftR2C :: Transform Double (Complex Double) Source #
A forward discrete Fourier transform with real data. If the input size is n
,
the output size will be n `div` 2 + 1
.
Real-to-real transforms
The real-even (DCT) and real-odd (DST) transforms. The input and output sizes
are the same (n
).
dct1 :: Transform Double Double Source #
A type-1 discrete cosine transform.
y_k = x_0 + (-1)^k x_(n-1) + 2 sum_(j=1)^(n-2) x_j cos(pi j k/(n-1))
dct2 :: Transform Double Double Source #
A type-2 discrete cosine transform.
y_k = 2 sum_(j=0)^(n-1) x_j cos(pi(j+1/2)k/n)
dct3 :: Transform Double Double Source #
A type-3 discrete cosine transform.
y_k = x_0 + 2 sum_(j=1)^(n-1) x_j cos(pi j(k+1/2)/n)
dct4 :: Transform Double Double Source #
A type-4 discrete cosine transform.
y_k = 2 sum_(j=0)^(n-1) x_j cos(pi(j+1/2)(k+1/2)/n)
Discrete sine transforms
dst1 :: Transform Double Double Source #
A type-1 discrete sine transform.
y_k = 2 sum_(j=0)^(n-1) x_j sin(pi(j+1)(k+1)/(n+1))
dst2 :: Transform Double Double Source #
A type-2 discrete sine transform.
y_k = 2 sum_(j=0)^(n-1) x_j sin(pi(j+1/2)(k+1)/n)