improvements
[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
20 /* fourier specific variables */
21 typedef struct s_complex {
22   double r;
23   double i;
24 } t_complex;
25
26 typedef struct s_fourier {
27   int outfd;
28   unsigned char type;
29 #define DFT (1<<0)
30 #define FFT (1<<1)
31 #define FWD (1<<2)
32 #define BWD (1<<3)
33 #define MAX_DIM 3
34   int dim;
35   t_complex *data;
36   t_complex *ftdata;
37   int data_len[MAX_DIM];
38 } t_fourier;
39
40 /* function prototypes */
41 int fourier_init(t_fourier *fourier,int outfd);
42 int fourier_alloc_data(t_fourier *fourier);
43 int fourier_dft_1d(t_fourier *fourier);
44 int fourier_dft_2d(t_fourier *fourier);
45 int fourier_dft_3d(t_fourier *fourier);
46
47 #endif