/***************************************************************************
                          Fourier.h  -  description
                             -------------------
    begin                : Fre Mai 9 2003
    copyright            : (C) 2003 by klaus frieler
    email                : kgf@omniversum.de
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/
#ifndef FOURIER_H
#define FOURIER_H
#include "Types.h"

class Fourier
{
public:
   static float  *four1(float data[], unsigned long nn, int isign);
   static float  *fourier(float data[], unsigned long nn, int isign);
   static double *four1(double data[], unsigned long nn, int isign);
   static double *fourier(double data[], unsigned long nn, int isign);
   static float  *powerspectrum(float  data[], unsigned long nn);
   static double *powerspectrum(double data[], unsigned long nn);
   static void    twoFFT(float data1[], float data2[], float fft1[], float fft2[], unsigned long n);
   static void    twoFFT(double data1[], double data2[], double fft1[], double fft2[], unsigned long n);
   static float  *realfft(float data1[], unsigned long nn, int isign);
   static double *realfft(double data1[], unsigned long nn, int isign);
   static float  *realFFT(float data1[], unsigned long nn, int isign);
   static double *realFFT(double data1[], unsigned long nn, int isign);
   static float  *realPS(float data1[], float ps[], unsigned long  n );
   static double *realPS(double data1[], double ps[], unsigned long n );
   static float  *slowRealFour(float data[], unsigned long nn, int isign, float ps[]);
   static double  *slowRealFour(double data[], unsigned long nn, int isign, double ps[]);
};

#endif
