added fast(er) list to be included (just in header) + small bug fix
[my-code/api.git] / fourier / fourier.h
1 /* fourier.h -- fourier headers */
2
3 #ifndef FOURIER_H
4 #define FOURIER_H
5
6 /* includes */
7 #define _GNU_SOURCE
8 #include <stdio.h>
9 #include <string.h>
10 #include <stdlib.h>
11 #include <math.h>
12
13 /* defines */
14 #define F_SUCCESS 1
15 #define F_ERROR -1
16 #define F_NOT_SUPPORTED -2
17 #define F_DIM_FAILURE -3
18 #define F_ALLOC_FAIL -4
19 #define F_FFT_IMPOSSIBLE -5
20
21 /* fourier specific variables */
22 typedef struct s_complex {
23   double r;
24   double i;
25 } t_complex;
26
27 typedef struct s_fourier {
28   int outfd;
29   unsigned char type;
30 #define DFT (1<<0)
31 #define FFT (1<<1)
32 #define FWD (1<<2)
33 #define BWD (1<<3)
34 #define MAX_DIM 3
35   int dim;
36   t_complex *data;
37   t_complex *ftdata;
38   t_complex **revdata;
39   int data_len[MAX_DIM];
40   int log2len[MAX_DIM];
41 } t_fourier;
42
43 /* function prototypes */
44 int fourier_init(t_fourier *fourier,int outfd);
45 int fourier_alloc_data(t_fourier *fourier);
46 int fourier_dft_1d(t_fourier *fourier);
47 int fourier_dft_2d(t_fourier *fourier);
48 int fourier_dft_3d(t_fourier *fourier);
49 int fourier_fft_1d_init(t_fourier *fourier);
50 int fourier_fft_1d(t_fourier *fourier);
51 int fourier_shutdown(t_fourier *fourier);
52
53 #endif