init fourier.* (will be changed)
[my-code/api.git] / fourier / fourier.c
diff --git a/fourier/fourier.c b/fourier/fourier.c
new file mode 100644 (file)
index 0000000..14878e2
--- /dev/null
@@ -0,0 +1,57 @@
+/* fourier.c -- fourier transformation api
+ *
+ * author: hackbard@hackdaworld.dyndns.org
+ *
+ */
+
+#include "fourier.h"
+
+int fourier_init(t_fourier *fourier,int outfd) {
+
+ fprintf(outfd,"[fourier] initializing fourier api ...\n");
+
+ fourier->outfd=outfd;
+ fourier->type=0;
+ fourier->dim=0;
+
+ return F_SUCCESS;
+}
+
+int fourier_set_datalen(t_fourier *fourier,int dim,int len) {
+
+  int i;
+
+  if(dim>MAX_DIM) {
+    fprintf(fourier->outfd,"[fourier] dimension %d not supported\n",dim);
+    return F_SET_DLEN_ERROR;
+  }
+
+  fourier->data_len[dim]=len;
+
+  return F_SUCCESS;
+}
+
+int fourier_malloc(t_fourier *fourier) {
+
+  int i;
+
+  if(fourier->dim==0) {
+    fprintf(fourier->outfd,"[fourier] dimension not specified\n");
+    return F_DIM_ERROR;
+  }
+  for(i=0;i<fourier->dim;i++) {
+    if(fourier->data_len[i]==0) {
+      fprintf(fourier->outfd,"[fourier] invalid data len for dim %d\n",i);
+      return F_DLEN_ERROR;
+    }
+  }
+
+  for(i=0;i<fourier->dim;i++) {
+    if((fourier->data[i]=(t_complex *)malloc(sizeof(t_complex)*fourier->data_len[i]))==NULL) {
+      fprintf(fourier->outfd,"[fourier] malloc for data dim %d failed\n",i);
+      return F_MALLOC_ERROR;
+    }
+  }
+
+  return F_SUCCESS;
+}