projects
/
my-code
/
api.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
81e8529
)
finished 1d-dft
author
hackbard
<hackbard>
Thu, 23 Sep 2004 14:26:21 +0000
(14:26 +0000)
committer
hackbard
<hackbard>
Thu, 23 Sep 2004 14:26:21 +0000
(14:26 +0000)
fourier/fourier.c
patch
|
blob
|
history
fourier/fourier.h
patch
|
blob
|
history
diff --git
a/fourier/fourier.c
b/fourier/fourier.c
index
fca6d6a
..
255012b
100644
(file)
--- a/
fourier/fourier.c
+++ b/
fourier/fourier.c
@@
-8,7
+8,7
@@
int fourier_init(t_fourier *fourier,int outfd) {
int fourier_init(t_fourier *fourier,int outfd) {
-
f
printf(outfd,"[fourier] initializing fourier api ...\n");
+
d
printf(outfd,"[fourier] initializing fourier api ...\n");
fourier->outfd=outfd;
fourier->type=0;
fourier->outfd=outfd;
fourier->type=0;
@@
-25,7
+25,7
@@
int fourier_alloc_data(t_fourier *fourier) {
fourier->data[i]=(t_complex *)malloc(fourier->data_len[i]*sizeof(t_complex));
fourier->ftdata[i]=(t_complex *)malloc(fourier->data_len[i]*sizeof(t_complex));
if((fourier->data[i]==NULL)||(fourier->ftdata[i]==NULL)) {
fourier->data[i]=(t_complex *)malloc(fourier->data_len[i]*sizeof(t_complex));
fourier->ftdata[i]=(t_complex *)malloc(fourier->data_len[i]*sizeof(t_complex));
if((fourier->data[i]==NULL)||(fourier->ftdata[i]==NULL)) {
-
f
printf(fourier->outfd,"[fourier] malloc failed\n");
+
d
printf(fourier->outfd,"[fourier] malloc failed\n");
return F_ALLOC_FAIL;
}
}
return F_ALLOC_FAIL;
}
}
@@
-37,11
+37,11
@@
int fourier_shutdown(t_fourier *fourier) {
int i;
int i;
-
f
printf(fourier->outfd,"[fourier] shutdown\n");
+
d
printf(fourier->outfd,"[fourier] shutdown\n");
for(i=0;i<fourier->dim;i++) {
for(i=0;i<fourier->dim;i++) {
- free(fourier->data[
dim
]);
- free(fourier->ftdata[
dim
]);
+ free(fourier->data[
i
]);
+ free(fourier->ftdata[
i
]);
}
return F_SUCCESS;
}
return F_SUCCESS;
@@
-53,15
+53,15
@@
int fourier_dft_1d(t_fourier *fourier) {
double arg;
if(fourier->type&FWD) {
double arg;
if(fourier->type&FWD) {
- for(dim=
1;dim<=
fourier->dim;dim++) {
+ for(dim=
0;dim<
fourier->dim;dim++) {
for(k=0;k<fourier->data_len[dim];k++) {
fourier->ftdata[dim][k].r=0;
fourier->ftdata[dim][k].i=0;
for(i=0;i<fourier->data_len[dim];i++) {
/* f(k) = 1/N sum(n=0-N) f(n) exp(-i*k*2*PI*n/N) */
arg=-1.0*k*M_PI*i/fourier->data_len[dim];
for(k=0;k<fourier->data_len[dim];k++) {
fourier->ftdata[dim][k].r=0;
fourier->ftdata[dim][k].i=0;
for(i=0;i<fourier->data_len[dim];i++) {
/* f(k) = 1/N sum(n=0-N) f(n) exp(-i*k*2*PI*n/N) */
arg=-1.0*k*M_PI*i/fourier->data_len[dim];
- fourier->ftdata[dim][k].r+=(cos(arg)*fourier->data[dim][i]-sin(arg)*fourier->data[dim][i].i);
- fourier->ftdata[dim][k].i+=(sin(arg)*fourier->data[dim][i]+cos(arg)*fourier->data[dim][i].i);
+ fourier->ftdata[dim][k].r+=(cos(arg)*fourier->data[dim][i]
.r
-sin(arg)*fourier->data[dim][i].i);
+ fourier->ftdata[dim][k].i+=(sin(arg)*fourier->data[dim][i]
.r
+cos(arg)*fourier->data[dim][i].i);
}
fourier->ftdata[dim][k].r/=fourier->data_len[dim];
fourier->ftdata[dim][k].i/=fourier->data_len[dim];
}
fourier->ftdata[dim][k].r/=fourier->data_len[dim];
fourier->ftdata[dim][k].i/=fourier->data_len[dim];
@@
-75,8
+75,8
@@
int fourier_dft_1d(t_fourier *fourier) {
fourier->data[dim][k].i=0;
for(i=0;i<fourier->data_len[dim];i++) {
arg=1.0*k*M_PI*i/fourier->data_len[dim];
fourier->data[dim][k].i=0;
for(i=0;i<fourier->data_len[dim];i++) {
arg=1.0*k*M_PI*i/fourier->data_len[dim];
- fourier->data[dim][k].r+=(cos(arg)*fourier->ftdata[dim][i]-sin(arg)*fourier->ftdata[dim][i].i);
- fourier->data[dim][k].i+=(sin(arg)*fourier->ftdata[dim][i]+cos(arg)*fourier->ftdata[dim][i].i);
+ fourier->data[dim][k].r+=(cos(arg)*fourier->ftdata[dim][i]
.r
-sin(arg)*fourier->ftdata[dim][i].i);
+ fourier->data[dim][k].i+=(sin(arg)*fourier->ftdata[dim][i]
.r
+cos(arg)*fourier->ftdata[dim][i].i);
}
}
}
}
}
}
@@
-85,9
+85,17
@@
int fourier_dft_1d(t_fourier *fourier) {
return F_SUCCESS;
}
return F_SUCCESS;
}
+int fourier_dft_2d(t_fourier *fourier) {
+ return 0;
+}
+
+int fourier_dft_3d(t_fourier *fourier) {
+ return 0;
+}
+
int fourier_calc(t_fourier *fourier) {
int fourier_calc(t_fourier *fourier) {
-
f
printf(fourier->outfd,"[fourier] %d dimensional %c-%cft calculation ...\n",
+
d
printf(fourier->outfd,"[fourier] %d dimensional %c-%cft calculation ...\n",
fourier->dim,
((fourier->type&FWD)?'f':'b'),
((fourier->type&DFT)?'d':'f'));
fourier->dim,
((fourier->type&FWD)?'f':'b'),
((fourier->type&DFT)?'d':'f'));
@@
-104,13
+112,13
@@
int fourier_calc(t_fourier *fourier) {
fourier_dft_3d(fourier);
break;
default:
fourier_dft_3d(fourier);
break;
default:
-
f
printf(fourier->outfd,"[fourier] dimension failure\n");
+
d
printf(fourier->outfd,"[fourier] dimension failure\n");
return F_DIM_FAILURE;
}
return F_SUCCESS;
}
else {
return F_DIM_FAILURE;
}
return F_SUCCESS;
}
else {
-
f
printf(fourier->outfd,"[fourier] fft not supported by now\n");
+
d
printf(fourier->outfd,"[fourier] fft not supported by now\n");
return F_NOT_SUPPORTED;
}
}
return F_NOT_SUPPORTED;
}
}
diff --git
a/fourier/fourier.h
b/fourier/fourier.h
index
f3cab6b
..
39aee41
100644
(file)
--- a/
fourier/fourier.h
+++ b/
fourier/fourier.h
@@
-4,7
+4,10
@@
#define FOURIER_H
/* includes */
#define FOURIER_H
/* includes */
+#define _GNU_SOURCE
#include <stdio.h>
#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
/* defines */
#define F_SUCCESS 1
/* defines */
#define F_SUCCESS 1
@@
-36,6
+39,8
@@
typedef struct s_fourier {
/* function prototypes */
int fourier_init(t_fourier *fourier,int outfd);
int fourier_dft_1d(t_fourier *fourier);
/* function prototypes */
int fourier_init(t_fourier *fourier,int outfd);
int fourier_dft_1d(t_fourier *fourier);
+int fourier_dft_2d(t_fourier *fourier);
+int fourier_dft_3d(t_fourier *fourier);
int fourier_calc(t_fourier *fourier);
#endif
int fourier_calc(t_fourier *fourier);
#endif