finished 1d-dft
[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 <stdlib.h>
10 #include <math.h>
11
12 /* defines */
13 #define F_SUCCESS 1
14 #define F_ERROR -1
15 #define F_NOT_SUPPORTED -2
16 #define F_DIM_FAILURE -3
17 #define F_ALLOC_FAIL -4
18
19 /* fourier specific variables */
20 typedef struct s_complex {
21   double r;
22   double i;
23 } t_complex;
24
25 typedef struct s_fourier {
26   int outfd;
27   unsigned char type;
28 #define DFT (1<<0)
29 #define FFT (1<<1)
30 #define FWD (1<<2)
31 #define BWD (1<<3)
32   int dim;
33 #define MAX_DIM 3
34   t_complex *data[MAX_DIM];
35   t_complex *ftdata[MAX_DIM];
36   int data_len[MAX_DIM];
37 } t_fourier;
38
39 /* function prototypes */
40 int fourier_init(t_fourier *fourier,int outfd);
41 int fourier_dft_1d(t_fourier *fourier);
42 int fourier_dft_2d(t_fourier *fourier);
43 int fourier_dft_3d(t_fourier *fourier);
44 int fourier_calc(t_fourier *fourier);
45
46 #endif