C++
C#
VB
JScript
All

# Fast Fourier Transform

Copyright (C) 2005 IENT-RWTH Aachen

Notation convention

The C Interface for FFT functions uses the following notation convention:

FFT: c|z|s|d [h] [a|n] fft [1|2]

IFFT: c|z|s|d ifft [1|2]

c|z|s|d | single precision complex | double precision complex | single precision real | double precision real
[h] | halfed output (only possible for real input)
[a|n] | abs | norm (presently only possible for vectorial input)
[1|2] | matrices rows | matrices

Examples

    {
      int n=8;
      DenseVector<float>::self X(n,1);
      DenseVector<complex<float> >::self Y(n);
      //sfft(X.size(),&X[0],(float *)&Y[0]); // slower than shfft
      shfft(X.size(),Y.size(),&X[0],(float *)&Y[0]);
      sifft(X.size(),(float *)&Y[0],&X[0]);
      cout << X << endl;
    }

    {
      int n=8;
      DenseVector<complex<double> >::self X(n,1), Y(n);
      zfft (X.size(),(double *)&X[0],(double *)&Y[0]);
      zifft(X.size(),(double *)&Y[0],(double *)&X[0]);
      cout << X << endl;
    }

    {
      int m=8,n=8;
      DenseMatrix<float>::self X(m,n,1);
      DenseMatrix<complex<double> >::self Y(m,n);
      //sfft2 (X.nrows(),X.ncols(),&X(0,0),(float *)&Y(0,0)); // slower than shfft2
      shfft2(X.nrows(),X.ncols(),Y.nrows(),&X(0,0),(float *)&Y(0,0));
      sifft2(X.nrows(),X.ncols(),Y.nrows(),(float *)&Y(0,0),&X(0,0));
      cout << X << endl;
    }

    {
      int m=8,n=8;
      DenseMatrix<complex<double> >::self X(m,n,1), Y(m,n);
      zfft2 (X.nrows(),X.ncols(),(double *)&X(0,0),(double *)&Y(0,0));
      zifft2(X.nrows(),X.ncols(),(double *)&Y(0,0),(double *)&X(0,0));
      cout << X << endl;
    }

cafft |
cfft |
cfft1 |
cfft2 |
cifft |
cifft1 |
cifft2 |
cnfft |
dafft |
dfft |
dfft1 |
dfft2 |
dhafft |
dhfft |
dhfft1 |
dhfft2 |
dhnfft |
difft |
difft1 |
difft2 |
dnfft |
safft |
sfft |
sfft1 |
sfft2 |
shafft |
shfft |
shfft1 |
shfft2 |
shnfft |
sifft |
sifft1 |
sifft2 |
snfft |
zafft |
zfft |
zfft1 |
zfft2 |
zifft |
zifft1 |
zifft2 |
znfft |

See Also

Signal Processing