From 277d1edfa17bf3719d90ddbac8e31f6181e952c3 Mon Sep 17 00:00:00 2001
From: Sandeep Gupta
Date: Sun, 18 Jun 2017 23:55:40 +0530
Subject: First commit

---
 src/c/signalProcessing/fft/Makefile.am             |   83 ++
 src/c/signalProcessing/fft/Makefile.in             |  865 ++++++++++++++
 src/c/signalProcessing/fft/cfftma.c                |   52 +
 src/c/signalProcessing/fft/dfft2.c                 |   24 +
 src/c/signalProcessing/fft/dfftbi.c                |  322 +++++
 src/c/signalProcessing/fft/dfftma.c                |   31 +
 src/c/signalProcessing/fft/dfftmx.c                | 1211 +++++++++++++++++++
 src/c/signalProcessing/fft/fft842.c                |  173 +++
 src/c/signalProcessing/fft/fft_internal.h          |   42 +
 src/c/signalProcessing/fft/r2tx.c                  |   46 +
 src/c/signalProcessing/fft/r4tx.c                  |   49 +
 src/c/signalProcessing/fft/r8tx.c                  |  169 +++
 src/c/signalProcessing/fft/sfftma.c                |   34 +
 src/c/signalProcessing/fft/testDoubleFft.c         |  470 ++++++++
 src/c/signalProcessing/fft/testFloatFft.c          | 1238 ++++++++++++++++++++
 src/c/signalProcessing/fft/testMatFft.c            |  297 +++++
 .../fft/test_DoubleFft/testDoubleFft.vcxproj       |  178 +++
 .../test_DoubleFft/testDoubleFft.vcxproj.filters   |   22 +
 .../fft/test_FloatFft/testFloatFft.vcxproj         |  178 +++
 .../fft/test_FloatFft/testFloatFft.vcxproj.filters |   22 +
 .../fft/test_MatFft/testMatFft.vcxproj             |  178 +++
 .../fft/test_MatFft/testMatFft.vcxproj.filters     |   22 +
 src/c/signalProcessing/fft/zfftma.c                |  156 +++
 23 files changed, 5862 insertions(+)
 create mode 100644 src/c/signalProcessing/fft/Makefile.am
 create mode 100644 src/c/signalProcessing/fft/Makefile.in
 create mode 100644 src/c/signalProcessing/fft/cfftma.c
 create mode 100644 src/c/signalProcessing/fft/dfft2.c
 create mode 100644 src/c/signalProcessing/fft/dfftbi.c
 create mode 100644 src/c/signalProcessing/fft/dfftma.c
 create mode 100644 src/c/signalProcessing/fft/dfftmx.c
 create mode 100644 src/c/signalProcessing/fft/fft842.c
 create mode 100644 src/c/signalProcessing/fft/fft_internal.h
 create mode 100644 src/c/signalProcessing/fft/r2tx.c
 create mode 100644 src/c/signalProcessing/fft/r4tx.c
 create mode 100644 src/c/signalProcessing/fft/r8tx.c
 create mode 100644 src/c/signalProcessing/fft/sfftma.c
 create mode 100644 src/c/signalProcessing/fft/testDoubleFft.c
 create mode 100644 src/c/signalProcessing/fft/testFloatFft.c
 create mode 100644 src/c/signalProcessing/fft/testMatFft.c
 create mode 100644 src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj
 create mode 100644 src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj.filters
 create mode 100644 src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj
 create mode 100644 src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj.filters
 create mode 100644 src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj
 create mode 100644 src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj.filters
 create mode 100644 src/c/signalProcessing/fft/zfftma.c

(limited to 'src/c/signalProcessing/fft')

