summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortorset2009-02-20 13:51:11 +0000
committertorset2009-02-20 13:51:11 +0000
commit9050189d35eccd08e1d9a4cb99b73a1f335d8bd5 (patch)
tree76b33132f7eca2a8baf82ebb02e3e746189b7119
parent1f2c3114373841eb0be4876257127c01e2d4d51c (diff)
downloadscilab2c-9050189d35eccd08e1d9a4cb99b73a1f335d8bd5.tar.gz
scilab2c-9050189d35eccd08e1d9a4cb99b73a1f335d8bd5.tar.bz2
scilab2c-9050189d35eccd08e1d9a4cb99b73a1f335d8bd5.zip
Change prototypes : real functions return real
-rw-r--r--scilab2c/src/signalProcessing/fft/Makefile.am8
-rw-r--r--scilab2c/src/signalProcessing/fft/Makefile.in28
-rw-r--r--scilab2c/src/signalProcessing/fft/dfftma.c31
-rw-r--r--scilab2c/src/signalProcessing/fft/sfftma.c31
-rw-r--r--scilab2c/src/signalProcessing/fft/testMatFft.c103
-rw-r--r--scilab2c/src/signalProcessing/ifft/Makefile.am11
-rw-r--r--scilab2c/src/signalProcessing/ifft/Makefile.in31
-rw-r--r--scilab2c/src/signalProcessing/ifft/difftma.c31
-rw-r--r--scilab2c/src/signalProcessing/ifft/sifftma.c31
-rw-r--r--scilab2c/src/signalProcessing/ifft/testMatIfft.c152
-rw-r--r--scilab2c/src/signalProcessing/includes/fft.h5
-rw-r--r--scilab2c/src/signalProcessing/includes/hilbert.h7
-rw-r--r--scilab2c/src/signalProcessing/includes/ifft.h14
13 files changed, 390 insertions, 93 deletions
diff --git a/scilab2c/src/signalProcessing/fft/Makefile.am b/scilab2c/src/signalProcessing/fft/Makefile.am
index 46d75349..2c6c184c 100644
--- a/scilab2c/src/signalProcessing/fft/Makefile.am
+++ b/scilab2c/src/signalProcessing/fft/Makefile.am
@@ -16,6 +16,7 @@ libFft_la_CFLAGS = -I . \
-I $(top_builddir)/type \
-I $(top_builddir)/signalProcessing/includes \
-I $(top_builddir)/operations/includes \
+ -I $(top_builddir)/matrixOperations/includes \
-I $(top_builddir)/auxiliaryFunctions/includes
instdir = $(top_builddir)/lib
@@ -35,8 +36,9 @@ SRC = zfftma.c \
fft842.c \
r2tx.c \
r4tx.c \
- r8tx.c
-
+ r8tx.c \
+ dfftma.c \
+ sfftma.c
####
# Checking Part
@@ -45,6 +47,7 @@ SRC = zfftma.c \
check_INCLUDES = -I . \
-I $(top_builddir)/type \
-I $(top_builddir)/signalProcessing/includes \
+ -I $(top_builddir)/matrixOperations/includes \
-I $(top_builddir)/operations/includes \
-I $(top_builddir)/auxiliaryFunctions/includes
@@ -56,6 +59,7 @@ check_LDADD = $(top_builddir)/type/libDoubleComplex.la \
$(top_builddir)/signalProcessing/fft/libFft.la \
$(top_builddir)/operations/addition/libAddition.la \
$(top_builddir)/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/matrixOperations/zeros/libMatrixZeros.la \
@LIBMATH@
check_PROGRAMS = testFloatFft testDoubleFft testMatFft
diff --git a/scilab2c/src/signalProcessing/fft/Makefile.in b/scilab2c/src/signalProcessing/fft/Makefile.in
index 4be18b9d..4deb6077 100644
--- a/scilab2c/src/signalProcessing/fft/Makefile.in
+++ b/scilab2c/src/signalProcessing/fft/Makefile.in
@@ -59,7 +59,7 @@ am__objects_1 =
am__objects_2 = libFft_la-zfftma.lo libFft_la-cfftma.lo \
libFft_la-dfft2.lo libFft_la-dfftbi.lo libFft_la-dfftmx.lo \
libFft_la-fft842.lo libFft_la-r2tx.lo libFft_la-r4tx.lo \
- libFft_la-r8tx.lo
+ libFft_la-r8tx.lo libFft_la-dfftma.lo libFft_la-sfftma.lo
am_libFft_la_OBJECTS = $(am__objects_1) $(am__objects_2)
libFft_la_OBJECTS = $(am_libFft_la_OBJECTS)
libFft_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
@@ -73,7 +73,8 @@ am__DEPENDENCIES_1 = $(top_builddir)/type/libDoubleComplex.la \
$(top_builddir)/lib/blas/libsciblas.la \
$(top_builddir)/signalProcessing/fft/libFft.la \
$(top_builddir)/operations/addition/libAddition.la \
- $(top_builddir)/operations/subtraction/libSubtraction.la
+ $(top_builddir)/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/matrixOperations/zeros/libMatrixZeros.la
testDoubleFft_DEPENDENCIES = $(am__DEPENDENCIES_1)
testDoubleFft_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleFft_CFLAGS) \
@@ -223,6 +224,7 @@ libFft_la_CFLAGS = -I . \
-I $(top_builddir)/type \
-I $(top_builddir)/signalProcessing/includes \
-I $(top_builddir)/operations/includes \
+ -I $(top_builddir)/matrixOperations/includes \
-I $(top_builddir)/auxiliaryFunctions/includes
instdir = $(top_builddir)/lib
@@ -239,7 +241,9 @@ SRC = zfftma.c \
fft842.c \
r2tx.c \
r4tx.c \
- r8tx.c
+ r8tx.c \
+ dfftma.c \
+ sfftma.c
####
@@ -248,6 +252,7 @@ SRC = zfftma.c \
check_INCLUDES = -I . \
-I $(top_builddir)/type \
-I $(top_builddir)/signalProcessing/includes \
+ -I $(top_builddir)/matrixOperations/includes \
-I $(top_builddir)/operations/includes \
-I $(top_builddir)/auxiliaryFunctions/includes
@@ -258,6 +263,7 @@ check_LDADD = $(top_builddir)/type/libDoubleComplex.la \
$(top_builddir)/signalProcessing/fft/libFft.la \
$(top_builddir)/operations/addition/libAddition.la \
$(top_builddir)/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/matrixOperations/zeros/libMatrixZeros.la \
@LIBMATH@
@@ -361,11 +367,13 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-cfftma.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-dfft2.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-dfftbi.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-dfftma.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-dfftmx.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-fft842.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-r2tx.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-r4tx.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-r8tx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-sfftma.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libFft_la-zfftma.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleFft-testDoubleFft.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatFft-testFloatFft.Po@am__quote@
@@ -455,6 +463,20 @@ libFft_la-r8tx.lo: r8tx.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -c -o libFft_la-r8tx.lo `test -f 'r8tx.c' || echo '$(srcdir)/'`r8tx.c
+libFft_la-dfftma.lo: dfftma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -MT libFft_la-dfftma.lo -MD -MP -MF $(DEPDIR)/libFft_la-dfftma.Tpo -c -o libFft_la-dfftma.lo `test -f 'dfftma.c' || echo '$(srcdir)/'`dfftma.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libFft_la-dfftma.Tpo $(DEPDIR)/libFft_la-dfftma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dfftma.c' object='libFft_la-dfftma.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -c -o libFft_la-dfftma.lo `test -f 'dfftma.c' || echo '$(srcdir)/'`dfftma.c
+
+libFft_la-sfftma.lo: sfftma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -MT libFft_la-sfftma.lo -MD -MP -MF $(DEPDIR)/libFft_la-sfftma.Tpo -c -o libFft_la-sfftma.lo `test -f 'sfftma.c' || echo '$(srcdir)/'`sfftma.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libFft_la-sfftma.Tpo $(DEPDIR)/libFft_la-sfftma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sfftma.c' object='libFft_la-sfftma.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libFft_la_CFLAGS) $(CFLAGS) -c -o libFft_la-sfftma.lo `test -f 'sfftma.c' || echo '$(srcdir)/'`sfftma.c
+
testDoubleFft-testDoubleFft.o: testDoubleFft.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFft_CFLAGS) $(CFLAGS) -MT testDoubleFft-testDoubleFft.o -MD -MP -MF $(DEPDIR)/testDoubleFft-testDoubleFft.Tpo -c -o testDoubleFft-testDoubleFft.o `test -f 'testDoubleFft.c' || echo '$(srcdir)/'`testDoubleFft.c
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/testDoubleFft-testDoubleFft.Tpo $(DEPDIR)/testDoubleFft-testDoubleFft.Po
diff --git a/scilab2c/src/signalProcessing/fft/dfftma.c b/scilab2c/src/signalProcessing/fft/dfftma.c
new file mode 100644
index 00000000..f855c1b7
--- /dev/null
+++ b/scilab2c/src/signalProcessing/fft/dfftma.c
@@ -0,0 +1,31 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud Torset
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "fft.h"
+#include "zeros.h"
+
+
+void dfftma ( double* in , int rows, int cols, double* out){
+ double* ZEROS;
+ doubleComplex* inCpx;
+ doubleComplex* outCpx;
+
+ ZEROS = malloc((uint)(rows*cols)*sizeof(double));
+ outCpx = malloc((uint)(rows*cols)*sizeof(doubleComplex));
+
+ dzerosa(ZEROS,rows,cols);
+ inCpx=DoubleComplexMatrix(in,ZEROS,rows*cols);
+
+ zfftma(inCpx,rows,cols,outCpx);
+
+ zreala(outCpx, rows*cols, out);
+}
diff --git a/scilab2c/src/signalProcessing/fft/sfftma.c b/scilab2c/src/signalProcessing/fft/sfftma.c
new file mode 100644
index 00000000..c60c9427
--- /dev/null
+++ b/scilab2c/src/signalProcessing/fft/sfftma.c
@@ -0,0 +1,31 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud Torset
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "fft.h"
+#include "zeros.h"
+
+
+void sfftma ( float* in , int rows, int cols, float* out){
+ float* ZEROS;
+ floatComplex* inCpx;
+ floatComplex* outCpx;
+
+ ZEROS = malloc((uint)(rows*cols)*sizeof(float));
+ outCpx = malloc((uint)(rows*cols)*sizeof(floatComplex));
+
+ szerosa(ZEROS,rows,cols);
+ inCpx=FloatComplexMatrix(in,ZEROS,rows*cols);
+
+ cfftma(inCpx,rows,cols,outCpx);
+
+ creala(outCpx, rows*cols, out);
+}
diff --git a/scilab2c/src/signalProcessing/fft/testMatFft.c b/scilab2c/src/signalProcessing/fft/testMatFft.c
index ee29cf72..de626d81 100644
--- a/scilab2c/src/signalProcessing/fft/testMatFft.c
+++ b/scilab2c/src/signalProcessing/fft/testMatFft.c
@@ -101,8 +101,74 @@
#define RRESULT9 {45,-4.5,-4.5,-13.5,0,0,-13.5,0,0}
#define IRESULT9 {0,2.598076211353316011810,- 2.598076211353316011810,7.7942286340599471472501,0,0,- 7.7942286340599471472501,0,0}
-
-static int testFft(void){
+
+static void dfftmaTest(void){
+ int i;
+
+ double in1[]=test1;
+ double in2[]=test2;
+ double in3[]=test3;
+ double in4[]=test4;
+ double in6[]=test6;
+ double in9[]=test9;
+
+ double resR1[]=RRESULT1;
+ double resR2[]=RRESULT2;
+ double resR3[]=RRESULT3;
+ double resR4[]=RRESULT4;
+ double resR6[]=RRESULT6;
+ double resR9[]=RRESULT9;
+
+ double out1[12], out2[12], out3[12], out4[12], out6[12], out9[9];
+
+
+ printf(" >>> Matrice 1*12 <<< \n");
+ dfftma(in1, 1, 12, out1);
+ for (i=0;i<12;i++){
+ if (out1[i]>1e-14) assert( (fabs(out1[i]-resR1[i]) / fabs(out1[i])) < 1e-14 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 2*6 <<< \n");
+ dfftma(in2, 2, 6, out2);
+ for (i=0;i<12;i++){
+ if (out2[i]>1e-14) assert( (fabs(out2[i]-resR2[i]) / fabs(out2[i])) < 1e-14 );
+ else assert(1);
+ }
+
+
+ printf(" >>> Matrice 3*4 <<< \n");
+ dfftma(in3, 3, 4, out3);
+ for (i=0;i<12;i++){
+ if (out3[i]>1e-14) assert( (fabs(out3[i]-resR3[i]) / fabs(out3[i])) < 1e-14 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 4*3 <<< \n");
+ dfftma(in4, 4, 3, out4);
+ for (i=0;i<12;i++){
+ if (out4[i]>1e-14) assert( (fabs(out4[i]-resR4[i]) / fabs(out4[i])) < 1e-14 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 6*2 <<< \n");
+ dfftma(in6, 6, 2, out6);
+ for (i=0;i<12;i++){
+ if (out6[i]>1e-16) assert( (fabs(out6[i]-resR6[i]) / fabs(out6[i])) < 1e-14 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 3*3 <<< \n");
+ dfftma(in9, 3, 3, out9);
+ for (i=0;i<9;i++){
+ if (out9[i]>1e-16) assert( (fabs(out9[i]-resR9[i]) / fabs(out9[i])) < 1e-16 );
+ else assert(1);
+ }
+
+
+}
+
+static void zfftmaTest(void){
int i;
double inR1[]=test1;
@@ -125,7 +191,7 @@ static int testFft(void){
double resR9[]=RRESULT9;
double resI9[]=IRESULT9;
- doubleComplex *in1, *in2, *in3, *in4, *in6, *in9, *out1, *out2, *out3, *out4, *out6, *out9;
+ doubleComplex *in1, *in2, *in3, *in4, *in6, *in9, out1[12], out2[12], out3[12], out4[12], out6[12], out9[12];
in1=malloc((uint)12*sizeof(doubleComplex));
in2=malloc((uint)12*sizeof(doubleComplex));
@@ -133,13 +199,9 @@ static int testFft(void){
in4=malloc((uint)12*sizeof(doubleComplex));
in6=malloc((uint)12*sizeof(doubleComplex));
in9=malloc((uint)9*sizeof(doubleComplex));
- out1=malloc((uint)12*sizeof(doubleComplex));
- out2=malloc((uint)12*sizeof(doubleComplex));
- out3=malloc((uint)12*sizeof(doubleComplex));
- out4=malloc((uint)12*sizeof(doubleComplex));
- out6=malloc((uint)12*sizeof(doubleComplex));
- out9=malloc((uint)9*sizeof(doubleComplex));
-
+
+
+
for (i=0;i<12;i++){
in1[i]=DoubleComplex(inR1[i],0);
in2[i]=DoubleComplex(inR2[i],0);
@@ -212,20 +274,13 @@ static int testFft(void){
if (zimags(out9[i])>1e-15) assert( (fabs(zimags(out9[i])-resI9[i]) / fabs(zimags(out9[i]))) < 1e-15 );
else assert(1);
}
-
-
- free(in1);
- free(in2);
- free(in3);
- free(in4);
- free(in6);
- free(in9);
- free(out1);
- free(out2);
- free(out3);
- free(out4);
- free(out6);
- free(out9);
+}
+
+
+
+static int testFft(void){
+ dfftmaTest();
+ zfftmaTest();
return 0;
}
diff --git a/scilab2c/src/signalProcessing/ifft/Makefile.am b/scilab2c/src/signalProcessing/ifft/Makefile.am
index 1ffce071..c68980c1 100644
--- a/scilab2c/src/signalProcessing/ifft/Makefile.am
+++ b/scilab2c/src/signalProcessing/ifft/Makefile.am
@@ -15,6 +15,7 @@
libIfft_la_CFLAGS = -I . \
-I $(top_builddir)/type \
-I $(top_builddir)/signalProcessing/includes \
+ -I $(top_builddir)/matrixOperations/includes \
-I $(top_builddir)/operations/includes \
-I $(top_builddir)/auxiliaryFunctions/includes
@@ -28,14 +29,16 @@ HEAD = ../includes/ifft.h \
fft_internal.h
SRC = zifftma.c \
- cifftma.c \
- difft2.c \
+ cifftma.c \
+ difft2.c \
difftbi.c \
difftmx.c \
ifft842.c \
ir2tx.c \
ir4tx.c \
- ir8tx.c
+ ir8tx.c\
+ difftma.c \
+ sifftma.c
####
@@ -45,6 +48,7 @@ SRC = zifftma.c \
check_INCLUDES = -I . \
-I $(top_builddir)/type \
-I $(top_builddir)/signalProcessing/includes \
+ -I $(top_builddir)/matrixOperations/includes \
-I $(top_builddir)/operations/includes \
-I $(top_builddir)/auxiliaryFunctions/includes
@@ -54,6 +58,7 @@ check_LDADD = $(top_builddir)/type/libDoubleComplex.la \
$(top_builddir)/lib/lapack/libscilapack.la \
$(top_builddir)/lib/blas/libsciblas.la \
$(top_builddir)/signalProcessing/ifft/libIfft.la \
+ $(top_builddir)/matrixOperations/zeros/libMatrixZeros.la \
$(top_builddir)/operations/addition/libAddition.la \
$(top_builddir)/operations/subtraction/libSubtraction.la \
@LIBMATH@
diff --git a/scilab2c/src/signalProcessing/ifft/Makefile.in b/scilab2c/src/signalProcessing/ifft/Makefile.in
index 09124b34..2674cbec 100644
--- a/scilab2c/src/signalProcessing/ifft/Makefile.in
+++ b/scilab2c/src/signalProcessing/ifft/Makefile.in
@@ -59,7 +59,8 @@ am__objects_1 =
am__objects_2 = libIfft_la-zifftma.lo libIfft_la-cifftma.lo \
libIfft_la-difft2.lo libIfft_la-difftbi.lo \
libIfft_la-difftmx.lo libIfft_la-ifft842.lo \
- libIfft_la-ir2tx.lo libIfft_la-ir4tx.lo libIfft_la-ir8tx.lo
+ libIfft_la-ir2tx.lo libIfft_la-ir4tx.lo libIfft_la-ir8tx.lo \
+ libIfft_la-difftma.lo libIfft_la-sifftma.lo
am_libIfft_la_OBJECTS = $(am__objects_1) $(am__objects_2)
libIfft_la_OBJECTS = $(am_libIfft_la_OBJECTS)
libIfft_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
@@ -72,6 +73,7 @@ am__DEPENDENCIES_1 = $(top_builddir)/type/libDoubleComplex.la \
$(top_builddir)/lib/lapack/libscilapack.la \
$(top_builddir)/lib/blas/libsciblas.la \
$(top_builddir)/signalProcessing/ifft/libIfft.la \
+ $(top_builddir)/matrixOperations/zeros/libMatrixZeros.la \
$(top_builddir)/operations/addition/libAddition.la \
$(top_builddir)/operations/subtraction/libSubtraction.la
testDoubleIfft_DEPENDENCIES = $(am__DEPENDENCIES_1)
@@ -222,6 +224,7 @@ top_srcdir = @top_srcdir@
libIfft_la_CFLAGS = -I . \
-I $(top_builddir)/type \
-I $(top_builddir)/signalProcessing/includes \
+ -I $(top_builddir)/matrixOperations/includes \
-I $(top_builddir)/operations/includes \
-I $(top_builddir)/auxiliaryFunctions/includes
@@ -232,14 +235,16 @@ HEAD = ../includes/ifft.h \
fft_internal.h
SRC = zifftma.c \
- cifftma.c \
- difft2.c \
+ cifftma.c \
+ difft2.c \
difftbi.c \
difftmx.c \
ifft842.c \
ir2tx.c \
ir4tx.c \
- ir8tx.c
+ ir8tx.c\
+ difftma.c \
+ sifftma.c
####
@@ -248,6 +253,7 @@ SRC = zifftma.c \
check_INCLUDES = -I . \
-I $(top_builddir)/type \
-I $(top_builddir)/signalProcessing/includes \
+ -I $(top_builddir)/matrixOperations/includes \
-I $(top_builddir)/operations/includes \
-I $(top_builddir)/auxiliaryFunctions/includes
@@ -256,6 +262,7 @@ check_LDADD = $(top_builddir)/type/libDoubleComplex.la \
$(top_builddir)/lib/lapack/libscilapack.la \
$(top_builddir)/lib/blas/libsciblas.la \
$(top_builddir)/signalProcessing/ifft/libIfft.la \
+ $(top_builddir)/matrixOperations/zeros/libMatrixZeros.la \
$(top_builddir)/operations/addition/libAddition.la \
$(top_builddir)/operations/subtraction/libSubtraction.la \
@LIBMATH@
@@ -361,11 +368,13 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-cifftma.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-difft2.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-difftbi.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-difftma.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-difftmx.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-ifft842.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-ir2tx.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-ir4tx.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-ir8tx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-sifftma.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIfft_la-zifftma.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleIfft-testDoubleIfft.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testFloatIfft-testFloatIfft.Po@am__quote@
@@ -455,6 +464,20 @@ libIfft_la-ir8tx.lo: ir8tx.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -c -o libIfft_la-ir8tx.lo `test -f 'ir8tx.c' || echo '$(srcdir)/'`ir8tx.c
+libIfft_la-difftma.lo: difftma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -MT libIfft_la-difftma.lo -MD -MP -MF $(DEPDIR)/libIfft_la-difftma.Tpo -c -o libIfft_la-difftma.lo `test -f 'difftma.c' || echo '$(srcdir)/'`difftma.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libIfft_la-difftma.Tpo $(DEPDIR)/libIfft_la-difftma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='difftma.c' object='libIfft_la-difftma.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -c -o libIfft_la-difftma.lo `test -f 'difftma.c' || echo '$(srcdir)/'`difftma.c
+
+libIfft_la-sifftma.lo: sifftma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -MT libIfft_la-sifftma.lo -MD -MP -MF $(DEPDIR)/libIfft_la-sifftma.Tpo -c -o libIfft_la-sifftma.lo `test -f 'sifftma.c' || echo '$(srcdir)/'`sifftma.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libIfft_la-sifftma.Tpo $(DEPDIR)/libIfft_la-sifftma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sifftma.c' object='libIfft_la-sifftma.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIfft_la_CFLAGS) $(CFLAGS) -c -o libIfft_la-sifftma.lo `test -f 'sifftma.c' || echo '$(srcdir)/'`sifftma.c
+
testDoubleIfft-testDoubleIfft.o: testDoubleIfft.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleIfft_CFLAGS) $(CFLAGS) -MT testDoubleIfft-testDoubleIfft.o -MD -MP -MF $(DEPDIR)/testDoubleIfft-testDoubleIfft.Tpo -c -o testDoubleIfft-testDoubleIfft.o `test -f 'testDoubleIfft.c' || echo '$(srcdir)/'`testDoubleIfft.c
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/testDoubleIfft-testDoubleIfft.Tpo $(DEPDIR)/testDoubleIfft-testDoubleIfft.Po
diff --git a/scilab2c/src/signalProcessing/ifft/difftma.c b/scilab2c/src/signalProcessing/ifft/difftma.c
new file mode 100644
index 00000000..d878b33a
--- /dev/null
+++ b/scilab2c/src/signalProcessing/ifft/difftma.c
@@ -0,0 +1,31 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud Torset
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "ifft.h"
+#include "zeros.h"
+
+
+void difftma ( double* in , int rows, int cols, double* out){
+ double* ZEROS;
+ doubleComplex* inCpx;
+ doubleComplex* outCpx;
+
+ ZEROS = malloc((uint)(rows*cols)*sizeof(double));
+ outCpx = malloc((uint)(rows*cols)*sizeof(doubleComplex));
+
+ dzerosa(ZEROS,rows,cols);
+ inCpx=DoubleComplexMatrix(in,ZEROS,rows*cols);
+
+ zifftma(inCpx,rows,cols,outCpx);
+
+ zreala(outCpx, rows*cols, out);
+}
diff --git a/scilab2c/src/signalProcessing/ifft/sifftma.c b/scilab2c/src/signalProcessing/ifft/sifftma.c
new file mode 100644
index 00000000..8e1e118c
--- /dev/null
+++ b/scilab2c/src/signalProcessing/ifft/sifftma.c
@@ -0,0 +1,31 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud Torset
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+#include "ifft.h"
+#include "zeros.h"
+
+
+void sifftma ( float* in , int rows, int cols, float* out){
+ float* ZEROS;
+ floatComplex* inCpx;
+ floatComplex* outCpx;
+
+ ZEROS = malloc((uint)(rows*cols)*sizeof(float));
+ outCpx = malloc((uint)(rows*cols)*sizeof(floatComplex));
+
+ szerosa(ZEROS,rows,cols);
+ inCpx=FloatComplexMatrix(in,ZEROS,rows*cols);
+
+ cifftma(inCpx,rows,cols,outCpx);
+
+ creala(outCpx, rows*cols, out);
+}
diff --git a/scilab2c/src/signalProcessing/ifft/testMatIfft.c b/scilab2c/src/signalProcessing/ifft/testMatIfft.c
index 60e74607..88de15e5 100644
--- a/scilab2c/src/signalProcessing/ifft/testMatIfft.c
+++ b/scilab2c/src/signalProcessing/ifft/testMatIfft.c
@@ -107,7 +107,73 @@
+ 0.8660254037844383745437,- 0.0000000000000000138778,+ 0.0000000000000000138778}
-static int testIfft(void){
+static void difftmaTest(void){
+ int i;
+
+ double in1[]=test1;
+ double in2[]=test2;
+ double in3[]=test3;
+ double in4[]=test4;
+ double in6[]=test6;
+ double in9[]=test9;
+
+ double resR1[]=RRESULT1;
+ double resR2[]=RRESULT2;
+ double resR3[]=RRESULT3;
+ double resR4[]=RRESULT4;
+ double resR6[]=RRESULT6;
+ double resR9[]=RRESULT9;
+
+ double out1[12], out2[12], out3[12], out4[12], out6[12], out9[9];
+
+
+ printf(" >>> Matrice 1*12 <<< \n");
+ difftma(in1, 1, 12, out1);
+ for (i=0;i<12;i++){
+ if (out1[i]>1e-14) assert( (fabs(out1[i]-resR1[i]) / fabs(out1[i])) < 1e-14 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 2*6 <<< \n");
+ difftma(in2, 2, 6, out2);
+ for (i=0;i<12;i++){
+ if (out2[i]>1e-14) assert( (fabs(out2[i]-resR2[i]) / fabs(out2[i])) < 1e-14 );
+ else assert(1);
+ }
+
+
+ printf(" >>> Matrice 3*4 <<< \n");
+ difftma(in3, 3, 4, out3);
+ for (i=0;i<12;i++){
+ if (out3[i]>1e-14) assert( (fabs(out3[i]-resR3[i]) / fabs(out3[i])) < 1e-14 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 4*3 <<< \n");
+ difftma(in4, 4, 3, out4);
+ for (i=0;i<12;i++){
+ if (out4[i]>1e-14) assert( (fabs(out4[i]-resR4[i]) / fabs(out4[i])) < 1e-14 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 6*2 <<< \n");
+ difftma(in6, 6, 2, out6);
+ for (i=0;i<12;i++){
+ if (out6[i]>1e-16) assert( (fabs(out6[i]-resR6[i]) / fabs(out6[i])) < 1e-14 );
+ else assert(1);
+ }
+
+ printf(" >>> Matrice 3*3 <<< \n");
+ difftma(in9, 3, 3, out9);
+ for (i=0;i<9;i++){
+ if (out9[i]>1e-16) assert( (fabs(out9[i]-resR9[i]) / fabs(out9[i])) < 1e-16 );
+ else assert(1);
+ }
+
+
+}
+
+static void zifftmaTest(void){
int i;
double inR1[]=test1;
@@ -130,7 +196,7 @@ static int testIfft(void){
double resR9[]=RRESULT9;
double resI9[]=IRESULT9;
- doubleComplex *in1, *in2, *in3, *in4, *in6, *in9, *out1, *out2, *out3, *out4, *out6, *out9;
+ doubleComplex *in1, *in2, *in3, *in4, *in6, *in9, out1[12], out2[12], out3[12], out4[12], out6[12], out9[12];
in1=malloc((uint)12*sizeof(doubleComplex));
in2=malloc((uint)12*sizeof(doubleComplex));
@@ -138,13 +204,9 @@ static int testIfft(void){
in4=malloc((uint)12*sizeof(doubleComplex));
in6=malloc((uint)12*sizeof(doubleComplex));
in9=malloc((uint)9*sizeof(doubleComplex));
- out1=malloc((uint)12*sizeof(doubleComplex));
- out2=malloc((uint)12*sizeof(doubleComplex));
- out3=malloc((uint)12*sizeof(doubleComplex));
- out4=malloc((uint)12*sizeof(doubleComplex));
- out6=malloc((uint)12*sizeof(doubleComplex));
- out9=malloc((uint)9*sizeof(doubleComplex));
-
+
+
+
for (i=0;i<12;i++){
in1[i]=DoubleComplex(inR1[i],0);
in2[i]=DoubleComplex(inR2[i],0);
@@ -156,81 +218,81 @@ static int testIfft(void){
in9[i]=DoubleComplex(inR9[i],0);
}
-
- zifftma(in1, 1, 12, out1);
- zifftma(in2, 2, 6, out2);
- zifftma(in3, 3, 4, out3);
- zifftma(in4, 4, 3, out4);
- zifftma(in6, 6, 2, out6);
- zifftma(in9, 3, 3, out9);
-
/* !!!!!!!!!!!!!!!!!!!!!!!
for the imaginary part, the assert is out + res instead of out - res
cause I export the transposate of the result matrix and the transposate change the sign
of the imaginary part.
And instead of change all the define, I only change the sign of the assert.*/
+ printf(" >>> Matrice 1*12 <<< \n");
+ zifftma(in1, 1, 12, out1);
for (i=0;i<12;i++){
- if (zreals(out1[i])>1e-16) assert( (fabs(zreals(out1[i])-resR1[i]) / fabs(zreals(out1[i]))) < 1e-14 );
+ if (zreals(out1[i])>1e-14) assert( (fabs(zreals(out1[i])-resR1[i]) / fabs(zreals(out1[i]))) < 1e-14 );
else assert(1);
- if (zimags(out1[i])>1e-16) assert( (fabs(zimags(out1[i])+resI1[i]) / fabs(zimags(out1[i]))) < 1e-14 );
+ if (zimags(out1[i])>1e-14) assert( (fabs(zimags(out1[i])+resI1[i]) / fabs(zimags(out1[i]))) < 1e-14 );
else assert(1);
}
-
+
+ printf(" >>> Matrice 2*6 <<< \n");
+ zifftma(in2, 2, 6, out2);
for (i=0;i<12;i++){
- if (zreals(out2[i])>1e-16) assert( (fabs(zreals(out2[i])-resR2[i]) / fabs(zreals(out2[i]))) < 1e-14 );
+ if (zreals(out2[i])>1e-14) assert( (fabs(zreals(out2[i])-resR2[i]) / fabs(zreals(out2[i]))) < 1e-14 );
else assert(1);
- if (zimags(out2[i])>1e-16) assert( (fabs(zimags(out2[i])+resI2[i]) / fabs(zimags(out2[i]))) < 1e-14 );
+ if (zimags(out2[i])>1e-14) assert( (fabs(zimags(out2[i])+resI2[i]) / fabs(zimags(out2[i]))) < 1e-13 );
else assert(1);
}
+
+ printf(" >>> Matrice 3*4 <<< \n");
+ zifftma(in3, 3, 4, out3);
for (i=0;i<12;i++){
- if (zreals(out3[i])>1e-16) assert( (fabs(zreals(out3[i])-resR3[i]) / fabs(zreals(out3[i]))) < 1e-14 );
+ if (zreals(out3[i])>1e-14) assert( (fabs(zreals(out3[i])-resR3[i]) / fabs(zreals(out3[i]))) < 1e-14 );
else assert(1);
- if (zimags(out3[i])>1e-16) assert( (fabs(zimags(out3[i])+resI3[i]) / fabs(zimags(out3[i]))) < 1e-14 );
+ if (zimags(out3[i])>1e-14) assert( (fabs(zimags(out3[i])+resI3[i]) / fabs(zimags(out3[i]))) < 1e-14 );
else assert(1);
}
-
+
+ printf(" >>> Matrice 4*3 <<< \n");
+ zifftma(in4, 4, 3, out4);
for (i=0;i<12;i++){
- if (zreals(out4[i])>1e-16) assert( (fabs(zreals(out4[i])-resR4[i]) / fabs(zreals(out4[i]))) < 1e-14 );
+ if (zreals(out4[i])>1e-14) assert( (fabs(zreals(out4[i])-resR4[i]) / fabs(zreals(out4[i]))) < 1e-14 );
else assert(1);
- if (zimags(out4[i])>1e-16) assert( (fabs(zimags(out4[i])+resI4[i]) / fabs(zimags(out4[i]))) < 1e-14 );
+ if (zimags(out4[i])>1e-14) assert( (fabs(zimags(out4[i])+resI4[i]) / fabs(zimags(out4[i]))) < 1e-14 );
else assert(1);
}
-
+
+ printf(" >>> Matrice 6*2 <<< \n");
+ zifftma(in6, 6, 2, out6);
for (i=0;i<12;i++){
if (zreals(out6[i])>1e-16) assert( (fabs(zreals(out6[i])-resR6[i]) / fabs(zreals(out6[i]))) < 1e-14 );
else assert(1);
if (zimags(out6[i])>1e-16) assert( (fabs(zimags(out6[i])+resI6[i]) / fabs(zimags(out6[i]))) < 1e-14 );
else assert(1);
}
-
+
+ printf(" >>> Matrice 3*3 <<< \n");
+ zifftma(in9, 3, 3, out9);
for (i=0;i<9;i++){
- printf("i : %d out : %f - res : %f - reste : %f\n",i,zimags(out9[i]),resI9[i],fabs(zimags(out9[i])-resI9[i]) / fabs(zimags(out9[i])));
if (zreals(out9[i])>1e-16) assert( (fabs(zreals(out9[i])-resR9[i]) / fabs(zreals(out9[i]))) < 1e-16 );
else assert(1);
if (zimags(out9[i])>1e-15) assert( (fabs(zimags(out9[i])-resI9[i]) / fabs(zimags(out9[i]))) < 1e-15 );
else assert(1);
- }
- free(in1);
- free(in2);
- free(in3);
- free(in4);
- free(in6);
- free(in9);
- free(out1);
- free(out2);
- free(out3);
- free(out4);
- free(out6);
- free(out9);
+ }
+}
+
+
+
+static int testiFft(void){
+ difftmaTest();
+ zifftmaTest();
return 0;
}
int main(void) {
- printf(">>> Ifft Matrices Double Tests <<<");
- assert(testIfft() == 0);
+ printf(">>> Fft Matrices Double Tests <<<\n");
+ assert(testiFft() == 0);
return 0;
}
+
diff --git a/scilab2c/src/signalProcessing/includes/fft.h b/scilab2c/src/signalProcessing/includes/fft.h
index 593c6eb3..79301325 100644
--- a/scilab2c/src/signalProcessing/includes/fft.h
+++ b/scilab2c/src/signalProcessing/includes/fft.h
@@ -22,8 +22,9 @@
#define cffts(in) in
#define zffts(in) in
-#define sfftma(in,rows,columns,out) cfftma(FloatComplexMatrix(in,0),rows,columns,out)
-#define dfftma(in,rows,columns,out) zfftma(DoubleComplexMatrix(in,0),rows,columns,out)
+void sfftma(float* in,int rows,int columns,float* out);
+
+void dfftma(double* in,int rows,int columns,double* out);
/*
** compute the fast fourier transform of a vector
diff --git a/scilab2c/src/signalProcessing/includes/hilbert.h b/scilab2c/src/signalProcessing/includes/hilbert.h
index 18cdde46..b011dab0 100644
--- a/scilab2c/src/signalProcessing/includes/hilbert.h
+++ b/scilab2c/src/signalProcessing/includes/hilbert.h
@@ -17,6 +17,13 @@
#include "floatComplex.h"
#include "doubleComplex.h"
+
+/* FIXME : input : real
+ output : complex
+ Is this true all time?
+ Or must we do input : real, output :real?
+*/
+
float shilberts(float in);
void shilberta (float* in, int rows, int cols, floatComplex *out);
diff --git a/scilab2c/src/signalProcessing/includes/ifft.h b/scilab2c/src/signalProcessing/includes/ifft.h
index a0c06ef4..877ea88e 100644
--- a/scilab2c/src/signalProcessing/includes/ifft.h
+++ b/scilab2c/src/signalProcessing/includes/ifft.h
@@ -21,16 +21,10 @@
#define ciffts(in) in
#define ziffts(in) in
-#define sifftma(in,rows,columns,out) {float* temp;\
- temp=malloc((uint)(rows*columns)*sizeof(float));\
- sfilla(temp,rows,columns,0);\
- cifftma(FloatComplexMatrix(in,temp,rows*columns),rows,columns,out);\
- }
-#define difftma(in,rows,columns,out) {double* temp;\
- temp=malloc((uint)(rows*columns)*sizeof(double));\
- dfilla(temp,rows,columns,0);\
- zifftma(DoubleComplexMatrix(in,temp,rows*columns),rows,columns,out);\
- }
+
+void sifftma ( float* in , int rows, int cols, float* out);
+
+void difftma ( double* in , int rows, int cols, double* out);
/*
** compute the inverse fast fourier transform of a vector