
#ifndef  __FFT_H__
#define  __FFT_H__

typedef struct {
	float re, im;
	} complex;

void complex_add(complex *result, complex *x, complex *y);
void complex_sub(complex *result, complex *x, complex *y);
void complex_mul(complex *result, complex *x, complex *y);
void complex_mul_scalar(complex *result, float v);
void complex_pow(complex *result, complex *base, int exponent);
float complex_abs(complex *v);
void do_fft(complex *x, int ln, int inverse);

void fft(complex *x, int ln);
void ifft(complex *x, int ln);

int xlog2(int n);
void fill_hanning_window(float *w, int n);

#endif   /* __FFT_H__ */