diff --git a/src/c/signalProcessing/fft/Makefile.am b/src/c/signalProcessing/fft/Makefile.am
new file mode 100644
index 00000000..07b10b4f
--- /dev/null
+++ b/src/c/signalProcessing/fft/Makefile.am
@@ -0,0 +1,83 @@
+##
+##  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+##  Copyright (C) 2006-2008 - INRIA - Bruno JOFRET
+##
+##  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
+##
+##
+
+
+
+libFft_la_CFLAGS =	-I . \
+			-I $(top_builddir)/src/c/type \
+			-I $(top_builddir)/src/c/signalProcessing/includes \
+			-I $(top_builddir)/src/c/operations/includes \
+			-I $(top_builddir)/src/c/matrixOperations/includes \
+			-I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+
+pkglib_LTLIBRARIES =	libFft.la
+
+libFft_la_SOURCES =  $(HEAD) $(SRC)
+
+HEAD =	../includes/fft.h \
+	fft_internal.h
+
+SRC	=		zfftma.c \
+			cfftma.c \
+            		dfft2.c \
+			dfftbi.c \
+			dfftmx.c \
+			fft842.c \
+			r2tx.c \
+			r4tx.c \
+			r8tx.c \
+			dfftma.c \
+			sfftma.c
+
+####
+# Checking Part
+####
+
+check_INCLUDES	=	-I . \
+			-I $(top_builddir)/src/c/type \
+			-I $(top_builddir)/src/c/signalProcessing/includes \
+			-I $(top_builddir)/src/c/matrixOperations/includes \
+			-I $(top_builddir)/src/c/operations/includes \
+			-I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+
+check_LDADD	=	$(top_builddir)/src/c/type/libDoubleComplex.la \
+			$(top_builddir)/src/c/type/libFloatComplex.la \
+			$(top_builddir)/src/fortran/lapack/libscilapack.la \
+			$(top_builddir)/src/fortran/blas/libsciblas.la \
+			$(top_builddir)/src/c/signalProcessing/fft/libFft.la \
+			$(top_builddir)/src/c/operations/addition/libAddition.la \
+			$(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+			$(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+			@LIBMATH@
+
+check_PROGRAMS	= 	testFloatFft testDoubleFft  testMatFft
+
+TESTS		=	testFloatFft testDoubleFft  testMatFft
+
+#
+# -*- Fftine Tests -*-
+#
+testFloatFft_SOURCES = 	testFloatFft.c
+testFloatFft_CFLAGS =	$(check_INCLUDES)
+testFloatFft_LDADD =	$(check_LDADD)
+
+testDoubleFft_SOURCES =	testDoubleFft.c
+testDoubleFft_CFLAGS =	$(check_INCLUDES)
+testDoubleFft_LDADD =	$(check_LDADD)
+
+
+testMatFft_SOURCES = 	testMatFft.c
+testMatFft_CFLAGS =	$(check_INCLUDES)
+testMatFft_LDADD =	$(check_LDADD)
diff --git a/src/c/signalProcessing/fft/Makefile.in b/src/c/signalProcessing/fft/Makefile.in
new file mode 100644
index 00000000..117cae37
--- /dev/null
+++ b/src/c/signalProcessing/fft/Makefile.in
@@ -0,0 +1,865 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = testFloatFft$(EXEEXT) testDoubleFft$(EXEEXT) \
+	testMatFft$(EXEEXT)
+TESTS = testFloatFft$(EXEEXT) testDoubleFft$(EXEEXT) \
+	testMatFft$(EXEEXT)
+subdir = src/c/signalProcessing/fft
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(pkglibdir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libFft_la_LIBADD =
+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-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) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(libFft_la_CFLAGS) \
+	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testDoubleFft_OBJECTS = testDoubleFft-testDoubleFft.$(OBJEXT)
+testDoubleFft_OBJECTS = $(am_testDoubleFft_OBJECTS)
+am__DEPENDENCIES_1 = $(top_builddir)/src/c/type/libDoubleComplex.la \
+	$(top_builddir)/src/c/type/libFloatComplex.la \
+	$(top_builddir)/src/fortran/lapack/libscilapack.la \
+	$(top_builddir)/src/fortran/blas/libsciblas.la \
+	$(top_builddir)/src/c/signalProcessing/fft/libFft.la \
+	$(top_builddir)/src/c/operations/addition/libAddition.la \
+	$(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+	$(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la
+testDoubleFft_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testDoubleFft_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testDoubleFft_CFLAGS) \
+	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testFloatFft_OBJECTS = testFloatFft-testFloatFft.$(OBJEXT)
+testFloatFft_OBJECTS = $(am_testFloatFft_OBJECTS)
+testFloatFft_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testFloatFft_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testFloatFft_CFLAGS) \
+	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_testMatFft_OBJECTS = testMatFft-testMatFft.$(OBJEXT)
+testMatFft_OBJECTS = $(am_testMatFft_OBJECTS)
+testMatFft_DEPENDENCIES = $(am__DEPENDENCIES_1)
+testMatFft_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(testMatFft_CFLAGS) \
+	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
+SOURCES = $(libFft_la_SOURCES) $(testDoubleFft_SOURCES) \
+	$(testFloatFft_SOURCES) $(testMatFft_SOURCES)
+DIST_SOURCES = $(libFft_la_SOURCES) $(testDoubleFft_SOURCES) \
+	$(testFloatFft_SOURCES) $(testMatFft_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBMATH = @LIBMATH@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+libFft_la_CFLAGS = -I . \
+			-I $(top_builddir)/src/c/type \
+			-I $(top_builddir)/src/c/signalProcessing/includes \
+			-I $(top_builddir)/src/c/operations/includes \
+			-I $(top_builddir)/src/c/matrixOperations/includes \
+			-I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+instdir = $(top_builddir)/lib
+pkglib_LTLIBRARIES = libFft.la
+libFft_la_SOURCES = $(HEAD) $(SRC)
+HEAD = ../includes/fft.h \
+	fft_internal.h
+
+SRC = zfftma.c \
+			cfftma.c \
+            		dfft2.c \
+			dfftbi.c \
+			dfftmx.c \
+			fft842.c \
+			r2tx.c \
+			r4tx.c \
+			r8tx.c \
+			dfftma.c \
+			sfftma.c
+
+
+####
+# Checking Part
+####
+check_INCLUDES = -I . \
+			-I $(top_builddir)/src/c/type \
+			-I $(top_builddir)/src/c/signalProcessing/includes \
+			-I $(top_builddir)/src/c/matrixOperations/includes \
+			-I $(top_builddir)/src/c/operations/includes \
+			-I $(top_builddir)/src/c/auxiliaryFunctions/includes
+
+check_LDADD = $(top_builddir)/src/c/type/libDoubleComplex.la \
+			$(top_builddir)/src/c/type/libFloatComplex.la \
+			$(top_builddir)/src/fortran/lapack/libscilapack.la \
+			$(top_builddir)/src/fortran/blas/libsciblas.la \
+			$(top_builddir)/src/c/signalProcessing/fft/libFft.la \
+			$(top_builddir)/src/c/operations/addition/libAddition.la \
+			$(top_builddir)/src/c/operations/subtraction/libSubtraction.la \
+			$(top_builddir)/src/c/matrixOperations/zeros/libMatrixZeros.la \
+			@LIBMATH@
+
+
+#
+# -*- Fftine Tests -*-
+#
+testFloatFft_SOURCES = testFloatFft.c
+testFloatFft_CFLAGS = $(check_INCLUDES)
+testFloatFft_LDADD = $(check_LDADD)
+testDoubleFft_SOURCES = testDoubleFft.c
+testDoubleFft_CFLAGS = $(check_INCLUDES)
+testDoubleFft_LDADD = $(check_LDADD)
+testMatFft_SOURCES = testMatFft.c
+testMatFft_CFLAGS = $(check_INCLUDES)
+testMatFft_LDADD = $(check_LDADD)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/c/signalProcessing/fft/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign src/c/signalProcessing/fft/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+	@list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+	}
+
+uninstall-pkglibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+	done
+
+clean-pkglibLTLIBRARIES:
+	-test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+	@list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libFft.la: $(libFft_la_OBJECTS) $(libFft_la_DEPENDENCIES) 
+	$(libFft_la_LINK) -rpath $(pkglibdir) $(libFft_la_OBJECTS) $(libFft_la_LIBADD) $(LIBS)
+
+clean-checkPROGRAMS:
+	@list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
+testDoubleFft$(EXEEXT): $(testDoubleFft_OBJECTS) $(testDoubleFft_DEPENDENCIES) 
+	@rm -f testDoubleFft$(EXEEXT)
+	$(testDoubleFft_LINK) $(testDoubleFft_OBJECTS) $(testDoubleFft_LDADD) $(LIBS)
+testFloatFft$(EXEEXT): $(testFloatFft_OBJECTS) $(testFloatFft_DEPENDENCIES) 
+	@rm -f testFloatFft$(EXEEXT)
+	$(testFloatFft_LINK) $(testFloatFft_OBJECTS) $(testFloatFft_LDADD) $(LIBS)
+testMatFft$(EXEEXT): $(testMatFft_OBJECTS) $(testMatFft_DEPENDENCIES) 
+	@rm -f testMatFft$(EXEEXT)
+	$(testMatFft_LINK) $(testMatFft_OBJECTS) $(testMatFft_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@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@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testMatFft-testMatFft.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+
+libFft_la-zfftma.lo: zfftma.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-zfftma.lo -MD -MP -MF $(DEPDIR)/libFft_la-zfftma.Tpo -c -o libFft_la-zfftma.lo `test -f 'zfftma.c' || echo '$(srcdir)/'`zfftma.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libFft_la-zfftma.Tpo $(DEPDIR)/libFft_la-zfftma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='zfftma.c' object='libFft_la-zfftma.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-zfftma.lo `test -f 'zfftma.c' || echo '$(srcdir)/'`zfftma.c
+
+libFft_la-cfftma.lo: cfftma.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-cfftma.lo -MD -MP -MF $(DEPDIR)/libFft_la-cfftma.Tpo -c -o libFft_la-cfftma.lo `test -f 'cfftma.c' || echo '$(srcdir)/'`cfftma.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libFft_la-cfftma.Tpo $(DEPDIR)/libFft_la-cfftma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cfftma.c' object='libFft_la-cfftma.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-cfftma.lo `test -f 'cfftma.c' || echo '$(srcdir)/'`cfftma.c
+
+libFft_la-dfft2.lo: dfft2.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-dfft2.lo -MD -MP -MF $(DEPDIR)/libFft_la-dfft2.Tpo -c -o libFft_la-dfft2.lo `test -f 'dfft2.c' || echo '$(srcdir)/'`dfft2.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libFft_la-dfft2.Tpo $(DEPDIR)/libFft_la-dfft2.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dfft2.c' object='libFft_la-dfft2.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-dfft2.lo `test -f 'dfft2.c' || echo '$(srcdir)/'`dfft2.c
+
+libFft_la-dfftbi.lo: dfftbi.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-dfftbi.lo -MD -MP -MF $(DEPDIR)/libFft_la-dfftbi.Tpo -c -o libFft_la-dfftbi.lo `test -f 'dfftbi.c' || echo '$(srcdir)/'`dfftbi.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libFft_la-dfftbi.Tpo $(DEPDIR)/libFft_la-dfftbi.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dfftbi.c' object='libFft_la-dfftbi.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-dfftbi.lo `test -f 'dfftbi.c' || echo '$(srcdir)/'`dfftbi.c
+
+libFft_la-dfftmx.lo: dfftmx.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-dfftmx.lo -MD -MP -MF $(DEPDIR)/libFft_la-dfftmx.Tpo -c -o libFft_la-dfftmx.lo `test -f 'dfftmx.c' || echo '$(srcdir)/'`dfftmx.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libFft_la-dfftmx.Tpo $(DEPDIR)/libFft_la-dfftmx.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dfftmx.c' object='libFft_la-dfftmx.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-dfftmx.lo `test -f 'dfftmx.c' || echo '$(srcdir)/'`dfftmx.c
+
+libFft_la-fft842.lo: fft842.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-fft842.lo -MD -MP -MF $(DEPDIR)/libFft_la-fft842.Tpo -c -o libFft_la-fft842.lo `test -f 'fft842.c' || echo '$(srcdir)/'`fft842.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libFft_la-fft842.Tpo $(DEPDIR)/libFft_la-fft842.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='fft842.c' object='libFft_la-fft842.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-fft842.lo `test -f 'fft842.c' || echo '$(srcdir)/'`fft842.c
+
+libFft_la-r2tx.lo: r2tx.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-r2tx.lo -MD -MP -MF $(DEPDIR)/libFft_la-r2tx.Tpo -c -o libFft_la-r2tx.lo `test -f 'r2tx.c' || echo '$(srcdir)/'`r2tx.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libFft_la-r2tx.Tpo $(DEPDIR)/libFft_la-r2tx.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='r2tx.c' object='libFft_la-r2tx.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-r2tx.lo `test -f 'r2tx.c' || echo '$(srcdir)/'`r2tx.c
+
+libFft_la-r4tx.lo: r4tx.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-r4tx.lo -MD -MP -MF $(DEPDIR)/libFft_la-r4tx.Tpo -c -o libFft_la-r4tx.lo `test -f 'r4tx.c' || echo '$(srcdir)/'`r4tx.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libFft_la-r4tx.Tpo $(DEPDIR)/libFft_la-r4tx.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='r4tx.c' object='libFft_la-r4tx.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-r4tx.lo `test -f 'r4tx.c' || echo '$(srcdir)/'`r4tx.c
+
+libFft_la-r8tx.lo: r8tx.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-r8tx.lo -MD -MP -MF $(DEPDIR)/libFft_la-r8tx.Tpo -c -o libFft_la-r8tx.lo `test -f 'r8tx.c' || echo '$(srcdir)/'`r8tx.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libFft_la-r8tx.Tpo $(DEPDIR)/libFft_la-r8tx.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='r8tx.c' object='libFft_la-r8tx.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-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@	$(am__mv) $(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@	$(am__mv) $(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@	$(am__mv) $(DEPDIR)/testDoubleFft-testDoubleFft.Tpo $(DEPDIR)/testDoubleFft-testDoubleFft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='testDoubleFft.c' object='testDoubleFft-testDoubleFft.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFft_CFLAGS) $(CFLAGS) -c -o testDoubleFft-testDoubleFft.o `test -f 'testDoubleFft.c' || echo '$(srcdir)/'`testDoubleFft.c
+
+testDoubleFft-testDoubleFft.obj: testDoubleFft.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFft_CFLAGS) $(CFLAGS) -MT testDoubleFft-testDoubleFft.obj -MD -MP -MF $(DEPDIR)/testDoubleFft-testDoubleFft.Tpo -c -o testDoubleFft-testDoubleFft.obj `if test -f 'testDoubleFft.c'; then $(CYGPATH_W) 'testDoubleFft.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleFft.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/testDoubleFft-testDoubleFft.Tpo $(DEPDIR)/testDoubleFft-testDoubleFft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='testDoubleFft.c' object='testDoubleFft-testDoubleFft.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleFft_CFLAGS) $(CFLAGS) -c -o testDoubleFft-testDoubleFft.obj `if test -f 'testDoubleFft.c'; then $(CYGPATH_W) 'testDoubleFft.c'; else $(CYGPATH_W) '$(srcdir)/testDoubleFft.c'; fi`
+
+testFloatFft-testFloatFft.o: testFloatFft.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFft_CFLAGS) $(CFLAGS) -MT testFloatFft-testFloatFft.o -MD -MP -MF $(DEPDIR)/testFloatFft-testFloatFft.Tpo -c -o testFloatFft-testFloatFft.o `test -f 'testFloatFft.c' || echo '$(srcdir)/'`testFloatFft.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/testFloatFft-testFloatFft.Tpo $(DEPDIR)/testFloatFft-testFloatFft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='testFloatFft.c' object='testFloatFft-testFloatFft.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFft_CFLAGS) $(CFLAGS) -c -o testFloatFft-testFloatFft.o `test -f 'testFloatFft.c' || echo '$(srcdir)/'`testFloatFft.c
+
+testFloatFft-testFloatFft.obj: testFloatFft.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFft_CFLAGS) $(CFLAGS) -MT testFloatFft-testFloatFft.obj -MD -MP -MF $(DEPDIR)/testFloatFft-testFloatFft.Tpo -c -o testFloatFft-testFloatFft.obj `if test -f 'testFloatFft.c'; then $(CYGPATH_W) 'testFloatFft.c'; else $(CYGPATH_W) '$(srcdir)/testFloatFft.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/testFloatFft-testFloatFft.Tpo $(DEPDIR)/testFloatFft-testFloatFft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='testFloatFft.c' object='testFloatFft-testFloatFft.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testFloatFft_CFLAGS) $(CFLAGS) -c -o testFloatFft-testFloatFft.obj `if test -f 'testFloatFft.c'; then $(CYGPATH_W) 'testFloatFft.c'; else $(CYGPATH_W) '$(srcdir)/testFloatFft.c'; fi`
+
+testMatFft-testMatFft.o: testMatFft.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatFft_CFLAGS) $(CFLAGS) -MT testMatFft-testMatFft.o -MD -MP -MF $(DEPDIR)/testMatFft-testMatFft.Tpo -c -o testMatFft-testMatFft.o `test -f 'testMatFft.c' || echo '$(srcdir)/'`testMatFft.c
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/testMatFft-testMatFft.Tpo $(DEPDIR)/testMatFft-testMatFft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='testMatFft.c' object='testMatFft-testMatFft.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatFft_CFLAGS) $(CFLAGS) -c -o testMatFft-testMatFft.o `test -f 'testMatFft.c' || echo '$(srcdir)/'`testMatFft.c
+
+testMatFft-testMatFft.obj: testMatFft.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatFft_CFLAGS) $(CFLAGS) -MT testMatFft-testMatFft.obj -MD -MP -MF $(DEPDIR)/testMatFft-testMatFft.Tpo -c -o testMatFft-testMatFft.obj `if test -f 'testMatFft.c'; then $(CYGPATH_W) 'testMatFft.c'; else $(CYGPATH_W) '$(srcdir)/testMatFft.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/testMatFft-testMatFft.Tpo $(DEPDIR)/testMatFft-testMatFft.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='testMatFft.c' object='testMatFft-testMatFft.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testMatFft_CFLAGS) $(CFLAGS) -c -o testMatFft-testMatFft.obj `if test -f 'testMatFft.c'; then $(CYGPATH_W) 'testMatFft.c'; else $(CYGPATH_W) '$(srcdir)/testMatFft.c'; fi`
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
+	srcdir=$(srcdir); export srcdir; \
+	list=' $(TESTS) '; \
+	$(am__tty_colors); \
+	if test -n "$$list"; then \
+	  for tst in $$list; do \
+	    if test -f ./$$tst; then dir=./; \
+	    elif test -f $$tst; then dir=; \
+	    else dir="$(srcdir)/"; fi; \
+	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+	      all=`expr $$all + 1`; \
+	      case " $(XFAIL_TESTS) " in \
+	      *[\ \	]$$tst[\ \	]*) \
+		xpass=`expr $$xpass + 1`; \
+		failed=`expr $$failed + 1`; \
+		col=$$red; res=XPASS; \
+	      ;; \
+	      *) \
+		col=$$grn; res=PASS; \
+	      ;; \
+	      esac; \
+	    elif test $$? -ne 77; then \
+	      all=`expr $$all + 1`; \
+	      case " $(XFAIL_TESTS) " in \
+	      *[\ \	]$$tst[\ \	]*) \
+		xfail=`expr $$xfail + 1`; \
+		col=$$lgn; res=XFAIL; \
+	      ;; \
+	      *) \
+		failed=`expr $$failed + 1`; \
+		col=$$red; res=FAIL; \
+	      ;; \
+	      esac; \
+	    else \
+	      skip=`expr $$skip + 1`; \
+	      col=$$blu; res=SKIP; \
+	    fi; \
+	    echo "$${col}$$res$${std}: $$tst"; \
+	  done; \
+	  if test "$$all" -eq 1; then \
+	    tests="test"; \
+	    All=""; \
+	  else \
+	    tests="tests"; \
+	    All="All "; \
+	  fi; \
+	  if test "$$failed" -eq 0; then \
+	    if test "$$xfail" -eq 0; then \
+	      banner="$$All$$all $$tests passed"; \
+	    else \
+	      if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+	      banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+	    fi; \
+	  else \
+	    if test "$$xpass" -eq 0; then \
+	      banner="$$failed of $$all $$tests failed"; \
+	    else \
+	      if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+	      banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+	    fi; \
+	  fi; \
+	  dashes="$$banner"; \
+	  skipped=""; \
+	  if test "$$skip" -ne 0; then \
+	    if test "$$skip" -eq 1; then \
+	      skipped="($$skip test was not run)"; \
+	    else \
+	      skipped="($$skip tests were not run)"; \
+	    fi; \
+	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+	      dashes="$$skipped"; \
+	  fi; \
+	  report=""; \
+	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+	    report="Please report to $(PACKAGE_BUGREPORT)"; \
+	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+	      dashes="$$report"; \
+	  fi; \
+	  dashes=`echo "$$dashes" | sed s/./=/g`; \
+	  if test "$$failed" -eq 0; then \
+	    echo "$$grn$$dashes"; \
+	  else \
+	    echo "$$red$$dashes"; \
+	  fi; \
+	  echo "$$banner"; \
+	  test -z "$$skipped" || echo "$$skipped"; \
+	  test -z "$$report" || echo "$$report"; \
+	  echo "$$dashes$$std"; \
+	  test "$$failed" -eq 0; \
+	else :; fi
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+installdirs:
+	for dir in "$(DESTDIR)$(pkglibdir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+	clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+	clean-checkPROGRAMS clean-generic clean-libtool \
+	clean-pkglibLTLIBRARIES ctags distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-pkglibLTLIBRARIES install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-pkglibLTLIBRARIES
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/c/signalProcessing/fft/cfftma.c b/src/c/signalProcessing/fft/cfftma.c
new file mode 100644
index 00000000..6bd2f744
--- /dev/null
+++ b/src/c/signalProcessing/fft/cfftma.c
@@ -0,0 +1,52 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ *  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 <stdlib.h>
+#include "fft.h"
+
+void cfftma ( floatComplex* in , int rows, int cols, floatComplex* out)
+{
+
+	int i = 0 ;
+	/* these 3 variable are created to permit to use the value in the fortran functions
+	   because they need doubleComplex matrix as arguments and we can't cast directly the pointers
+	   without having problems , i know that's ugly */
+	doubleComplex *dblin	= NULL;
+	doubleComplex *dblout	= NULL;
+
+
+
+	/* Array allocations*/
+	dblin		= (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int)(rows * cols));
+	dblout		= (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int)(rows * cols));
+
+
+
+	/*copy and cast all the floatComplex value into doubleComplex value */
+	for ( i = 0 ; i < (rows * cols) ; i ++ )
+		{
+		dblin[i] = DoubleComplex ( (double) creals( in[i]) , (double) cimags ( in[i])) ;
+		}
+
+        zfftma ( dblin, rows , cols , dblout );
+
+
+	for ( i = 0 ; i < (rows * cols) ; i++ )
+        {
+		out[i] = FloatComplex ((float)  zreals ( dblout[i]) , (float) zimags ( dblout[i])) ;
+
+        }
+
+    free ( dblin);
+    free ( dblout);
+
+}
diff --git a/src/c/signalProcessing/fft/dfft2.c b/src/c/signalProcessing/fft/dfft2.c
new file mode 100644
index 00000000..9aa0bd53
--- /dev/null
+++ b/src/c/signalProcessing/fft/dfft2.c
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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_internal.h"
+
+void dfft2 ( double* a , double* b , int nseg , int n , int nspn , int isn , int ierr )
+{
+
+
+   dfftbi ( a   , b     , nseg  , n      , nspn , isn , ierr  );
+
+
+
+   return ;
+}
diff --git a/src/c/signalProcessing/fft/dfftbi.c b/src/c/signalProcessing/fft/dfftbi.c
new file mode 100644
index 00000000..8ddef44f
--- /dev/null
+++ b/src/c/signalProcessing/fft/dfftbi.c
@@ -0,0 +1,322 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ *  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 <stdlib.h>
+#include <stdio.h>
+#include "max.h"
+#include "fft_internal.h"
+
+/*
+c arrays a and b originally hold the real and imaginary
+c      components of the data, and return the real and
+c      imaginary components of the resulting fourier coefficients.
+c multivariate data is indexed according to the fortran
+c      array element successor function, without limit
+c      on the number of implied multiple subscripts.
+c      the subroutine is called once for each variate.
+c      the calls for a multivariate transform may be in any order.
+c
+c n is the dimension of the current variable.
+c nspn is the spacing of consecutive data values
+c      while indexing the current variable.
+c nseg*n*nspn is the total number of complex data values.
+c the sign of isn determines the sign of the complex
+c      exponential, and the magnitude of isn is normally one.
+c      the magnitude of isn determines the indexing increment for a&b.
+c
+c if fft is called twice, with opposite signs on isn, an
+c      identity transformation is done...calls can be in either order.
+c      the results are scaled by 1/n when the sign of isn is positive.
+c
+c a tri-variate transform with a(n1,n2,n3), b(n1,n2,n3)
+c is computed by
+c        call fft(a,b,n2*n3,n1,1,-1)
+c        call fft(a,b,n3,n2,n1,-1)
+c        call fft(a,b,1,n3,n1*n2,-1)
+c
+c a single-variate transform of n complex data values is computed by
+c        call fft(a,b,1,n,1,-1)
+c
+c the data may alternatively be stored in a single complex
+c      array a, then the magnitude of isn changed to two to
+c      give the correct indexing increment and a(2) used to
+c      pass the initial address for the sequence of imaginary
+c      values, e.g.
+c
+c
+c array nfac is working storage for factoring n.  the smallest
+c      number exceeding the 15 locations provided is 12,754,584.
+c!
+*/
+void dfftbi ( double* a , double* b , int nseg , int n    , int nspn  ,
+              int isn   , int ierr)
+{
+
+    double* rstak ;
+    int*  istak ;
+
+   int lout = 0 ;
+   int lnow = 10;
+   int lused= 10;
+
+   int lbook = 10 ;
+
+
+   int nfac[15] ;
+   int i ;
+   int in ;
+   int j = 3 ;
+   int j2 = 3 ;
+   int j3 = 3 ;
+   int jj = 9;
+   int m = 0 ;
+   int k ;
+   int kt ;
+   int kkk ;
+   int nspan ;
+   int nitems ;
+   int ntot ;
+   int maxp  = 0;
+   int maxf ;
+   int itype;
+   int istkgt ;
+
+
+   int nf = abs ( n ) ;
+
+   ierr = 0 ;
+
+   /*determine the factors of n */
+
+
+   if ( nf == 1)
+      return ;
+
+   k = nf ;
+
+   nspan = abs ( nf*nspn ) ;
+   ntot  = abs ( nspan*nseg) ;
+
+
+   if ( isn*ntot == 0 )
+      {
+      ierr = 1 ;
+      return  ;
+      }
+
+
+/* we search as much 4 in the factor of vector's length as we can */
+
+   while ( (k- (int)(k/16)*16 ) == 0 )
+      {
+         m++;
+         nfac[m-1] = 4 ;
+         k = k >> 4 ;
+      }
+
+
+/* we search all square factor */
+
+   do
+      {
+      while ( k%jj == 0 )
+         {
+            m++;
+            nfac[m-1] = j ;
+            k /= jj ;
+
+         }
+
+         j+=2;
+         jj= j*j ;
+
+      }while ( jj <= k);
+
+
+
+
+/* if the remaining size after all the previous division is less than 4
+   then it's the last factor  */
+  if ( k <= 4)
+     {
+
+      kt = m;
+      nfac[m] = k;
+      if ( k != 1 )
+         m++;
+      }
+   else
+     {
+       if ( (k & 3) == 0 )
+         {
+            m++;
+            nfac[m-1] = 2 ;
+            k = k >> 2 ;
+          }
+
+       /*all square factor out now but k >= 5 still */
+       kt = m ;
+       maxp = max ( (kt+1)*2 , k-1);
+       j=2;
+
+      do
+        {
+         if ( k%j == 0 )
+            {
+
+               m++;
+               nfac[m-1] = j ;
+               k /= j ;
+            }
+
+          j = (j+1) | 1 ;
+
+         }while ( j <= k );
+
+      }
+
+
+
+   if ( m <= ( kt+1) )
+      maxp = m + kt + 1  ;
+
+
+
+   if ( m + kt > 15)
+    {
+      ierr = 2 ;
+
+      return ;
+    }
+
+
+   if ( kt != 0 )
+      {
+         j = kt ;
+
+         do{
+            m++;
+
+            nfac[m-1] = nfac[j-1];
+            j--;
+           }while ( j != 0) ;
+      }
+
+
+    maxf = nfac[m-kt-1] ;
+
+   if ( kt > 0 )
+      maxf = max ( nfac[kt-1] , maxf );
+
+
+
+
+   for ( kkk = 1 ; kkk <= m ; kkk++ )
+      {
+      maxf = max ( maxf , nfac[kkk-1]);
+
+      }
+
+
+
+
+
+
+
+ nitems = maxf * 4 ;
+ itype = 4 ;
+
+
+ istkgt = 2 + ((lnow-1)/2) ;/*lnow = 10*/
+ istkgt = 6;
+
+ /*i = ( (istkgt - 1 + nitems) * isize[3] -1) + 3 ;*/
+ i = 12 + nitems*2;
+
+/* this part is mainly to allocate size for workspace */
+
+   istak = (int*) malloc ( sizeof (int) * (unsigned int) i);
+
+   istak[i-2] = itype ;
+   istak[i-1] = lnow  ;
+   lout ++ ;
+   lnow = i ;
+   lused = max ( lused , lnow );
+
+   j = istkgt ;
+   jj = j + maxf ;
+   j2 = jj+ maxf ;
+   j3 = j2+ maxf ;
+
+   nitems = maxp ;
+   itype  = 2 ;
+
+  /*istkgt = ( lnow*isize[1] -1)/isize[1] + 2;*/
+   istkgt =  lnow + 1 ;
+   /*i = ( (istkgt - 1 + nitems) * isize[1] -1) / isize[1] + 3 ;*/
+   i = lnow  + nitems + 2 ;
+   istak = (int*) realloc ( istak ,sizeof (int) * (unsigned int) i);
+   rstak = (double*) malloc ( sizeof (double) * (unsigned int) i);
+
+
+
+
+
+
+   istak[i-2] = itype ;
+   istak[i-1] = lnow  ;
+   lout ++ ;
+   lnow = i ;
+   lused = max ( lused , lnow );
+
+   k = istkgt ;
+
+/*
+c     la carte suivante est a supprimer si simple precision
+c     next instruction commented by FD&MG (simulog residue?)
+c    ********************************************
+c      k=2*k-1
+c    *********************************************
+*/
+
+
+
+   dfftmx( a , b , ntot , nf , nspan ,
+           isn , m , kt , &rstak[j-1] , &rstak[jj-1] ,
+            &rstak[j2-1] , &rstak[j3-1] , &istak[k-1] , nfac);
+
+   k =2 ;
+
+   in = 2 ;
+/*
+   if (!( lbook <= lnow &&  lnow <= lused  ))
+      {
+         ierr = 3 ;
+         return ;
+      }
+*/
+   while ( in > 0)
+      {
+         if ( lbook > istak[lnow-1] || istak[lnow-1] >=  lnow-1)
+         {
+            ierr = 4 ;
+         }
+
+         lout-- ;
+         lnow = istak[lnow-1] ;
+         in-- ;
+      }
+   free(istak);
+   free(rstak);
+   
+   return ;
+}
diff --git a/src/c/signalProcessing/fft/dfftma.c b/src/c/signalProcessing/fft/dfftma.c
new file mode 100644
index 00000000..cf584623
--- /dev/null
+++ b/src/c/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 <stdlib.h>
+#include "fft.h"
+#include "zeros.h"
+
+void dfftma ( double* in , int rows, int cols, double* out){
+	double* ZEROS;
+	doubleComplex* inCpx;
+	doubleComplex* outCpx;
+
+	ZEROS = (double*) malloc((unsigned int)(rows*cols)*sizeof(double));
+	outCpx = (doubleComplex*) malloc((unsigned int)(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/src/c/signalProcessing/fft/dfftmx.c b/src/c/signalProcessing/fft/dfftmx.c
new file mode 100644
index 00000000..f7d6ce30
--- /dev/null
+++ b/src/c/signalProcessing/fft/dfftmx.c
@@ -0,0 +1,1211 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ *  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 <stdlib.h>
+#include <math.h>
+#include "max.h"
+#include "min.h"
+#include "fft_internal.h"
+
+
+/*c'est moche je sais */
+
+static double* a ;
+static double* b ;
+static int     ntot  ;
+static int     n     ;
+static int     nspan ;
+static int     isn   ;
+static int     m     ;
+static int     kt    ;
+static double*    wt    ;
+static double*    ck    ;
+static double*    bt    ;
+static double*    sk    ;
+static int*    np    ;
+static int*    nfac  ;
+static int     inc   ;
+static int     nt    ;
+static int     ks    ;
+
+static double  rad   ;
+static double  c72   ;
+static double  s72   ;
+static double  s120  ;
+
+static double  aa ;
+static double  ak ;
+static double  akm ;
+static double  akp ;
+static double  aj ;
+static double  ajp ;
+static double  ajm ;
+
+static double  bb ;
+static double  bk ;
+static double  bkm ;
+static double  bkp ;
+static double  bj ;
+static double  bjp ;
+static double  bjm ;
+static double  dr ;
+
+static double  cd ;
+static double  c1 ;
+static double  c2 ;
+static double  c3 ;
+
+static double  sd ;
+static double  s1 ;
+static double  s2 ;
+static double  s3 ;
+
+static int      kspan ;
+static int     nn ;
+static int     jc ;
+static int     klim ;
+static int     jf ;
+static int     maxf ;
+static int     kk ;
+static int     k ;
+static int     k1 ;
+static int     k2 ;
+static int     k3 ;
+static int     k4 ;
+static int     mm ;
+static int     kspnn ;
+static int      i ;
+static int      j ;
+static int      jj;
+
+/* Prototypes */
+
+static   void preliminaryWork (void);
+static    void permute_stage1 (void);
+static    void permute_stage2 (void);
+static    void f4t_150 (void);
+static    void factorOf3Transform (void) ;
+static    void factorOf5Transform (void) ;
+static    void preFOtherTransform (void);
+static    void factorOfOtherTransform (void);
+static    void pre_sqFactor2NormlOrder (void);
+static    void nonSqFactor2NormOrder (void) ;
+static    void detPermutCycles (void);
+static    void reorderMatrix (void ) ;
+
+static    int f4t_170 (void);
+static    int factorTransform (void);
+static    int pre_fOf2Trans (void);
+static    int factorOf2Transform (void);
+static    int factorOf4Transform (void);
+static    int  mulByRotationFactor (void );
+static    int  post_sqFactor2NormlOrder (void);
+static    void  single_sqFactor2NormlOrder (void);
+static    int  multi_sqFactor2NormlOrder (void);
+
+/* End Prototypes */
+
+/*note on this code all numbers alone in comment is
+ a reference to the corresponding goto in the original fotran code */
+
+int dfftmx ( double* _pdblA , double* _pdblB , int _iNtot, int _iN, int _iNspan,
+             int _iIsn, int _iM, int _iKt, double* _pdblWt, double* _pdblCk,
+             double* _pdblBt, double* _pdblSk, int* _piNp, int* _piNfac)
+{
+   int retVal = 0 ;
+   a = _pdblA ;
+   b = _pdblB ;
+
+   ntot = _iNtot ;
+   n    = _iN ;
+   nspan= _iNspan ;
+   isn  = _iIsn;
+   m    = _iM ;
+   kt   = _iKt ;
+   wt   = _pdblWt ;
+   ck   = _pdblCk;
+   bt   = _pdblBt;
+   sk   = _pdblSk;
+   np   = _piNp;
+   nfac = _piNfac;
+
+   inc = abs ( isn ) ;
+   nt = inc*ntot ;
+   ks = inc*nspan;
+   rad = atan((double)1);
+   c72 = cos (rad/0.6250);
+   s72 = sin (rad/0.6250);
+   s120= sqrt(0.750);
+
+
+
+   preliminaryWork() ;
+
+
+   while ( retVal == 0 ) retVal = factorTransform ( ) ;
+
+   np[0] = ks ;
+
+   if ( kt != 0) permute_stage1 ( ) ;
+
+
+   if ( 2*kt + 1 < m ) permute_stage2 ( ) ;
+
+   _pdblA = a ;
+   _pdblB = b ;
+
+   return 0 ;
+}
+
+/** **************************************
+Sous-Fonctions
+******************************************/
+
+
+
+/* this function only set the value of variable */
+static void preliminaryWork (void)
+{
+   s72 = -s72 ;
+   s120= -s120;
+   rad = -rad ;
+
+   kspan = ks ;
+   nn = nt -inc ;
+   jc = ks/n ;
+
+   /* sin , cos values are re-initialized each lim steps */
+
+   klim = 32*jc ;
+   i = 0;
+   jf = 0 ;
+
+   if ( kt > 0 )  maxf = max ( nfac[kt-1] , nfac[m-kt-1] );
+   else 	  maxf = nfac[m-kt-1] ;
+
+}
+
+
+
+/*40*/
+/* this function is call as many time as dfftbi has determined factor for the size of the input vector
+   each time we call a transform function for each kind of factor , we begin by the smallest
+   factor are stored in nfac
+ */
+
+static int  factorTransform (void)
+{
+
+   int retVal = 42;
+
+   dr = 8 * (double)jc/(double)kspan ;
+   cd = 2 * sin(0.5*dr*rad)*sin(0.5*dr*rad);
+   sd = sin(dr*rad) ;
+   kk = 1 ;
+   i++ ;
+
+
+
+
+switch ( nfac[i-1] )
+   {
+      case 2 :
+         /*transform for factor of 2 (including rotation factor)*/
+
+         retVal = pre_fOf2Trans() ;
+         if ( retVal == 0 )  factorOf2Transform () ;
+
+         break ;
+
+      case 4 :
+
+         kspnn = kspan ;
+         kspan = kspan >> 2 ; /*kspan /= 4 */
+
+         retVal = factorOf4Transform () ;
+         break ;
+
+      case 3 :
+
+         k = nfac[i-1] ;
+         kspnn = kspan ;
+         kspan = kspan / k ;
+
+         factorOf3Transform ( ) ;
+         break ;
+
+      case 5 :
+
+         k = nfac[i-1] ;
+         kspnn = kspan ;
+         kspan = kspan / k ;
+
+         factorOf5Transform ( ) ;
+         break ;
+
+      default :
+
+         k = nfac[i-1] ;
+         kspnn = kspan ;
+         kspan = kspan / k ;
+
+         if ( nfac[i-1] != jf) preFOtherTransform ( ) ;
+
+         factorOfOtherTransform ( ) ;
+         break ;
+    }
+
+
+
+   if ( retVal == 42 )
+    {
+      if ( i !=  m)  retVal = mulByRotationFactor ( ) ;
+      else           retVal = 1 ;
+    }
+
+   if ( retVal == 1 ) return 1 ; /*goto permute */
+   else 	      return 0 ; /*goto factor_transform => once again*/
+
+}
+
+/* permutation for square factor of n */
+static void permute_stage1 (void)
+{
+
+ int retVal = 1 ;
+
+   pre_sqFactor2NormlOrder () ;
+
+   if ( n == ntot )
+      /*permutation for single-variate transform (optional code)*/
+      while ( retVal == 1)
+        {
+         single_sqFactor2NormlOrder () ;
+         retVal = post_sqFactor2NormlOrder () ;
+        }
+   else
+      /*permutation for multivariate transform*/
+      while ( retVal == 1) retVal = multi_sqFactor2NormlOrder ();
+
+}
+
+static void permute_stage2 (void)
+{
+	kspnn = np[kt] ;
+
+	/*permutation for square-free facotrs of n */
+	nonSqFactor2NormOrder () ;
+
+	/*determine the permutation cycles of length greater than 1*/
+	detPermutCycles ();
+
+	j = k3 + 1;
+	nt -= kspnn ;
+	i = nt - inc + 1 ;
+	while ( nt >= 0 )
+	{
+		reorderMatrix ( ) ;
+
+		j = k3 + 1 ;
+		nt -= kspnn ;
+		i = nt - inc + 1 ;
+         }
+}
+
+/*****************************************
+Sous-Sous-Fonctions
+******************************************/
+
+
+
+
+
+static int pre_fOf2Trans (void)
+{
+	kspan /= 2;
+	k1 = kspan + 2 ;
+	/*50*/
+	do{
+		do{
+			k2 = kk + kspan ;
+			ak = a[k2-1] ;
+			bk = b[k2-1] ;
+
+			a[k2-1] = a[kk-1] - ak;
+			b[k2-1] = b[kk-1] - bk;
+
+			a[kk-1] = a[kk-1] + ak;
+			b[kk-1] = b[kk-1] + bk;
+
+			kk = k2 + kspan ;
+		}while (kk <= nn);
+
+		kk -= nn ;
+	}while (kk <= jc);
+
+
+	if ( kk > kspan )  return 1 ; /*goto350*/
+	else               return 0 ; /*goto60*/
+
+
+}
+
+
+
+static int factorOf2Transform (void)
+{
+	do /*60*/ {/*while ( kk <= jc*2 )*/
+		c1 = 1 - cd ;
+		s1 = sd ;
+		mm = min( k1/2 , klim);
+
+		do/* do 80 */  {/*while ( kk <= mm || ( kk > mm && kk < k2 ))*/
+			do {/*while(kk > k2) */
+				do { /*while (  kk < nt )*/
+					k2 = kk + kspan;
+
+					ak = a[kk-1] - a[k2-1];
+					bk = b[kk-1] - b[k2-1];
+
+					a[kk-1] = a[kk-1] + a[k2-1];
+					b[kk-1] = b[kk-1] + b[k2-1];
+
+					a[k2-1] = c1*ak - s1*bk;
+					b[k2-1] = s1*ak + c1*bk;
+
+					kk = k2 + kspan;
+				}while (  kk < nt );
+
+				k2 = kk - nt;
+				c1 = -c1;
+				kk = k1 - k2;
+
+
+			}while (kk > k2);
+
+			kk += jc;
+
+			if ( kk <= mm ) /* 70 */
+			{
+				ak =  c1 - ( cd*c1+sd*s1) ;
+				s1 += (sd*c1-cd*s1) ;
+				/*c the following three statements compensate for truncation
+				c error.  if rounded arithmetic is used, substitute
+				c c1=ak*/
+				c1 = 0.5/(ak*ak+s1*s1) + 0.5 ;
+				s1 *= c1 ;
+				c1 *= ak ;
+			}
+			else {
+				if ( kk < k2 ) /*90*/ {
+					s1 = dr*rad*((double)(kk-1)/(double)jc);
+					c1 = cos(s1) ;
+					s1 = sin(s1) ;
+					mm = min(k1/2,mm+klim);
+				}
+			}
+
+		} while ( kk <= mm || ( kk > mm && kk < k2 ));
+
+		k1 += (inc+inc) ;
+		kk = (k1-kspan)/2 + jc;
+
+	} while ( kk <= jc*2 );
+
+
+	return 0 ; /*goto40*/
+}
+
+
+/* this one is just an optimisation of the factor of 2 transform , we compute more things each turn */
+
+static int factorOf4Transform (void)
+{
+   int return_value = 0 ;
+
+   /*120*/
+   do
+      {
+         c1 = 1 ;
+         s1 = 0 ;
+
+         mm = min ( kspan , klim ) ;
+
+         do
+            {
+            f4t_150 () ;
+            return_value = f4t_170 () ;
+            } while (  return_value == 0 );
+
+         kk += ( inc - kspan ) ;
+      } while ( kk <= jc ) ;
+
+
+
+   if ( kspan == jc )
+        return 1 ; /*goto350*/
+   else
+         return 0 ;/*goto40*/
+
+
+}
+
+/*this function and the following are just here for conveniance , they just do fourier transformation  for factor of 4
+  but as the code was a bit long in factorof4transform , we've created two sub-functions */
+
+static void f4t_150 (void)
+{
+
+   do{
+      k1 = kk + kspan ;
+      k2 = k1 + kspan ;
+      k3 = k2 + kspan ;
+
+      akp = a[kk-1] + a[k2-1] ;
+      akm = a[kk-1] - a[k2-1] ;
+
+      ajp = a[k1-1] + a[k3-1] ;
+      ajm = a[k1-1] - a[k3-1] ;
+
+      a[kk-1] = akp + ajp ;
+      ajp = akp - ajp ;
+
+      bkp = b[kk-1] + b[k2-1] ;
+      bkm = b[kk-1] - b[k2-1] ;
+
+      bjp = b[k1-1] + b[k3-1] ;
+      bjm = b[k1-1] - b[k3-1] ;
+
+      b[kk-1] = bkp + bjp ;
+      bjp = bkp - bjp ;
+
+      akp = akm + bjm ;
+      akm = akm - bjm ;
+
+      bkp = bkm - ajm ;
+      bkm = bkm + ajm ;
+
+      if ( s1 == 0 )/*190*/
+         {
+         a[k1-1] = akp ;
+         a[k2-1] = ajp ;
+         a[k3-1] = akm ;
+
+         b[k1-1] = bkp ;
+         b[k2-1] = bjp ;
+         b[k3-1] = bkm ;
+
+
+         }
+      else /*160*/
+         {
+
+         a[k1-1] = akp*c1 - bkp*s1 ;
+         a[k2-1] = ajp*c2 - bjp*s2 ;
+         a[k3-1] = akm*c3 - bkm*s3 ;
+
+         a[k1-1] = bkp*c1 + akp*s1 ;
+         a[k2-1] = bjp*c2 + ajp*s2 ;
+         a[k3-1] = bkm*c3 + akm*s3 ;
+         }
+       kk=k3+kspan;
+    }while  ( kk <= nt ) ;
+
+
+}
+
+static int  f4t_170 (void)
+{
+   kk += ( jc - nt ) ;
+
+   if ( kk <= mm )
+      {
+       c2 = c1 - (cd*c1 + sd*s1);
+       s1 = s1 + (sd*c1 - cd*s1);
+
+      /*
+      the following three statements compensate for truncation
+      error.  if rounded arithmetic is used, substitute
+      c1=c2
+      */
+
+      c1 = 0.5/(c2*c2+s1*s1) + 0.5 ;
+      s1 *= c1 ;
+      c1 *= c2 ;
+
+      /*140*/
+
+      c2 = c1*c1 - s1*s1 ;
+      s2 = c1*s1*2 ;
+      c3 = c2*c1 - s2*s1 ;
+      s3 = c2*s1 + s2*c1 ;
+
+
+      return 0 ;
+
+      }
+   else
+     {
+      if ( kk <= kspan )
+         {
+          s1 = dr*rad * (kk-1)/jc ;
+          c1 = cos (s1) ;
+          s1 = sin (s1) ;
+          mm = min ( kspan , mm  + klim );
+
+         /*140*/
+
+         c2 = c1*c1 - s1*s1 ;
+         s2 = c1*s1*2 ;
+      	 c3 = c2*c1 - s2*s1 ;
+         s3 = c2*s1 + s2*c1 ;
+
+         return 0 ;
+         }
+      }
+
+   return 1 ;
+}
+
+
+
+
+static void factorOf3Transform (void)
+{
+	do{
+		do{
+			k1 = kk + kspan ;
+			k2 = k1 + kspan ;
+
+			ak = a[kk-1] ;
+			bk = b[kk-1] ;
+
+			aj = a[k1-1] + a[k2-1] ;
+			bj = b[k1-1] + b[k2-1] ;
+
+			a[kk-1] = ak + aj ;
+			b[kk-1] = bk + bj ;
+
+			ak = -0.5*aj + ak ;
+			bk = -0.5*bj + bk ;
+
+			aj = (a[k1-1] - a[k2-1])*s120 ;
+			bj = (b[k1-1] - b[k2-1])*s120 ;
+
+			a[k1-1] = ak - bj ;
+			b[k1-1] = bk + aj ;
+			a[k2-1] = ak + bj ;
+			b[k2-1] = bk - aj ;
+
+			kk = k2 + kspan ;
+		} while (kk < nn);
+
+		kk -= nn ;
+	}while (kk <= kspan);
+
+}
+
+static void factorOf5Transform (void)
+{
+	c2 = c72*c72 - s72 *s72 ;
+	s2 = 2 * c72*s72;
+
+	do{
+		do{
+			k1 = kk + kspan ;
+			k2 = k1 + kspan ;
+			k3 = k2 + kspan ;
+			k4 = k3 + kspan ;
+
+
+
+			akp = a[k1-1] + a[k4-1] ;
+			akm = a[k1-1] - a[k4-1] ;
+
+			bkp = b[k1-1] + b[k4-1] ;
+			bkm = b[k1-1] - b[k4-1] ;
+
+			ajp = a[k2-1] + a[k3-1] ;
+			ajm = a[k2-1] - a[k3-1] ;
+
+			bjp = b[k2-1] + b[k3-1] ;
+			bjm = b[k2-1] - b[k3-1] ;
+
+			aa = a[kk-1] ;
+			bb = b[kk-1] ;
+
+			a[kk-1] = aa + akp + ajp;
+			b[kk-1] = bb + bkp + bjp;
+
+			ak = akp*c72 + ajp*c2 + aa ;
+			bk = bkp*c72 + bjp*c2 + bb ;
+
+			aj = akm*s72 + ajm*s2 ;
+			bj = bkm*s72 + bjm*s2 ;
+
+			a[k1-1] = ak - bj ;
+			a[k4-1] = ak + bj ;
+			b[k1-1] = bk + aj ;
+			b[k4-1] = bk - aj ;
+
+			ak = akp*c2 + ajp*c72 + aa ;
+			bk = bkp*c2 + bjp*c72 + bb ;
+
+			aj = akm*s2 - ajm*s72 ;
+
+			bj = bkm*s2 - bjm*s72 ;
+
+			a[k2-1] = ak - bj ;
+			a[k3-1] = ak + bj ;
+			b[k2-1] = bk + aj ;
+			b[k3-1] = bk - aj ;
+
+			kk = k4 + kspan;
+		}while (kk < nn);
+
+		kk -= nn ;
+	}while (kk <= kspan);
+}
+
+/* this function is the general case of non factor of 2 factor , the factorof3transform and factorof5trandform are just
+special case of this one */
+
+
+static void preFOtherTransform (void)
+{
+
+   jf = k ;
+   s1 = (rad*8)/k ;
+   c1 = cos (s1) ;
+   s1 = sin (s1) ;
+   ck[jf-1] = 1 ;
+   sk[jf-1] = 0 ;
+   j = 1 ;
+
+   do
+   {
+      ck[j-1] = ck[k-1] * c1 +  sk[k-1]*s1 ;
+      sk[j-1] = ck[k-1] * s1 -  sk[k-1]*c1 ;
+
+      k -- ;
+
+      ck[k-1] = ck[j-1] ;
+      sk[k-1] = - sk[j-1] ;
+
+      j++ ;
+
+   }while ( j < k );
+
+}
+
+static void factorOfOtherTransform (void)
+{
+int ktemp = 0 ;
+
+do
+   {
+   k1 = kk ;
+   k2 = kk + kspnn ;
+
+   aa = a[kk-1] ;
+   bb = b[kk-1] ;
+
+   ak = aa ;
+   bk = bb ;
+   j = 1 ;
+   k1 += kspan ;
+
+   do
+   {
+      k2 -= kspan ;
+      j++ ;
+
+      wt[j-1] = a[k1-1] + a[k2-1] ;
+      ak = wt[j-1] + ak ;
+
+      bt[j-1] = b[k1-1] + b[k2-1] ;
+      bk = bt[j-1] + bk ;
+      j++ ;
+
+      wt[j-1] = a[k1-1] - a[k2-1] ;
+      bt[j-1] = b[k1-1] - b[k2-1] ;
+
+      k1 += kspan;
+   }while ( k1 < k2 ) ;
+
+   a[kk-1] = ak ;
+   b[kk-1] = bk ;
+
+   k1 = kk ;
+   k2 = kk + kspnn ;
+   j = 1 ;
+
+   do
+      {
+      k1 += kspan ;
+      k2 -= kspan ;
+      jj = j  ;
+      ak = aa ;
+      bk  = bb ;
+      aj = 0 ;
+      bj = 0 ;
+      k  = 1 ;
+
+      do
+         {
+         k++ ;
+         ak += ( wt[k-1] * ck[jj-1] ) ;
+         bk += ( bt[k-1] * ck[jj-1] ) ;
+
+         k++ ;
+         aj += (wt[k-1] * sk[jj-1]) ;
+         bj += (bt[k-1] * sk[jj-1]) ;
+         jj += j ;
+
+         if ( jj > jf )
+            jj -= jf ;
+         } while ( k < jf ) ;
+
+      k = jf - j ;
+      a[k1-1] = ak - bj ;
+      b[k1-1] = bk + aj ;
+      a[k2-1] = ak + bj ;
+      b[k2-1] = bk - aj ;
+
+      j++ ;
+
+      }while ( j < k ) ;
+
+
+
+
+
+   kk += kspnn ;
+   ktemp = kk ;
+
+   if ( kk > nn )
+      {
+         kk -= nn;
+      }
+
+}while (  ktemp <= nn || (kk <= kspan &&  ( ktemp > nn))  );
+}
+
+
+
+
+static int mulByRotationFactor (void )
+{
+ int ktemp = 0 ;
+
+   if ( i != m )
+      {
+       kk = jc + 1 ;
+
+       /*300*/
+       do
+         {
+         c2 = 1 - cd ;
+         s1 = sd ;
+
+         mm = min ( kspan , klim ) ;
+
+         /*320 */
+         do
+           {
+
+            c1 = c2 ;
+            s2 = s1 ;
+            kk += kspan ;
+
+            do
+              {
+
+                ak = a[kk-1] ;
+                a[kk-1] = c2*ak - s2*b[kk-1] ;
+                b[kk-1] = s2*ak + c2*b[kk-1] ;
+
+                kk += kspnn ;
+                ktemp = kk ;
+
+
+                if ( kk > nt )
+                  {
+                   ak = s1*s2 ;
+                   s2 = s1*c2 + s2*c1 ;
+                   c2 = c1*c2 - ak ;
+                   kk += (kspan - nt ) ;
+
+
+
+                  }
+
+               }while (ktemp <= nt || ( kk <= kspnn && ktemp > nt  )) ;
+
+            kk += ( jc - kspnn );
+
+
+            if ( kk <= mm )
+               {
+
+               /* 310*/
+                c2 = c1 - ( cd*c1 + sd*s1 ) ;
+                s1 += (sd*c1 - cd*s1 ) ;
+
+               /*
+               the following three statements compensate for truncation
+               error.  if rounded arithmetic is used, substitute
+               c1=c2
+               */
+
+                c1 = 0.5/(c2*c2+s1*s1) + 0.5 ;
+                s1 *= c1 ;
+                c2 *= c1 ;
+               }
+            else
+               {
+                  if ( kk <= kspan )
+                     {
+
+                      s1 = dr*rad * (kk-1)/jc ;
+                      c2 = cos (s1) ;
+                      s1 = sin (s1) ;
+                      mm = min ( kspan , mm  + klim );
+                     }
+               }
+
+            }while ( kk <= mm  ||( kk <= kspan && kk > mm ) ) ;
+
+          kk += (jc + inc -kspan );
+
+
+         }while ( kk <= jc+jc);
+
+
+       return 0 ; /* goto40 */
+      }
+
+   return 1 ; /* goto350*/
+}
+
+
+
+
+static void pre_sqFactor2NormlOrder (void)
+{
+
+   k = kt + kt + 1 ;
+
+   if ( m < k )
+      k -- ;
+
+   j = 1 ;
+   np[k] = jc ;
+
+   do
+      {
+        np[j] = np[j-1]/nfac[j-1] ;
+        np[k-1] = np[k]*nfac[j-1] ;
+
+        j++ ;
+        k-- ;
+      }while ( j <  k ) ;
+
+   k3 = np[k] ;
+   kspan = np[1] ;
+   kk = jc + 1 ;
+   k2 = kspan + 1 ;
+   j = 1;
+
+
+}
+
+static int  post_sqFactor2NormlOrder (void)
+{
+
+    do
+     {
+      do
+        {
+          k2 -= np[j-1] ;
+          j++ ;
+          k2 += np[j]  ;
+
+         } while ( k2 >  np[j-1]);
+
+       j = 1 ;
+
+/* 390 */
+       do
+         {
+          if ( kk < k2 )
+            {
+
+
+             return 1 ;
+            }
+          else
+            {
+               kk += inc ;
+               k2 += kspan ;
+            }
+         }while( k2 < ks  );
+
+      }while ( kk < ks ) ;
+
+   jc = k3 ;
+
+   return 0;
+}
+
+
+/* appeler cetter fonction dans un do while valeur_retour != 1)*/
+static void  single_sqFactor2NormlOrder (void)
+{
+
+
+      do
+        {
+
+         ak = a[kk-1] ;
+         a[kk-1] = a[k2-1] ;
+         a[k2-1] = ak ;
+
+         bk = b[kk-1] ;
+         b[kk-1] = b[k2-1] ;
+         b[k2-1] = bk ;
+
+         kk += inc ;
+         k2 += kspan ;
+        } while ( k2 < ks );
+
+      /*380*/
+}
+
+/*idem que single_ */
+static int multi_sqFactor2NormlOrder (void)
+{
+
+
+
+      k = kk + jc ;
+
+      do /*410*/
+        {
+         ak = a[kk-1] ;
+         a[kk-1] = a[k2-1] ;
+         a[k2-1] = ak ;
+         bk = b[kk-1] ;
+         b[kk-1] = b[k2-1] ;
+         b[k2-1] = bk ;
+         kk += inc ;
+         k2 += kspan ;
+        } while ( kk < k );
+
+      kk += (ks - jc ) ;
+      k2 += (ks - jc ) ;
+
+      if ( kk < nt )
+         return 1 ;
+
+      k2 += (  kspan - nt );
+      kk += (  jc    - nt );
+
+      if ( k2 < ks )
+         {
+
+         return 1 ;
+         }
+      if( post_sqFactor2NormlOrder ( ) == 1 )
+         {
+
+         return 1 ;
+         }
+   jc = k3 ;
+
+   return 0;
+
+}
+
+
+
+static void nonSqFactor2NormOrder (void)
+{
+
+   j = m - kt ;
+   nfac[j] = 1 ;
+
+
+
+    do
+      {
+         nfac[j-1] *= nfac[j] ;
+
+         j-- ;
+
+
+      }while ( j != kt ) ;
+
+   kt ++ ;
+   nn = nfac[kt-1] - 1;
+
+   jj = 0 ;
+   j = 0;
+
+   /*480*/
+
+   k2 = nfac[kt-1] ;
+   k = kt + 1 ;
+   kk = nfac[k-1] ;
+   j ++ ;
+
+   while ( j <= nn )
+         {
+            jj += kk ;
+
+
+            while ( jj >=  k2 )
+               {
+                jj -= k2 ;
+                k2 = kk ;
+                k++ ;
+                kk = nfac[k-1] ;
+
+                jj += kk ;
+
+
+               }
+
+            np[j-1] = jj ;
+            k2 = nfac[kt-1] ;
+            k = kt + 1 ;
+            kk = nfac[k-1] ;
+            j ++ ;
+
+         }
+
+   j = 0 ;
+
+   return ;
+}
+
+/*  here we determine how many permutation cycles we need to do */
+static void detPermutCycles (void)
+{
+
+  do
+   {
+    do
+      {
+       j++ ;
+
+       kk = np[j-1] ;
+      }while ( kk < 0 ) ;
+
+
+    if ( kk != j )
+      {
+         do
+            {
+
+               k = kk ;
+               kk = np[k-1] ;
+               np[k-1] = -kk ;
+            }while ( kk != j ) ;
+         k3 = kk ;
+      }
+    else
+       np[j-1] = -j ;
+   }while ( j != nn );
+
+   maxf *= inc ;
+
+   return ;
+}
+
+static void  reorderMatrix (void)
+{
+do
+  {
+   do
+      {
+       j--  ;
+
+      }while (np[j-1] < 0 ) ;
+
+   jj = jc ;
+
+   /*520*/
+   do
+      {
+         kspan = jj ;
+
+         if ( jj > maxf )
+            kspan = maxf ;
+
+         jj -= kspan ;
+         k  = np [j-1];
+         kk = jc*k + i + jj ;
+         k1 = kk + kspan ;
+         k2 = 0 ;
+
+         do /*530*/
+            {
+               k2 ++ ;
+               wt[k2-1] = a[k1-1] ;
+               bt[k2-1] = b[k1-1] ;
+               k1 -= inc ;
+
+            }while ( k1 != kk );
+
+         do
+            {
+            k1 = kk + kspan ;
+            k2 = k1 - jc * (k + np[k-1]);
+            k = -np[k-1];
+
+
+            do
+               {
+                  a[k1-1] = a[k2-1] ;
+                  b[k1-1] = b[k2-1] ;
+
+                  k1 -= inc ;
+                  k2 -= inc ;
+
+                  }while ( k1 != kk ) ;
+
+            kk = k2 ;
+
+            }while ( k != j );
+
+            k1 = kk +kspan ;
+            k2 = 0 ;
+         /*560*/
+
+         do
+            {
+            k2 ++ ;
+            a[k1-1] = wt[k2-1] ;
+            b[k1-1] = bt[k2-1] ;
+            k1 -= inc ;
+
+
+            }while (  k1 != kk ) ;
+
+   } while ( jj != 0 ) ;
+}while ( j != 1 ) ;
+
+   return ;
+}
+
+
diff --git a/src/c/signalProcessing/fft/fft842.c b/src/c/signalProcessing/fft/fft842.c
new file mode 100644
index 00000000..162490fe
--- /dev/null
+++ b/src/c/signalProcessing/fft/fft842.c
@@ -0,0 +1,173 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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_internal.h"
+
+
+
+/* get binary log of integer argument; exact if n a power of 2 */
+static int fastlog2( int n)
+{
+  int log = -1;
+  while(n) {
+    log++;
+    n >>= 1;
+  }
+  return(log);
+}
+
+
+
+void fft842 (doubleComplex* b, int size , int in)
+{
+  double fn;
+  doubleComplex temp ;
+
+  int L[16],L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L13,L14,L15;
+  int j1,j2,j3,j4,j5,j6,j7,j8,j9,j10,j11,j12,j13,j14;
+  int i = 0, j, ij, ji, ij1, ji1;
+  int  n2pow, n8pow, nthpo, ipass, nxtlt, lengt;
+
+  n2pow = fastlog2( size );
+  nthpo = size ;
+  fn = 1.0 / (double)nthpo;
+
+
+  if(in==FORWARD)
+    /* take conjugate  */
+    for(i=0;i< size ;i++)
+        {
+        b[i] = DoubleComplex ( zreals( b[i]) , - zimags (b[i]));
+        }
+
+
+
+  n8pow = n2pow/3;
+
+  if(n8pow)
+    {
+      /* if the size if a factor of a power of 8 we call r8tx */
+      /* radix 8 iterations */
+      for(ipass=1;ipass<=n8pow;ipass++)
+	{
+	  nxtlt = 0x1 << (n2pow - 3*ipass);
+	  lengt = 8*nxtlt;
+
+
+
+	  	  r8tx(nxtlt,nthpo,lengt,
+	       b,b+nxtlt,b+2*nxtlt,
+	       b+3*nxtlt,b+4*nxtlt,b+5*nxtlt,
+	       b+6*nxtlt,b+7*nxtlt);
+
+
+	}
+    }
+
+/* if the size can be written this way 2^(3*n + 1) , then we call the  radix 2 function
+   if can be written this way 2^(3*n + 1) the we call the radix 4 function */
+
+  if(n2pow%3 == 1)
+    {
+      /* radix 2 iteration needed */
+	r2tx(nthpo,b,b+1);
+    }
+
+  if(n2pow%3 == 2)
+    {
+      /* radix 4 iteration needed */
+
+      r4tx(nthpo,b,b+1,b+2,b+3);
+    }
+
+
+
+  for(j=1;j<=15;j++)
+    {
+      L[j] = 1;
+      if(j-n2pow <= 0) L[j] = 0x1 << (n2pow + 1 - j);
+    }
+  /* this part can maybe be improved */
+
+  L15=L[1];L14=L[2];L13=L[3];L12=L[4];L11=L[5];L10=L[6];L9=L[7];
+  L8=L[8];L7=L[9];L6=L[10];L5=L[11];L4=L[12];L3=L[13];L2=L[14];L1=L[15];
+
+  ij = 1;
+
+/* all the following instruction is to unscramble the output */
+  for(j1=1;j1<=L1;j1++)
+  for(j2=j1;j2<=L2;j2+=L1)
+  for(j3=j2;j3<=L3;j3+=L2)
+  for(j4=j3;j4<=L4;j4+=L3)
+  for(j5=j4;j5<=L5;j5+=L4)
+  for(j6=j5;j6<=L6;j6+=L5)
+  for(j7=j6;j7<=L7;j7+=L6)
+  for(j8=j7;j8<=L8;j8+=L7)
+  for(j9=j8;j9<=L9;j9+=L8)
+  for(j10=j9;j10<=L10;j10+=L9)
+  for(j11=j10;j11<=L11;j11+=L10)
+  for(j12=j11;j12<=L12;j12+=L11)
+  for(j13=j12;j13<=L13;j13+=L12)
+  for(j14=j13;j14<=L14;j14+=L13)
+  for(ji=j14;ji<=L15;ji+=L14)
+
+    {
+      ij1 = ij-1;
+      ji1 = ji-1;
+
+      if(ij-ji<0)
+	{
+	  temp   = b[ij1];
+	  b[ij1] = b[ji1];
+	  b[ji1] = temp;
+
+	/*
+	  r = b[ij1].re;
+	  b[ij1].re = b[ji1].re;
+	  b[ji1].re = r;
+	  fi = b[ij1].im;
+	  b[ij1].im = b[ji1].im;
+	  b[ji1].im = fi;
+	*/
+	}
+      ij++;
+    }
+
+  if(in==FORWARD)  /* take conjugates & unscramble outputs */
+    for(i=0,j=size/2;j<size;i++,j++)
+	{
+	temp = DoubleComplex ( zreals ( b[j] ) ,- zimags( b[j] ));
+	b[j] = DoubleComplex ( zreals ( b[i] ) ,- zimags( b[i] ));
+	b[i] = DoubleComplex ( zreals ( temp ) , zimags( temp ));
+
+
+	/*  r = b[j].re; fi = b[j].im;
+	  b[j].re = b[i].re; b[j].im = -b[i].im;
+	  b[i].re = r; b[i].im = -fi;
+	*/
+	}
+
+
+
+/* this code is two fix a problem of result order which was different from what scilab  give */
+       for ( i = 0 ; i < size /2 ; i++)
+        {
+          temp =  b[i] ;
+          b[i] =  b[i+(size/2)];
+          b[i+(size/2)]= temp ;
+
+
+
+        }
+
+
+}
diff --git a/src/c/signalProcessing/fft/fft_internal.h b/src/c/signalProcessing/fft/fft_internal.h
new file mode 100644
index 00000000..70377bf4
--- /dev/null
+++ b/src/c/signalProcessing/fft/fft_internal.h
@@ -0,0 +1,42 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ *  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
+ *
+ */
+
+#ifndef __FFT_INTERNAL_H__
+#define __FFT_INTERNAL_H__
+
+
+#include "addition.h"
+#include "subtraction.h"
+
+#define FORWARD	0
+#define INVERSE 1
+void dfft2 ( double* a , double* b , int nseg , int n , int nspn ,
+             int isn , int ierr);
+
+
+
+void dfftbi ( double* a , double* b , int nseg , int n , int nspn ,
+              int isn , int ierr );
+
+void fft842 (doubleComplex* b, int size , int in);
+
+void r2tx(int nthpo, doubleComplex* c0, doubleComplex* c1);
+void r4tx( int nthpo, doubleComplex* c0, doubleComplex* c1, doubleComplex* c2, doubleComplex* c3);
+void r8tx ( int nxtlt,int nthpo,int lengt,
+            doubleComplex* cc0,doubleComplex* cc1,doubleComplex* cc2,doubleComplex* cc3,
+            doubleComplex* cc4,doubleComplex* cc5,doubleComplex* cc6,doubleComplex* cc7);
+
+int dfftmx ( double* _pdblA , double* _pdblB , int _iNtot, int _iN, int _iNspan,
+             int _iIsn, int _iM, int _iKt, double* _pdblWt, double* _pdblCk,
+             double* _pdblBt, double* _pdblSk, int* _piNp, int* _piNfac);
+
+#endif /* !__FFT_INTERNAL_H__ */
diff --git a/src/c/signalProcessing/fft/r2tx.c b/src/c/signalProcessing/fft/r2tx.c
new file mode 100644
index 00000000..fd459291
--- /dev/null
+++ b/src/c/signalProcessing/fft/r2tx.c
@@ -0,0 +1,46 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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_internal.h"
+/*
+** radix 2 iteration subroutine
+*/
+void r2tx(int nthpo, doubleComplex* c0, doubleComplex* c1)
+{
+  int kk;
+ /* double *cr0, *ci0, *cr1, *ci1, r1, fi1;*/
+ doubleComplex temp ;
+
+/*  cr0 = &(c0[0].re);
+  ci0 = &(c0[0].im);
+  cr1 = &(c1[0].re);
+  ci1 = &(c1[0].im);*/
+
+  for(kk=0;kk<nthpo;kk+=2)
+    {
+
+
+    temp   = zadds ( c0[kk] , c1[kk] );
+	c1[kk] = zdiffs( c0[kk] , c1[kk] );
+	c0[kk] = DoubleComplex ( zreals ( temp ) , zimags( temp ));
+/*
+      r1 = cr0[kk] + cr1[kk];
+      cr1[kk] = cr0[kk] - cr1[kk];
+      cr0[kk] = r1;
+
+
+      fi1 = ci0[kk] + ci1[kk];
+      ci1[kk] = ci0[kk] - ci1[kk];
+      ci0[kk] = fi1;
+*/
+    }
+}
diff --git a/src/c/signalProcessing/fft/r4tx.c b/src/c/signalProcessing/fft/r4tx.c
new file mode 100644
index 00000000..a6a94110
--- /dev/null
+++ b/src/c/signalProcessing/fft/r4tx.c
@@ -0,0 +1,49 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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_internal.h"
+
+
+
+/*
+** radix 4 iteration subroutine
+*/
+/* this function do in one turn the same computation that do radix 2 in two turns  */
+void r4tx( int nthpo, doubleComplex* c0, doubleComplex* c1, doubleComplex* c2, doubleComplex* c3)
+{
+  int kk;
+  doubleComplex temp1 , temp2 , temp3 , temp4 ;
+
+  for(kk=0;kk<nthpo;kk+=4)
+    {
+       /* real and imag parts alternate */
+
+    /* this first step is strictly equivalent than calling radix 2
+       except that radix would have needed 2 turns to compute what radix4 do in one */
+	temp1 = zadds ( c0[kk] , c2[kk] ) ;
+	temp2 = zdiffs( c0[kk] , c2[kk] ) ;
+	temp3 = zadds ( c1[kk] , c3[kk] ) ;
+	temp4 = zdiffs( c1[kk] , c3[kk] ) ;
+
+
+    /* strictly equivalent than calling radix2 with the temporary vector , but here also , radix4 do it in one turn
+    instead of two */
+	c0[kk] = zadds ( temp1 , temp3 );
+	c1[kk] = zdiffs( temp1 , temp3 );
+
+
+	c2[kk] = DoubleComplex ( zreals ( temp2 ) - zimags( temp4 ) , zimags ( temp2 ) + zreals( temp4 ) );
+	c3[kk] = DoubleComplex ( zreals ( temp2 ) + zimags( temp4 ) , zimags ( temp2 ) - zreals( temp4 ) );
+
+
+    }
+}
diff --git a/src/c/signalProcessing/fft/r8tx.c b/src/c/signalProcessing/fft/r8tx.c
new file mode 100644
index 00000000..44866ce6
--- /dev/null
+++ b/src/c/signalProcessing/fft/r8tx.c
@@ -0,0 +1,169 @@
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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_internal.h"
+#include <math.h>
+
+
+
+/*
+** radix 8 iteration subroutine
+*/
+
+/* this function do in one turn the same computation that do radix 2 in three turns  */
+
+void r8tx ( int nxtlt,int nthpo,int lengt,
+            doubleComplex* cc0,doubleComplex* cc1,doubleComplex* cc2,doubleComplex* cc3,
+            doubleComplex* cc4,doubleComplex* cc5,doubleComplex* cc6,doubleComplex* cc7)
+
+{
+
+
+  int j , kk;
+  double dblP7  = 1 / sqrt(2.0) ;
+  double dblPi2 = 8 * atan(1.0);
+
+  double scale, arg;
+  double c1,c2,c3,c4,c5,c6,c7;
+  double s1,s2,s3,s4,s5,s6,s7;
+
+  doubleComplex Atemp0,Atemp1,Atemp2,Atemp3,Atemp4,Atemp5,Atemp6,Atemp7;
+  doubleComplex Btemp0,Btemp1,Btemp2,Btemp3,Btemp4,Btemp5,Btemp6,Btemp7;
+
+  doubleComplex temp ;
+
+
+  scale = dblPi2/lengt;
+
+
+  for(j=0;j<nxtlt;j++)
+    {
+
+      arg = j*scale;
+      c1 = cos(arg);
+      s1 = sin(arg);
+      c2 = c1*c1 - s1*s1;
+      s2 = c1*s1 + c1*s1;
+      c3 = c1*c2 - s1*s2;
+      s3 = c2*s1 + s2*c1;
+      c4 = c2*c2 - s2*s2;
+      s4 = c2*s2 + c2*s2;
+      c5 = c2*c3 - s2*s3;
+      s5 = c3*s2 + s3*c2;
+      c6 = c3*c3 - s3*s3;
+      s6 = c3*s3 + c3*s3;
+      c7 = c3*c4 - s3*s4;
+      s7 = c4*s3 + s4*c3;
+
+      for(kk=j;kk<nthpo;kk+=lengt)
+	{
+	   /* (k-1)*2*/ /* index by twos; re & im alternate */
+
+
+       /*  first turn the same as calling radix 2 with the input vector */
+       /* but radix2 will have do it in three turn , radix8 do it in one */
+		Atemp0 =  zadds ( cc0[kk] , cc4[kk] ) ;
+		Atemp1 =  zadds ( cc1[kk] , cc5[kk] ) ;
+		Atemp2 =  zadds ( cc2[kk] , cc6[kk] ) ;
+		Atemp3 =  zadds ( cc3[kk] , cc7[kk] ) ;
+
+
+		Atemp4 =  zdiffs ( cc0[kk] , cc4[kk] ) ;
+		Atemp5 =  zdiffs ( cc1[kk] , cc5[kk] ) ;
+		Atemp6 =  zdiffs ( cc2[kk] , cc6[kk] ) ;
+		Atemp7 =  zdiffs ( cc3[kk] , cc7[kk] ) ;
+
+        /* second turn the same as  calling radix 2 with the vector transformed by a previous call of radix2 */
+        /* the same here , three turns in one */
+		Btemp0 =  zadds  ( Atemp0 , Atemp2 ) ;
+		Btemp1 =  zadds  ( Atemp1 , Atemp3 ) ;
+		Btemp2 =  zdiffs ( Atemp0 , Atemp2 ) ;
+		Btemp3 =  zdiffs ( Atemp1 , Atemp3 ) ;
+
+        Btemp4 = DoubleComplex ( zreals ( Atemp4 ) - zimags( Atemp6 ) , zimags ( Atemp4 ) + zreals( Atemp6 ) );
+        Btemp5 = DoubleComplex ( zreals ( Atemp5 ) - zimags( Atemp7 ) , zimags ( Atemp5 ) + zreals( Atemp7 ) );
+        Btemp6 = DoubleComplex ( zreals ( Atemp4 ) + zimags( Atemp6 ) , zimags ( Atemp4 ) - zreals( Atemp6 ) );
+        Btemp7 = DoubleComplex ( zreals ( Atemp5 ) + zimags( Atemp7 ) , zimags ( Atemp5 ) - zreals( Atemp7 ) );
+
+        /*third turn the same as calling radix 2 with the vector transformed by two previous call of radix2 */
+	    cc0[kk] = zadds ( Btemp0 , Btemp1 );
+
+
+
+        /* if we are not in the first turn */
+
+	  if(j>0)
+	    {
+		cc1[kk] = DoubleComplex ( 	(c4 * (zreals(Btemp0) - zreals(Btemp1))) - (s4 * (zimags(Btemp0) - zimags(Btemp1))),
+                                    c4 * (zimags(Btemp0) - zimags(Btemp1)) + s4 * (zreals(Btemp0) - zreals(Btemp1)));
+
+		cc2[kk] = DoubleComplex ( 	c2 *  (zreals(Btemp2) - zimags(Btemp3)) - s2 * (zimags(Btemp2) + zreals(Btemp3)) ,
+                                    c2 *  (zimags(Btemp2) + zreals(Btemp3)) + s2 * (zreals(Btemp2) - zimags(Btemp3)));
+
+		cc3[kk] = DoubleComplex ( 	c6 * (zreals(Btemp2)  + zimags(Btemp3)) - s6 * (zimags(Btemp2) - zreals(Btemp3)) ,
+                                    c6 * (zimags(Btemp2)  - zreals(Btemp3)) + s6 * (zreals(Btemp2) + zimags(Btemp3)));
+
+
+            temp = DoubleComplex ( 	dblP7*(zreals ( Btemp5 ) - zimags( Btemp5 )) ,
+                                    dblP7*(zreals ( Btemp5 ) + zimags( Btemp5 )) );
+
+		cc4[kk] = DoubleComplex ( 	c1 * (zreals (Btemp4) + zreals(temp)) - s1 * (zimags (Btemp4) + zimags(temp)) ,
+                                    c1 * (zimags (Btemp4) + zimags(temp)) + s1 * (zreals (Btemp4) + zreals(temp)));
+		cc5[kk] = DoubleComplex ( 	c5 * (zreals (Btemp4) - zreals(temp)) - s5 * (zimags (Btemp4) - zimags(temp)) ,
+                                    c5 * (zimags (Btemp4) - zimags(temp)) + s5 * (zreals (Btemp4) - zreals(temp)));
+
+
+            temp = DoubleComplex ( - dblP7*(zreals ( Btemp7 ) + zimags( Btemp7 )) ,
+                                     dblP7*(zreals ( Btemp7 ) - zimags( Btemp7 )) );
+
+		cc6[kk] = DoubleComplex ( 	c3 * (zreals (Btemp6) + zreals(temp)) - s3 * (zimags (Btemp6) + zimags(temp)) ,
+                                    c3 * (zimags (Btemp6) + zimags(temp)) + s3 * (zreals (Btemp6) + zreals(temp)));
+		cc7[kk] = DoubleComplex ( 	c7 * (zreals (Btemp6) - zreals(temp)) - s7 * (zimags (Btemp6) - zimags(temp)) ,
+                                    c7 * (zimags (Btemp6) - zimags(temp)) + s7 * (zreals (Btemp6) - zreals(temp)));
+
+
+
+
+	    }
+    else
+        {
+            cc1[kk] = zdiffs ( Btemp0 , Btemp1 );
+
+            cc2[kk] = DoubleComplex ( zreals ( Btemp2 ) - zimags( Btemp3 ) ,
+                                      zimags ( Btemp2 ) + zreals( Btemp3 ) );
+
+
+            cc3[kk] = DoubleComplex ( zreals ( Btemp2 ) + zimags( Btemp3 ) ,
+                                      zimags ( Btemp2 ) - zreals( Btemp3 ) );
+
+
+            temp = DoubleComplex ( 	dblP7*(zreals ( Btemp5 ) - zimags( Btemp5 )) ,
+                                    dblP7*(zreals ( Btemp5 ) + zimags( Btemp5 )) );
+
+            cc4[kk] = zadds  ( Btemp4 , temp );
+            cc5[kk] = zdiffs ( Btemp4 , temp );
+
+            temp = DoubleComplex ( - dblP7*(zreals ( Btemp7 ) + zimags( Btemp7 )) ,
+                                     dblP7*(zreals ( Btemp7 ) - zimags( Btemp7 )) );
+
+            cc6[kk] = zadds  ( Btemp6 , temp );
+            cc7[kk] = zdiffs ( Btemp6 , temp );
+
+
+        }
+
+	}
+    }
+
+
+}
diff --git a/src/c/signalProcessing/fft/sfftma.c b/src/c/signalProcessing/fft/sfftma.c
new file mode 100644
index 00000000..d4e145b5
--- /dev/null
+++ b/src/c/signalProcessing/fft/sfftma.c
@@ -0,0 +1,34 @@
+/*
+ * 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 <stdlib.h>
+#include "fft.h"
+#include "zeros.h"
+
+void sfftma ( float* in , int rows, int cols, float* out){
+	float* ZEROS;
+	floatComplex* inCpx;
+	floatComplex* outCpx;
+
+	ZEROS = (float*) malloc((unsigned int)(rows*cols)*sizeof(float));
+	outCpx = (floatComplex*) malloc((unsigned int)(rows*cols)*sizeof(floatComplex));
+
+	szerosa(ZEROS,rows,cols);
+	inCpx=FloatComplexMatrix(in,ZEROS,rows*cols);
+
+	cfftma(inCpx,rows,cols,outCpx);
+
+	creala(outCpx, rows*cols, out);
+
+	free(ZEROS);
+	free(outCpx);
+}
diff --git a/src/c/signalProcessing/fft/testDoubleFft.c b/src/c/signalProcessing/fft/testDoubleFft.c
new file mode 100644
index 00000000..68bc431b
--- /dev/null
+++ b/src/c/signalProcessing/fft/testDoubleFft.c
@@ -0,0 +1,470 @@
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ *  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 <stdlib.h>
+#include <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "fft.h"
+
+
+#define ROW    1
+#define COLS2  2
+#define COLS3  3
+#define COLS4  4
+#define COLS5  5
+#define COLS6  6
+#define COLS7  7
+#define COLS8  8
+#define COLS9  9
+#define COLS10 10
+#define COLS11 11
+#define COLS12 12
+#define COLS13 13
+#define COLS14 14
+#define COLS15 15
+#define COLS16 16
+#define COLS32 32
+
+#define ZREAL_IN2 { 0.00022113462910056  ,  0.33032709173858166  }
+#define ZIMAG_IN2 { 0.66538110421970487  ,  0.62839178834110498  }
+
+#define ZREAL_IN3 { 2.48206677380949259,  0.43537130765616894, 0.97385666053742170}
+#define ZIMAG_IN3 { 2.14807060454040766,- 0.78285905346274376, 0.42632796149700880}
+
+
+#define ZREAL_IN4 { 0.84974523587152362,  0.68573101982474327, 0.87821648130193353, 0.06837403681129217}
+#define ZIMAG_IN4 { 0.56084860628470778,  0.66235693730413914, 0.72635067673400044, 0.19851438421756029}
+
+#define ZREAL_IN5 { 0.84974523587152362,  0.68573101982474327, 0.87821648130193353, 0.06837403681129217,\
+                    0.65251349471509457}
+#define ZIMAG_IN5 { 0.56084860628470778,  0.66235693730413914, 0.72635067673400044, 0.19851438421756029,\
+                    0.56642488157376647}
+
+#define ZREAL_IN6 {  0.54425731627270579, 0.23207478970289230, 0.23122371966019273, 0.21646326314657927,\
+                     0.65251349471509457, 0.30760907428339124 }
+#define ZIMAG_IN6 {  0.21460078610107303, 0.31264199689030647, 0.36163610080257058, 0.2922266637906432,\
+                     0.56642488157376647, 0.59350947011262178 }
+
+#define ZREAL_IN7 {  0.54425731627270579, 0.23207478970289230, 0.23122371966019273, 0.21646326314657927,\
+                     0.65251349471509457, 0.88338878145441413, 0.30760907428339124 }
+#define ZIMAG_IN7 {  0.21460078610107303, 0.31264199689030647, 0.36163610080257058, 0.2922266637906432,\
+                     0.40948254754766822, 0.56642488157376647, 0.59350947011262178 }
+
+
+
+#define ZREAL_IN8 {  0.54425731627270579, 0.23207478970289230, 0.23122371966019273, 0.21646326314657927,\
+                     0.88338878145441413, 0.65251349471509457, 0.30760907428339124, 0.93296162132173777 }
+#define ZIMAG_IN8 {  0.21460078610107303, 0.31264199689030647, 0.36163610080257058, 0.2922266637906432,\
+                     0.56642488157376647, 0.48264719732105732, 0.33217189135029912, 0.59350947011262178}
+
+
+#define ZREAL_IN9 { 0.23122371966019273, 0.21646326314657927, 0.88338878145441413, 0.65251349471509457,\
+                    0.30760907428339124, 0.93296162132173777, 0.21460078610107303, 0.31264199689030647,\
+                    0.43685875833034515}
+#define ZIMAG_IN9 { 0.26931248093023896, 0.63257448654621840, 0.40519540151581168, 0.91847078315913677,\
+                    0.28064980218186975, 0.12800584640353918, 0.77831285959109664, 0.21190304495394230,\
+                    0.68568959552794695}
+
+
+#define ZREAL_IN10 { 0.21646326314657927, 0.65251349471509457, 0.63257448654621840, 0.31264199689030647,\
+                     0.93296162132173777, 0.31264199689030647, 0.48185089323669672, 0.48264719732105732,\
+                     0.2922266637906432 , 0.48264719732105732 }
+#define ZIMAG_IN10 { 0.23122371966019273, 0.21646326314657927, 0.88338878145441413, 0.65251349471509457,\
+                     0.11383596854284406, 0.19983377400785685, 0.56186607433483005, 0.58961773291230202,\
+                     0.23122371966019273, 0.21646326314657927}
+/*
+#define ZREAL_IN10 { 1,2,3,4,5,6,7,8,9,10 }
+
+
+#define ZIMAG_IN10 { 1,2,3,4,5,6,7,8,9,10 }
+*/
+
+
+
+
+#define ZREAL_IN11 {0.49934938363730907,0.26385784195736051,0.52535630855709314,0.53762298030778766,\
+                    0.11999255046248436,0.2256303490139544 ,0.62740930821746588,0.76084325974807143,\
+                    0.04855662025511265,0.67239497276023030,0.20171726960688829 }
+
+#define ZIMAG_IN11 {0.39115739194676280,0.83003165572881699,0.58787201577797532,0.48291792999953032,\
+                    0.22328650346025825,0.84008856676518917,0.12059959070757031,0.28553641680628061,\
+                    0.86075146449729800,0.84941016510128975,0.52570608118548989}
+
+
+#define ZREAL_IN12 {0.75604385416954756,0.00022113462910056,0.33032709173858166,0.66538110421970487,\
+                    0.62839178834110498,0.84974523587152362,0.68573101982474327,0.87821648130193353,\
+                    0.06837403681129217,0.56084860628470778,0.66235693730413914,0.72635067673400044}
+
+#define ZIMAG_IN12 {0.19851438421756029,0.54425731627270579,0.23207478970289230,0.23122371966019273,\
+                    0.21646326314657927,0.88338878145441413,0.65251349471509457,0.30760907428339124,\
+                    0.93296162132173777,0.21460078610107303,0.31264199689030647,0.36163610080257058}
+
+
+#define ZREAL_IN13 {0.2922266637906432 ,0.56642488157376647,0.48264719732105732,0.33217189135029912,\
+                    0.59350947011262178,0.50153415976092219,0.43685875833034515,0.26931248093023896,\
+                    0.63257448654621840,0.40519540151581168,0.91847078315913677,0.04373343335464597,\
+                    0.48185089323669672}
+
+
+
+#define ZIMAG_IN13 {0.26395560009405017,0.41481037065386772,0.28064980218186975,0.12800584640353918,\
+                    0.77831285959109664,0.21190304495394230,0.11213546665385365,0.68568959552794695,\
+                    0.15312166837975383,0.69708506017923355,0.84155184263363481,0.40620247554033995,\
+                    0.40948254754766822}
+
+
+
+#define ZREAL_IN14 {0.87841258011758327,0.11383596854284406,0.19983377400785685,0.56186607433483005,\
+                    0.58961773291230202,0.68539796629920602,0.89062247332185507,0.50422128057107329,\
+                    0.34936154074966908,0.38737787725403905,0.92228986788541079,0.94881842611357570,\
+                    0.34353372454643250,0.37601187312975526}
+
+#define ZIMAG_IN14 {0.73409405630081892,0.26157614728435874,0.49934938363730907,0.26385784195736051,\
+                    0.52535630855709314,0.53762298030778766,0.11999255046248436,0.2256303490139544 ,\
+                    0.62740930821746588,0.76084325974807143,0.04855662025511265,0.67239497276023030,\
+                    0.20171726960688829,0.39115739194676280}
+
+#define ZREAL_IN15 {0.83003165572881699,0.58787201577797532,0.48291792999953032,0.22328650346025825,\
+                    0.84008856676518917,0.12059959070757031,0.28553641680628061,0.86075146449729800,\
+                    0.84941016510128975,0.52570608118548989,0.99312098976224661,0.64885628735646605,\
+                    0.99231909401714802,0.05004197778180242,0.74855065811425447}
+
+#define ZIMAG_IN15 {0.41040589986369014,0.60845263302326202,0.85442108893766999,0.06426467280834913,\
+                    0.82790829380974174,0.92623437754809856,0.56672112690284848,0.57116389367729425,\
+                    0.81601104838773608,0.05689279362559319,0.55959366867318749,0.12493403162807226,\
+                    0.72792222863063216,0.26777664758265018,0.54653349192813039}
+
+
+
+#define ZREAL_IN16 {0.23122371966019273, 0.21646326314657927, 0.88338878145441413, 0.65251349471509457,\
+                    0.30760907428339124, 0.93296162132173777, 0.21460078610107303, 0.31264199689030647,\
+                    0.36163610080257058, 0.2922266637906432 , 0.56642488157376647, 0.48264719732105732,\
+                    0.33217189135029912, 0.59350947011262178, 0.50153415976092219, 0.43685875833034515}
+#define ZIMAG_IN16 {0.26931248093023896, 0.63257448654621840, 0.40519540151581168, 0.91847078315913677,\
+                    0.04373343335464597, 0.48185089323669672, 0.26395560009405017, 0.41481037065386772,\
+                    0.28064980218186975, 0.12800584640353918, 0.77831285959109664, 0.21190304495394230,\
+                    0.11213546665385365, 0.68568959552794695, 0.15312166837975383, 0.69708506017923355}
+
+
+#define ZREAL_IN32 {0.21132486546412110,0.75604385416954756,0.00022113462910056,0.33032709173858166,\
+                    0.66538110421970487,0.62839178834110498,0.84974523587152362,0.68573101982474327,\
+                    0.87821648130193353,0.06837403681129217,0.56084860628470778,0.66235693730413914,\
+                    0.72635067673400044,0.19851438421756029,0.54425731627270579,0.23207478970289230,\
+                    0.23122371966019273,0.21646326314657927,0.88338878145441413,0.65251349471509457,\
+                    0.30760907428339124,0.93296162132173777,0.21460078610107303,0.31264199689030647,\
+                    0.36163610080257058,0.2922266637906432 ,0.56642488157376647,0.48264719732105732,\
+                    0.33217189135029912,0.59350947011262178,0.50153415976092219,0.43685875833034515}
+
+#define ZIMAG_IN32 {0.26931248093023896,0.63257448654621840,0.40519540151581168,0.91847078315913677,\
+                    0.04373343335464597,0.48185089323669672,0.26395560009405017,0.41481037065386772,\
+                    0.28064980218186975,0.12800584640353918,0.77831285959109664,0.21190304495394230,\
+                    0.11213546665385365,0.68568959552794695,0.15312166837975383,0.69708506017923355,\
+                    0.84155184263363481,0.40620247554033995,0.40948254754766822,0.87841258011758327,\
+                    0.11383596854284406,0.19983377400785685,0.56186607433483005,0.58961773291230202,\
+                    0.68539796629920602,0.89062247332185507,0.50422128057107329,0.34936154074966908,\
+                    0.38737787725403905,0.92228986788541079,0.94881842611357570,0.34353372454643250}
+
+
+
+
+#define ZREAL_RESULT2 { 0.33054822636768222,- 0.33010595710948110}
+#define ZIMAG_RESULT2 { 1.29377289256080985,  0.03698931587859988}
+
+#define ZREAL_RESULT3 { 3.8912947420030832 ,  0.73026611683127762, 2.82463946259411713}
+#define ZIMAG_RESULT3 { 1.79153951257467270,  2.79267814568426775, 1.85999415536228230}
+
+#define ZREAL_RESULT4 { 2.48206677380949259,  0.43537130765616894, 0.97385666053742170, -0.49231379851698875}
+#define ZIMAG_RESULT4 { 2.14807060454040766,- 0.78285905346274376, 0.42632796149700880,  0.45185491256415844}
+
+#define ZREAL_RESULT5 { 3.13458026852458715, 0.8989689127154592 ,-0.38601946016350575, 0.50520993574533923,\
+                        0.09598652253573875}
+#define ZIMAG_RESULT5 { 2.71449548611417413,-0.31527367037930898, 0.60322341639929178,-0.89813890885693670,\
+                        0.69993670814631914}
+
+#define ZREAL_RESULT6 {  2.18414165778085589,-0.26482327553354379,-0.01687604011087318, 0.67184740351513028,\
+                         0.11489612058787246, 0.57635803139679309 }
+#define ZIMAG_RESULT6 { +2.34103989927098155,+0.34168162147929737,-0.70971181304669773,-0.05571636231616137,\
+                        -0.11084573654913504,-0.51884289223184654 }
+
+
+
+
+#define ZREAL_RESULT7 { 3.06753043923527002,-0.62032167153569062,-0.13156333379499591, 0.48353341667797933,\
+                        0.63567251139259018, 0.05503001802946385, 0.31991983390432432}
+#define ZIMAG_RESULT7 { 2.75052244681864977, 0.82490994311348309,-0.93592353228518299,-0.23131444371235776,\
+                       -0.12732936894919694, 0.16455873200809046,-0.94321827428597393}
+
+
+
+#define ZREAL_RESULT8 { 4.00049206055700779,-0.43357241280891956, 0.79836636409163475,-0.91119240848798977,\
+                       -0.06753427721560001,-0.18576209864995416, 0.97926024347543716, 0.17400105922003017}
+#define ZIMAG_RESULT8 { 3.15585898794233799, 0.62132445165622818, 0.35205427557229996, 0.28289917172258683,\
+                       -0.20619166828691959,-1.17220193335521805,-0.17761892452836037,-1.13931807191437073 }
+
+#define ZREAL_RESULT9 { 4.18826149590313435,-0.33012457237426968,-0.46815050871925312,-0.52782532864173848,\
+                        0.14402327100125287, 0.48673726656350014,-0.36542216583231485,-0.05675799381585508,\
+                       -0.98972798714272159}
+#define ZIMAG_RESULT9 { 4.31011430080980062,-0.43185186999958014,-0.61788469590268758, 2.02080753944191294,\
+                       -1.82700213292318292,-0.72130831941965079,-0.43263346921029644,-0.61611460931125561,\
+                        0.73968558488709069 }
+
+
+#define ZREAL_RESULT10 {  4.7991688111796975 , 0.13431735180709442, 0.69797375124916528,-0.96094309976899528,\
+                         -1.299412169815219  , 0.31298504490405327,-0.70524633213128674, 0.73186521665562432,\
+                         -0.84695776029792746,-0.69911818231641265}
+#define ZIMAG_RESULT10 { +3.8964297915808856 ,-0.73143162523007543,-1.16550179795884423,-0.28088284236709465,\
+                         +0.91311790128897607,+0.14664673572406173,-0.38825389263472715,+0.70003588825710683,\
+                         -1.10050453393604197,+0.32258157187768072}
+
+#define ZREAL_RESULT11 { 4.48273084452375770,-0.38185469421558837,-0.20352646397260507, 0.93844897170676500,\
+                        -0.36107014581234886, 1.63127126429331426, 0.21051283071884830, 0.41375037345506283,\
+                        -1.51895083986003510, 0.07998126975880851, 0.20154980941442344}
+
+#define ZIMAG_RESULT11 {+5.99735778197646141,+0.89612320628808262,-1.19950115725534112,+0.16831729582097132,\
+                        -0.30180616479381106,-1.1576712540107854 ,+0.14605414615044232,+0.98186675096176135,\
+                        -1.81578488007792282,+0.11882005651954808,+0.46895552983498812}
+
+#define ZREAL_RESULT12 { 6.81198796723037958,-0.94341279444120363, 0.80833429094732012, 0.51617261953651883,\
+                        -0.2952048802069408 , 2.17160345678053313,-0.54953851085156202,-0.00060138915045171,\
+                         1.48723066647267177,-0.96738335862755753, 0.38783971037387632,-0.35450152802901336}
+
+#define ZIMAG_RESULT12 {+5.08788532856851816,-0.92793626853655098,+1.98330386259771707,+1.00984227284789085,\
+                        -0.76701015963174557,-0.03923425866831987,+0.00245377141982317,-0.97965668697496155,\
+                        -0.43031801485501076,-0.70842429809272289,-0.77014751450337293,-1.07858542356054099}
+
+
+#define ZREAL_RESULT13 { 5.95651050098240376,-1.05002118208049122,-0.62824400440218664, 0.73670329745244079,\
+                         1.01270235903781081,-0.97652276217739442,-0.80139420917945892,-1.08927100387059594,\
+                         1.10768757452252697,-0.90416530058905542, 0.19128270229571837,-0.36935459470156029,\
+                         0.61303325198820890}
+
+#define ZIMAG_RESULT13 {+5.38290618034079671,-0.01795106539414900,-1.0736822056133133 ,-0.38375436766279453,\
+                        +0.45177555081294796,-0.42204321578379422,+1.167268002300917  ,-0.8654330910349184 ,\
+                        -1.80135467250416070,+0.73358402770681042,+0.92212767526074568,-0.53962030646712056,\
+                        -0.12239971073931022}
+
+#define ZREAL_RESULT14 { 7.75120115978643298,-0.78366539551591063,-0.20265674140819168, 0.04290246165533468,\
+                         2.26072777524451896, 0.41764276367067404,-0.94725360360479638, 0.59614222729578614,\
+                         1.2655897771348088 , 1.49954927048727082, 0.59161337187577756, 1.32712418977692859,\
+                        -1.04078471420795249,-0.48035642054451416}
+
+
+#define ZIMAG_RESULT14 {+5.86955844005569816,+0.59116535878306964,+1.10949301280070478,-0.10194863149531888,\
+                        +0.33742089533324454,+1.27136622217475770,+0.66505772083419801,-0.35660744598135352,\
+                        +0.55272403261244618,+0.78239239747489764,-0.76097885152655409,+1.7013910918422144 ,\
+                        -1.05520441290632339,-0.32851304179021534}
+
+#define ZREAL_RESULT15 { 9.03908939706161618, 0.83695739793685675,-0.1247585940626968 , 0.73554494173292662,\
+                         2.89255624599792061,-0.60942096648213817,-0.96289916352621108,-2.01148115975842146,\
+                         1.08671310762523987, 1.10385593717105923, 0.14097082301450437, 0.77951939204949339,\
+                        -0.19682993144621974, 1.09445436001472118,-1.35379695139639411}
+
+#define ZIMAG_RESULT15 {+7.929235897026956  ,+0.93665405708769556,-0.58867096407810116,-0.08075001529554950,\
+                        +0.05154837779444588,-1.64233407065738146,+2.20857407200866884,+0.92685932199933529,\
+                        -1.71222943015973872,-0.79519673795720203,-0.80828166087623532,-0.07547063282874045,\
+                        +0.21930651464200918,+1.00880777239444086,-1.42196400314524918}
+
+
+
+#define ZREAL_RESULT16 { 7.31841186061501503, 0.57213963313411265,-0.54757095809921363,-0.48628670926159856,\
+                        -1.24745626002550125,-0.60260425121772254,-0.09566750389725764, 1.12013387649474438,\
+                        -0.52123307064175606,-0.4866536676629296 , 1.98659065302356819,-0.8626986211125984 ,\
+                        -0.61915938556194305,-0.27813937201980266,-1.53103677171080510,-0.01918993749322817}
+#define ZIMAG_RESULT16 { 6.47680679336190224, 0.33111151130330035,-0.19343861330849654, 0.12474172265893407,\
+                        -1.0452539175748825 , 1.29632487527975693, 1.87557979276701658,-1.82623636350346352,\
+                        -1.86397336795926094,-1.03154071610913434,-0.48573205481665604, 0.44539904220706855,\
+                        -0.74425477534532547,-0.54299368721281471, 0.37996440777257234, 1.11249504536330601}
+
+#define ZREAL_RESULT32 { 15.3165711835026741,-1.79021577127059173,-1.66659611407065089, 0.17525916470909797,\
+                        -1.16958628014871602, 0.58684741669397522, 0.03947542161511042, 0.99740008842981942,\
+                        -0.46323241293430328, 2.122539701124051  ,-1.52963914564883940, 0.87990417229605744,\
+                         0.58569127383151542,-0.18198535589432135, 0.26043384746900655,-1.11204765363415392,\
+                         0.35329844802618027,-1.47568616310628631,-2.03487116744967844,-3.19495610958970166,\
+                         0.81026376203844086,-0.46366666776372734,-1.63150209835186510, 0.77334707088593369,\
+                        -0.35098156332969666,-1.63498270669406387, 0.67411467120679691, 2.80538085483913147,\
+                        -1.62281507315555107,-0.5600265995962992 ,-0.48984739061140237, 1.75450689143393301}
+
+
+
+#define ZIMAG_RESULT32 { 15.509232945740223 ,-0.47962381296807621, 0.21213951866464975, 0.88442937061831350,\
+                         1.52924554070524898,-0.6313403060045536 ,-2.25908603874729419,-1.3836292677373856 ,\
+                        -1.18231281638145447,-2.14767090006699668, 1.5452016553381984 ,-3.15355126536920993,\
+                         2.10199273301496747, 0.67530605269461363,-2.03603600735261558, 1.2309547869577584 ,\
+                        -1.9912955537438393 ,-1.9668221895811833 , 0.29575245179739662, 1.34815224953105273,\
+                         1.508921339902356  ,-0.40084285801706099, 2.96716476331614754, 1.08125713762201059,\
+                        -1.39964522421360016,-1.30777696073860294,-1.13169784714423916,-2.00872755010475013,\
+                         0.53915777133569487,-2.45178696294021004 , 1.56509394479014063, 1.5558426888499468}
+
+static void zfftmaTest2 (void )
+{
+  int i = 0 ;
+
+  double tRealIn [] = ZREAL_IN2;
+  double tImagIn [] = ZIMAG_IN2 ;
+
+
+
+  double tRealResult [] = ZREAL_RESULT2 ;
+  double tImagResult [] = ZIMAG_RESULT2 ;
+
+
+  doubleComplex*  out     = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS2));
+  doubleComplex*  in      = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS2 );
+  doubleComplex* Result   = DoubleComplexMatrix ( tRealResult , tImagResult ,ROW*COLS2) ;
+
+
+
+    zfftma ( in , ROW , COLS2 , out ) ;
+
+  /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+
+  for ( i = 0 ; i < (ROW*COLS2 )  ; i++ )
+    {
+      printf ( "\t\t%d out: %e \t%e\t*i result: %e \t%e\t*i assert: %e \t%e\t*i  \n" ,
+              i ,
+              zreals(out[i]) ,
+              zimags(out[i]),
+              zreals (Result[i])  ,
+              zimags (Result[i]),
+              fabs(  zreals(out[i]) -  zreals (Result[i]) ) / fabs (zreals (out[i])) ,
+              fabs(  zimags(out[i]) -  zimags (Result[i]) ) / fabs (zimags (out[i]))
+             );
+
+     if (  zreals(out[i])  < 1e-14 && zreals (Result[i]) < 1e-18 )
+       assert ( 1 ) ;
+     else
+       assert ( fabs(  zreals(out[i]) -  zreals (Result[i]) ) / fabs (zreals (out[i]))  < 3e-16 );
+
+
+    if (  zimags(out[i])  < 1e-14 && zimags (Result[i]) < 1e-18 )
+       assert ( 1 ) ;
+    else
+       assert ( fabs(  zimags(out[i]) -  zimags (Result[i]) ) / fabs (zimags (out[i]))  < 3e-16 ) ;
+
+    }
+    
+  free(out);
+  free(in);
+  free(Result);
+
+}
+
+
+static void zfftmaTest3 (void )
+{
+  int i = 0 ;
+
+  double tRealIn [] = ZREAL_IN3;
+  double tImagIn [] = ZIMAG_IN3 ;
+
+
+
+  double tRealResult [] = ZREAL_RESULT3 ;
+  double tImagResult [] = ZIMAG_RESULT3 ;
+
+
+  doubleComplex*  out     = (doubleComplex*) malloc ( sizeof(doubleComplex) * (unsigned int) (ROW*COLS3));
+  doubleComplex*  in      = DoubleComplexMatrix ( tRealIn , tImagIn , ROW*COLS3 );
+  doubleComplex* Result   = DoubleComplexMatrix ( tRealResult , tImagResult ,ROW*COLS3) ;
+
+
+
+    zfftma ( in , ROW , COLS3 , out ) ;
+
+  /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+
+  for ( i = 0 ; i < (ROW*COLS3 )  ; i++ )
+    {
+      printf ( "\t\t%d out: %e \t%e\t*i result: %e \t%e\t*i assert: %e \t%e\t*i  \n" ,
+              i ,
+              zreals(out[i]) ,
+              zimags(out[i]),
+              zreals (Result[i])  ,
+              zimags (Result[i]),
+              fabs(  zreals(out[i]) -  zreals (Result[i]) ) / fabs (zreals (out[i])) ,
+              fabs(  zimags(out[i]) -  zimags (Result[i]) ) / fabs (zimags (out[i]))
+             );
+
+     if (  zreals(out[i])  < 1e-14 && zreals (Result[i]) < 1e-18 )
+       assert ( 1 ) ;
+     else
+       assert ( fabs(  zreals(out[i]) -  zreals (Result[i]) ) / fabs (zreals (out[i]))  < 3e-16 );
+
+
+    if (  zimags(out[i])  < 1e-14 && zimags (Result[i]) < 1e-18 )
+       assert ( 1 ) ;
+    else
+       assert ( fabs(  zimags(out[i]) -  zimags (Result[i]) ) / fabs (zimags (out[i]))  < 3e-16 ) ;
+
+    }
+    
+  free(out);
+  free(in);
+  free(Result);
+
+}
+
+
+
+static int testFft(void) {
+
+  printf("\n>>>> FFT Tests\n");
+  printf("\t>>>> Matrix Double Realt Tests\n");
+  /*dfftmaTest();*/
+
+  printf("\n\n\n");
+
+  printf("\n\t>>>> Vector 2 Double Complex Tests\n");
+  zfftmaTest2();
+  printf("\n\t>>>> Vector 3 Double Complex Tests\n");
+  zfftmaTest3();
+  
+/*
+  printf("\n\t>>>> Vector 4 Double Complex Tests\n");
+  zfftmaTest4();
+  printf("\n\t>>>> Vector 5 Double Complex Tests\n");
+  zfftmaTest5();
+  printf("\n\t>>>> Vector 6 Double Complex Tests\n");
+  zfftmaTest6();
+  printf("\n\t>>>> Vector 7 Double Complex Tests\n");
+  zfftmaTest7();
+  printf("\n\t>>>> Vector 8 Double Complex Tests\n");
+  zfftmaTest8();
+  printf("\n\t>>>> Vector 9 Double Complex Tests\n");
+  zfftmaTest9();
+  printf("\n\t>>>> Vector 10 Double Complex Tests\n");
+  zfftmaTest10();
+  printf("\n\t>>>> Vector 11 Double Complex Tests\n");
+  zfftmaTest11();
+  printf("\n\t>>>> Vector 12 Double Complex Tests\n");
+  zfftmaTest12();
+  printf("\n\t>>>> Vector 13 Double Complex Tests\n");
+  zfftmaTest13();
+  printf("\n\t>>>> Vector 14 Double Complex Tests\n");
+  zfftmaTest14();
+  printf("\n\t>>>> Vector 14 Double Complex Tests\n");
+  zfftmaTest15();
+  printf("\n\t>>>> Vector 16 Double Complex Tests\n");
+  zfftmaTest16();
+  printf("\n\t>>>> Vector 32 Double Complex Tests\n");
+  zfftmaTest32();
+*/
+  return 0;
+}
+
+
+
+int main(void) {
+  assert(testFft() == 0);
+  return 0;
+}
diff --git a/src/c/signalProcessing/fft/testFloatFft.c b/src/c/signalProcessing/fft/testFloatFft.c
new file mode 100644
index 00000000..5176c348
--- /dev/null
+++ b/src/c/signalProcessing/fft/testFloatFft.c
@@ -0,0 +1,1238 @@
+
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ *  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 <stdlib.h>
+#include <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "fft.h"
+
+
+#define ROW    1
+#define COLS2  2
+#define COLS3  3
+#define COLS4  4
+#define COLS5  5
+#define COLS6  6
+#define COLS7  7
+#define COLS8  8
+#define COLS9  9
+#define COLS10 10
+#define COLS11 11
+#define COLS12 12
+#define COLS13 13
+#define COLS14 14
+#define COLS15 15
+#define COLS16 16
+#define COLS32 32
+
+
+#define CREAL_IN2 { 0.00022113462910056f  ,  0.33032709173858166f  }
+#define CIMAG_IN2 { 0.66538110421970487f  ,  0.62839178834110498f  }
+
+#define CREAL_IN3 { 2.48206677380949259f,  0.43537130765616894f, 0.97385666053742170f}
+#define CIMAG_IN3 { 2.14807060454040766f,- 0.78285905346274376f, 0.42632796149700880f}
+
+
+#define CREAL_IN4 { 0.84974523587152362f,  0.68573101982474327f, 0.87821648130193353f, 0.06837403681129217f}
+#define CIMAG_IN4 { 0.56084860628470778f,  0.66235693730413914f, 0.72635067673400044f, 0.19851438421756029f}
+
+#define CREAL_IN5 { 0.84974523587152362f,  0.68573101982474327f, 0.87821648130193353f, 0.06837403681129217f,\
+                    0.65251349471509457f}
+#define CIMAG_IN5 { 0.56084860628470778f,  0.66235693730413914f, 0.72635067673400044f, 0.19851438421756029f,\
+                    0.56642488157376647f}
+
+#define CREAL_IN6 {  0.54425731627270579f, 0.23207478970289230f, 0.23122371966019273f, 0.21646326314657927f,\
+                     0.65251349471509457f, 0.30760907428339124f }
+#define CIMAG_IN6 {  0.21460078610107303f, 0.31264199689030647f, 0.36163610080257058f, 0.2922266637906432f,\
+                     0.56642488157376647f, 0.59350947011262178f }
+
+#define CREAL_IN7 {  0.54425731627270579f, 0.23207478970289230f, 0.23122371966019273f, 0.21646326314657927f,\
+                     0.65251349471509457f, 0.88338878145441413f, 0.30760907428339124f }
+#define CIMAG_IN7 {  0.21460078610107303f, 0.31264199689030647f, 0.36163610080257058f, 0.2922266637906432f,\
+                     0.40948254754766822f, 0.56642488157376647f, 0.59350947011262178f }
+
+
+
+#define CREAL_IN8 {  0.54425731627270579f, 0.23207478970289230f, 0.23122371966019273f, 0.21646326314657927f,\
+                     0.88338878145441413f, 0.65251349471509457f, 0.30760907428339124f, 0.93296162132173777f }
+#define CIMAG_IN8 {  0.21460078610107303f, 0.31264199689030647f, 0.36163610080257058f, 0.2922266637906432f,\
+                     0.56642488157376647f, 0.48264719732105732f, 0.33217189135029912f, 0.59350947011262178f}
+
+
+#define CREAL_IN9 { 0.23122371966019273f, 0.21646326314657927f, 0.88338878145441413f, 0.65251349471509457f,\
+                    0.30760907428339124f, 0.93296162132173777f, 0.21460078610107303f, 0.31264199689030647f,\
+                    0.43685875833034515f}
+#define CIMAG_IN9 { 0.26931248093023896f, 0.63257448654621840f, 0.40519540151581168f, 0.91847078315913677f,\
+                    0.28064980218186975f, 0.12800584640353918f, 0.77831285959109664f, 0.21190304495394230f,\
+                    0.68568959552794695f}
+
+
+#define CREAL_IN10 { 0.21646326314657927f, 0.65251349471509457f, 0.63257448654621840f, 0.31264199689030647f,\
+                     0.93296162132173777f, 0.31264199689030647f, 0.48185089323669672f, 0.48264719732105732f,\
+                     0.2922266637906432f , 0.48264719732105732f }
+#define CIMAG_IN10 { 0.23122371966019273f, 0.21646326314657927f, 0.88338878145441413f, 0.65251349471509457f,\
+                     0.11383596854284406f, 0.19983377400785685f, 0.56186607433483005f, 0.58961773291230202f,\
+                     0.23122371966019273f, 0.21646326314657927f}
+/*
+#define CREAL_IN10 { 1,2,3,4,5,6,7,8,9,10 }
+
+
+#define CIMAG_IN10 { 1,2,3,4,5,6,7,8,9,10 }
+*/
+
+
+
+
+#define CREAL_IN11 {0.49934938363730907f,0.26385784195736051f,0.52535630855709314f,0.53762298030778766f,\
+                    0.11999255046248436f,0.2256303490139544f ,0.62740930821746588f,0.76084325974807143f,\
+                    0.04855662025511265f,0.67239497276023030f,0.20171726960688829f }
+
+#define CIMAG_IN11 {0.39115739194676280f,0.83003165572881699f,0.58787201577797532f,0.48291792999953032f,\
+                    0.22328650346025825f,0.84008856676518917f,0.12059959070757031f,0.28553641680628061f,\
+                    0.86075146449729800f,0.84941016510128975f,0.52570608118548989f}
+
+
+#define CREAL_IN12 {0.75604385416954756f,0.00022113462910056f,0.33032709173858166f,0.66538110421970487f,\
+                    0.62839178834110498f,0.84974523587152362f,0.68573101982474327f,0.87821648130193353f,\
+                    0.06837403681129217f,0.56084860628470778f,0.66235693730413914f,0.72635067673400044f}
+
+#define CIMAG_IN12 {0.19851438421756029f,0.54425731627270579f,0.23207478970289230f,0.23122371966019273f,\
+                    0.21646326314657927f,0.88338878145441413f,0.65251349471509457f,0.30760907428339124f,\
+                    0.93296162132173777f,0.21460078610107303f,0.31264199689030647f,0.36163610080257058f}
+
+
+#define CREAL_IN13 {0.2922266637906432f ,0.56642488157376647f,0.48264719732105732f,0.33217189135029912f,\
+                    0.59350947011262178f,0.50153415976092219f,0.43685875833034515f,0.26931248093023896f,\
+                    0.63257448654621840f,0.40519540151581168f,0.91847078315913677f,0.04373343335464597f,\
+                    0.48185089323669672f}
+
+
+
+#define CIMAG_IN13 {0.26395560009405017f,0.41481037065386772f,0.28064980218186975f,0.12800584640353918f,\
+                    0.77831285959109664f,0.21190304495394230f,0.11213546665385365f,0.68568959552794695f,\
+                    0.15312166837975383f,0.69708506017923355f,0.84155184263363481f,0.40620247554033995f,\
+                    0.40948254754766822f}
+
+
+
+#define CREAL_IN14 {0.87841258011758327f,0.11383596854284406f,0.19983377400785685f,0.56186607433483005f,\
+                    0.58961773291230202f,0.68539796629920602f,0.89062247332185507f,0.50422128057107329f,\
+                    0.34936154074966908f,0.38737787725403905f,0.92228986788541079f,0.94881842611357570f,\
+                    0.34353372454643250f,0.37601187312975526f}
+
+#define CIMAG_IN14 {0.73409405630081892f,0.26157614728435874f,0.49934938363730907f,0.26385784195736051f,\
+                    0.52535630855709314f,0.53762298030778766f,0.11999255046248436f,0.2256303490139544f ,\
+                    0.62740930821746588f,0.76084325974807143f,0.04855662025511265f,0.67239497276023030f,\
+                    0.20171726960688829f,0.39115739194676280f}
+
+#define CREAL_IN15 {0.83003165572881699f,0.58787201577797532f,0.48291792999953032f,0.22328650346025825f,\
+                    0.84008856676518917f,0.12059959070757031f,0.28553641680628061f,0.86075146449729800f,\
+                    0.84941016510128975f,0.52570608118548989f,0.99312098976224661f,0.64885628735646605f,\
+                    0.99231909401714802f,0.05004197778180242f,0.74855065811425447f}
+
+#define CIMAG_IN15 {0.41040589986369014f,0.60845263302326202f,0.85442108893766999f,0.06426467280834913f,\
+                    0.82790829380974174f,0.92623437754809856f,0.56672112690284848f,0.57116389367729425f,\
+                    0.81601104838773608f,0.05689279362559319f,0.55959366867318749f,0.12493403162807226f,\
+                    0.72792222863063216f,0.26777664758265018f,0.54653349192813039f}
+
+
+
+#define CREAL_IN16 {0.23122371966019273f, 0.21646326314657927f, 0.88338878145441413f, 0.65251349471509457f,\
+                    0.30760907428339124f, 0.93296162132173777f, 0.21460078610107303f, 0.31264199689030647f,\
+                    0.36163610080257058f, 0.2922266637906432f , 0.56642488157376647f, 0.48264719732105732f,\
+                    0.33217189135029912f, 0.59350947011262178f, 0.50153415976092219f, 0.43685875833034515f}
+#define CIMAG_IN16 {0.26931248093023896f, 0.63257448654621840f, 0.40519540151581168f, 0.91847078315913677f,\
+                    0.04373343335464597f, 0.48185089323669672f, 0.26395560009405017f, 0.41481037065386772f,\
+                    0.28064980218186975f, 0.12800584640353918f, 0.77831285959109664f, 0.21190304495394230f,\
+                    0.11213546665385365f, 0.68568959552794695f, 0.15312166837975383f, 0.69708506017923355f}
+
+
+#define CREAL_IN32 {0.21132486546412110f,0.75604385416954756f,0.00022113462910056f,0.33032709173858166f,\
+                    0.66538110421970487f,0.62839178834110498f,0.84974523587152362f,0.68573101982474327f,\
+                    0.87821648130193353f,0.06837403681129217f,0.56084860628470778f,0.66235693730413914f,\
+                    0.72635067673400044f,0.19851438421756029f,0.54425731627270579f,0.23207478970289230f,\
+                    0.23122371966019273f,0.21646326314657927f,0.88338878145441413f,0.65251349471509457f,\
+                    0.30760907428339124f,0.93296162132173777f,0.21460078610107303f,0.31264199689030647f,\
+                    0.36163610080257058f,0.2922266637906432f ,0.56642488157376647f,0.48264719732105732f,\
+                    0.33217189135029912f,0.59350947011262178f,0.50153415976092219f,0.43685875833034515f}
+
+#define CIMAG_IN32 {0.26931248093023896f,0.63257448654621840f,0.40519540151581168f,0.91847078315913677f,\
+                    0.04373343335464597f,0.48185089323669672f,0.26395560009405017f,0.41481037065386772f,\
+                    0.28064980218186975f,0.12800584640353918f,0.77831285959109664f,0.21190304495394230f,\
+                    0.11213546665385365f,0.68568959552794695f,0.15312166837975383f,0.69708506017923355f,\
+                    0.84155184263363481f,0.40620247554033995f,0.40948254754766822f,0.87841258011758327f,\
+                    0.11383596854284406f,0.19983377400785685f,0.56186607433483005f,0.58961773291230202f,\
+                    0.68539796629920602f,0.89062247332185507f,0.50422128057107329f,0.34936154074966908f,\
+                    0.38737787725403905f,0.92228986788541079f,0.94881842611357570f,0.34353372454643250f}
+
+
+
+
+#define CREAL_RESULT2 { 0.33054822636768222f,- 0.33010595710948110f}
+#define CIMAG_RESULT2 { 1.29377289256080985f,  0.03698931587859988f}
+
+#define CREAL_RESULT3 { 3.8912947420030832f ,  0.73026611683127762f, 2.82463946259411713f}
+#define CIMAG_RESULT3 { 1.79153951257467270f,  2.79267814568426775f, 1.85999415536228230f}
+
+#define CREAL_RESULT4 { 2.48206677380949259f,  0.43537130765616894f, 0.97385666053742170f, -0.49231379851698875f}
+#define CIMAG_RESULT4 { 2.14807060454040766f,- 0.78285905346274376f, 0.42632796149700880f,  0.45185491256415844f}
+
+#define CREAL_RESULT5 { 3.13458026852458715f, 0.8989689127154592f ,-0.38601946016350575f, 0.50520993574533923f,\
+                        0.09598652253573875f}
+#define CIMAG_RESULT5 { 2.71449548611417413f,-0.31527367037930898f, 0.60322341639929178f,-0.89813890885693670f,\
+                        0.69993670814631914f}
+
+#define CREAL_RESULT6 {  2.18414165778085589f,-0.26482327553354379f,-0.01687604011087318f, 0.67184740351513028f,\
+                         0.11489612058787246f, 0.57635803139679309f }
+#define CIMAG_RESULT6 { +2.34103989927098155f,+0.34168162147929737f,-0.70971181304669773f,-0.05571636231616137f,\
+                        -0.11084573654913504f,-0.51884289223184654f }
+
+
+
+
+#define CREAL_RESULT7 { 3.06753043923527002f,-0.62032167153569062f,-0.13156333379499591f, 0.48353341667797933f,\
+                        0.63567251139259018f, 0.05503001802946385f, 0.31991983390432432f}
+#define CIMAG_RESULT7 { 2.75052244681864977f, 0.82490994311348309f,-0.93592353228518299f,-0.23131444371235776f,\
+                       -0.12732936894919694f, 0.16455873200809046f,-0.94321827428597393f}
+
+
+
+#define CREAL_RESULT8 { 4.00049206055700779f,-0.43357241280891956f, 0.79836636409163475f,-0.91119240848798977f,\
+                       -0.06753427721560001f,-0.18576209864995416f, 0.97926024347543716f, 0.17400105922003017f}
+#define CIMAG_RESULT8 { 3.15585898794233799f, 0.62132445165622818f, 0.35205427557229996f, 0.28289917172258683f,\
+                       -0.20619166828691959f,-1.17220193335521805f,-0.17761892452836037f,-1.13931807191437073f }
+
+#define CREAL_RESULT9 { 4.18826149590313435f,-0.33012457237426968f,-0.46815050871925312f,-0.52782532864173848f,\
+                        0.14402327100125287f, 0.48673726656350014f,-0.36542216583231485f,-0.05675799381585508f,\
+                       -0.98972798714272159f}
+#define CIMAG_RESULT9 { 4.31011430080980062f,-0.43185186999958014f,-0.61788469590268758f, 2.02080753944191294f,\
+                       -1.82700213292318292f,-0.72130831941965079f,-0.43263346921029644f,-0.61611460931125561f,\
+                        0.73968558488709069f }
+
+
+#define CREAL_RESULT10 {  4.7991688111796975f , 0.13431735180709442f, 0.69797375124916528f,-0.96094309976899528f,\
+                         -1.299412169815219f  , 0.31298504490405327f,-0.70524633213128674f, 0.73186521665562432f,\
+                         -0.84695776029792746f,-0.69911818231641265f}
+#define CIMAG_RESULT10 { +3.8964297915808856f ,-0.73143162523007543f,-1.16550179795884423f,-0.28088284236709465f,\
+                         +0.91311790128897607f,+0.14664673572406173f,-0.38825389263472715f,+0.70003588825710683f,\
+                         -1.10050453393604197f,+0.32258157187768072f}
+
+#define CREAL_RESULT11 { 4.48273084452375770f,-0.38185469421558837f,-0.20352646397260507f, 0.93844897170676500f,\
+                        -0.36107014581234886f, 1.63127126429331426f, 0.21051283071884830f, 0.41375037345506283f,\
+                        -1.51895083986003510f, 0.07998126975880851f, 0.20154980941442344f}
+
+#define CIMAG_RESULT11 {+5.99735778197646141f,+0.89612320628808262f,-1.19950115725534112f,+0.16831729582097132f,\
+                        -0.30180616479381106f,-1.1576712540107854f ,+0.14605414615044232f,+0.98186675096176135f,\
+                        -1.81578488007792282f,+0.11882005651954808f,+0.46895552983498812f}
+
+#define CREAL_RESULT12 { 6.81198796723037958f,-0.94341279444120363f, 0.80833429094732012f, 0.51617261953651883f,\
+                        -0.2952048802069408f , 2.17160345678053313f,-0.54953851085156202f,-0.00060138915045171f,\
+                         1.48723066647267177f,-0.96738335862755753f, 0.38783971037387632f,-0.35450152802901336f}
+
+#define CIMAG_RESULT12 {+5.08788532856851816f,-0.92793626853655098f,+1.98330386259771707f,+1.00984227284789085f,\
+                        -0.76701015963174557f,-0.03923425866831987f,+0.00245377141982317f,-0.97965668697496155f,\
+                        -0.43031801485501076f,-0.70842429809272289f,-0.77014751450337293f,-1.07858542356054099f}
+
+
+#define CREAL_RESULT13 { 5.95651050098240376f,-1.05002118208049122f,-0.62824400440218664f, 0.73670329745244079f,\
+                         1.01270235903781081f,-0.97652276217739442f,-0.80139420917945892f,-1.08927100387059594f,\
+                         1.10768757452252697f,-0.90416530058905542f, 0.19128270229571837f,-0.36935459470156029f,\
+                         0.61303325198820890f}
+
+#define CIMAG_RESULT13 {+5.38290618034079671f,-0.01795106539414900f,-1.0736822056133133f ,-0.38375436766279453f,\
+                        +0.45177555081294796f,-0.42204321578379422f,+1.167268002300917f  ,-0.8654330910349184f ,\
+                        -1.80135467250416070f,+0.73358402770681042f,+0.92212767526074568f,-0.53962030646712056f,\
+                        -0.12239971073931022f}
+
+#define CREAL_RESULT14 { 7.75120115978643298f,-0.78366539551591063f,-0.20265674140819168f, 0.04290246165533468f,\
+                         2.26072777524451896f, 0.41764276367067404f,-0.94725360360479638f, 0.59614222729578614f,\
+                         1.2655897771348088f , 1.49954927048727082f, 0.59161337187577756f, 1.32712418977692859f,\
+                        -1.04078471420795249f,-0.48035642054451416f}
+
+
+#define CIMAG_RESULT14 {+5.86955844005569816f,+0.59116535878306964f,+1.10949301280070478f,-0.10194863149531888f,\
+                        +0.33742089533324454f,+1.27136622217475770f,+0.66505772083419801f,-0.35660744598135352f,\
+                        +0.55272403261244618f,+0.78239239747489764f,-0.76097885152655409f,+1.7013910918422144f ,\
+                        -1.05520441290632339f,-0.32851304179021534f}
+
+#define CREAL_RESULT15 { 9.03908939706161618f, 0.83695739793685675f,-0.1247585940626968f , 0.73554494173292662f,\
+                         2.89255624599792061f,-0.60942096648213817f,-0.96289916352621108f,-2.01148115975842146f,\
+                         1.08671310762523987f, 1.10385593717105923f, 0.14097082301450437f, 0.77951939204949339f,\
+                        -0.19682993144621974f, 1.09445436001472118f,-1.35379695139639411f}
+
+#define CIMAG_RESULT15 {+7.929235897026956f  ,+0.93665405708769556f,-0.58867096407810116f,-0.08075001529554950f,\
+                        +0.05154837779444588f,-1.64233407065738146f,+2.20857407200866884f,+0.92685932199933529f,\
+                        -1.71222943015973872f,-0.79519673795720203f,-0.80828166087623532f,-0.07547063282874045f,\
+                        +0.21930651464200918f,+1.00880777239444086f,-1.42196400314524918f}
+
+
+
+#define CREAL_RESULT16 { 7.31841186061501503f, 0.57213963313411265f,-0.54757095809921363f,-0.48628670926159856f,\
+                        -1.24745626002550125f,-0.60260425121772254f,-0.09566750389725764f, 1.12013387649474438f,\
+                        -0.52123307064175606f,-0.4866536676629296f , 1.98659065302356819f,-0.8626986211125984f ,\
+                        -0.61915938556194305f,-0.27813937201980266f,-1.53103677171080510f,-0.01918993749322817f}
+#define CIMAG_RESULT16 { 6.47680679336190224f, 0.33111151130330035f,-0.19343861330849654f, 0.12474172265893407f,\
+                        -1.0452539175748825f , 1.29632487527975693f, 1.87557979276701658f,-1.82623636350346352f,\
+                        -1.86397336795926094f,-1.03154071610913434f,-0.48573205481665604f, 0.44539904220706855f,\
+                        -0.74425477534532547f,-0.54299368721281471f, 0.37996440777257234f, 1.11249504536330601f}
+
+#define CREAL_RESULT32 { 15.3165711835026741f,-1.79021577127059173f,-1.66659611407065089f, 0.17525916470909797f,\
+                        -1.16958628014871602f, 0.58684741669397522f, 0.03947542161511042f, 0.99740008842981942f,\
+                        -0.46323241293430328f, 2.122539701124051f  ,-1.52963914564883940f, 0.87990417229605744f,\
+                         0.58569127383151542f,-0.18198535589432135f, 0.26043384746900655f,-1.11204765363415392f,\
+                         0.35329844802618027f,-1.47568616310628631f,-2.03487116744967844f,-3.19495610958970166f,\
+                         0.81026376203844086f,-0.46366666776372734f,-1.63150209835186510f, 0.77334707088593369f,\
+                        -0.35098156332969666f,-1.63498270669406387f, 0.67411467120679691f, 2.80538085483913147f,\
+                        -1.62281507315555107f,-0.5600265995962992f ,-0.48984739061140237f, 1.75450689143393301f}
+
+
+
+#define CIMAG_RESULT32 { 15.509232945740223f ,-0.47962381296807621f, 0.21213951866464975f, 0.88442937061831350f,\
+                         1.52924554070524898f,-0.6313403060045536f ,-2.25908603874729419f,-1.3836292677373856f ,\
+                        -1.18231281638145447f,-2.14767090006699668f, 1.5452016553381984f ,-3.15355126536920993f,\
+                         2.10199273301496747f, 0.67530605269461363f,-2.03603600735261558f, 1.2309547869577584f ,\
+                        -1.9912955537438393f ,-1.9668221895811833f , 0.29575245179739662f, 1.34815224953105273f,\
+                         1.508921339902356f  ,-0.40084285801706099f, 2.96716476331614754f, 1.08125713762201059f,\
+                        -1.39964522421360016f,-1.30777696073860294f,-1.13169784714423916f,-2.00872755010475013f,\
+                         0.53915777133569487f,-2.45178696294021004f , 1.56509394479014063f, 1.5558426888499468f}
+
+static void cfftmaTest2 (void )
+{
+      int i = 0 ;
+
+    float tRealIn [] = CREAL_IN2;
+    float tImagIn [] = CIMAG_IN2 ;
+
+
+
+    float tRealResult [] = CREAL_RESULT2 ;
+    float tImagResult [] = CIMAG_RESULT2 ;
+
+
+
+    floatComplex*  out     = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS2));
+    floatComplex*  in      = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS2 );
+    floatComplex* Result   = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS2) ;
+
+
+
+    cfftma ( in , ROW , COLS2 , out ) ;
+
+    /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+
+
+	for ( i = 0 ; i < (ROW*COLS2 )  ; i++ )
+	{
+	  printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i  \n" ,
+                i ,
+                creals(out[i]) ,
+                cimags(out[i]),
+                creals (Result[i])  ,
+                cimags (Result[i]),
+                fabs(  creals(out[i]) -  creals (Result[i]) ) / fabs (creals (out[i])) ,
+                fabs(  cimags(out[i]) -  cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+   if (  creals(out[i])  < 1e-14 && creals (Result[i]) < 1e-18 )
+        assert ( 1 ) ;
+    else
+        assert ( fabs(  creals(out[i]) -  creals (Result[i]) ) / fabs (creals (out[i]))  < 3e-6 );
+
+
+    if (  cimags(out[i])  < 1e-14 && cimags (Result[i]) < 1e-18 )
+        assert ( 1 ) ;
+    else
+	    assert ( fabs(  cimags(out[i]) -  cimags (Result[i]) ) / fabs (cimags (out[i]))  < 3e-6 ) ;
+
+    }
+
+    free(out);
+    free(in);
+    free(Result);
+}
+
+static void cfftmaTest3 (void )
+{
+      int i = 0 ;
+
+    float tRealIn [] = CREAL_IN3;
+    float tImagIn [] = CIMAG_IN3 ;
+
+
+
+    float tRealResult [] = CREAL_RESULT3;
+    float tImagResult [] = CIMAG_RESULT3 ;
+
+
+
+    floatComplex*  out     = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS3));
+    floatComplex*  in      = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS3 );
+    floatComplex* Result   = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS3) ;
+
+
+
+    cfftma ( in , ROW , COLS3 , out ) ;
+
+    /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+
+
+	for ( i = 0 ; i < (ROW*COLS3 )  ; i++ )
+	{
+	  printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i  \n" ,
+                i ,
+                creals(out[i]) ,
+                cimags(out[i]),
+                creals (Result[i])  ,
+                cimags (Result[i]),
+                fabs(  creals(out[i]) -  creals (Result[i]) ) / fabs (creals (out[i])) ,
+                fabs(  cimags(out[i]) -  cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+   if (  creals(out[i])  < 1e-14 && creals (Result[i]) < 1e-18 )
+        assert ( 1 ) ;
+    else
+        assert ( fabs(  creals(out[i]) -  creals (Result[i]) ) / fabs (creals (out[i]))  < 3e-6 );
+
+
+    if (  cimags(out[i])  < 1e-14 && cimags (Result[i]) < 1e-18 )
+        assert ( 1 ) ;
+    else
+	    assert ( fabs(  cimags(out[i]) -  cimags (Result[i]) ) / fabs (cimags (out[i]))  < 3e-6 ) ;
+
+    }
+
+
+    free(out);
+    free(in);
+    free(Result);
+}
+
+
+static void cfftmaTest4 (void )
+{
+      int i = 0 ;
+
+    float tRealIn [] = CREAL_IN4;
+    float tImagIn [] = CIMAG_IN4 ;
+
+
+
+    float tRealResult [] = CREAL_RESULT4 ;
+    float tImagResult [] = CIMAG_RESULT4 ;
+
+
+
+    floatComplex*  out     = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS4));
+    floatComplex*  in      = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS4 );
+    floatComplex* Result   = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS4) ;
+
+
+    cfftma ( in , ROW , COLS4 , out ) ;
+
+    /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+	for ( i = 0 ; i < (ROW*COLS4 )  ; i++ )
+	{
+	  printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i  \n" ,
+              i ,creals(out[i]) , cimags(out[i]), creals (Result[i])  , cimags (Result[i]),
+              fabs(  creals(out[i]) -  creals (Result[i]) ) / fabs (creals (out[i])) ,
+              fabs(  cimags(out[i]) -  cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+   if (  creals(out[i])  < 1e-14 && creals (Result[i]) < 1e-18 )
+        assert ( 1 ) ;
+    else
+        assert ( fabs(  creals(out[i]) -  creals (Result[i]) ) / fabs (creals (out[i]))  < 3e-6 );
+
+
+    if (  cimags(out[i])  < 1e-14 && cimags (Result[i]) < 1e-18 )
+        assert ( 1 ) ;
+    else
+	    assert ( fabs(  cimags(out[i]) -  cimags (Result[i]) ) / fabs (cimags (out[i]))  < 3e-6 ) ;
+
+    }
+
+    free(out);
+    free(in);
+    free(Result);
+
+}
+
+
+static void cfftmaTest5 (void )
+{
+      int i = 0 ;
+
+    float tRealIn [] = CREAL_IN5;
+    float tImagIn [] = CIMAG_IN5 ;
+
+
+
+    float tRealResult [] = CREAL_RESULT5;
+    float tImagResult [] = CIMAG_RESULT5 ;
+
+
+
+    floatComplex*  out     = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS5));
+    floatComplex*  in      = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS5 );
+    floatComplex* Result   = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS5) ;
+
+
+
+    cfftma ( in , ROW , COLS5 , out ) ;
+
+    /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+
+
+	for ( i = 0 ; i < (ROW*COLS5 )  ; i++ )
+	{
+	  printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i  \n" ,
+                i ,
+                creals(out[i]) ,
+                cimags(out[i]),
+                creals (Result[i])  ,
+                cimags (Result[i]),
+                fabs(  creals(out[i]) -  creals (Result[i]) ) / fabs (creals (out[i])) ,
+                fabs(  cimags(out[i]) -  cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+   if (  creals(out[i])  < 1e-14 && creals (Result[i]) < 1e-18 )
+        assert ( 1 ) ;
+    else
+        assert ( fabs(  creals(out[i]) -  creals (Result[i]) ) / fabs (creals (out[i]))  < 3e-6 );
+
+
+    if (  cimags(out[i])  < 1e-14 && cimags (Result[i]) < 1e-18 )
+        assert ( 1 ) ;
+    else
+	    assert ( fabs(  cimags(out[i]) -  cimags (Result[i]) ) / fabs (cimags (out[i]))  < 3e-6 ) ;
+
+    }
+
+    free(out);
+    free(in);
+    free(Result);
+
+}
+
+
+static void cfftmaTest6 (void )
+{
+      int i = 0 ;
+
+    float tRealIn [] = CREAL_IN6;
+    float tImagIn [] = CIMAG_IN6 ;
+
+
+
+    float tRealResult [] = CREAL_RESULT6;
+    float tImagResult [] = CIMAG_RESULT6;
+
+
+
+    floatComplex*  out     = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS6));
+    floatComplex*  in      = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS6 );
+    floatComplex* Result   = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS6) ;
+
+
+
+    cfftma ( in , ROW , COLS6 , out ) ;
+
+    /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+
+
+	for ( i = 0 ; i < (ROW*COLS6 )  ; i++ )
+	{
+	  printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i  \n" ,
+                i ,
+                creals(out[i]) ,
+                cimags(out[i]),
+                creals (Result[i])  ,
+                cimags (Result[i]),
+                fabs(  creals(out[i]) -  creals (Result[i]) ) / fabs (creals (out[i])) ,
+                fabs(  cimags(out[i]) -  cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+   if (  creals(out[i])  < 1e-14 && creals (Result[i]) < 1e-18 )
+        assert ( 1 ) ;
+    else
+        assert ( fabs(  creals(out[i]) -  creals (Result[i]) ) / fabs (creals (out[i]))  < 3e-6 );
+
+
+    if (  cimags(out[i])  < 1e-14 && cimags (Result[i]) < 1e-18 )
+        assert ( 1 ) ;
+    else
+	    assert ( fabs(  cimags(out[i]) -  cimags (Result[i]) ) / fabs (cimags (out[i]))  < 3e-6 ) ;
+
+    }
+
+
+    free(out);
+    free(in);
+    free(Result);
+}
+
+
+static void cfftmaTest7 (void )
+{
+      int i = 0 ;
+
+    float tRealIn [] = CREAL_IN7;
+    float tImagIn [] = CIMAG_IN7 ;
+
+
+
+    float tRealResult [] = CREAL_RESULT7;
+    float tImagResult [] = CIMAG_RESULT7;
+
+
+
+    floatComplex*  out     = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS7));
+    floatComplex*  in      = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS7 );
+    floatComplex* Result   = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS7) ;
+
+
+
+    cfftma ( in , ROW , COLS7 , out ) ;
+
+    /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+
+
+	for ( i = 0 ; i < (ROW*COLS7 )  ; i++ )
+	{
+	  printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i  \n" ,
+                i ,
+                creals(out[i]) ,
+                cimags(out[i]),
+                creals (Result[i])  ,
+                cimags (Result[i]),
+                fabs(  creals(out[i]) -  creals (Result[i]) ) / fabs (creals (out[i])) ,
+                fabs(  cimags(out[i]) -  cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+   if (  creals(out[i])  < 1e-14 && creals (Result[i]) < 1e-18 )
+        assert ( 1 ) ;
+    else
+        assert ( fabs(  creals(out[i]) -  creals (Result[i]) ) / fabs (creals (out[i]))  < 3e-6 );
+
+
+    if (  cimags(out[i])  < 1e-14 && cimags (Result[i]) < 1e-18 )
+        assert ( 1 ) ;
+    else
+	    assert ( fabs(  cimags(out[i]) -  cimags (Result[i]) ) / fabs (cimags (out[i]))  < 3e-6 ) ;
+
+    }
+
+    free(out);
+    free(in);
+    free(Result);
+
+}
+
+static void cfftmaTest8 (void )
+{
+      int i = 0 ;
+
+    float tRealIn [] = CREAL_IN8;
+    float tImagIn [] = CIMAG_IN8 ;
+
+
+
+    float tRealResult [] = CREAL_RESULT8 ;
+    float tImagResult [] = CIMAG_RESULT8 ;
+
+
+
+    floatComplex*  out     = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS8));
+    floatComplex*  in      = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS8 );
+    floatComplex* Result   = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS8) ;
+
+
+    cfftma ( in , ROW , COLS8 , out ) ;
+
+    /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+	for ( i = 0 ; i < (ROW*COLS8 )  ; i++ )
+	{
+	  printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i  \n" ,
+              i ,creals(out[i]) , cimags(out[i]), creals (Result[i])  , cimags (Result[i]),
+              fabs(  creals(out[i]) -  creals (Result[i]) ) / fabs (creals (out[i])) ,
+              fabs(  cimags(out[i]) -  cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+   if (  creals(out[i])  < 1e-14 && creals (Result[i]) < 1e-18 )
+        assert ( 1 ) ;
+    else
+        assert ( fabs(  creals(out[i]) -  creals (Result[i]) ) / fabs (creals (out[i]))  < 3e-6 );
+
+
+    if (  cimags(out[i])  < 1e-14 && cimags (Result[i]) < 1e-18 )
+        assert ( 1 ) ;
+    else
+	    assert ( fabs(  cimags(out[i]) -  cimags (Result[i]) ) / fabs (cimags (out[i]))  < 3e-6 ) ;
+
+    }
+
+    free(out);
+    free(in);
+    free(Result);
+
+}
+
+
+static void cfftmaTest9 (void )
+{
+      int i = 0 ;
+
+    float tRealIn [] = CREAL_IN9;
+    float tImagIn [] = CIMAG_IN9 ;
+
+
+
+    float tRealResult [] = CREAL_RESULT9 ;
+    float tImagResult [] = CIMAG_RESULT9 ;
+
+
+
+    floatComplex*  out     = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS9));
+    floatComplex*  in      = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS9 );
+    floatComplex* Result   = FloatComplexMatrix ( tRealResult , tImagResult ,ROW*COLS9) ;
+
+
+    cfftma ( in , ROW , COLS9 , out ) ;
+
+    /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+	for ( i = 0 ; i < (ROW*COLS9 )  ; i++ )
+	{
+	  printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i  \n" ,
+              i ,creals(out[i]) , cimags(out[i]), creals (Result[i])  , cimags (Result[i]),
+              fabs(  creals(out[i]) -  creals (Result[i]) ) / fabs (creals (out[i])) ,
+              fabs(  cimags(out[i]) -  cimags (Result[i]) ) / fabs (cimags (out[i])));
+
+   if (  creals(out[i])  < 1e-14 && creals (Result[i]) < 1e-18 )
+        assert ( 1 ) ;
+    else
+        assert ( fabs(  creals(out[i]) -  creals (Result[i]) ) / fabs (creals (out[i]))  < 3e-6 );
+
+
+    if (  cimags(out[i])  < 1e-14 && cimags (Result[i]) < 1e-18 )
+        assert ( 1 ) ;
+    else
+	    assert ( fabs(  cimags(out[i]) -  cimags (Result[i]) ) / fabs (cimags (out[i]))  < 3e-6 ) ;
+
+    }
+
+    free(out);
+    free(in);
+    free(Result);
+
+}
+
+static void cfftmaTest10 (void )
+{
+      int i = 0 ;
+
+    float tRealIn [] = CREAL_IN10;
+    float tImagIn [] = CIMAG_IN10 ;
+
+
+
+    float tRealResult [] = CREAL_RESULT10 ;
+    float tImagResult [] = CIMAG_RESULT10 ;
+
+
+
+    floatComplex*  out     = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS10));
+    floatComplex*  in      = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS10 );
+
+
+
+    cfftma ( in , ROW , COLS10 , out );
+
+
+
+
+    /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+		for ( i = 0 ; i < (ROW*COLS10 )  ; i++ )
+	{
+
+
+	  printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i  \n" ,
+                i ,
+                creals(out[i]) ,
+                cimags(out[i]),
+                tRealResult[i]  ,
+                tImagResult[i],
+                fabs(  creals(out[i]) -  tRealResult[i] ) / fabs (creals (out[i])) ,
+                fabs(  cimags(out[i]) -  tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+   if (  creals(out[i])  < 1e-14 && tRealResult[i] < 1e-18 )
+        assert ( 1 ) ;
+    else
+        assert ( fabs(  creals(out[i]) -  tRealResult[i] ) / fabs (creals (out[i]))  < 3e-6 );
+
+
+    if (  cimags(out[i])  < 1e-14 && tImagResult[i] < 1e-18 )
+        assert ( 1 ) ;
+    else
+	    assert ( fabs(  cimags(out[i]) -  tImagResult[i] ) / fabs (cimags (out[i]))  < 3e-6 ) ;
+
+    }
+
+    free(out);
+    free(in);
+}
+
+static void cfftmaTest11 (void )
+{
+      int i = 0 ;
+
+    float tRealIn [] = CREAL_IN11;
+    float tImagIn [] = CIMAG_IN11 ;
+
+
+
+    float tRealResult [] = CREAL_RESULT11 ;
+    float tImagResult [] = CIMAG_RESULT11 ;
+
+
+
+    floatComplex*  out     = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS11));
+    floatComplex*  in      = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS11 );
+
+
+
+    cfftma ( in , ROW , COLS11 , out );
+
+
+
+
+    /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+		for ( i = 0 ; i < (ROW*COLS11 )  ; i++ )
+	{
+
+
+	  printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i  \n" ,
+                i ,
+                creals(out[i]) ,
+                cimags(out[i]),
+                tRealResult[i]  ,
+                tImagResult[i],
+                fabs(  creals(out[i]) -  tRealResult[i] ) / fabs (creals (out[i])) ,
+                fabs(  cimags(out[i]) -  tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+   if (  creals(out[i])  < 1e-14 && tRealResult[i] < 1e-18 )
+        assert ( 1 ) ;
+    else
+        assert ( fabs(  creals(out[i]) -  tRealResult[i] ) / fabs (creals (out[i]))  < 3e-6 );
+
+
+    if (  cimags(out[i])  < 1e-14 && tImagResult[i] < 1e-18 )
+        assert ( 1 ) ;
+    else
+	    assert ( fabs(  cimags(out[i]) -  tImagResult[i] ) / fabs (cimags (out[i]))  < 3e-6 ) ;
+
+    }
+
+    free(out);
+    free(in);
+}
+
+
+static void cfftmaTest12 (void )
+{
+      int i = 0 ;
+
+    float tRealIn [] = CREAL_IN12;
+    float tImagIn [] = CIMAG_IN12 ;
+
+
+
+    float tRealResult [] = CREAL_RESULT12 ;
+    float tImagResult [] = CIMAG_RESULT12 ;
+
+
+
+    floatComplex*  out     = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS12));
+    floatComplex*  in      = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS12 );
+
+
+
+    cfftma ( in , ROW , COLS12 , out );
+
+
+
+
+    /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+		for ( i = 0 ; i < (ROW*COLS12 )  ; i++ )
+	{
+
+
+	  printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i  \n" ,
+                i ,
+                creals(out[i]) ,
+                cimags(out[i]),
+                tRealResult[i]  ,
+                tImagResult[i],
+                fabs(  creals(out[i]) -  tRealResult[i] ) / fabs (creals (out[i])) ,
+                fabs(  cimags(out[i]) -  tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+   if (  creals(out[i])  < 1e-14 && tRealResult[i] < 1e-18 )
+        assert ( 1 ) ;
+    else
+        assert ( fabs(  creals(out[i]) -  tRealResult[i] ) / fabs (creals (out[i]))  < 3e-6 );
+
+
+    if (  cimags(out[i])  < 1e-14 && tImagResult[i] < 1e-18 )
+        assert ( 1 ) ;
+    else
+	    assert ( fabs(  cimags(out[i]) -  tImagResult[i] ) / fabs (cimags (out[i]))  < 3e-5 ) ;
+
+    }
+
+    free(out);
+    free(in);
+}
+
+
+static void cfftmaTest13 (void )
+{
+      int i = 0 ;
+
+    float tRealIn [] = CREAL_IN13;
+    float tImagIn [] = CIMAG_IN13 ;
+
+
+
+    float tRealResult [] = CREAL_RESULT13 ;
+    float tImagResult [] = CIMAG_RESULT13 ;
+
+
+
+    floatComplex*  out     = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS13));
+    floatComplex*  in      = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS13 );
+
+
+
+    cfftma ( in , ROW , COLS13 , out );
+
+
+
+
+    /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+		for ( i = 0 ; i < (ROW*COLS13 )  ; i++ )
+	{
+
+
+	  printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i  \n" ,
+                i ,
+                creals(out[i]) ,
+                cimags(out[i]),
+                tRealResult[i]  ,
+                tImagResult[i],
+                fabs(  creals(out[i]) -  tRealResult[i] ) / fabs (creals (out[i])) ,
+                fabs(  cimags(out[i]) -  tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+   if (  creals(out[i])  < 1e-14 && tRealResult[i] < 1e-18 )
+        assert ( 1 ) ;
+    else
+        assert ( fabs(  creals(out[i]) -  tRealResult[i] ) / fabs (creals (out[i]))  < 3e-6 );
+
+
+    if (  cimags(out[i])  < 1e-14 && tImagResult[i] < 1e-18 )
+        assert ( 1 ) ;
+    else
+	    assert ( fabs(  cimags(out[i]) -  tImagResult[i] ) / fabs (cimags (out[i]))  < 3e-6 ) ;
+
+    }
+
+    free(out);
+    free(in);
+}
+
+
+static void cfftmaTest14 (void )
+{
+      int i = 0 ;
+
+    float tRealIn [] = CREAL_IN14;
+    float tImagIn [] = CIMAG_IN14 ;
+
+
+
+    float tRealResult [] = CREAL_RESULT14 ;
+    float tImagResult [] = CIMAG_RESULT14 ;
+
+
+
+    floatComplex*  out     = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS14));
+    floatComplex*  in      = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS14 );
+
+
+
+    cfftma ( in , ROW , COLS14 , out );
+
+
+
+
+    /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+		for ( i = 0 ; i < (ROW*COLS14 )  ; i++ )
+	{
+
+
+	  printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i  \n" ,
+                i ,
+                creals(out[i]) ,
+                cimags(out[i]),
+                tRealResult[i]  ,
+                tImagResult[i],
+                fabs(  creals(out[i]) -  tRealResult[i] ) / fabs (creals (out[i])) ,
+                fabs(  cimags(out[i]) -  tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+   if (  creals(out[i])  < 1e-14 && tRealResult[i] < 1e-18 )
+        assert ( 1 ) ;
+    else
+        assert ( fabs(  creals(out[i]) -  tRealResult[i] ) / fabs (creals (out[i]))  < 3e-6 );
+
+
+    if (  cimags(out[i])  < 1e-14 && tImagResult[i] < 1e-18 )
+        assert ( 1 ) ;
+    else
+	    assert ( fabs(  cimags(out[i]) -  tImagResult[i] ) / fabs (cimags (out[i]))  < 3e-6 ) ;
+
+    }
+
+    free(out);
+    free(in);
+}
+
+
+
+static void cfftmaTest15 (void )
+{
+      int i = 0 ;
+
+    float tRealIn [] = CREAL_IN15;
+    float tImagIn [] = CIMAG_IN15 ;
+
+
+
+    float tRealResult [] = CREAL_RESULT15 ;
+    float tImagResult [] = CIMAG_RESULT15 ;
+
+
+
+    floatComplex*  out     = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS15));
+    floatComplex*  in      = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS15 );
+
+
+
+    cfftma ( in , ROW , COLS15 , out );
+
+
+
+
+    /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+		for ( i = 0 ; i < (ROW*COLS15 )  ; i++ )
+	{
+
+
+	  printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i  \n" ,
+                i ,
+                creals(out[i]) ,
+                cimags(out[i]),
+                tRealResult[i]  ,
+                tImagResult[i],
+                fabs(  creals(out[i]) -  tRealResult[i] ) / fabs (creals (out[i])) ,
+                fabs(  cimags(out[i]) -  tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+   if (  creals(out[i])  < 1e-14 && tRealResult[i] < 1e-18 )
+        assert ( 1 ) ;
+    else
+        assert ( fabs(  creals(out[i]) -  tRealResult[i] ) / fabs (creals (out[i]))  < 3e-6 );
+
+
+    if (  cimags(out[i])  < 1e-14 && tImagResult[i] < 1e-18 )
+        assert ( 1 ) ;
+    else
+	    assert ( fabs(  cimags(out[i]) -  tImagResult[i] ) / fabs (cimags (out[i]))  < 3e-6 ) ;
+
+    }
+
+    free(out);
+    free(in);
+}
+
+
+
+static void cfftmaTest16 (void )
+{
+      int i = 0 ;
+
+    float tRealIn [] = CREAL_IN16;
+    float tImagIn [] = CIMAG_IN16 ;
+
+
+
+    float tRealResult [] = CREAL_RESULT16 ;
+    float tImagResult [] = CIMAG_RESULT16 ;
+
+
+
+    floatComplex*  out     = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS16));
+    floatComplex*  in      = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS16 );
+
+
+
+    cfftma ( in , ROW , COLS16 , out );
+
+
+
+
+    /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+		for ( i = 0 ; i < (ROW*COLS16 )  ; i++ )
+	{
+
+
+	  printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i  \n" ,
+                i ,
+                creals(out[i]) ,
+                cimags(out[i]),
+                tRealResult[i]  ,
+                tImagResult[i],
+                fabs(  creals(out[i]) -  tRealResult[i] ) / fabs (creals (out[i])) ,
+                fabs(  cimags(out[i]) -  tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+   if (  creals(out[i])  < 1e-14 && tRealResult[i] < 1e-18 )
+        assert ( 1 ) ;
+    else
+        assert ( fabs(  creals(out[i]) -  tRealResult[i] ) / fabs (creals (out[i]))  < 3e-6 );
+
+
+    if (  cimags(out[i])  < 1e-14 && tImagResult[i] < 1e-18 )
+        assert ( 1 ) ;
+    else
+	    assert ( fabs(  cimags(out[i]) -  tImagResult[i] ) / fabs (cimags (out[i]))  < 3e-6 ) ;
+
+    }
+
+    free(out);
+    free(in);
+}
+
+
+
+static void cfftmaTest32 (void )
+{
+      int i = 0 ;
+
+    float tRealIn [] = CREAL_IN32;
+    float tImagIn [] = CIMAG_IN32 ;
+
+
+
+    float tRealResult [] = CREAL_RESULT32 ;
+    float tImagResult [] = CIMAG_RESULT32 ;
+
+
+
+    floatComplex*  out     = (floatComplex*) malloc ( sizeof(floatComplex) * (unsigned int) (ROW*COLS32));
+    floatComplex*  in      = FloatComplexMatrix ( tRealIn , tImagIn , ROW*COLS32 );
+
+
+
+    cfftma ( in , ROW , COLS32 , out );
+
+
+
+
+    /* if we don't add that test assert failed if result = 0  'cause then we have  |(out - 0)|/|out| = 1*/
+		for ( i = 0 ; i < (ROW*COLS32 )  ; i++ )
+	{
+
+
+	  printf ( "\t\t %d out : %e\t %e\t * i result : %e\t %e\t * i assert : : %e\t %e\t * i  \n" ,
+                i ,
+                creals(out[i]) ,
+                cimags(out[i]),
+                tRealResult[i]  ,
+                tImagResult[i],
+                fabs(  creals(out[i]) -  tRealResult[i] ) / fabs (creals (out[i])) ,
+                fabs(  cimags(out[i]) -  tImagResult[i] ) / fabs (cimags (out[i])));
+
+
+   if (  creals(out[i])  < 1e-14 && tRealResult[i] < 1e-18 )
+        assert ( 1 ) ;
+    else
+        assert ( fabs(  creals(out[i]) -  tRealResult[i] ) / fabs (creals (out[i]))  < 3e-5 );
+
+
+    if (  cimags(out[i])  < 1e-14 && tImagResult[i] < 1e-18 )
+        assert ( 1 ) ;
+    else
+	    assert ( fabs(  cimags(out[i]) -  tImagResult[i] ) / fabs (cimags (out[i]))  < 3e-6 ) ;
+
+    }
+
+    free(out);
+    free(in);
+}
+
+static int testFft(void) {
+
+  printf("\n>>>> FFT Tests\n");
+  printf("\t>>>> Matrix  Float Realt Tests\n");
+  /*dfftmaTest();*/
+
+  printf("\n\n\n");
+
+  printf("\n\t>>>> Vector 2 Float Complex Tests\n");
+  cfftmaTest2();
+  printf("\n\t>>>> Vector 3 Float Complex Tests\n");
+  cfftmaTest3();
+  printf("\n\t>>>> Vector 4 Float Complex Tests\n");
+  cfftmaTest4();
+  printf("\n\t>>>> Vector 5 Float Complex Tests\n");
+  cfftmaTest5();
+  printf("\n\t>>>> Vector 6 Float Complex Tests\n");
+  cfftmaTest6();
+  printf("\n\t>>>> Vector 7 Float Complex Tests\n");
+  cfftmaTest7();
+  printf("\n\t>>>> Vector 8 Float Complex Tests\n");
+  cfftmaTest8();
+  printf("\n\t>>>> Vector 9 Float Complex Tests\n");
+  cfftmaTest9();
+  printf("\n\t>>>> Vector 10 Float Complex Tests\n");
+  cfftmaTest10();
+  printf("\n\t>>>> Vector 11 Float Complex Tests\n");
+  cfftmaTest11();
+  printf("\n\t>>>> Vector 12 Float Complex Tests\n");
+  cfftmaTest12();
+  printf("\n\t>>>> Vector 13 Float Complex Tests\n");
+  cfftmaTest13();
+  printf("\n\t>>>> Vector 14 Float Complex Tests\n");
+  cfftmaTest14();
+  printf("\n\t>>>> Vector 14 Float Complex Tests\n");
+  cfftmaTest15();
+  printf("\n\t>>>> Vector 16 Float Complex Tests\n");
+  cfftmaTest16();
+  printf("\n\t>>>> Vector 32 Float Complex Tests\n");
+  cfftmaTest32();
+  return 0;
+}
+
+
+
+int main(void) {
+  assert(testFft() == 0);
+  return 0;
+}
diff --git a/src/c/signalProcessing/fft/testMatFft.c b/src/c/signalProcessing/fft/testMatFft.c
new file mode 100644
index 00000000..88631622
--- /dev/null
+++ b/src/c/signalProcessing/fft/testMatFft.c
@@ -0,0 +1,297 @@
+
+/*
+ *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ *  Copyright (C) 2008-2008 - INRIA - Allan SIMON
+ *
+ *  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 <stdlib.h>
+#include <assert.h>
+#include <stdio.h>
+#include <math.h>
+#include "fft.h"
+
+#define test1 {0.2113249000000000099586,0.3303270999999999846253,0.8497451999999999783242,0.0683740000000000042180,\
+	0.7560438999999999909463,0.6653810999999999475918,0.6857309999999999794440,0.5608486000000000304411,\
+	0.0002211000000000000075,0.6283917999999999448590,0.8782164999999999555058,0.6623569000000000261963}
+
+#define test2 {0.2113249000000000099586,0.6857309999999999794440,\
+	0.3303270999999999846253,0.5608486000000000304411,\
+	0.8497451999999999783242,0.0002211000000000000075,\
+	0.0683740000000000042180,0.6283917999999999448590,\
+	0.7560438999999999909463,0.8782164999999999555058,\
+	0.6653810999999999475918,0.6623569000000000261963}
+
+#define test3 {0.2113249000000000099586,0.7560438999999999909463,0.0002211000000000000075,\
+	0.3303270999999999846253,0.6653810999999999475918,0.6283917999999999448590,\
+	0.8497451999999999783242,0.6857309999999999794440,0.8782164999999999555058,\
+	0.0683740000000000042180,0.5608486000000000304411,0.6623569000000000261963}
+	
+#define test4 {0.2113249000000000099586,0.0683740000000000042180,0.6857309999999999794440,0.6283917999999999448590,\
+	0.3303270999999999846253,0.7560438999999999909463,0.5608486000000000304411,0.8782164999999999555058,\
+	0.8497451999999999783242,0.6653810999999999475918,0.0002211000000000000075,0.6623569000000000261963}
+ 
+#define test6 {0.2113249000000000099586,0.8497451999999999783242,0.7560438999999999909463,0.6857309999999999794440,0.0002211000000000000075,0.8782164999999999555058,\
+	0.3303270999999999846253,0.0683740000000000042180,0.6653810999999999475918,0.5608486000000000304411,0.6283917999999999448590,0.6623569000000000261963}
+
+#define test9 {1,2,3,4,5,6,7,8,9}
+
+#define RRESULT1 {6.2969621000000000066166,-0.1908142591446193858662,0.0676336000000001824617,\
+-1.4461027999999997994962,-0.7577484999999999359943,0.2136987591446193046618,\
+0.4656031000000000474870,0.2136987591446193046618,-0.7577484999999999359943,\
+-1.4461027999999997994962,0.0676336000000001824617,-0.1908142591446193858662}
+
+#define IRESULT1 {0,-0.0438615735192828815059,-1.0572926567728160307524,0.3325204999999997745874,\
+0.3011445725036896448046,-1.3036713264807171519521,0,1.3036713264807171519521,\
+-0.3011445725036896448046,-0.3325204999999997745874,1.0572926567728160307524,\
+0.0438615735192828815059}
+
+#define RRESULT2 {6.2969621000000000066166,-0.5345696999999998144659,\
+0.0676336000000000714394,-0.3918127000000001247670,\
+-0.7577485000000003800835,-1.2843509999999995763176,\
+0.4656030999999999364647,1.0404605000000000103455,\
+-0.7577485000000003800835,-1.2843509999999995763176,\
+0.0676336000000000714394,-0.3918127000000001247670}
+
+#define IRESULT2 {0,0,\
+-1.05729265677281625280,0.6392575178288871784460,\
+0.3011445725036897003157,-1.043770536118125757952,\
+0,0,\
+-0.3011445725036897003157,1.043770536118125757952,\
+1.05729265677281625280,-0.6392575178288871784460}
+
+#define RRESULT3   {6.2969621000000000066166,-0.9588242499999999335358,-0.9588242499999999335358,\
+-1.4461027999999997994962,-0.3545214899631756733101,-0.1146366100368243767793,\
+0.4656031000000000474870,0.7607519500000001766438,0.7607519500000001766438,\
+-1.4461027999999997994962,-0.1146366100368243767793,-0.3545214899631756733101}
+
+#define IRESULT3 {0,0.4319893196725672623870,-0.4319893196725672623870,\
+0.3325204999999997745874,1.0479284784196345459151,-0.5945896784196345041806,\
+0,0.5437395057261036335206,-0.5437395057261036335206,\
+-0.3325204999999997745874,0.5945896784196345041806,-1.0479284784196345459151}
+
+#define RRESULT4 {6.2969621000000000066166,0.1445965000000000166835,-1.0205663000000000373291,\
+ 0.1445965000000000166835,\
+-0.7577485000000003800835,-0.6754837907274804376101,0.8107183000000001138474,\
+ -0.8923310092725194042629,\
+-0.7577485000000003800835,-0.8923310092725194042629,0.8107183000000001138474,\
+ -0.6754837907274804376101}
+ 
+#define IRESULT4 {0,-0.6791661999999999421718,0,0.6791661999999999421718,\
+0.3011445725036897003157,-1.4357905268456061520510,-0.2297677979542606663266,\
+ -0.4349033268456063971996,\
+-0.3011445725036897003157,0.4349033268456063971996,0.2297677979542606663266,\
+ 1.4357905268456061520510}
+
+#define RRESULT6 {6.2969621000000000066166,-0.5006002499999999688640,-0.4661336499999999549715,\
+ -1.113582300000000024909,-0.4661336499999999549715,-0.5006002499999999688640,\
+0.46560309999999915931,0.5234847499999999431708,-0.2239812499999997985611,\
+ -1.7786232999999995740836,-0.2239812499999997985611,0.5234847499999999431708}
+
+#define IRESULT6 {0,0.1475342691353691004785,-1.2256565689200087376776,0,1.2256565689200087376776,\
+ -0.1475342691353691004785,\
+0,1.112275483826065114457,-0.1327806603564972709464,0,0.1327806603564972709464,\
+ -1.112275483826065114457}
+
+#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 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++){
+	printf("\t\n out : %e \t result : %e \t assert: %e",out1[i], resR1[i] ,(fabs(out1[i]-resR1[i]) / fabs(out1[i])) );
+	if (out1[i]>1e-16)	assert( (fabs(out1[i]-resR1[i]) / fabs(out1[i])) < 1e-13);
+	else			assert(1);
+	}
+
+	printf(" >>> Matrice 2*6 <<< \n");
+	dfftma(in2, 2, 6, out2);
+	for (i=0;i<12;i++){
+	printf("\n\t out : %e \t result : %e \t assert: %e\n",out2[i], resR2[i] ,(fabs(out2[i]-resR2[i]) / fabs(out2[i])) );
+	if (out2[i]>1e-16)	assert( (fabs(out2[i]-resR2[i]) / fabs(out2[i])) < 1e-13);
+	else			assert(1);
+	}
+	
+
+	printf(" >>> Matrice 3*4 <<< \n");	
+	dfftma(in3, 3, 4, out3);
+	for (i=0;i<12;i++){	
+	if (out3[i]>1e-16)	assert( (fabs(out3[i]-resR3[i]) / fabs(out3[i])) < 1e-13);
+	else			assert(1);
+	}
+
+	printf(" >>> Matrice 4*3 <<< \n");	
+	dfftma(in4, 4, 3, out4);
+	for (i=0;i<12;i++){	
+	if (out4[i]>1e-16)	assert( (fabs(out4[i]-resR4[i]) / fabs(out4[i])) < 1e-13);
+	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-13);
+	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-13);
+	else			assert(1);
+	}
+	
+
+}
+
+static void zfftmaTest(void){
+	int i;
+	
+	double inR1[]=test1;
+	double inR2[]=test2;
+	double inR3[]=test3;
+	double inR4[]=test4;
+	double inR6[]=test6;
+	double inR9[]=test9;
+
+	double resR1[]=RRESULT1;
+	double resI1[]=IRESULT1;
+	double resR2[]=RRESULT2;
+	double resI2[]=IRESULT2;
+	double resR3[]=RRESULT3;
+	double resI3[]=IRESULT3;
+	double resR4[]=RRESULT4;
+	double resI4[]=IRESULT4;
+	double resR6[]=RRESULT6;
+	double resI6[]=IRESULT6;
+	double resR9[]=RRESULT9;
+	double resI9[]=IRESULT9;
+	
+	doubleComplex *in1, *in2, *in3, *in4, *in6, *in9, out1[12], out2[12], out3[12], out4[12], out6[12], out9[12];
+
+	in1=(doubleComplex*)malloc((unsigned int)12*sizeof(doubleComplex));
+	in2=(doubleComplex*)malloc((unsigned int)12*sizeof(doubleComplex));
+	in3=(doubleComplex*)malloc((unsigned int)12*sizeof(doubleComplex));
+	in4=(doubleComplex*)malloc((unsigned int)12*sizeof(doubleComplex));
+	in6=(doubleComplex*)malloc((unsigned int)12*sizeof(doubleComplex));
+	in9=(doubleComplex*)malloc((unsigned int)9*sizeof(doubleComplex));
+	
+	
+	
+	for (i=0;i<12;i++){
+		in1[i]=DoubleComplex(inR1[i],0);
+		in2[i]=DoubleComplex(inR2[i],0);
+		in3[i]=DoubleComplex(inR3[i],0);
+		in4[i]=DoubleComplex(inR4[i],0);
+		in6[i]=DoubleComplex(inR6[i],0);
+	}
+	for (i=0;i<9;i++){
+		in9[i]=DoubleComplex(inR9[i],0);
+
+	}
+	
+	/* !!!!!!!!!!!!!!!!!!!!!!!
+	   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");
+	zfftma(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-13);
+	else			assert(1);
+	if (zimags(out1[i])>1e-16)	assert( (fabs(zimags(out1[i])+resI1[i]) / fabs(zimags(out1[i]))) < 1e-13);
+	else			assert(1);
+	}
+
+	printf(" >>> Matrice 2*6 <<< \n");
+	zfftma(in2, 2, 6, out2);
+	for (i=0;i<12;i++){
+	printf("\t\n outR : %e \t result : %e \t assert: %e",zreals(out2[i]), resR2[i] ,(fabs(zreals(out2[i])-resR2[i]) / fabs(zreals(out2[i]))) );
+	printf("\t\n outI : %e \t result : %e \t assert: %e",zimags(out2[i]), resI2[i] ,(fabs(zimags(out2[i])-resI2[i]) / fabs(zimags(out2[i]))) );
+	if (zreals(out2[i])>1e-16)	assert( (fabs(zreals(out2[i])-resR2[i]) / fabs(zreals(out2[i]))) < 1e-13);
+	else			assert(1);
+	if (zimags(out2[i])>2e-16)	assert( (fabs(zimags(out2[i])+resI2[i]) / fabs(zimags(out2[i]))) < 1e-13 );
+	else			assert(1);
+	}
+	
+
+	printf(" >>> Matrice 3*4 <<< \n");	
+	zfftma(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-13);
+	else			assert(1);
+	if (zimags(out3[i])>1e-16)	assert( (fabs(zimags(out3[i])+resI3[i]) / fabs(zimags(out3[i]))) < 1e-13);
+	else			assert(1);
+	}
+
+	printf(" >>> Matrice 4*3 <<< \n");	
+	zfftma(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-13);
+	else			assert(1);
+	if (zimags(out4[i])>1e-16)	assert( (fabs(zimags(out4[i])+resI4[i]) / fabs(zimags(out4[i]))) < 1e-13);
+	else			assert(1);
+	}
+
+	printf(" >>> Matrice 6*2 <<< \n");	
+	zfftma(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-13);
+	else			assert(1);
+	if (zimags(out6[i])>1e-16)	assert( (fabs(zimags(out6[i])+resI6[i]) / fabs(zimags(out6[i]))) < 1e-13);
+	else			assert(1);
+	}
+
+	printf(" >>> Matrice 3*3 <<< \n");	
+	zfftma(in9, 3, 3, out9);
+	for (i=0;i<9;i++){
+	if (zreals(out9[i])>1e-16)	assert( (fabs(zreals(out9[i])-resR9[i]) / fabs(zreals(out9[i]))) < 1e-13);
+	else			assert(1);
+	
+	if (zimags(out9[i])>1e-16)	assert( (fabs(zimags(out9[i])-resI9[i]) / fabs(zimags(out9[i]))) < 1e-13);
+	else			assert(1);
+	}
+}
+
+
+
+static int testFft(void){
+	dfftmaTest();
+	zfftmaTest();
+	return 0;
+}
+
+
+int main(void) {
+  printf(">>> Fft Matrices Double Tests <<<\n");
+  assert(testFft() == 0);
+  return 0;
+}
+
diff --git a/src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj b/src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj
new file mode 100644
index 00000000..67ae054d
--- /dev/null
+++ b/src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{DBD206E6-F7F2-4C00-83F0-2AAAB90A6C72}</ProjectGuid>
+    <RootNamespace>testDoubleFft</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\testDoubleFft.c">
+      <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+      <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+      <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+      <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\type\type.vcxproj">
+      <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\signalProcessing.vcxproj">
+      <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj.filters b/src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj.filters
new file mode 100644
index 00000000..8824fe45
--- /dev/null
+++ b/src/c/signalProcessing/fft/test_DoubleFft/testDoubleFft.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\testDoubleFft.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj b/src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj
new file mode 100644
index 00000000..ee576dbc
--- /dev/null
+++ b/src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{EDE2F70A-E2A0-45B6-A9C7-E3E62409AF95}</ProjectGuid>
+    <RootNamespace>testFloatFft</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\testFloatFft.c">
+      <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+      <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+      <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+      <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\type\type.vcxproj">
+      <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\signalProcessing.vcxproj">
+      <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj.filters b/src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj.filters
new file mode 100644
index 00000000..0d9cec95
--- /dev/null
+++ b/src/c/signalProcessing/fft/test_FloatFft/testFloatFft.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\testFloatFft.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj b/src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj
new file mode 100644
index 00000000..3f16af38
--- /dev/null
+++ b/src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{A7A46527-B5F9-4B92-9C46-2416E2432314}</ProjectGuid>
+    <RootNamespace>testMatFft</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>../../../includes;../../../type;../../includes;../../../operations/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(SolutionDir)bin\$(ProjectName).exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\testMatFft.c">
+      <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsCpp</CompileAs>
+      <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CompileAsCpp</CompileAs>
+      <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsCpp</CompileAs>
+      <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsCpp</CompileAs>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\type\type.vcxproj">
+      <Project>{9b1bd750-1fef-4d6b-9422-782d16181cee}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+    <ProjectReference Include="..\..\signalProcessing.vcxproj">
+      <Project>{f7e8df1b-cc81-4b2a-b5f0-1a247be59cc4}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj.filters b/src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj.filters
new file mode 100644
index 00000000..503e5a96
--- /dev/null
+++ b/src/c/signalProcessing/fft/test_MatFft/testMatFft.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\testMatFft.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/src/c/signalProcessing/fft/zfftma.c b/src/c/signalProcessing/fft/zfftma.c
new file mode 100644
index 00000000..48616eaf
--- /dev/null
+++ b/src/c/signalProcessing/fft/zfftma.c
@@ -0,0 +1,156 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan SIMON
+ *
+ * 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
+ *
+ */
+#define FFT842 1
+#define DFFT2  0
+
+#include <stdlib.h>
+#include <math.h>
+#include "fft.h"
+#include "lapack.h"
+#include "fft_internal.h"
+
+void zfftma ( doubleComplex* in , int rows, int cols, doubleComplex* out)
+{
+
+  int choosenAlgo = DFFT2 ;
+
+  int size = rows*cols ;
+  int sizeTemp = 0;
+
+  int rowsTemp = 0 ;
+  int colsTemp = 0 ;
+
+  int ierr = 0 ;
+  int isn = -1;
+  int i = 0;
+
+  int increment=1;
+
+
+  double* realIn = (double*) malloc ( sizeof (double) * (unsigned int) size );
+  double* imagIn = (double*) malloc ( sizeof (double) * (unsigned int) size );
+  doubleComplex* inCopy = (doubleComplex*) malloc ( sizeof (doubleComplex) * (unsigned int) size);
+
+  doubleComplex* inTemp = (doubleComplex*) malloc ( sizeof (doubleComplex) * (unsigned int) size );
+
+  zimaga ( in , size , imagIn) ;
+  zreala ( in , size , realIn) ;
+  for(i=0;i<size;i++) inCopy[i]=in[i];
+
+  if ( rows  ==  1 || cols == 1 )
+    {
+      sizeTemp = (int) pow(2.0, (int) (log(size + 0.5) / log(2.0)));
+      if ( size == sizeTemp )
+	{
+	  if ( size <= pow(2.0, 15.0))
+            {
+	      fft842 ( inCopy , size  , 0 );
+	      choosenAlgo = FFT842 ;
+            }
+	  else
+            {
+	      dfft2 ( realIn , imagIn , 1 , size , 1 , isn , ierr );
+            }
+	}
+      else
+	{
+	  dfft2 ( realIn , imagIn , 1 , size , 1 , isn , ierr );
+	}
+    }
+  else
+    {
+      rowsTemp = (int) pow(2.0, (int)(log(rows + 0.5) / log(2.0))) ;
+      colsTemp = (int) pow(2.0 ,(int)(log(cols + 0.5) / log(2.0))) ;
+
+      if ( rows == rowsTemp)
+	{
+	  if ( rows <=  pow(2.0, 15.0))
+	    {
+	      for ( i = 0 ; i < cols ; i++ )
+		{
+                  fft842 ( &inCopy[ rows*i] , rows , 0);
+                  /* stock new inCopy in realIn and imagIn
+                     if the second call don't call fft842
+                     ex : matrix 2*3 */
+                  zimaga ( inCopy , size , imagIn) ;
+		  zreala ( inCopy , size , realIn) ;
+		}
+	    }
+	  else
+	    {
+	      dfft2 ( realIn, imagIn ,cols , rows , 1 , isn , ierr);
+	      /* stock new realIn and imagIn in inCopy
+                 if the second call call fft842
+                     ex : matrix 3*2 */
+                inCopy=DoubleComplexMatrix(realIn,imagIn,size);
+   	    }
+	}
+      else
+	{
+	  dfft2 ( realIn, imagIn ,cols , rows , 1 , isn , ierr);
+	  /* stock new realIn and imagIn in inCopy
+             if the second call call fft842
+             ex : matrix 3*2 */
+          inCopy=DoubleComplexMatrix(realIn,imagIn,size);
+	}
+      /*second call*/
+      if ( colsTemp == cols )
+        {
+	  if ( cols <= pow(2.0, 15.0) )
+            {
+              /*compute the fft on each line of the matrix */
+              for (i = 0 ; i < rows ; i++ )
+                {
+                  C2F(zcopy) ( &cols, inCopy + i, &rows, inTemp , &increment );
+
+                  fft842( inTemp , cols , 0);
+                  choosenAlgo = FFT842 ;
+                  C2F(zcopy) ( &cols, inTemp , &increment, inCopy + i, &rows );
+
+		}
+            }
+	  else
+            {
+              dfft2 ( realIn, imagIn, 1, cols, rows, isn, ierr);
+            }
+        }
+      else
+        {
+          dfft2 ( realIn, imagIn, 1, cols, rows, isn, ierr);
+        }
+
+    }
+
+
+
+  if ( choosenAlgo == FFT842 )
+    {
+      for ( i = 0 ; i < size ; i++)
+        {
+	  out[i] = DoubleComplex ( zreals(inCopy[i]) , zimags(inCopy[i]) );
+        }
+    }
+  else
+    {
+      for ( i = 0 ; i < size ; i++)
+        {
+	  out[i] = DoubleComplex ( realIn[i] , imagIn[i] );
+        }
+
+    }
+ 
+  free(realIn);
+  free(imagIn);
+  free(inCopy);
+  free(inTemp);
+
+}
-- 
cgit