Update fftw module : remove pushfftw_plan/freefftw_plan, fftw_inplace (always inplace...
Alan Layec [Wed, 18 Apr 2007 14:41:54 +0000 (14:41 +0000)]
33 files changed:
scilab/modules/fftw/Makefile.am
scilab/modules/fftw/Makefile.in
scilab/modules/fftw/fftw.vcproj
scilab/modules/fftw/help/en_US/fftw.xml
scilab/modules/fftw/help/en_US/fftw_flags.xml
scilab/modules/fftw/help/en_US/fftw_forget_wisdom.xml [new file with mode: 0644]
scilab/modules/fftw/help/en_US/fftw_inplace.xml [deleted file]
scilab/modules/fftw/help/en_US/fftw_norm.xml [deleted file]
scilab/modules/fftw/help/en_US/freefftw_plan.xml [deleted file]
scilab/modules/fftw/help/en_US/get_fftw_wisdom.xml [new file with mode: 0644]
scilab/modules/fftw/help/en_US/pushfftw_plan.xml [deleted file]
scilab/modules/fftw/help/en_US/set_fftw_wisdom.xml [new file with mode: 0644]
scilab/modules/fftw/includes/gw_fftw.h
scilab/modules/fftw/includes/sci_fftw_forget_wisdom.h [moved from scilab/modules/fftw/includes/sci_freefftw_plan.h with 71% similarity]
scilab/modules/fftw/includes/sci_get_fftw_wisdom.h [moved from scilab/modules/fftw/includes/sci_fftw_inplace.h with 72% similarity]
scilab/modules/fftw/includes/sci_pushfftw_plan.h [deleted file]
scilab/modules/fftw/includes/sci_set_fftw_wisdom.h [moved from scilab/modules/fftw/includes/sci_fftw_norm.h with 72% similarity]
scilab/modules/fftw/sci_gateway/c/gw_fftw.c
scilab/modules/fftw/sci_gateway/c/sci_fftw.c
scilab/modules/fftw/sci_gateway/c/sci_fftw_flags.c
scilab/modules/fftw/sci_gateway/c/sci_fftw_forget_wisdom.c [new file with mode: 0644]
scilab/modules/fftw/sci_gateway/c/sci_fftw_inplace.c [deleted file]
scilab/modules/fftw/sci_gateway/c/sci_fftw_norm.c [deleted file]
scilab/modules/fftw/sci_gateway/c/sci_freefftw_plan.c [deleted file]
scilab/modules/fftw/sci_gateway/c/sci_get_fftw_wisdom.c [new file with mode: 0644]
scilab/modules/fftw/sci_gateway/c/sci_pushfftw_plan.c [deleted file]
scilab/modules/fftw/sci_gateway/c/sci_set_fftw_wisdom.c [new file with mode: 0644]
scilab/modules/fftw/sci_gateway/fftw_gateway.xml
scilab/modules/fftw/src/c/callfftw.h
scilab/modules/fftw/src/c/callfftw_Linux.c
scilab/modules/fftw/src/c/callfftw_windows.c
scilab/modules/fftw/src/c/fftw_utilities.c
scilab/modules/fftw/src/c/fftw_utilities.h

index 3c8b737..e03ffa1 100644 (file)
@@ -18,13 +18,12 @@ src/c/fftw_utilities.c
 GATEWAY_C_SOURCES = sci_gateway/c/gw_fftw.c \
        sci_gateway/c/sci_fftwlibraryisloaded.c \
        sci_gateway/c/sci_disposefftwlibrary.c \
-       sci_gateway/c/sci_fftw_norm.c \
        sci_gateway/c/sci_fftw.c \
-       sci_gateway/c/sci_freefftw_plan.c \
        sci_gateway/c/sci_fftw_flags.c \
        sci_gateway/c/sci_loadfftwlibrary.c \
-       sci_gateway/c/sci_fftw_inplace.c \
-       sci_gateway/c/sci_pushfftw_plan.c
+       sci_gateway/c/sci_get_fftw_wisdom.c \
+       sci_gateway/c/sci_set_fftw_wisdom.c \
+       sci_gateway/c/sci_fftw_forget_wisdom.c
 
 
 #### fftw : Conf files ####
@@ -49,14 +48,13 @@ libscifftw_la_LDFLAGS = $(FFTW3_LIB)
 libscifftw_la_includedir=$(sciincludedir)/fftw
 libscifftw_la_include_HEADERS = includes/sci_loadfftwlibrary.h \
 includes/sci_fftwlibraryisloaded.h \
-includes/sci_pushfftw_plan.h \
-includes/sci_fftw_inplace.h \
-includes/sci_fftw_norm.h \
 includes/sci_disposefftwlibrary.h \
 includes/sci_fftw_flags.h \
-includes/sci_freefftw_plan.h \
 includes/gw_fftw.h \
-includes/sci_fftw.h
+includes/sci_fftw.h \
+includes/sci_get_fftw_wisdom.h \
+includes/sci_set_fftw_wisdom.h \
+includes/sci_fftw_forget_wisdom.h
 
 include $(top_srcdir)/Makefile.incl.am
 
index 9ecea46..fca7888 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.10 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
+# 2003, 2004, 2005  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.
 
 
 
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -86,44 +90,38 @@ am__libscifftw_la_SOURCES_DIST = src/c/callfftw_Linux.c \
        sci_gateway/c/gw_fftw.c \
        sci_gateway/c/sci_fftwlibraryisloaded.c \
        sci_gateway/c/sci_disposefftwlibrary.c \
-       sci_gateway/c/sci_fftw_norm.c sci_gateway/c/sci_fftw.c \
-       sci_gateway/c/sci_freefftw_plan.c \
-       sci_gateway/c/sci_fftw_flags.c \
+       sci_gateway/c/sci_fftw.c sci_gateway/c/sci_fftw_flags.c \
        sci_gateway/c/sci_loadfftwlibrary.c \
-       sci_gateway/c/sci_fftw_inplace.c \
-       sci_gateway/c/sci_pushfftw_plan.c
+       sci_gateway/c/sci_get_fftw_wisdom.c \
+       sci_gateway/c/sci_set_fftw_wisdom.c \
+       sci_gateway/c/sci_fftw_forget_wisdom.c
 @FFTW_TRUE@am__objects_1 = libscifftw_la-callfftw_Linux.lo \
 @FFTW_TRUE@    libscifftw_la-fftwlibname.lo \
 @FFTW_TRUE@    libscifftw_la-fftw_utilities.lo
 @FFTW_TRUE@am__objects_2 = libscifftw_la-gw_fftw.lo \
 @FFTW_TRUE@    libscifftw_la-sci_fftwlibraryisloaded.lo \
 @FFTW_TRUE@    libscifftw_la-sci_disposefftwlibrary.lo \
-@FFTW_TRUE@    libscifftw_la-sci_fftw_norm.lo \
 @FFTW_TRUE@    libscifftw_la-sci_fftw.lo \
-@FFTW_TRUE@    libscifftw_la-sci_freefftw_plan.lo \
 @FFTW_TRUE@    libscifftw_la-sci_fftw_flags.lo \
 @FFTW_TRUE@    libscifftw_la-sci_loadfftwlibrary.lo \
-@FFTW_TRUE@    libscifftw_la-sci_fftw_inplace.lo \
-@FFTW_TRUE@    libscifftw_la-sci_pushfftw_plan.lo
+@FFTW_TRUE@    libscifftw_la-sci_get_fftw_wisdom.lo \
+@FFTW_TRUE@    libscifftw_la-sci_set_fftw_wisdom.lo \
+@FFTW_TRUE@    libscifftw_la-sci_fftw_forget_wisdom.lo
 @FFTW_TRUE@am_libscifftw_la_OBJECTS = $(am__objects_1) \
 @FFTW_TRUE@    $(am__objects_2)
 libscifftw_la_OBJECTS = $(am_libscifftw_la_OBJECTS)
-libscifftw_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
-       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libscifftw_la_CFLAGS) \
-       $(CFLAGS) $(libscifftw_la_LDFLAGS) $(LDFLAGS) -o $@
 @FFTW_TRUE@am_libscifftw_la_rpath = -rpath $(pkglibdir)
-DEFAULT_INCLUDES = -I. -I$(top_builddir)/modules/core/includes@am__isrc@
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/modules/core/includes
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
 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)
+LTCOMPILE = $(LIBTOOL) --tag=CC --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 $@
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
 SOURCES = $(libscifftw_la_SOURCES)
 DIST_SOURCES = $(am__libscifftw_la_SOURCES_DIST)
 libscifftw_la_etcDATA_INSTALL = $(INSTALL_DATA)
@@ -134,16 +132,18 @@ DATA = $(libscifftw_la_etc_DATA) $(libscifftw_la_root_DATA) \
 am__libscifftw_la_include_HEADERS_DIST =  \
        includes/sci_loadfftwlibrary.h \
        includes/sci_fftwlibraryisloaded.h \
-       includes/sci_pushfftw_plan.h includes/sci_fftw_inplace.h \
-       includes/sci_fftw_norm.h includes/sci_disposefftwlibrary.h \
-       includes/sci_fftw_flags.h includes/sci_freefftw_plan.h \
-       includes/gw_fftw.h includes/sci_fftw.h
+       includes/sci_disposefftwlibrary.h includes/sci_fftw_flags.h \
+       includes/gw_fftw.h includes/sci_fftw.h \
+       includes/sci_get_fftw_wisdom.h includes/sci_set_fftw_wisdom.h \
+       includes/sci_fftw_forget_wisdom.h
 libscifftw_la_includeHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(libscifftw_la_include_HEADERS)
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
@@ -171,21 +171,36 @@ EXEEXT = @EXEEXT@
 F77 = @F77@
 FFLAGS = @FFLAGS@
 FFTW3_LIB = @FFTW3_LIB@
+FFTW_FALSE = @FFTW_FALSE@
+FFTW_TRUE = @FFTW_TRUE@
 FGREP = @FGREP@
 GREP = @GREP@
-INSTALL = @INSTALL@
+GUI_WIN32_FALSE = @GUI_WIN32_FALSE@
+GUI_WIN32_TRUE = @GUI_WIN32_TRUE@
+GUI_X11_FALSE = @GUI_X11_FALSE@
+GUI_X11_TRUE = @GUI_X11_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
+INSTALL_HELP_XML_FALSE = @INSTALL_HELP_XML_FALSE@
+INSTALL_HELP_XML_TRUE = @INSTALL_HELP_XML_TRUE@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+IS_HPUX_FALSE = @IS_HPUX_FALSE@
+IS_HPUX_TRUE = @IS_HPUX_TRUE@
+IS_MIPS_SGI_IRIX_FALSE = @IS_MIPS_SGI_IRIX_FALSE@
+IS_MIPS_SGI_IRIX_TRUE = @IS_MIPS_SGI_IRIX_TRUE@
+IS_SPARC_FALSE = @IS_SPARC_FALSE@
+IS_SPARC_TRUE = @IS_SPARC_TRUE@
 JAR = @JAR@
 JAVA = @JAVA@
 JAVAC = @JAVAC@
 JAVAH = @JAVAH@
+JAVA_FALSE = @JAVA_FALSE@
 JAVA_G = @JAVA_G@
 JAVA_HOME = @JAVA_HOME@
 JAVA_JNI_INCLUDE = @JAVA_JNI_INCLUDE@
 JAVA_JNI_LIBS = @JAVA_JNI_LIBS@
+JAVA_TRUE = @JAVA_TRUE@
 JDB = @JDB@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
@@ -195,11 +210,14 @@ LIBTOOL = @LIBTOOL@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
 MANGENERATOR = @MANGENERATOR@
-MKDIR_P = @MKDIR_P@
 MPICC = @MPICC@
 MPILIBS = @MPILIBS@
+MPI_FALSE = @MPI_FALSE@
+MPI_TRUE = @MPI_TRUE@
 NM = @NM@
 OBJEXT = @OBJEXT@
 OCAMLC = @OCAMLC@
@@ -218,16 +236,26 @@ PCRE_LIBS = @PCRE_LIBS@
 POW_LIB = @POW_LIB@
 PVMARCH = @PVMARCH@
 PVMGETARCH = @PVMGETARCH@
+PVM_FALSE = @PVM_FALSE@
 PVM_INCLUDE = @PVM_INCLUDE@
 PVM_LIB = @PVM_LIB@
+PVM_TRUE = @PVM_TRUE@
 RANLIB = @RANLIB@
+SCICOS_FALSE = @SCICOS_FALSE@
+SCICOS_TRUE = @SCICOS_TRUE@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+STRINGV2_FALSE = @STRINGV2_FALSE@
+STRINGV2_TRUE = @STRINGV2_TRUE@
 STRIP = @STRIP@
 TCLTK_LIBS = @TCLTK_LIBS@
 TCL_INC_PATH = @TCL_INC_PATH@
 TERMCAP_LIB = @TERMCAP_LIB@
+TERM_VTE_FALSE = @TERM_VTE_FALSE@
+TERM_VTE_TRUE = @TERM_VTE_TRUE@
+TERM_ZTERM_FALSE = @TERM_ZTERM_FALSE@
+TERM_ZTERM_TRUE = @TERM_ZTERM_TRUE@
 TK_INC_PATH = @TK_INC_PATH@
 VERSION = @VERSION@
 WITH = @WITH@
@@ -240,14 +268,14 @@ X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
-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__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
@@ -259,7 +287,6 @@ build_alias = @build_alias@
 build_cpu = @build_cpu@
 build_os = @build_os@
 build_vendor = @build_vendor@
-builddir = @builddir@
 
 # Where all the Scilab stuff is installed (macros, help, ...)
 @FFTW_TRUE@datadir = ${datarootdir}/scilab/modules
@@ -291,12 +318,9 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 tcldir = @tcldir@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
 
 #### Target ######
 @FFTW_TRUE@target = $(datadir)/modules/fftw
@@ -308,13 +332,12 @@ top_srcdir = @top_srcdir@
 @FFTW_TRUE@GATEWAY_C_SOURCES = sci_gateway/c/gw_fftw.c \
 @FFTW_TRUE@    sci_gateway/c/sci_fftwlibraryisloaded.c \
 @FFTW_TRUE@    sci_gateway/c/sci_disposefftwlibrary.c \
-@FFTW_TRUE@    sci_gateway/c/sci_fftw_norm.c \
 @FFTW_TRUE@    sci_gateway/c/sci_fftw.c \
-@FFTW_TRUE@    sci_gateway/c/sci_freefftw_plan.c \
 @FFTW_TRUE@    sci_gateway/c/sci_fftw_flags.c \
 @FFTW_TRUE@    sci_gateway/c/sci_loadfftwlibrary.c \
-@FFTW_TRUE@    sci_gateway/c/sci_fftw_inplace.c \
-@FFTW_TRUE@    sci_gateway/c/sci_pushfftw_plan.c
+@FFTW_TRUE@    sci_gateway/c/sci_get_fftw_wisdom.c \
+@FFTW_TRUE@    sci_gateway/c/sci_set_fftw_wisdom.c \
+@FFTW_TRUE@    sci_gateway/c/sci_fftw_forget_wisdom.c
 
 
 #### fftw : Conf files ####
@@ -336,14 +359,13 @@ top_srcdir = @top_srcdir@
 @FFTW_TRUE@libscifftw_la_includedir = $(sciincludedir)/fftw
 @FFTW_TRUE@libscifftw_la_include_HEADERS = includes/sci_loadfftwlibrary.h \
 @FFTW_TRUE@includes/sci_fftwlibraryisloaded.h \
-@FFTW_TRUE@includes/sci_pushfftw_plan.h \
-@FFTW_TRUE@includes/sci_fftw_inplace.h \
-@FFTW_TRUE@includes/sci_fftw_norm.h \
 @FFTW_TRUE@includes/sci_disposefftwlibrary.h \
 @FFTW_TRUE@includes/sci_fftw_flags.h \
-@FFTW_TRUE@includes/sci_freefftw_plan.h \
 @FFTW_TRUE@includes/gw_fftw.h \
-@FFTW_TRUE@includes/sci_fftw.h
+@FFTW_TRUE@includes/sci_fftw.h \
+@FFTW_TRUE@includes/sci_get_fftw_wisdom.h \
+@FFTW_TRUE@includes/sci_set_fftw_wisdom.h \
+@FFTW_TRUE@includes/sci_fftw_forget_wisdom.h
 
 
 # Where headers (*.h) are installed (usually /usr/include/scilab/)
@@ -437,7 +459,7 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
        @$(NORMAL_INSTALL)
-       test -z "$(pkglibdir)" || $(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
+       test -z "$(pkglibdir)" || $(mkdir_p) "$(DESTDIR)$(pkglibdir)"
        @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
          if test -f $$p; then \
            f=$(am__strip_dir) \
@@ -448,7 +470,7 @@ install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
 
 uninstall-pkglibLTLIBRARIES:
        @$(NORMAL_UNINSTALL)
-       @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
+       @set -x; list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \
          p=$(am__strip_dir) \
          echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$p'"; \
          $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$p"; \
@@ -463,7 +485,7 @@ clean-pkglibLTLIBRARIES:
          rm -f "$${dir}/so_locations"; \
        done
 libscifftw.la: $(libscifftw_la_OBJECTS) $(libscifftw_la_DEPENDENCIES) 
-       $(libscifftw_la_LINK) $(am_libscifftw_la_rpath) $(libscifftw_la_OBJECTS) $(libscifftw_la_LIBADD) $(LIBS)
+       $(LINK) $(am_libscifftw_la_rpath) $(libscifftw_la_LDFLAGS) $(libscifftw_la_OBJECTS) $(libscifftw_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
@@ -478,133 +500,129 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscifftw_la-sci_disposefftwlibrary.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscifftw_la-sci_fftw.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscifftw_la-sci_fftw_flags.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscifftw_la-sci_fftw_inplace.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscifftw_la-sci_fftw_norm.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscifftw_la-sci_fftw_forget_wisdom.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscifftw_la-sci_fftwlibraryisloaded.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscifftw_la-sci_freefftw_plan.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscifftw_la-sci_get_fftw_wisdom.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscifftw_la-sci_loadfftwlibrary.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscifftw_la-sci_pushfftw_plan.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libscifftw_la-sci_set_fftw_wisdom.Plo@am__quote@
 
 .c.o:
-@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @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@   mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @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@   mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_TRUE@   if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @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 $@ $<
 
 libscifftw_la-callfftw_Linux.lo: src/c/callfftw_Linux.c
-@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-callfftw_Linux.lo -MD -MP -MF $(DEPDIR)/libscifftw_la-callfftw_Linux.Tpo -c -o libscifftw_la-callfftw_Linux.lo `test -f 'src/c/callfftw_Linux.c' || echo '$(srcdir)/'`src/c/callfftw_Linux.c
-@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libscifftw_la-callfftw_Linux.Tpo $(DEPDIR)/libscifftw_la-callfftw_Linux.Plo
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-callfftw_Linux.lo -MD -MP -MF "$(DEPDIR)/libscifftw_la-callfftw_Linux.Tpo" -c -o libscifftw_la-callfftw_Linux.lo `test -f 'src/c/callfftw_Linux.c' || echo '$(srcdir)/'`src/c/callfftw_Linux.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/libscifftw_la-callfftw_Linux.Tpo" "$(DEPDIR)/libscifftw_la-callfftw_Linux.Plo"; else rm -f "$(DEPDIR)/libscifftw_la-callfftw_Linux.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/c/callfftw_Linux.c' object='libscifftw_la-callfftw_Linux.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) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-callfftw_Linux.lo `test -f 'src/c/callfftw_Linux.c' || echo '$(srcdir)/'`src/c/callfftw_Linux.c
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-callfftw_Linux.lo `test -f 'src/c/callfftw_Linux.c' || echo '$(srcdir)/'`src/c/callfftw_Linux.c
 
 libscifftw_la-fftwlibname.lo: src/c/fftwlibname.c
-@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-fftwlibname.lo -MD -MP -MF $(DEPDIR)/libscifftw_la-fftwlibname.Tpo -c -o libscifftw_la-fftwlibname.lo `test -f 'src/c/fftwlibname.c' || echo '$(srcdir)/'`src/c/fftwlibname.c
-@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libscifftw_la-fftwlibname.Tpo $(DEPDIR)/libscifftw_la-fftwlibname.Plo
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-fftwlibname.lo -MD -MP -MF "$(DEPDIR)/libscifftw_la-fftwlibname.Tpo" -c -o libscifftw_la-fftwlibname.lo `test -f 'src/c/fftwlibname.c' || echo '$(srcdir)/'`src/c/fftwlibname.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/libscifftw_la-fftwlibname.Tpo" "$(DEPDIR)/libscifftw_la-fftwlibname.Plo"; else rm -f "$(DEPDIR)/libscifftw_la-fftwlibname.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/c/fftwlibname.c' object='libscifftw_la-fftwlibname.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) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-fftwlibname.lo `test -f 'src/c/fftwlibname.c' || echo '$(srcdir)/'`src/c/fftwlibname.c
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-fftwlibname.lo `test -f 'src/c/fftwlibname.c' || echo '$(srcdir)/'`src/c/fftwlibname.c
 
 libscifftw_la-fftw_utilities.lo: src/c/fftw_utilities.c
-@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-fftw_utilities.lo -MD -MP -MF $(DEPDIR)/libscifftw_la-fftw_utilities.Tpo -c -o libscifftw_la-fftw_utilities.lo `test -f 'src/c/fftw_utilities.c' || echo '$(srcdir)/'`src/c/fftw_utilities.c
-@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libscifftw_la-fftw_utilities.Tpo $(DEPDIR)/libscifftw_la-fftw_utilities.Plo
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-fftw_utilities.lo -MD -MP -MF "$(DEPDIR)/libscifftw_la-fftw_utilities.Tpo" -c -o libscifftw_la-fftw_utilities.lo `test -f 'src/c/fftw_utilities.c' || echo '$(srcdir)/'`src/c/fftw_utilities.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/libscifftw_la-fftw_utilities.Tpo" "$(DEPDIR)/libscifftw_la-fftw_utilities.Plo"; else rm -f "$(DEPDIR)/libscifftw_la-fftw_utilities.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='src/c/fftw_utilities.c' object='libscifftw_la-fftw_utilities.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) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-fftw_utilities.lo `test -f 'src/c/fftw_utilities.c' || echo '$(srcdir)/'`src/c/fftw_utilities.c
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-fftw_utilities.lo `test -f 'src/c/fftw_utilities.c' || echo '$(srcdir)/'`src/c/fftw_utilities.c
 
 libscifftw_la-gw_fftw.lo: sci_gateway/c/gw_fftw.c
-@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-gw_fftw.lo -MD -MP -MF $(DEPDIR)/libscifftw_la-gw_fftw.Tpo -c -o libscifftw_la-gw_fftw.lo `test -f 'sci_gateway/c/gw_fftw.c' || echo '$(srcdir)/'`sci_gateway/c/gw_fftw.c
-@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libscifftw_la-gw_fftw.Tpo $(DEPDIR)/libscifftw_la-gw_fftw.Plo
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-gw_fftw.lo -MD -MP -MF "$(DEPDIR)/libscifftw_la-gw_fftw.Tpo" -c -o libscifftw_la-gw_fftw.lo `test -f 'sci_gateway/c/gw_fftw.c' || echo '$(srcdir)/'`sci_gateway/c/gw_fftw.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/libscifftw_la-gw_fftw.Tpo" "$(DEPDIR)/libscifftw_la-gw_fftw.Plo"; else rm -f "$(DEPDIR)/libscifftw_la-gw_fftw.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='sci_gateway/c/gw_fftw.c' object='libscifftw_la-gw_fftw.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) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-gw_fftw.lo `test -f 'sci_gateway/c/gw_fftw.c' || echo '$(srcdir)/'`sci_gateway/c/gw_fftw.c
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-gw_fftw.lo `test -f 'sci_gateway/c/gw_fftw.c' || echo '$(srcdir)/'`sci_gateway/c/gw_fftw.c
 
 libscifftw_la-sci_fftwlibraryisloaded.lo: sci_gateway/c/sci_fftwlibraryisloaded.c
-@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-sci_fftwlibraryisloaded.lo -MD -MP -MF $(DEPDIR)/libscifftw_la-sci_fftwlibraryisloaded.Tpo -c -o libscifftw_la-sci_fftwlibraryisloaded.lo `test -f 'sci_gateway/c/sci_fftwlibraryisloaded.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftwlibraryisloaded.c
-@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libscifftw_la-sci_fftwlibraryisloaded.Tpo $(DEPDIR)/libscifftw_la-sci_fftwlibraryisloaded.Plo
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-sci_fftwlibraryisloaded.lo -MD -MP -MF "$(DEPDIR)/libscifftw_la-sci_fftwlibraryisloaded.Tpo" -c -o libscifftw_la-sci_fftwlibraryisloaded.lo `test -f 'sci_gateway/c/sci_fftwlibraryisloaded.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftwlibraryisloaded.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/libscifftw_la-sci_fftwlibraryisloaded.Tpo" "$(DEPDIR)/libscifftw_la-sci_fftwlibraryisloaded.Plo"; else rm -f "$(DEPDIR)/libscifftw_la-sci_fftwlibraryisloaded.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='sci_gateway/c/sci_fftwlibraryisloaded.c' object='libscifftw_la-sci_fftwlibraryisloaded.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) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-sci_fftwlibraryisloaded.lo `test -f 'sci_gateway/c/sci_fftwlibraryisloaded.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftwlibraryisloaded.c
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-sci_fftwlibraryisloaded.lo `test -f 'sci_gateway/c/sci_fftwlibraryisloaded.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftwlibraryisloaded.c
 
 libscifftw_la-sci_disposefftwlibrary.lo: sci_gateway/c/sci_disposefftwlibrary.c
-@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-sci_disposefftwlibrary.lo -MD -MP -MF $(DEPDIR)/libscifftw_la-sci_disposefftwlibrary.Tpo -c -o libscifftw_la-sci_disposefftwlibrary.lo `test -f 'sci_gateway/c/sci_disposefftwlibrary.c' || echo '$(srcdir)/'`sci_gateway/c/sci_disposefftwlibrary.c
-@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libscifftw_la-sci_disposefftwlibrary.Tpo $(DEPDIR)/libscifftw_la-sci_disposefftwlibrary.Plo
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-sci_disposefftwlibrary.lo -MD -MP -MF "$(DEPDIR)/libscifftw_la-sci_disposefftwlibrary.Tpo" -c -o libscifftw_la-sci_disposefftwlibrary.lo `test -f 'sci_gateway/c/sci_disposefftwlibrary.c' || echo '$(srcdir)/'`sci_gateway/c/sci_disposefftwlibrary.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/libscifftw_la-sci_disposefftwlibrary.Tpo" "$(DEPDIR)/libscifftw_la-sci_disposefftwlibrary.Plo"; else rm -f "$(DEPDIR)/libscifftw_la-sci_disposefftwlibrary.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='sci_gateway/c/sci_disposefftwlibrary.c' object='libscifftw_la-sci_disposefftwlibrary.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) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-sci_disposefftwlibrary.lo `test -f 'sci_gateway/c/sci_disposefftwlibrary.c' || echo '$(srcdir)/'`sci_gateway/c/sci_disposefftwlibrary.c
-
-libscifftw_la-sci_fftw_norm.lo: sci_gateway/c/sci_fftw_norm.c
-@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-sci_fftw_norm.lo -MD -MP -MF $(DEPDIR)/libscifftw_la-sci_fftw_norm.Tpo -c -o libscifftw_la-sci_fftw_norm.lo `test -f 'sci_gateway/c/sci_fftw_norm.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw_norm.c
-@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libscifftw_la-sci_fftw_norm.Tpo $(DEPDIR)/libscifftw_la-sci_fftw_norm.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='sci_gateway/c/sci_fftw_norm.c' object='libscifftw_la-sci_fftw_norm.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) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-sci_fftw_norm.lo `test -f 'sci_gateway/c/sci_fftw_norm.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw_norm.c
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-sci_disposefftwlibrary.lo `test -f 'sci_gateway/c/sci_disposefftwlibrary.c' || echo '$(srcdir)/'`sci_gateway/c/sci_disposefftwlibrary.c
 
 libscifftw_la-sci_fftw.lo: sci_gateway/c/sci_fftw.c
-@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-sci_fftw.lo -MD -MP -MF $(DEPDIR)/libscifftw_la-sci_fftw.Tpo -c -o libscifftw_la-sci_fftw.lo `test -f 'sci_gateway/c/sci_fftw.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw.c
-@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libscifftw_la-sci_fftw.Tpo $(DEPDIR)/libscifftw_la-sci_fftw.Plo
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-sci_fftw.lo -MD -MP -MF "$(DEPDIR)/libscifftw_la-sci_fftw.Tpo" -c -o libscifftw_la-sci_fftw.lo `test -f 'sci_gateway/c/sci_fftw.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/libscifftw_la-sci_fftw.Tpo" "$(DEPDIR)/libscifftw_la-sci_fftw.Plo"; else rm -f "$(DEPDIR)/libscifftw_la-sci_fftw.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='sci_gateway/c/sci_fftw.c' object='libscifftw_la-sci_fftw.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) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-sci_fftw.lo `test -f 'sci_gateway/c/sci_fftw.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw.c
-
-libscifftw_la-sci_freefftw_plan.lo: sci_gateway/c/sci_freefftw_plan.c
-@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-sci_freefftw_plan.lo -MD -MP -MF $(DEPDIR)/libscifftw_la-sci_freefftw_plan.Tpo -c -o libscifftw_la-sci_freefftw_plan.lo `test -f 'sci_gateway/c/sci_freefftw_plan.c' || echo '$(srcdir)/'`sci_gateway/c/sci_freefftw_plan.c
-@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libscifftw_la-sci_freefftw_plan.Tpo $(DEPDIR)/libscifftw_la-sci_freefftw_plan.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='sci_gateway/c/sci_freefftw_plan.c' object='libscifftw_la-sci_freefftw_plan.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) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-sci_freefftw_plan.lo `test -f 'sci_gateway/c/sci_freefftw_plan.c' || echo '$(srcdir)/'`sci_gateway/c/sci_freefftw_plan.c
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-sci_fftw.lo `test -f 'sci_gateway/c/sci_fftw.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw.c
 
 libscifftw_la-sci_fftw_flags.lo: sci_gateway/c/sci_fftw_flags.c
-@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-sci_fftw_flags.lo -MD -MP -MF $(DEPDIR)/libscifftw_la-sci_fftw_flags.Tpo -c -o libscifftw_la-sci_fftw_flags.lo `test -f 'sci_gateway/c/sci_fftw_flags.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw_flags.c
-@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libscifftw_la-sci_fftw_flags.Tpo $(DEPDIR)/libscifftw_la-sci_fftw_flags.Plo
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-sci_fftw_flags.lo -MD -MP -MF "$(DEPDIR)/libscifftw_la-sci_fftw_flags.Tpo" -c -o libscifftw_la-sci_fftw_flags.lo `test -f 'sci_gateway/c/sci_fftw_flags.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw_flags.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/libscifftw_la-sci_fftw_flags.Tpo" "$(DEPDIR)/libscifftw_la-sci_fftw_flags.Plo"; else rm -f "$(DEPDIR)/libscifftw_la-sci_fftw_flags.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='sci_gateway/c/sci_fftw_flags.c' object='libscifftw_la-sci_fftw_flags.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) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-sci_fftw_flags.lo `test -f 'sci_gateway/c/sci_fftw_flags.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw_flags.c
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-sci_fftw_flags.lo `test -f 'sci_gateway/c/sci_fftw_flags.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw_flags.c
 
 libscifftw_la-sci_loadfftwlibrary.lo: sci_gateway/c/sci_loadfftwlibrary.c
-@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-sci_loadfftwlibrary.lo -MD -MP -MF $(DEPDIR)/libscifftw_la-sci_loadfftwlibrary.Tpo -c -o libscifftw_la-sci_loadfftwlibrary.lo `test -f 'sci_gateway/c/sci_loadfftwlibrary.c' || echo '$(srcdir)/'`sci_gateway/c/sci_loadfftwlibrary.c
-@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libscifftw_la-sci_loadfftwlibrary.Tpo $(DEPDIR)/libscifftw_la-sci_loadfftwlibrary.Plo
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-sci_loadfftwlibrary.lo -MD -MP -MF "$(DEPDIR)/libscifftw_la-sci_loadfftwlibrary.Tpo" -c -o libscifftw_la-sci_loadfftwlibrary.lo `test -f 'sci_gateway/c/sci_loadfftwlibrary.c' || echo '$(srcdir)/'`sci_gateway/c/sci_loadfftwlibrary.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/libscifftw_la-sci_loadfftwlibrary.Tpo" "$(DEPDIR)/libscifftw_la-sci_loadfftwlibrary.Plo"; else rm -f "$(DEPDIR)/libscifftw_la-sci_loadfftwlibrary.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      source='sci_gateway/c/sci_loadfftwlibrary.c' object='libscifftw_la-sci_loadfftwlibrary.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) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-sci_loadfftwlibrary.lo `test -f 'sci_gateway/c/sci_loadfftwlibrary.c' || echo '$(srcdir)/'`sci_gateway/c/sci_loadfftwlibrary.c
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-sci_loadfftwlibrary.lo `test -f 'sci_gateway/c/sci_loadfftwlibrary.c' || echo '$(srcdir)/'`sci_gateway/c/sci_loadfftwlibrary.c
 
-libscifftw_la-sci_fftw_inplace.lo: sci_gateway/c/sci_fftw_inplace.c
-@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-sci_fftw_inplace.lo -MD -MP -MF $(DEPDIR)/libscifftw_la-sci_fftw_inplace.Tpo -c -o libscifftw_la-sci_fftw_inplace.lo `test -f 'sci_gateway/c/sci_fftw_inplace.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw_inplace.c
-@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libscifftw_la-sci_fftw_inplace.Tpo $(DEPDIR)/libscifftw_la-sci_fftw_inplace.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='sci_gateway/c/sci_fftw_inplace.c' object='libscifftw_la-sci_fftw_inplace.lo' libtool=yes @AMDEPBACKSLASH@
+libscifftw_la-sci_get_fftw_wisdom.lo: sci_gateway/c/sci_get_fftw_wisdom.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-sci_get_fftw_wisdom.lo -MD -MP -MF "$(DEPDIR)/libscifftw_la-sci_get_fftw_wisdom.Tpo" -c -o libscifftw_la-sci_get_fftw_wisdom.lo `test -f 'sci_gateway/c/sci_get_fftw_wisdom.c' || echo '$(srcdir)/'`sci_gateway/c/sci_get_fftw_wisdom.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/libscifftw_la-sci_get_fftw_wisdom.Tpo" "$(DEPDIR)/libscifftw_la-sci_get_fftw_wisdom.Plo"; else rm -f "$(DEPDIR)/libscifftw_la-sci_get_fftw_wisdom.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='sci_gateway/c/sci_get_fftw_wisdom.c' object='libscifftw_la-sci_get_fftw_wisdom.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) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-sci_fftw_inplace.lo `test -f 'sci_gateway/c/sci_fftw_inplace.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw_inplace.c
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-sci_get_fftw_wisdom.lo `test -f 'sci_gateway/c/sci_get_fftw_wisdom.c' || echo '$(srcdir)/'`sci_gateway/c/sci_get_fftw_wisdom.c
 
-libscifftw_la-sci_pushfftw_plan.lo: sci_gateway/c/sci_pushfftw_plan.c
-@am__fastdepCC_TRUE@   $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-sci_pushfftw_plan.lo -MD -MP -MF $(DEPDIR)/libscifftw_la-sci_pushfftw_plan.Tpo -c -o libscifftw_la-sci_pushfftw_plan.lo `test -f 'sci_gateway/c/sci_pushfftw_plan.c' || echo '$(srcdir)/'`sci_gateway/c/sci_pushfftw_plan.c
-@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/libscifftw_la-sci_pushfftw_plan.Tpo $(DEPDIR)/libscifftw_la-sci_pushfftw_plan.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='sci_gateway/c/sci_pushfftw_plan.c' object='libscifftw_la-sci_pushfftw_plan.lo' libtool=yes @AMDEPBACKSLASH@
+libscifftw_la-sci_set_fftw_wisdom.lo: sci_gateway/c/sci_set_fftw_wisdom.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-sci_set_fftw_wisdom.lo -MD -MP -MF "$(DEPDIR)/libscifftw_la-sci_set_fftw_wisdom.Tpo" -c -o libscifftw_la-sci_set_fftw_wisdom.lo `test -f 'sci_gateway/c/sci_set_fftw_wisdom.c' || echo '$(srcdir)/'`sci_gateway/c/sci_set_fftw_wisdom.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/libscifftw_la-sci_set_fftw_wisdom.Tpo" "$(DEPDIR)/libscifftw_la-sci_set_fftw_wisdom.Plo"; else rm -f "$(DEPDIR)/libscifftw_la-sci_set_fftw_wisdom.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='sci_gateway/c/sci_set_fftw_wisdom.c' object='libscifftw_la-sci_set_fftw_wisdom.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) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-sci_pushfftw_plan.lo `test -f 'sci_gateway/c/sci_pushfftw_plan.c' || echo '$(srcdir)/'`sci_gateway/c/sci_pushfftw_plan.c
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-sci_set_fftw_wisdom.lo `test -f 'sci_gateway/c/sci_set_fftw_wisdom.c' || echo '$(srcdir)/'`sci_gateway/c/sci_set_fftw_wisdom.c
+
+libscifftw_la-sci_fftw_forget_wisdom.lo: sci_gateway/c/sci_fftw_forget_wisdom.c
+@am__fastdepCC_TRUE@   if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -MT libscifftw_la-sci_fftw_forget_wisdom.lo -MD -MP -MF "$(DEPDIR)/libscifftw_la-sci_fftw_forget_wisdom.Tpo" -c -o libscifftw_la-sci_fftw_forget_wisdom.lo `test -f 'sci_gateway/c/sci_fftw_forget_wisdom.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw_forget_wisdom.c; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/libscifftw_la-sci_fftw_forget_wisdom.Tpo" "$(DEPDIR)/libscifftw_la-sci_fftw_forget_wisdom.Plo"; else rm -f "$(DEPDIR)/libscifftw_la-sci_fftw_forget_wisdom.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='sci_gateway/c/sci_fftw_forget_wisdom.c' object='libscifftw_la-sci_fftw_forget_wisdom.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libscifftw_la_CFLAGS) $(CFLAGS) -c -o libscifftw_la-sci_fftw_forget_wisdom.lo `test -f 'sci_gateway/c/sci_fftw_forget_wisdom.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw_forget_wisdom.c
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
 install-libscifftw_la_etcDATA: $(libscifftw_la_etc_DATA)
        @$(NORMAL_INSTALL)
-       test -z "$(libscifftw_la_etcdir)" || $(MKDIR_P) "$(DESTDIR)$(libscifftw_la_etcdir)"
+       test -z "$(libscifftw_la_etcdir)" || $(mkdir_p) "$(DESTDIR)$(libscifftw_la_etcdir)"
        @list='$(libscifftw_la_etc_DATA)'; for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          f=$(am__strip_dir) \
@@ -621,7 +639,7 @@ uninstall-libscifftw_la_etcDATA:
        done
 install-libscifftw_la_rootDATA: $(libscifftw_la_root_DATA)
        @$(NORMAL_INSTALL)
-       test -z "$(libscifftw_la_rootdir)" || $(MKDIR_P) "$(DESTDIR)$(libscifftw_la_rootdir)"
+       test -z "$(libscifftw_la_rootdir)" || $(mkdir_p) "$(DESTDIR)$(libscifftw_la_rootdir)"
        @list='$(libscifftw_la_root_DATA)'; for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          f=$(am__strip_dir) \
@@ -638,7 +656,7 @@ uninstall-libscifftw_la_rootDATA:
        done
 install-libscifftw_la_sci_gatewayDATA: $(libscifftw_la_sci_gateway_DATA)
        @$(NORMAL_INSTALL)
-       test -z "$(libscifftw_la_sci_gatewaydir)" || $(MKDIR_P) "$(DESTDIR)$(libscifftw_la_sci_gatewaydir)"
+       test -z "$(libscifftw_la_sci_gatewaydir)" || $(mkdir_p) "$(DESTDIR)$(libscifftw_la_sci_gatewaydir)"
        @list='$(libscifftw_la_sci_gateway_DATA)'; for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          f=$(am__strip_dir) \
@@ -655,7 +673,7 @@ uninstall-libscifftw_la_sci_gatewayDATA:
        done
 install-libscifftw_la_includeHEADERS: $(libscifftw_la_include_HEADERS)
        @$(NORMAL_INSTALL)
-       test -z "$(libscifftw_la_includedir)" || $(MKDIR_P) "$(DESTDIR)$(libscifftw_la_includedir)"
+       test -z "$(libscifftw_la_includedir)" || $(mkdir_p) "$(DESTDIR)$(libscifftw_la_includedir)"
        @list='$(libscifftw_la_include_HEADERS)'; for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
          f=$(am__strip_dir) \
@@ -720,21 +738,23 @@ distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 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 \
+       $(mkdir_p) $(distdir)/../.. $(distdir)/includes
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkdir_p) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
          if test -d $$d/$$file; then \
-           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
              cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
            fi; \
@@ -751,7 +771,7 @@ check: $(BUILT_SOURCES)
 all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
 installdirs:
        for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(libscifftw_la_etcdir)" "$(DESTDIR)$(libscifftw_la_rootdir)" "$(DESTDIR)$(libscifftw_la_sci_gatewaydir)" "$(DESTDIR)$(libscifftw_la_includedir)"; do \
-         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+         test -z "$$dir" || $(mkdir_p) "$$dir"; \
        done
 install: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) install-am
@@ -781,7 +801,6 @@ maintainer-clean-generic:
        @echo "it deletes files that may require special tools to rebuild."
        -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 @FFTW_FALSE@install-data-local:
-@FFTW_FALSE@install-html-local:
 @FFTW_FALSE@clean-local:
 clean: clean-am
 
@@ -792,7 +811,7 @@ distclean: distclean-am
        -rm -rf ./$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
-       distclean-tags
+       distclean-libtool distclean-tags
 
 dvi: dvi-am
 
@@ -809,22 +828,12 @@ install-data-am: install-data-local install-libscifftw_la_etcDATA \
        install-libscifftw_la_rootDATA \
        install-libscifftw_la_sci_gatewayDATA
 
-install-dvi: install-dvi-am
-
 install-exec-am: install-pkglibLTLIBRARIES
 
-install-html: install-html-am
-
-install-html-am: install-html-local
-
 install-info: install-info-am
 
 install-man:
 
-install-pdf: install-pdf-am
-
-install-ps: install-ps-am
-
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -845,32 +854,29 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-libscifftw_la_etcDATA \
+uninstall-am: uninstall-info-am uninstall-libscifftw_la_etcDATA \
        uninstall-libscifftw_la_includeHEADERS \
        uninstall-libscifftw_la_rootDATA \
        uninstall-libscifftw_la_sci_gatewayDATA \
        uninstall-pkglibLTLIBRARIES
 
-.MAKE: install-am install-strip
-
 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
        clean-libtool clean-local 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-data-local install-dvi install-dvi-am \
-       install-exec install-exec-am install-html install-html-am \
-       install-html-local install-info install-info-am \
+       install-data-am install-data-local install-exec \
+       install-exec-am install-info install-info-am \
        install-libscifftw_la_etcDATA \
        install-libscifftw_la_includeHEADERS \
        install-libscifftw_la_rootDATA \
-       install-libscifftw_la_sci_gatewayDATA 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-libscifftw_la_etcDATA \
+       install-libscifftw_la_sci_gatewayDATA install-man \
+       install-pkglibLTLIBRARIES 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-info-am \
+       uninstall-libscifftw_la_etcDATA \
        uninstall-libscifftw_la_includeHEADERS \
        uninstall-libscifftw_la_rootDATA \
        uninstall-libscifftw_la_sci_gatewayDATA \
index 0d7cef7..ec98ed9 100644 (file)
                                >
                        </File>
                        <File
-                               RelativePath=".\sci_gateway\c\sci_fftw_inplace.c"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\sci_gateway\c\sci_fftw_norm.c"
+                               RelativePath=".\sci_gateway\c\sci_fftwlibraryisloaded.c"
                                >
                        </File>
                        <File
-                               RelativePath=".\sci_gateway\c\sci_fftwlibraryisloaded.c"
+                               RelativePath=".\sci_gateway\c\sci_loadfftwlibrary.c"
                                >
                        </File>
                        <File
-                               RelativePath=".\sci_gateway\c\sci_freefftw_plan.c"
+                               RelativePath=".\sci_gateway\c\sci_get_fftw_wisdom.c"
                                >
                        </File>
                        <File
-                               RelativePath=".\sci_gateway\c\sci_loadfftwlibrary.c"
+                               RelativePath=".\sci_gateway\c\sci_set_fftw_wisdom.c"
                                >
                        </File>
                        <File
-                               RelativePath=".\sci_gateway\c\sci_pushfftw_plan.c"
+                               RelativePath=".\sci_gateway\c\sci_fftw_forget_wisdom.c"
                                >
                        </File>
                </Filter>
                                >
                        </File>
                        <File
-                               RelativePath=".\includes\sci_fftw_inplace.h"
-                               >
-                       </File>
-                       <File
-                               RelativePath=".\includes\sci_fftw_norm.h"
+                               RelativePath=".\includes\sci_fftwlibraryisloaded.h"
                                >
                        </File>
                        <File
-                               RelativePath=".\includes\sci_fftwlibraryisloaded.h"
+                               RelativePath=".\includes\sci_loadfftwlibrary.h"
                                >
                        </File>
                        <File
-                               RelativePath=".\includes\sci_freefftw_plan.h"
+                               RelativePath=".\includes\sci_get_fftw_wisdom.h"
                                >
                        </File>
                        <File
-                               RelativePath=".\includes\sci_loadfftwlibrary.h"
+                               RelativePath=".\includes\sci_set_fftw_wisdom.h"
                                >
                        </File>
                        <File
-                               RelativePath=".\includes\sci_pushfftw_plan.h"
+                               RelativePath=".\includes\sci_fftw_forget_wisdom.h"
                                >
                        </File>
+
                </Filter>
                <Filter
                        Name="Resource Files"
index 8b72fef..11eba9d 100644 (file)
   <SEE_ALSO>
     <SEE_ALSO_ITEM>
       <A href='fftw_flags.htm'><VERB>fftw_flags</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='fftw_norm.htm'><VERB>fftw_norm</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='fftw_inplace.htm'><VERB>fftw_inplace</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='pushfftw_plan.htm'><VERB>pushfftw_plan</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='freefftw_plan.htm'><VERB>freefftw_plan</VERB></A>
+      <A href='get_fftw_wisdom.htm'><VERB>get_fftw_wisdom</VERB></A>
+      <A href='set_fftw_wisdom.htm'><VERB>set_fftw_wisdom</VERB></A>
+      <A href='fftw_forget_wisdom.htm'><VERB>fftw_forget_wisdom</VERB></A>
     </SEE_ALSO_ITEM>
   </SEE_ALSO>
 
index 79d5a86..a796547 100644 (file)
     <SEE_ALSO_ITEM>
       <A href='fftw.htm'><VERB>fftw</VERB></A>
     </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='fftw_norm.htm'><VERB>fftw_norm</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='fftw_inplace.htm'><VERB>fftw_inplace</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='pushfftw_plan.htm'><VERB>pushfftw_plan</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='freefftw_plan.htm'><VERB>freefftw_plan</VERB></A>
-    </SEE_ALSO_ITEM>
   </SEE_ALSO>
 
 </MAN>
diff --git a/scilab/modules/fftw/help/en_US/fftw_forget_wisdom.xml b/scilab/modules/fftw/help/en_US/fftw_forget_wisdom.xml
new file mode 100644 (file)
index 0000000..150070a
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../../../modules/helptools/help.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>fftw_forget_wisdom</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>February 2006</DATE>
+  <SHORT_DESCRIPTION name="fftw_forget_wisdom">Reset fftw wisdom</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>fftw_forget_wisdom()</CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <DESCRIPTION>
+    <P>
+     This function reset the current fftw wisdom.
+    </P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+ //return fftw wisdom
+ txt=get_fftw_wisdom();
+ //set fftw wisdom
+ set_fftw_wisdom(txt);
+ //reset fftw wisdom
+ fftw_forget_wisdom();
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <A href='fftw.htm'><VERB>fftw</VERB></A>
+      <A href='get_fftw_wisdom.htm'><VERB>get_fftw_wisdom</VERB></A>
+      <A href='set_fftw_wisdom.htm'><VERB>set_fftw_wisdom</VERB></A>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/fftw/help/en_US/fftw_inplace.xml b/scilab/modules/fftw/help/en_US/fftw_inplace.xml
deleted file mode 100644 (file)
index e21701f..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
-<!DOCTYPE MAN SYSTEM "../../../../modules/helptools/help.dtd">
-<MAN>
-  <LANGUAGE>eng</LANGUAGE>
-  <TITLE>fftw_inplace</TITLE>
-  <TYPE>Scilab Function</TYPE>
-  <DATE>October 2006</DATE>
-  <SHORT_DESCRIPTION name="fftw_inplace">set if transform is realized in place</SHORT_DESCRIPTION>
-  <CALLING_SEQUENCE>
-    <CALLING_SEQUENCE_ITEM>[b]=fftw_inplace()</CALLING_SEQUENCE_ITEM>
-    <CALLING_SEQUENCE_ITEM>[b]=fftw_inplace(b)</CALLING_SEQUENCE_ITEM>
-  </CALLING_SEQUENCE>
-  <PARAM>
-    <PARAM_INDENT>
-      <PARAM_ITEM>
-        <PARAM_NAME>b</PARAM_NAME>
-        <PARAM_DESCRIPTION>
-          <SP>: boolean. <VERB>%t</VERB> or <VERB>%f</VERB></SP>
-        </PARAM_DESCRIPTION>
-      </PARAM_ITEM>
-    </PARAM_INDENT>
-  </PARAM>
-  <DESCRIPTION>
-    <P>
-    This function set if transform is realized in place in the scilab stack (b=%t), or if a new variable is created (b=%f). Default value is %t.</P>
-  </DESCRIPTION>
-  <EXAMPLE>
-<![CDATA[
- //show if fftw works in-place
- fftw_inplace()
-
- //set an out-place fft
- fftw_inplace(%f);
- ]]>
-  </EXAMPLE>
-  <SEE_ALSO>
-    <SEE_ALSO_ITEM>
-      <A href='fftw.htm'><VERB>fftw</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='fftw_flags.htm'><VERB>fftw_flags</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='fftw_norm.htm'><VERB>fftw_norm</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='pushfftw_plan.htm'><VERB>pushfftw_plan</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='freefftw_plan.htm'><VERB>freefftw_plan</VERB></A>
-    </SEE_ALSO_ITEM>
-  </SEE_ALSO>
-
-</MAN>
diff --git a/scilab/modules/fftw/help/en_US/fftw_norm.xml b/scilab/modules/fftw/help/en_US/fftw_norm.xml
deleted file mode 100644 (file)
index 13e024b..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
-<!DOCTYPE MAN SYSTEM "../../../../modules/helptools/help.dtd">
-<MAN>
-  <LANGUAGE>eng</LANGUAGE>
-  <TITLE>fftw_flags</TITLE>
-  <TYPE>Scilab Function</TYPE>
-  <DATE>October 2006</DATE>
-  <SHORT_DESCRIPTION name="fftw_norm">set if inverse transform of the fftw function is normalized</SHORT_DESCRIPTION>
-  <CALLING_SEQUENCE>
-    <CALLING_SEQUENCE_ITEM>[b]=fftw_norm()</CALLING_SEQUENCE_ITEM>
-    <CALLING_SEQUENCE_ITEM>[b]=fftw_norm(b)</CALLING_SEQUENCE_ITEM>
-  </CALLING_SEQUENCE>
-  <PARAM>
-    <PARAM_INDENT>
-      <PARAM_ITEM>
-        <PARAM_NAME>b</PARAM_NAME>
-        <PARAM_DESCRIPTION>
-          <SP>: boolean . %t or %f</SP>
-        </PARAM_DESCRIPTION>
-      </PARAM_ITEM>
-    </PARAM_INDENT>
-  </PARAM>
-  <DESCRIPTION>
-    <P>
-    This function set if the inverse transform of fftw function is normalized.
-   </P>
-  </DESCRIPTION>
-  <EXAMPLE>
-<![CDATA[
-  //Get normalized flag value
-  fftw_norm()
-
-  a=1:4;
-
-  //Enable normalization
-  fftw_norm(%t);
-  fftw(a,1)
-
-  //Disable normalization
-  fftw_norm(%f);
-  fftw(a,1)
- ]]>
-  </EXAMPLE>
-  <SEE_ALSO>
-    <SEE_ALSO_ITEM>
-      <A href='fftw.htm'><VERB>fftw</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='fftw_flags.htm'><VERB>fftw_flags</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='fftw_inplace.htm'><VERB>fftw_inplace</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='pushfftw_plan.htm'><VERB>pushfftw_plan</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='freefftw_plan.htm'><VERB>freefftw_plan</VERB></A>
-    </SEE_ALSO_ITEM>
-  </SEE_ALSO>
-
-</MAN>
diff --git a/scilab/modules/fftw/help/en_US/freefftw_plan.xml b/scilab/modules/fftw/help/en_US/freefftw_plan.xml
deleted file mode 100644 (file)
index 1159dec..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
-<!DOCTYPE MAN SYSTEM "../../../../modules/helptools/help.dtd">
-<MAN>
-  <LANGUAGE>eng</LANGUAGE>
-  <TITLE>freefftw_plan</TITLE>
-  <TYPE>Scilab Function</TYPE>
-  <DATE>October 2006</DATE>
-  <SHORT_DESCRIPTION name="freefftw_plan">free all the planners stored in memory</SHORT_DESCRIPTION>
-  <CALLING_SEQUENCE>
-    <CALLING_SEQUENCE_ITEM>[d]=freefftw_plan()</CALLING_SEQUENCE_ITEM>
-  </CALLING_SEQUENCE>
-  <PARAM>
-    <PARAM_INDENT>
-      <PARAM_ITEM>
-        <PARAM_NAME>d</PARAM_NAME>
-        <PARAM_DESCRIPTION>
-          <SP>: the current planner index</SP>
-        </PARAM_DESCRIPTION>
-      </PARAM_ITEM>
-    </PARAM_INDENT>
-  </PARAM>
-  <DESCRIPTION>
-    <P>
-    This function clear all fftw planners stored in memory.</P>
-  </DESCRIPTION>
-  <EXAMPLE>
-<![CDATA[
- //free all planners stored in memory
- freefftw_plan()
- ]]>
-  </EXAMPLE>
-  <SEE_ALSO>
-    <SEE_ALSO_ITEM>
-      <A href='fftw.htm'><VERB>fftw</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='fftw_flags.htm'><VERB>fftw_flags</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='fftw_norm.htm'><VERB>fftw_norm</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='fftw_inplace.htm'><VERB>fftw_inplace</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='pushfftw_plan.htm'><VERB>pushfftw_plan</VERB></A>
-    </SEE_ALSO_ITEM>
-  </SEE_ALSO>
-
-</MAN>
diff --git a/scilab/modules/fftw/help/en_US/get_fftw_wisdom.xml b/scilab/modules/fftw/help/en_US/get_fftw_wisdom.xml
new file mode 100644 (file)
index 0000000..7080768
--- /dev/null
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../../../modules/helptools/help.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>get_fftw_wisdom</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>February 2006</DATE>
+  <SHORT_DESCRIPTION name="get_fftw_wisdom">return fftw wisdom</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>[txt]=get_fftw_wisdom()</CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>txt</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: String matrix that contains fftw wisdom.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P>
+     This function return the fftw wisdom in a string matrix.
+    </P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+ //return fftw wisdom
+ txt=get_fftw_wisdom();
+ //set fftw wisdom
+ set_fftw_wisdom(txt);
+ //reset fftw wisdom
+ fftw_forget_wisdom();
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <A href='fftw.htm'><VERB>fftw</VERB></A>
+      <A href='set_fftw_wisdom.htm'><VERB>set_fftw_wisdom</VERB></A>
+      <A href='fftw_forget_wisdom.htm'><VERB>fftw_forget_wisdom</VERB></A>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
diff --git a/scilab/modules/fftw/help/en_US/pushfftw_plan.xml b/scilab/modules/fftw/help/en_US/pushfftw_plan.xml
deleted file mode 100644 (file)
index 63409cd..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
-<!DOCTYPE MAN SYSTEM "../../../../modules/helptools/help.dtd">
-<MAN>
-  <LANGUAGE>eng</LANGUAGE>
-  <TITLE>pushfftw_plan</TITLE>
-  <TYPE>Scilab Function</TYPE>
-  <DATE>October 2006</DATE>
-  <SHORT_DESCRIPTION name="pushfftw_plan">push the last used fftw planner in memory</SHORT_DESCRIPTION>
-  <CALLING_SEQUENCE>
-    <CALLING_SEQUENCE_ITEM>[d]=pushfftw_plan()</CALLING_SEQUENCE_ITEM>
-  </CALLING_SEQUENCE>
-  <PARAM>
-    <PARAM_INDENT>
-      <PARAM_ITEM>
-        <PARAM_NAME>d</PARAM_NAME>
-        <PARAM_DESCRIPTION>
-          <SP>: the current planner index</SP>
-        </PARAM_DESCRIPTION>
-      </PARAM_ITEM>
-    </PARAM_INDENT>
-  </PARAM>
-  <DESCRIPTION>
-    <P>
-    This function stores the last parameters of fftw in memory.
-    </P>
-    <P>
-    This can be useful to improve the time computation of fftw after multiple calls of fftw with different set of parameters (dimension, sign, ...).
-    </P>
-  </DESCRIPTION>
-  <EXAMPLE>
-<![CDATA[freefftw_plan()
-
-//consecutives call with same parameters
-tic;fftw(rand(1e6 + 3,1));toc() // time 1
-tic;fftw(rand(1e6 + 3,1));toc() // time 2 (< time 1)
-tic;fftw(rand(1e6 + 3,1));toc() // approx. same time as 2
-
-//consecutives call with differents parameters
-tic;fftw(rand(1e6 + 37,1));toc()  // time 3
-tic;fftw(rand(1e6 + 3,1));toc()   // approx. same time as 1
-
-//push the last planner in memory
-pushfftw_plan()
-tic;fftw(rand(1e6 + 37,1));toc()  // approx. same time as 3
-tic;fftw(rand(1e6 + 37,1));toc()  // time 4 (< time 3)
-tic;fftw(rand(1e6 + 3,1));toc()   // approx. same time as 2
-tic;fftw(rand(1e6 + 37,1));toc()  // approx. same time as time 4
-
-freefftw_plan() ]]>
-  </EXAMPLE>
-  <SEE_ALSO>
-    <SEE_ALSO_ITEM>
-      <A href='fftw.htm'><VERB>fftw</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='fftw_flags.htm'><VERB>fftw_flags</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='fftw_norm.htm'><VERB>fftw_norm</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='fftw_inplace.htm'><VERB>fftw_inplace</VERB></A>
-    </SEE_ALSO_ITEM>
-    <SEE_ALSO_ITEM>
-      <A href='freefftw_plan.htm'><VERB>freefftw_plan</VERB></A>
-    </SEE_ALSO_ITEM>
-  </SEE_ALSO>
-
-</MAN>
diff --git a/scilab/modules/fftw/help/en_US/set_fftw_wisdom.xml b/scilab/modules/fftw/help/en_US/set_fftw_wisdom.xml
new file mode 100644 (file)
index 0000000..490732e
--- /dev/null
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!DOCTYPE MAN SYSTEM "../../../../modules/helptools/help.dtd">
+<MAN>
+  <LANGUAGE>eng</LANGUAGE>
+  <TITLE>set_fftw_wisdom</TITLE>
+  <TYPE>Scilab Function</TYPE>
+  <DATE>February 2006</DATE>
+  <SHORT_DESCRIPTION name="set_fftw_wisdom">set fftw wisdom</SHORT_DESCRIPTION>
+  <CALLING_SEQUENCE>
+    <CALLING_SEQUENCE_ITEM>set_fftw_wisdom(txt)</CALLING_SEQUENCE_ITEM>
+  </CALLING_SEQUENCE>
+  <PARAM>
+    <PARAM_INDENT>
+      <PARAM_ITEM>
+        <PARAM_NAME>txt</PARAM_NAME>
+        <PARAM_DESCRIPTION>
+          <SP>: String matrix that contains fftw wisdom.</SP>
+        </PARAM_DESCRIPTION>
+      </PARAM_ITEM>
+    </PARAM_INDENT>
+  </PARAM>
+  <DESCRIPTION>
+    <P>
+     This function set the fftw wisdom with a string matrix.
+    </P>
+  </DESCRIPTION>
+  <EXAMPLE>
+<![CDATA[
+ //return fftw wisdom
+ txt=get_fftw_wisdom();
+ //set fftw wisdom
+ set_fftw_wisdom(txt);
+ //reset fftw wisdom
+ fftw_forget_wisdom();
+ ]]>
+  </EXAMPLE>
+  <SEE_ALSO>
+    <SEE_ALSO_ITEM>
+      <A href='fftw.htm'><VERB>fftw</VERB></A>
+      <A href='get_fftw_wisdom.htm'><VERB>get_fftw_wisdom</VERB></A>
+      <A href='fftw_forget_wisdom.htm'><VERB>fftw_forget_wisdom</VERB></A>
+    </SEE_ALSO_ITEM>
+  </SEE_ALSO>
+</MAN>
index 1873b11..11ea590 100644 (file)
@@ -1,22 +1,21 @@
 /*-----------------------------------------------------------------------------------*/
 /* INRIA 2006 */
 /* Allan CORNET */
-/*-----------------------------------------------------------------------------------*/ 
+/*-----------------------------------------------------------------------------------*/
 #ifndef __GW_FFTW__
 #define __GW_FFTW__
-/*-----------------------------------------------------------------------------------*/ 
+/*-----------------------------------------------------------------------------------*/
 #include "machine.h"
-/*-----------------------------------------------------------------------------------*/ 
+/*-----------------------------------------------------------------------------------*/
 int C2F(gw_fftw)(void);
 /*-----------------------------------------------------------------------------------*/
 /* interface for the previous function Table */ 
-/*-----------------------------------------------------------------------------------*/ 
+/*-----------------------------------------------------------------------------------*/
 int sci_fftw __PARAMS((char *fname,unsigned long fname_len));
 int sci_fftw_flags __PARAMS((char *fname,unsigned long fname_len));
-int sci_fftw_inplace __PARAMS((char *fname,unsigned long fname_len));
-int sci_fftw_norm __PARAMS((char *fname,unsigned long fname_len));
-int sci_pushfftw_plan __PARAMS((char *fname,unsigned long fname_len));
-int sci_freefftw_plan __PARAMS((char *fname,unsigned long fname_len));
+int sci_get_fftw_wisdom __PARAMS((char *fname,unsigned long fname_len));
+int sci_set_fftw_wisdom __PARAMS((char *fname,unsigned long fname_len));
+int sci_fftw_forget_wisdom __PARAMS((char *fname,unsigned long fname_len));
 int sci_loadfftwlibrary __PARAMS((char *fname,unsigned long fname_len));
 int sci_disposefftwlibrary __PARAMS((char *fname,unsigned long fname_len));
 int sci_fftwlibraryisloaded __PARAMS((char *fname,unsigned long fname_len));
@@ -2,8 +2,8 @@
 /* INRIA 2006 */
 /* Allan CORNET */
 /*-----------------------------------------------------------------------------------*/ 
-#ifndef __INTFREEFFTW_PLAN__
-#define __INTFREEFFTW_PLAN__
+#ifndef __INTFFTW_FORGET_WISDOM__
+#define __INTFFTW_FORGET_WISDOM__
 
 #ifdef _MSC_VER
 #include <windows.h>
@@ -14,7 +14,7 @@
 #include "stack-c.h"
 #include "version.h"
 
-int sci_freefftw_plan __PARAMS((char *fname,unsigned long fname_len));
+int sci_fftw_forget_wisdom __PARAMS((char *fname,unsigned long fname_len));
 
-#endif /* __INTFREEFFTW_PLAN__ */
+#endif /* __INTFFTW__ */
 /*-----------------------------------------------------------------------------------*/
@@ -2,8 +2,8 @@
 /* INRIA 2006 */
 /* Allan CORNET */
 /*-----------------------------------------------------------------------------------*/ 
-#ifndef __INTFFTW_INPLACE__
-#define __INTFFTW_INPLACE__
+#ifndef __INTGET_FFTW_WISDOM__
+#define __INTGET_FFTW_WISDOM__
 
 #ifdef _MSC_VER
 #include <windows.h>
@@ -14,7 +14,7 @@
 #include "stack-c.h"
 #include "version.h"
 
-int sci_fftw_inplace __PARAMS((char *fname,unsigned long fname_len));
+int sci_get_fftw_wisdom __PARAMS((char *fname,unsigned long fname_len));
 
-#endif /* __INTFFTW_INPLACE__ */
+#endif /* __INTFFTW__ */
 /*-----------------------------------------------------------------------------------*/
diff --git a/scilab/modules/fftw/includes/sci_pushfftw_plan.h b/scilab/modules/fftw/includes/sci_pushfftw_plan.h
deleted file mode 100644 (file)
index 09d9f13..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*-----------------------------------------------------------------------------------*/
-/* INRIA 2006 */
-/* Allan CORNET */
-/*-----------------------------------------------------------------------------------*/ 
-#ifndef __INTPUSHFFTW_PLAN__
-#define __INTPUSHFFTW_PLAN__
-
-#ifdef _MSC_VER
-#include <windows.h>
-#endif
-
-#include <stdio.h>
-#include "machine.h"
-#include "stack-c.h"
-#include "version.h"
-
-int sci_pushfftw_plan __PARAMS((char *fname,unsigned long fname_len));
-
-#endif /* __INTPUSHFFTW_PLAN__ */
-/*-----------------------------------------------------------------------------------*/
@@ -2,8 +2,8 @@
 /* INRIA 2006 */
 /* Allan CORNET */
 /*-----------------------------------------------------------------------------------*/ 
-#ifndef __INTFFTW_NORM__
-#define __INTFFTW_NORM__
+#ifndef __INTSET_FFTW_WISDOM__
+#define __INTSET_FFTW_WISDOM__
 
 #ifdef _MSC_VER
 #include <windows.h>
@@ -14,7 +14,7 @@
 #include "stack-c.h"
 #include "version.h"
 
-int sci_fftw_norm __PARAMS((char *fname,unsigned long fname_len));
+int sci_set_fftw_wisdom __PARAMS((char *fname,unsigned long fname_len));
 
-#endif /* __INTFFTW_NORM__ */
+#endif /* __INTFFTW__ */
 /*-----------------------------------------------------------------------------------*/
index ed52f71..992934b 100644 (file)
@@ -26,10 +26,9 @@ static intFFTWTable Tab[]={
 { sci_fftwlibraryisloaded,"fftwlibraryisloaded"},
 { sci_fftw,"fftw"},
 { sci_fftw_flags,"fftw_flags"},
-{ sci_fftw_inplace,"fftw_inplace"},
-{ sci_fftw_norm,"fftw_norm"},
-{ sci_pushfftw_plan,"pushfftw_plan"},
-{ sci_freefftw_plan,"freefftw_plan"}
+{ sci_get_fftw_wisdom,"get_fftw_wisdom"},
+{ sci_set_fftw_wisdom,"set_fftw_wisdom"},
+{ sci_fftw_forget_wisdom,"fftw_forget_wisdom"}
 };
 /*-----------------------------------------------------------------------------------*/ 
 int C2F(gw_fftw)()
index c2a9434..522ae37 100644 (file)
@@ -1,6 +1,7 @@
 /*-----------------------------------------------------------------------------------*/ 
 /* INRIA 2006 */
-/* ALAN LAYEC initial revision  : 30/09/06 fftw3 toolbox*/
+/* Alan Layec :  - initial revision  : 30/09/06 fftw3 toolbox*/
+/*               - revision : 18/04/07 */
 /* Allan CORNET scilab module */
 /*-----------------------------------------------------------------------------------*/ 
 #include "sci_fftw.h"
@@ -8,9 +9,10 @@
 #include "callfftw.h"
 #include "MALLOC.h"
 #include "gw_fftw.h"
-/*-----------------------------------------------------------------------------------*/ 
-extern FFTW_Plan_struct Sci_Plan;
-/*-----------------------------------------------------------------------------------*/ 
+/*-----------------------------------------------------------------------------------*/
+extern unsigned cur_fftw_flags;
+/*-----------------------------------------------------------------------------------*/
+
 /* fftw function.
 *
 * Scilab Calling sequence :
@@ -37,691 +39,584 @@ extern FFTW_Plan_struct Sci_Plan;
 */
 int sci_fftw __PARAMS((char *fname,unsigned long fname_len))
 {
-       /* declaration of variables to store scilab parameters address */
-       static int lr1,li1,it1,m1, n1; /* Rhs(1) */
-
-       static int lr2,li2,it2,m2,n2;   /* Rhs(2) */
-
-       static int it3,m3,n3;           /* Rhs(3) */
-       int mn3;
-
-       static int it4,m4,n4;           /* Rhs(4) */
-       int mn4;
-
-       int *header;
-
-       double         *ptr_d;
-       char           *ptr_c;
-       unsigned char  *ptr_uc;
-       short          *ptr_s;
-       unsigned short *ptr_us;
-       int            *ptr_i;
-       unsigned int   *ptr_ui;
-
-       /* specific declaration for FFTW library variable */
-       fftw_plan p;
-       int rank;
-       fftw_iodim *dims;
-       int howmany_rank;
-       fftw_iodim *howmany_dims;
-
-       /* input/output address for transform variables */
-       double *ri,*ii,*ro,*io;
-       double *ptr;
-
-       /* local counter variable */
-       int i,j,k;
-
-       /* local variable */
-       int isn,vect;
-       int *n,*nspn;
-       double zero=0;
-
-       /****************************************
-       * Basic constraints on rhs parameters  *
-       ****************************************/
-
-       /* check min/max lhs/rhs parameters of scilab funcion */
-       CheckRhs(1,4);
-       CheckLhs(1,1);
-
-       /* 3 rhs not allowed */
-       if (Rhs==3)
-       {
-               Scierror(39,"%s: "
-                       "Bad number of Rhs parameters\n",
-                       fname);
-
-               return(0);
-       }
-
-       /* retrieve address of input variable to transform */
-       GetRhsCVar(1, "d", &it1, &m1, &n1, &lr1, &li1);
-
-       /* void input gives void output */
-       if ((m1<1)|(n1<1))
-       {
-               LhsVar(1)=1;
-               PutLhsVar();
-               return(0);
-       }
-
-       /******************************************
-       * Advanced constraints on rhs parameters *
-       * Get value of rhs parameters            *
-       ******************************************/
-
-       /*only one rhs parameter*/
-       /*forward fft*/
-       if (Rhs==1)
-       {
-               /* sign of the exp. component */
-               isn=-1;
-       }
-       /* two or four rhs parameters case */
-       else
-       {
-               /* Get dim/type of Rhs(2) */
-               header = GetData(2);
-               m2  = header[1];
-               n2  = header[2];
-               it2 = header[3];
-
-               /* */
-               CheckDims(2,m2,n2,1,1);
-
-               /* look at for type of Rhs(2) */
-               if (VarType(2)==8) /* int */
-               {
-                       /* */
-                       switch (it2)
-                       {
-                       case I_CHAR   : ptr_c=IC_CHAR(&header[4]);
-                               isn=(int) ptr_c[0];
-                               break;
-                       case I_INT16  : ptr_s=IC_INT16(&header[4]);
-                               isn=(int) ptr_s[0];
-                               break;
-                       case I_INT32  : ptr_i=IC_INT32(&header[4]);
-                               isn=(int) ptr_i[0];
-                               break;
-                       case I_UCHAR  : ptr_uc=IC_UCHAR(&header[4]);
-                               isn=(int) ptr_uc[0];
-                               break;
-                       case I_UINT16 : ptr_us=IC_UINT16(&header[4]);
-                               isn=(int) ptr_us[0];
-                               break;
-                       case I_UINT32 : ptr_ui=IC_UINT32(&header[4]);
-                               isn=(int) ptr_ui[0];
-                               break;
-                       }
-               }
-               else if (VarType(2)==1)  /* double */
-               {
-                       /* */
-                       ptr_d=(double *)(&header[4]);
-                       /* */
-                       isn=(int)ptr_d[0];
-               }
-               /* if is not int/double then error message */
-               else
-               {
-                       Scierror(53,"%s: "
-                               "Bad type for Rhs(2) parameter\n",
-                               fname);
-
-                       return(0);
-               }
-
-               /* check value of second rhs argument */
-               if ((isn!=1)&&(isn!=-1))
-               {
-                       Scierror(53,"%s: "
-                               "Bad value for Rhs(2) parameter\n",
-                               fname);
-
-                       return(0);
-               }
-
-               /* four rhs parameters */
-               if (Rhs==4)
-               {
-                       /* Get dim/type of Rhs(3) */
-                       header = GetData(3);
-                       m3  = header[1];
-                       n3  = header[2];
-                       it3 = header[3];
-
-                       /* look at for type of Rhs(3) */
-                       if ((VarType(3)!=8)&&(VarType(3)!=1))
-                       {
-                               Scierror(53,"%s: "
-                                       "Bad type for Rhs(3) parameter\n",
-                                       fname);
-
-                               return(0);
-                       }
-
-                       /* */
-                       mn3=m3*n3;
-
-                       /* check dims */
-                       if (m3*n3==0)
-                       {
-                               Scierror(999,"%s: "
-                                       "Bad size for Rhs(3) parameter\n",
-                                       fname);
-
-                               return(0);
-                       }
-
-                       /* Get dim/type of Rhs(4) */
-                       header = GetData(4);
-                       m4  = header[1];
-                       n4  = header[2];
-                       it4 = header[3];
-
-                       /* look at for type of Rhs(4) */
-                       if ((VarType(4)!=8)&&(VarType(4)!=1)) /* int */
-                       {
-                               Scierror(53,"%s: "
-                                       "Bad type for Rhs(4) parameter\n",
-                                       fname);
-
-                               return(0);
-                       }
-
-                       /* */
-                       mn4=m4*n4;
-
-                       /* check dims */
-                       if (m4*n4==0)
-                       {
-                               Scierror(999,"%s: "
-                                       "Bad size for Rhs(4) parameter\n",
-                                       fname);
-
-                               return(0);
-                       }
-
-                       /* cross variable size checking */
-                       if (mn4!=mn3)
-                       {
-                               Scierror(999,"%s: "
-                                       "Size of Rhs(3) and Rhs(4) parameters "
-                                       "must be the same\n",
-                                       fname);
-                               return(0);
-                       }
-
-                       /* alloc n/nspn with MALLOC */
-                       if ((n=(int *)MALLOC(mn4*sizeof(int)))==NULL)
-                       {
-                               /* */
-                               Scierror(999,"%s: "
-                                       "Allocation memory error\n",
-                                       fname);
-                               return(0);
-                       }
-
-                       if ((nspn=(int *)MALLOC(mn4*sizeof(int)))==NULL)
-                       {
-                               /* */
-                               Scierror(999,"%s: "
-                                       "Allocation memory error\n",
-                                       fname);
-                               FREE(n);
-
-                               return(0);
-                       }
-
-                       /* n    <- Rhs(3) */
-                       /* nspn <- Rhs(4) */
-                       /* check values   */
-                       for (i=0;i<mn3;i++)
-                       {
-                               /* Rhs(3) */
-                               header = GetData(3);
-
-                               switch (VarType(3))
-                               {
-                                       /* double */
-                               case 1 :
-                                       {
-                                               ptr_d=(double *)(&header[4]);
-                                               n[i]=(int)ptr_d[i];
-                                               break;
-                                       }
-                                       /* int */
-                               case 8 :
-                                       {
-                                               switch (it3)
-                                               {
-                                               case I_CHAR   : ptr_c=IC_CHAR(&header[4]);
-                                                       n[i]=(int) ptr_c[i];
-                                                       break;
-
-                                               case I_INT16  : ptr_s=IC_INT16(&header[4]);
-                                                       n[i]=(int) ptr_s[i];
-                                                       break;
-
-                                               case I_INT32  : ptr_i=IC_INT32(&header[4]);
-                                                       n[i]=(int) ptr_i[i];
-                                                       break;
-
-                                               case I_UCHAR  : ptr_uc=IC_UCHAR(&header[4]);
-                                                       n[i]=(int) ptr_uc[i];
-                                                       break;
-
-                                               case I_UINT16 : ptr_us=IC_UINT16(&header[4]);
-                                                       n[i]=(int) ptr_us[i];
-                                                       break;
-
-                                               case I_UINT32 : ptr_ui=IC_UINT32(&header[4]);
-                                                       n[i]=(int) ptr_ui[i];
-                                                       break;
-                                               }
-                                               break;
-                                       }
-                               }
-                               /* check value of n[i] */
-                               if (n[i]<=0)
-                               {
-                                       Scierror(999,"%s: "
-                                               "Bad value for Rhs(3) parameter : %d\n",
-                                               fname,n[i]);
-                                       FREE(n);FREE(nspn);
-                                       return(0);
-                                       break;
-                               }
-
-                               /* Rhs(4) */
-                               header = GetData(4);
-
-                               switch (VarType(4))
-                               {
-                                       /* double */
-                               case 1 :
-                                       {
-                                               ptr_d=(double *)(&header[4]);
-                                               nspn[i]=(int)ptr_d[i];
-                                               break;
-                                       }
-                                       /* int */
-                               case 8 :
-                                       {
-                                               switch (it4)
-                                               {
-                                               case I_CHAR   : ptr_c=IC_CHAR(&header[4]);
-                                                       nspn[i]=(int) ptr_c[i];
-                                                       break;
-
-                                               case I_INT16  : ptr_s=IC_INT16(&header[4]);
-                                                       nspn[i]=(int) ptr_s[i];
-                                                       break;
-
-                                               case I_INT32  : ptr_i=IC_INT32(&header[4]);
-                                                       nspn[i]=(int) ptr_i[i];
-                                                       break;
-
-                                               case I_UCHAR  : ptr_uc=IC_UCHAR(&header[4]);
-                                                       nspn[i]=(int) ptr_uc[i];
-                                                       break;
-
-                                               case I_UINT16 : ptr_us=IC_UINT16(&header[4]);
-                                                       nspn[i]=(int) ptr_us[i];
-                                                       break;
-
-                                               case I_UINT32 : ptr_ui=IC_UINT32(&header[4]);
-                                                       nspn[i]=(int) ptr_ui[i];
-                                                       break;
-                                               }
-                                               break;
-                                       }
-                               }
-                               /* check value of nspn[i] */
-                               if (nspn[i]<=0)
-                               {
-                                       Scierror(999,"%s: "
-                                               "Bad value for Rhs(4) parameter : %d\n",
-                                               fname,nspn[i]);
-                                       FREE(n);FREE(nspn);
-                                       return(0);
-                                       break;
-                               }
-
-                       }
-               }
-       }
-
-       /*********************************************
-       * Set address of input/ouput array for fftw *
-       *********************************************/
-
-       /* complex data */
-       if (it1==1)
-       {
-               /* set input array address */
-               ri=stk(lr1);
-               ii=stk(li1);
-       }
-       /* real data */
-       else if (it1==0)
-       {
-               /* set input array address */
-               CreateCVar(1, "d", (i=1,&i), &m1, &n1, &lr1,&li1);
-
-               ri=stk(lr1);
-               ii=stk(li1);
-
-               /* set all elements of imaginary parts to 0 */
-
-               C2F(dset)((i=m1*n1,&i), &zero, ii, (k=1,&k));
-               //    for (i=0;i<m1*n1;i++) ii[i]=0;
-       }
-
-       /* set output array address */
-       /* in place fft*/
-       if (Sci_Plan.in)
-       {
-               ro=ri;
-               io=ii;
-       }
-       /* out place fft*/
-       else
-       {
-               /* */
-               CreateCVar(2, "d", &it1, &m1, &n1, &lr2,&li2);
-
-               /* */
-               ro=stk(lr2);
-               io=stk(li2);
-       }
-
-       /* reverse address of input/output array
-       * if it is a backward fft 
-       */
-       if (isn==1)
-       {
-               /* reverse input */
-               ptr=ri;
-               ri=ii;
-               ii=ptr;
-
-               /* reverse output */
-               ptr=ro;
-               ro=io;
-               io=ptr;
-       }
-
-       /**********************************
-       * Set parameters needed for fftw *
-       **********************************/
-
-       /* check if it is one column or row vector */
-       vect=0;
-       if ((m1==1)|(n1==1)) vect=1;
-
-       /* vector transform */
-       if ((vect)&&(Rhs<=2))
-       {
-               /* set parameters of fftw_plan_guru_split_dft */
-               rank=1;
-               if ((dims=(fftw_iodim *)MALLOC(sizeof(fftw_iodim)))==NULL)
-               {
-                       /* */
-                       Scierror(999,"%s: "
-                               "Allocation memory error\n",
-                               fname);
-                       /* */
-                       return(0);
-               }
-
-               dims[0].n = m1*n1;
-               dims[0].is = 1;
-               dims[0].os = 1;
-
-               howmany_rank=0;
-               howmany_dims=NULL;
-       }
-       else
-       {
-               /* 2D fft */
-               if (Rhs<=2)
-               {
-                       /* set parameters of fftw_plan_guru_split_dft */
-                       rank=2;
-                       if ((dims=(fftw_iodim *)MALLOC(sizeof(fftw_iodim)*rank))==NULL)
-                       {
-                               /* */
-                               Scierror(999,"%s: "
-                                       "Allocation memory error\n",
-                                       fname);
-                               /* */
-                               return(0);
-                       }
-
-                       dims[0].n = m1;
-                       dims[0].is = 1;
-                       dims[0].os = 1;
-
-                       dims[1].n = n1;
-                       dims[1].is = m1;
-                       dims[1].os = m1;
-
-                       howmany_rank=0;
-                       howmany_dims=NULL;
-               }
-               /* multidimensional fft */
-               else if (Rhs==4)
-               {
-                       /* size 1x1 for Rhs(3)/Rhs(4) */
-                       if (mn3==1)
-                               /* **This is a special case**
-                               * all is made in the following block.
-                               * compatibility with scilab fft function.
-                               */
-                       {
-                               /* set parameters of fftw_plan_guru_split_dft */
-                               rank=1;
-                               if ((dims=(fftw_iodim *)MALLOC(sizeof(fftw_iodim)*rank))==NULL)
-                               {
-                                       /* */
-                                       Scierror(999,"%s: "
-                                               "Allocation memory error\n",
-                                               fname);
-                                       /* */
-                                       return(0);
-                               }
-
-                               dims[0].n = n[0];
-                               dims[0].is = nspn[0];
-                               dims[0].os = nspn[0];
-
-                               howmany_rank=1;
-                               if ((howmany_dims=(fftw_iodim *)MALLOC(sizeof(fftw_iodim)*howmany_rank))==NULL)
-                               {
-                                       /* */
-                                       Scierror(999,"%s: "
-                                               "Allocation memory error\n",
-                                               fname);
-                                       /* */
-                                       return(0);
-                               }
-
-                               /* find number of transforms to compute */
-                               howmany_dims[0].n = 0;
-                               j = (n[0]-1)*nspn[0];
-                               while(j<((m1*n1)-(nspn[0]-1)))
-                               {
-                                       howmany_dims[0].n++;
-                                       j += nspn[0]*n[0];
-                               }
-                               if (j<=((m1*n1)-(nspn[0]-1)))
-                                       k=j+nspn[0];
-                               else
-                                       k=j-nspn[0]*n[0]+nspn[0];
-
-                               howmany_dims[0].is = n[0]*nspn[0];
-                               howmany_dims[0].os = n[0]*nspn[0];
-
-                               if ((p = GetFFTWPlan(rank, dims,
-                                       howmany_rank, howmany_dims,
-                                       ri, ii, ro, io,
-                                       Sci_Plan.flags,isn)) == NULL)
-                               {
-                                       /* */
-                                       Scierror(999,"%s: "
-                                               "Allocation memory error\n",
-                                               fname);
-                                       /* */
-                                       FREE(dims);
-                                       FREE(howmany_dims);
-
-                                       /* */
-                                       return(0);
-                               }
-                               else
-                               {
-                                       if (isn==1) /* backward */
-                                       {
-                                               if (Sci_Plan.norm) /* normalized ffti */
-                                               {
-                                                       /* */
-                                                       double ak;
-
-                                                       ak=1/((double)(n[0]));
-
-                                                       /* must find a BLAS/calelm function to do that */
-                                                       for(i=0;i<k;i++)
-                                                       {
-                                                               ri[i]=ri[i]*ak;
-                                                               ii[i]=ii[i]*ak;
-                                                       }
-                                               }
-                                       }
-
-                                       /* */
-                                       for(i=0;i<nspn[0];i++) call_fftw_execute_split_dft(p,&ri[i],&ii[i],&ro[i],&io[i]);
-
-                                       /* */
-                                       FREE(dims);
-                                       FREE(howmany_dims);
-                                       FREE(n);FREE(nspn);
-
-                                       /* in place fft*/
-                                       if (Sci_Plan.in) LhsVar(1) = 1;
-                                       /* out place fft*/
-                                       else LhsVar(1) = 2;
-
-                                       PutLhsVar();
-
-                                       /* */
-                                       return(0);
-                               }
-                       }
-
-                       /* size mxn Rhs(3)/Rhs(4)  */
-                       else
-                       {
-                               /* set parameters of fftw_plan_guru_split_dft */
-                               rank=mn3;
-                               if ((dims=(fftw_iodim *)MALLOC(sizeof(fftw_iodim)*rank))==NULL)
-                               {
-                                       /* */
-                                       Scierror(999,"%s: "
-                                               "Allocation memory error\n",
-                                               fname);
-                                       /* */
-                                       return(0);
-                               }
-
-                               /* */
-                               for(j=0;j<rank;j++)
-                               {
-                                       dims[j].n = n[j];
-                                       dims[j].is = nspn[j];
-                                       dims[j].os = nspn[j];
-                               }
-
-                               howmany_rank=0;
-                               howmany_dims=NULL;
-                       }
-
-               }
-       }
-
-       /*****************
-       * Get fftw plan *
-       *****************/
-
-       /* call GetFFTWPlan */
-       if ((p = GetFFTWPlan(rank, dims,
-               howmany_rank, howmany_dims,
-               ri, ii, ro, io,
-               Sci_Plan.flags,isn)) == NULL)
-       {
-               /* */
-               Scierror(999,"%s: "
-                       "Allocation memory error\n",
-                       fname);
-               /* */
-               FREE(dims);
-               if (howmany_dims!=NULL) FREE(howmany_dims);
-
-               /* */
-               return(0);
-       }
-
-       /* */
-       FREE(dims);
-       if (howmany_dims!=NULL) FREE(howmany_dims);
-
-       /***************
-       * Compute fft *
-       ***************/
-
-       if (isn==1) /* backward */
-       {
-               if (Sci_Plan.norm) /* normalized ffti */
-               {
-                       /* */
-                       double ak;
-
-                       if (Rhs==4)
-                       {
-                               ak=1;
-                               for(i=0;i<mn3;i++) ak=ak*1/((double)(n[i]));
-                               FREE(n);FREE(nspn);
-                       }
-                       else
-                       {
-                               ak=1/((double)(m1*n1));
-                       }
-
-                       /* must find a BLAS/calelm function to do that */
-                       for(i=0;i<m1*n1;i++)
-                       {
-                               ri[i]=ri[i]*ak;
-                               ii[i]=ii[i]*ak;
-                       }
-               }
-       }
-
-       /* execute FFTW plan */
-       call_fftw_execute_split_dft(p,ri,ii,ro,io);
-
-       /***********************************
-       * Return results in lhs parameter *
-       ***********************************/
-
-       /* in place fft*/
-       if (Sci_Plan.in) LhsVar(1) = 1;
-       /* out place fft*/
-       else LhsVar(1) = 2;
-
-       PutLhsVar();
-       /* */
-       return(0);
+  /* declaration of variables to store scilab parameters address */
+  static int lr1,li1,it1,m1, n1; /* Rhs(1) */
+
+  static int it2,m2,n2;   /* Rhs(2) */
+
+  static int it3,m3,n3;           /* Rhs(3) */
+  int mn3;
+
+  static int it4,m4,n4;           /* Rhs(4) */
+  int mn4;
+
+  int *header;
+
+  double         *ptr_d;
+  char           *ptr_c;
+  unsigned char  *ptr_uc;
+  short          *ptr_s;
+  unsigned short *ptr_us;
+  int            *ptr_i;
+  unsigned int   *ptr_ui;
+
+  /* specific declaration for FFTW library variable */
+  fftw_plan p;
+  guru_dim_struct gdim;
+
+  /* input/output address for transform variables */
+  double *ri,*ii,*ro,*io;
+  double *ptr;
+
+  /* local counter variable */
+  int i,j,k;
+
+  /* local variable */
+  int isn,vect;
+  int *n,*nspn;
+  double zero=0.0;
+
+  /****************************************
+   * Basic constraints on rhs parameters  *
+   ****************************************/
+
+  /* check min/max lhs/rhs parameters of scilab funcion */
+  CheckRhs(1,4);
+  CheckLhs(1,1);
+
+  /* 3 rhs not allowed */
+  if (Rhs==3) {
+   Scierror(39,"%s: "
+               "Bad number of Rhs parameters\n",
+               fname);
+   return(0);
+  }
+
+  /* retrieve address of input variable to transform */
+  GetRhsCVar(1, "d", &it1, &m1, &n1, &lr1, &li1);
+
+  /* void input gives void output */
+  if ((m1<1)|(n1<1)) {
+   LhsVar(1)=1;
+   PutLhsVar();
+   return(0);
+  }
+
+  /******************************************
+   * Advanced constraints on rhs parameters *
+   * Get value of rhs parameters            *
+   ******************************************/
+
+  /*only one rhs parameter*/
+  /*forward fft*/
+  if (Rhs==1) {
+   /* sign of the exp. component */
+   isn=-1;
+  }
+  /* two or four rhs parameters case */
+  else {
+   /* Get dim/type of Rhs(2) */
+   header = GetData(2);
+   m2  = header[1];
+   n2  = header[2];
+   it2 = header[3];
+
+   /* */
+   CheckDims(2,m2,n2,1,1);
+
+   /* look at for type of Rhs(2) */
+   if (VarType(2)==8) { /* int */
+    /* */
+    switch (it2)
+    {
+     case I_CHAR   : ptr_c=IC_CHAR(&header[4]);
+                     isn=(int) ptr_c[0];
+                     break;
+     case I_INT16  : ptr_s=IC_INT16(&header[4]);
+                     isn=(int) ptr_s[0];
+                     break;
+     case I_INT32  : ptr_i=IC_INT32(&header[4]);
+                     isn=(int) ptr_i[0];
+                     break;
+     case I_UCHAR  : ptr_uc=IC_UCHAR(&header[4]);
+                     isn=(int) ptr_uc[0];
+                     break;
+     case I_UINT16 : ptr_us=IC_UINT16(&header[4]);
+                     isn=(int) ptr_us[0];
+                     break;
+     case I_UINT32 : ptr_ui=IC_UINT32(&header[4]);
+                     isn=(int) ptr_ui[0];
+                     break;
+    }
+   }
+   else if (VarType(2)==1) { /* double */
+    ptr_d=(double *)(&header[4]);
+    isn=(int)ptr_d[0];
+   }
+   /* if is not int/double then error message */
+   else {
+    Scierror(53,"%s: "
+                "Bad type for Rhs(2) parameter\n",
+                fname);
+    return(0);
+   }
+
+   /* check value of second rhs argument */
+   if ((isn!=1)&&(isn!=-1)) {
+    Scierror(53,"%s: "
+                "Bad value for Rhs(2) parameter\n",
+                fname);
+    return(0);
+   }
+
+   /* four rhs parameters */
+   if (Rhs==4) {
+    /* Get dim/type of Rhs(3) */
+    header = GetData(3);
+    m3  = header[1];
+    n3  = header[2];
+    it3 = header[3];
+
+    /* look at for type of Rhs(3) */
+    if ((VarType(3)!=8)&&(VarType(3)!=1)) {
+     Scierror(53,"%s: "
+                 "Bad type for Rhs(3) parameter\n",
+                 fname);
+     return(0);
+    }
+
+    /* */
+    mn3=m3*n3;
+
+    /* check dims */
+    if (m3*n3==0) {
+     Scierror(999,"%s: "
+                  "Bad size for Rhs(3) parameter\n",
+                  fname);
+     return(0);
+    }
+
+    /* Get dim/type of Rhs(4) */
+    header = GetData(4);
+    m4  = header[1];
+    n4  = header[2];
+    it4 = header[3];
+
+    /* look at for type of Rhs(4) */
+    if ((VarType(4)!=8)&&(VarType(4)!=1)) { /* int */
+     Scierror(53,"%s: "
+                 "Bad type for Rhs(4) parameter\n",
+                 fname);
+     return(0);
+    }
+
+    /* */
+    mn4=m4*n4;
+
+    /* check dims */
+    if (m4*n4==0) {
+     Scierror(999,"%s: "
+                  "Bad size for Rhs(4) parameter\n",
+                  fname);
+     return(0);
+    }
+
+    /* cross variable size checking */
+    if (mn4!=mn3) {
+     Scierror(999,"%s: "
+                  "Size of Rhs(3) and Rhs(4) parameters "
+                  "must be the same\n",
+                   fname);
+     return(0);
+    }
+
+    /* alloc n/nspn with MALLOC */
+    if ((n=(int *)MALLOC(mn4*sizeof(int)))==NULL) {
+     Scierror(999,"%s: "
+                  "Allocation memory error\n",
+                  fname);
+     return(0);
+    }
+
+    if ((nspn=(int *)MALLOC(mn4*sizeof(int)))==NULL) {
+     Scierror(999,"%s: "
+                  "Allocation memory error\n",
+                  fname);
+     FREE(n);
+     return(0);
+    }
+
+    /* n    <- Rhs(3) */
+    /* nspn <- Rhs(4) */
+    /* check values   */
+    for (i=0;i<mn3;i++) {
+     /* Rhs(3) */
+     header = GetData(3);
+
+     switch (VarType(3))
+     {
+      /* double */
+      case 1 :
+      {
+       ptr_d=(double *)(&header[4]);
+       n[i]=(int)ptr_d[i];
+       break;
+      }
+      /* int */
+      case 8 :
+      {
+       switch (it3)
+       {
+        case I_CHAR   : ptr_c=IC_CHAR(&header[4]);
+                        n[i]=(int) ptr_c[i];
+                        break;
+
+        case I_INT16  : ptr_s=IC_INT16(&header[4]);
+                        n[i]=(int) ptr_s[i];
+                        break;
+
+        case I_INT32  : ptr_i=IC_INT32(&header[4]);
+                        n[i]=(int) ptr_i[i];
+                        break;
+
+        case I_UCHAR  : ptr_uc=IC_UCHAR(&header[4]);
+                        n[i]=(int) ptr_uc[i];
+                        break;
+
+        case I_UINT16 : ptr_us=IC_UINT16(&header[4]);
+                        n[i]=(int) ptr_us[i];
+                        break;
+
+        case I_UINT32 : ptr_ui=IC_UINT32(&header[4]);
+                        n[i]=(int) ptr_ui[i];
+                        break;
+       }
+       break;
+      }
+     }
+     /* check value of n[i] */
+     if (n[i]<=0) {
+      Scierror(999,"%s: "
+                   "Bad value for Rhs(3) parameter : %d\n",
+                    fname,n[i]);
+      FREE(n);FREE(nspn);
+      return(0);
+      break;
+     }
+
+     /* Rhs(4) */
+     header = GetData(4);
+
+     switch (VarType(4))
+     {
+      /* double */
+      case 1 :
+      {
+       ptr_d=(double *)(&header[4]);
+       nspn[i]=(int)ptr_d[i];
+       break;
+      }
+      /* int */
+      case 8 :
+      {
+       switch (it4)
+       {
+        case I_CHAR   : ptr_c=IC_CHAR(&header[4]);
+                        nspn[i]=(int) ptr_c[i];
+                        break;
+
+        case I_INT16  : ptr_s=IC_INT16(&header[4]);
+                        nspn[i]=(int) ptr_s[i];
+                        break;
+
+        case I_INT32  : ptr_i=IC_INT32(&header[4]);
+                        nspn[i]=(int) ptr_i[i];
+                        break;
+
+        case I_UCHAR  : ptr_uc=IC_UCHAR(&header[4]);
+                        nspn[i]=(int) ptr_uc[i];
+                        break;
+
+        case I_UINT16 : ptr_us=IC_UINT16(&header[4]);
+                        nspn[i]=(int) ptr_us[i];
+                        break;
+
+        case I_UINT32 : ptr_ui=IC_UINT32(&header[4]);
+                        nspn[i]=(int) ptr_ui[i];
+                        break;
+       }
+       break;
+      }
+     }
+     /* check value of nspn[i] */
+     if (nspn[i]<=0) {
+      Scierror(999,"%s: "
+                   "Bad value for Rhs(4) parameter : %d\n",
+                    fname,nspn[i]);
+      FREE(n);FREE(nspn);
+      return(0);
+      break;
+     }
+
+    }
+   }
+  }
+
+  /*********************************************
+   * Set address of input/ouput array for fftw *
+   *********************************************/
+
+  /* complex data */
+  if (it1==1) {
+   /* set input array address */
+   ri=stk(lr1);
+   ii=stk(li1);
+  }
+  /* real data */
+  else if (it1==0) {
+   /* set input array address */
+   CreateCVar(1, "d", (i=1,&i), &m1, &n1, &lr1,&li1);
+
+   ri=stk(lr1);
+   ii=stk(li1);
+
+   /* set all elements of imaginary parts to 0 */
+   C2F(dset)((i=m1*n1,&i), &zero, ii, (k=1,&k));
+  }
+
+  /* set output array address */
+   ro=ri;
+   io=ii;
+
+  /* reverse address of input/output array
+   * if it is a backward fft
+   */
+  if (isn==1) {
+   /* reverse input */
+   ptr=ri;
+   ri=ii;
+   ii=ptr;
+
+   /* reverse output */
+   ptr=ro;
+   ro=io;
+   io=ptr;
+  }
+
+  /**********************************
+   * Set parameters needed for fftw *
+   **********************************/
+
+  /* check if it is one column or row vector */
+  vect = 0;
+  if ((m1==1)|(n1==1)) vect = 1;
+
+  /* vector transform */
+  if ((vect)&&(Rhs<=2)) {
+   /* set parameters of fftw_plan_guru_split_dft */
+   gdim.rank=1;
+   if ((gdim.dims=(fftw_iodim *)MALLOC(sizeof(fftw_iodim)))==NULL) {
+    Scierror(999,"%s: "
+                 "Allocation memory error\n",
+                 fname);
+    return(0);
+   }
+
+   gdim.dims[0].n = m1*n1;
+   gdim.dims[0].is = 1;
+   gdim.dims[0].os = 1;
+
+   gdim.howmany_rank=0;
+   gdim.howmany_dims=NULL;
+  }
+  else {
+   /* 2D fft */
+   if (Rhs<=2) {
+    /* set parameters of fftw_plan_guru_split_dft */
+    gdim.rank=2;
+    if ((gdim.dims=(fftw_iodim *)MALLOC(sizeof(fftw_iodim)*gdim.rank))==NULL) {
+     Scierror(999,"%s: "
+                  "Allocation memory error\n",
+                  fname);
+     return(0);
+    }
+
+    gdim.dims[0].n = m1;
+    gdim.dims[0].is = 1;
+    gdim.dims[0].os = 1;
+
+    gdim.dims[1].n = n1;
+    gdim.dims[1].is = m1;
+    gdim.dims[1].os = m1;
+
+    gdim.howmany_rank=0;
+    gdim.howmany_dims=NULL;
+   }
+   /* multidimensional fft */
+   else if (Rhs==4) {
+    /* size 1x1 for Rhs(3)/Rhs(4) */
+    if (mn3==1) {
+    /* **This is a special case**
+     * all is made in the following block.
+     * compatibility with scilab fft function.
+     */
+
+     /* set parameters of fftw_plan_guru_split_dft */
+     gdim.rank = 1;
+     if ((gdim.dims=(fftw_iodim *)MALLOC(sizeof(fftw_iodim)))==NULL) {
+      Scierror(999,"%s: "
+                   "Allocation memory error\n",
+                   fname);
+      return(0);
+     }
+
+     gdim.dims[0].n = n[0];
+     gdim.dims[0].is = nspn[0];
+     gdim.dims[0].os = nspn[0];
+
+     gdim.howmany_rank = 1;
+     if ((gdim.howmany_dims=(fftw_iodim *)MALLOC(sizeof(fftw_iodim)))==NULL) {
+      Scierror(999,"%s: "
+                   "Allocation memory error\n",
+                   fname);
+      return(0);
+     }
+
+     /* find number of transforms to compute */
+     gdim.howmany_dims[0].n = 0;
+     j = (n[0]-1)*nspn[0];
+     while(j<((m1*n1)-(nspn[0]-1))) {
+      gdim.howmany_dims[0].n++;
+      j += nspn[0]*n[0];
+     }
+     if (j<=((m1*n1)-(nspn[0]-1)))
+       k = j+nspn[0];
+     else
+       k = j-nspn[0]*n[0]+nspn[0];
+
+     gdim.howmany_dims[0].is = n[0]*nspn[0];
+     gdim.howmany_dims[0].os = n[0]*nspn[0];
+
+     if ((p = GetFFTWPlan(&gdim,
+                          ri, ii, ro, io,
+                          cur_fftw_flags,isn)) == NULL) {
+      Scierror(999,"%s: "
+                   "Allocation memory error\n",
+                   fname);
+      FREE(gdim.dims);
+      FREE(gdim.howmany_dims);
+      return(0);
+     }
+     else {
+      if (isn==1) { /* backward */
+       double ak;
+
+       ak=1/((double)(n[0]));
+
+       /* must find a BLAS/calelm function to do that */
+       for(i=0;i<k;i++) {
+        ri[i]=ri[i]*ak;
+        ii[i]=ii[i]*ak;
+       }
+      }
+
+      /* */
+      for(i=0;i<nspn[0];i++)
+        call_fftw_execute_split_dft(p,&ri[i],&ii[i],&ro[i],&io[i]);
+
+      /* */
+      FREE(gdim.dims);
+      FREE(gdim.howmany_dims);
+      FREE(n);FREE(nspn);
+
+      LhsVar(1) = 1;
+
+      PutLhsVar();
+
+      return(0);
+     }
+    }
+
+    /* size mxn Rhs(3)/Rhs(4)  */
+    else {
+      /* set parameters of fftw_plan_guru_split_dft */
+      gdim.rank=mn3;
+      if ((gdim.dims=(fftw_iodim *)MALLOC(sizeof(fftw_iodim)*gdim.rank))==NULL) {
+       Scierror(999,"%s: "
+                    "Allocation memory error\n",
+                    fname);
+       return(0);
+      }
+
+      /* */
+      for(j=0;j<gdim.rank;j++) {
+       gdim.dims[j].n = n[j];
+       gdim.dims[j].is = nspn[j];
+       gdim.dims[j].os = nspn[j];
+      }
+
+      gdim.howmany_rank=0;
+      gdim.howmany_dims=NULL;
+    }
+
+   }
+  }
+
+  /*****************
+   * Get fftw plan *
+   *****************/
+
+  /* call GetFFTWPlan */
+  if ((p = GetFFTWPlan(&gdim,
+                       ri, ii, ro, io,
+                       cur_fftw_flags,isn)) == NULL) {
+   Scierror(999,"%s: "
+                "Allocation memory error\n",
+                fname);
+   FREE(gdim.dims);
+   FREE(gdim.howmany_dims);
+   return(0);
+  }
+
+  /* */
+  FREE(gdim.dims);
+  FREE(gdim.howmany_dims);
+
+  /***************
+   * Compute fft *
+   ***************/
+
+  if (isn==1) { /* backward */
+   /* */
+   double ak;
+
+   if (Rhs==4) {
+    ak = 1;
+    for(i=0;i<mn3;i++) ak=ak*1/((double)(n[i]));
+    FREE(n);FREE(nspn);
+   }
+   else {
+    ak = 1/((double)(m1*n1));
+   }
+
+   /* must find a BLAS/calelm function to do that */
+   for(i=0;i<m1*n1;i++) {
+    ri[i]=ri[i]*ak;
+    ii[i]=ii[i]*ak;
+   }
+  }
+
+  /* execute FFTW plan */
+  call_fftw_execute_split_dft(p,ri,ii,ro,io);
+
+  /***********************************
+   * Return results in lhs parameter *
+   ***********************************/
+
+  LhsVar(1) = 1;
+
+  PutLhsVar();
+
+  return(0);
 }
 /*-----------------------------------------------------------------------------------*/ 
index 30e170f..637184d 100644 (file)
@@ -1,15 +1,16 @@
 /*-----------------------------------------------------------------------------------*/ 
 /* INRIA 2006 */
-/* ALAN LAYEC initial revision  : 30/09/06 fftw3 toolbox*/
+/* Alan Layec :  - initial revision  : 30/09/06 fftw3 toolbox*/
+/*               - revision : 18/04/07 */
 /* Allan CORNET scilab module */
 /*-----------------------------------------------------------------------------------*/ 
 #include "sci_fftw_flags.h"
 #include "fftw_utilities.h"
 #include "MALLOC.h"
 #include "gw_fftw.h"
-/*-----------------------------------------------------------------------------------*/ 
-extern FFTW_Plan_struct Sci_Plan;
-/*-----------------------------------------------------------------------------------*/ 
+/*-----------------------------------------------------------------------------------*/
+extern unsigned cur_fftw_flags;
+/*-----------------------------------------------------------------------------------*/
 /* fftw_flags function.
 *
 * Scilab Calling sequence :
@@ -97,85 +98,56 @@ int sci_fftw_flags __PARAMS((char *fname,unsigned long fname_len))
 
   unsigned flagv=0;
 
-  /* local counter variable */
   int i,j;
 
-  /* check min/max rhs parameters of scilab funcion */
   CheckRhs(0,1);
 
-  /* */
-  if (Rhs==0)
-  {
+  if (Rhs==0) {
 
   }
-  else
-  {
-   /* int */
-   if (VarType(1)==8)
-   {
-    /* */
+  else {
+   if (VarType(1)==8) { /* int */
     GetRhsVar(1, "I", &m1, &n1, &M1);
-
-    /* */
     CheckDims(1,m1,n1,1,1);
-
-    /* */
-    Sci_Plan.flags=((int *)M1.D)[0];
-
+    cur_fftw_flags=((int *)M1.D)[0];
    }
-   else if (VarType(1)==1)  /* double */
-   {
-    /* */
+   else if (VarType(1)==1) { /* double */
     GetRhsVar(1, "d", &m1, &n1, &l1);
-
-    /* */
     CheckDims(1,m1,n1,1,1);
-
-    /* */
-    Sci_Plan.flags=(int)*stk(l1);
+    cur_fftw_flags=(int)*stk(l1);
    }
-   else if (VarType(1)==10)  /* string */
-   {
-    /* */
+   else if (VarType(1)==10) { /* string */
     GetRhsVar(1,"S",&m1,&n1,&Str1);
 
-    /* pass */
-    for (j=0;j<m1*n1;j++)
-    {
-     for (i=0;i<nb_flag;i++)
-     {
+    for (j=0;j<m1*n1;j++) {
+     for (i=0;i<nb_flag;i++) {
       if (strcmp(Str1[j],Str[i])==0) break;
      }
-     if (i==nb_flag)
-     {
+     if (i==nb_flag) {
       Scierror(999,"%s: "
                    "Bad flag %s for Rhs(1) parameter\n",
                   fname,Str1[j]);
       return(0);
      }
-     else
-     {
+     else {
       if (i>0) flagv=flagv|(1U << (i-1));
      }
     }
-    Sci_Plan.flags = flagv;
-       if (Str1) for (i = 0; i<m1*n1 ;i++)
-       {
-               if (Str1[i]) 
-               {
-                       FREE(Str1[i]);
-                       Str1[i]=NULL;
-               }
-       }
-       if (Str1) {FREE(Str1); Str1=NULL;}
+    cur_fftw_flags = flagv;
+    /* FreeRhsSVar(Str1);*/
+    if (Str1) for (i = 0; i<m1*n1 ;i++) {
+      if (Str1[i]) {
+         FREE(Str1[i]);
+         Str1[i]=NULL;
+      }
+    }
+    if (Str1) {FREE(Str1); Str1=NULL;}
    }
 
-   else
-   {
+   else {
     Scierror(53,"%s: "
                 "Bad type for Rhs(1) parameter\n",
                 fname);
-
     return(0);
    }
   }
@@ -184,50 +156,64 @@ int sci_fftw_flags __PARAMS((char *fname,unsigned long fname_len))
   m2 = 1;
   n2 = m2;
   l2 = I_INT32;
+  /*CreateVar(2,"I",&m2,&n2,&l2);*/
   CreateVar(Rhs+2,"I",&m2,&n2,&l2);
-  *istk(l2)=(int) Sci_Plan.flags;
-
-  /* */
-  j=0;
-
-  for (i=0;i<nb_flag;i++)
-  {
-   /*  */
-   if((Sci_Plan.flags&flagt[i])==flagt[i])
-   {
-    j++;
-    if ((Str3=(char **)REALLOC(Str3,sizeof(char *)*j)) == NULL)
-    {
-      Scierror(999,"%s: "
-                   "Memory allocation error\n",
-                   fname);
-      return(0);
-    }
-    len=(int)strlen(Str[i]);
-    if ((Str3[j-1]=(char *)MALLOC(sizeof(char)*(len+1))) == NULL)
-    {
-      Scierror(999,"%s: "
-                   "Memory allocation error\n",
-                   fname);
-      return(0);
+  *istk(l2)=(int) cur_fftw_flags;
+
+  /*Test for only FFTW_MEASURE*/
+  if(cur_fftw_flags==0) {
+   j = 1;
+   if ((Str3 = (char **)MALLOC(sizeof(char *))) == NULL) {
+     Scierror(999,"%s: "
+                  "Memory allocation error\n",
+                  fname);
+     return(0);
+   }
+   len = strlen(Str[0]);
+   if ((Str3[0] = (char *)MALLOC(sizeof(char)*(len+1))) == NULL) {
+     Scierror(999,"%s: "
+                  "Memory allocation error\n",
+                  fname);
+     return(0);
+   }
+   sprintf(Str3[0],"%s",Str[0]);
+  }
+  else {
+   j = 0;
+   for (i = 1;i < nb_flag; i++) {
+    if((cur_fftw_flags&flagt[i])==flagt[i]) {
+     j++;
+     if ((Str3 = (char **)REALLOC(Str3,sizeof(char *)*j)) == NULL) {
+       Scierror(999,"%s: "
+                    "Memory allocation error\n",
+                    fname);
+       return(0);
+     }
+     len = strlen(Str[i]);
+     if ((Str3[j-1] = (char *)MALLOC(sizeof(char)*(len+1))) == NULL) {
+       Scierror(999,"%s: "
+                    "Memory allocation error\n",
+                    fname);
+       return(0);
+     }
+     sprintf(Str3[j-1],"%s",Str[i]);
     }
-    sprintf(Str3[j-1],"%s",Str[i]);
    }
   }
 
-  /* */
   n1=1;
+  /*CreateVarFromPtr( 3, "S", &j, &n1, Str3);*/
   CreateVarFromPtr( Rhs+3, "S", &j, &n1, Str3);
 
-  /* */
+  /*LhsVar(1)=2;*/
+  /*LhsVar(2)=3;*/
   LhsVar(1)=Rhs+2;
   LhsVar(2)=Rhs+3;
   PutLhsVar();
-  /* */
+
   for (i=0;i<j;i++) FREE(Str3[i]);
   FREE(Str3);
 
-  /* */
   return(0);
 }
 /*-----------------------------------------------------------------------------------*/ 
diff --git a/scilab/modules/fftw/sci_gateway/c/sci_fftw_forget_wisdom.c b/scilab/modules/fftw/sci_gateway/c/sci_fftw_forget_wisdom.c
new file mode 100644 (file)
index 0000000..736b8e9
--- /dev/null
@@ -0,0 +1,39 @@
+/*-----------------------------------------------------------------------------------*/
+/* INRIA 2007 */
+/* Alan Layec : - initial  revision : 18/04/07 */
+/* Allan CORNET scilab module */
+/*-----------------------------------------------------------------------------------*/
+#include "sci_fftw_forget_wisdom.h"
+#include "fftw_utilities.h"
+#include "callfftw.h"
+#include "MALLOC.h"
+#include "gw_fftw.h"
+/*-----------------------------------------------------------------------------------*/
+extern FFTW_Plan_struct Sci_Forward_Plan;
+extern FFTW_Plan_struct Sci_Backward_Plan;
+/*-----------------------------------------------------------------------------------*/
+
+/* Reset fftw wisdom
+ *
+ * Scilab Calling sequence :
+ *   -->fftw_forget_wisdom();
+ *
+ * Input : Nothing
+ *
+ * Output : Nothing
+ *
+ */
+int sci_fftw_forget_wisdom __PARAMS((char *fname,unsigned long fname_len))
+{
+ CheckRhs(0,0);
+
+ FreeFFTWPlan(&Sci_Backward_Plan);
+ FreeFFTWPlan(&Sci_Forward_Plan);
+
+ call_fftw_forget_wisdom();
+
+ PutLhsVar();
+
+ return(0);
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/scilab/modules/fftw/sci_gateway/c/sci_fftw_inplace.c b/scilab/modules/fftw/sci_gateway/c/sci_fftw_inplace.c
deleted file mode 100644 (file)
index 84337f2..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-----------------------------------------------------------------------------------*/ 
-/* INRIA 2006 */
-/* ALAN LAYEC initial revision  : 30/09/06 fftw3 toolbox*/
-/* Allan CORNET scilab module */
-/*-----------------------------------------------------------------------------------*/ 
-#include "sci_fftw_inplace.h"
-#include "fftw_utilities.h"
-#include "gw_fftw.h"
-/*-----------------------------------------------------------------------------------*/ 
-extern FFTW_Plan_struct Sci_Plan;
-/*-----------------------------------------------------------------------------------*/ 
-/* fftw_inplace function.
-*
-* Scilab Calling sequence :
-*   -->[a]=fftw_inplace();
-* or
-*   -->[a]=fftw_inplace(b);
-*
-* with a and b boolean scalar.
-*
-* give and set if fftw works in place.
-* (default is true)
-*/
-int sci_fftw_inplace __PARAMS((char *fname,unsigned long fname_len))
-{
-       static int l1, l2, m1, n1;
-
-       CheckRhs(0,1);
-
-       if (Rhs==1)
-       {
-               GetRhsVar(1,"b",&m1,&n1,&l1);
-
-               CheckDims(1,m1,n1,1,1);
-
-               Sci_Plan.in=*istk(l1);
-       }
-
-       /* */
-       m1=1;n1=m1;
-       CreateVar(Rhs+2, "b",&m1,&n1,&l2)
-               *istk(l2)=Sci_Plan.in;
-
-       /* */
-       LhsVar(1)=Rhs+2;
-       PutLhsVar();
-       /* */
-       return(0);
-}
-/*-----------------------------------------------------------------------------------*/ 
diff --git a/scilab/modules/fftw/sci_gateway/c/sci_fftw_norm.c b/scilab/modules/fftw/sci_gateway/c/sci_fftw_norm.c
deleted file mode 100644 (file)
index 408ddc6..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*-----------------------------------------------------------------------------------*/ 
-/* INRIA 2006 */
-/* ALAN LAYEC initial revision  : 30/09/06 fftw3 toolbox*/
-/* Allan CORNET scilab module */
-/*-----------------------------------------------------------------------------------*/ 
-#include "sci_fftw_norm.h"
-#include "fftw_utilities.h"
-#include "gw_fftw.h"
-/*-----------------------------------------------------------------------------------*/ 
-extern FFTW_Plan_struct Sci_Plan;
-/*-----------------------------------------------------------------------------------*/ 
-/* fftw_norm function.
-*
-* Scilab Calling sequence :
-*   -->[a]=fftw_norm();
-* or
-*   -->[a]=fftw_norm(b);
-*
-* with a and b boolean scalar.
-*
-* give and set if scilab fftw function
-* compute normalized ifft.
-* (default is true)
-*
-*/
-int sci_fftw_norm __PARAMS((char *fname,unsigned long fname_len))
-{
-       static int l1, l2, m1, n1;
-
-       CheckRhs(0,1);
-
-       if (Rhs==1)
-       {
-               GetRhsVar(1,"b",&m1,&n1,&l1);
-
-               CheckDims(1,m1,n1,1,1);
-
-               Sci_Plan.norm=*istk(l1);
-       }
-
-       /* */
-       m1=1;n1=m1;
-       CreateVar(Rhs+2, "b",&m1,&n1,&l2)
-               *istk(l2)=Sci_Plan.norm;
-
-       /* */
-       LhsVar(1)=Rhs+2;
-       PutLhsVar();
-       /* */
-       return(0);
-}
-/*-----------------------------------------------------------------------------------*/ 
diff --git a/scilab/modules/fftw/sci_gateway/c/sci_freefftw_plan.c b/scilab/modules/fftw/sci_gateway/c/sci_freefftw_plan.c
deleted file mode 100644 (file)
index 81e7f4f..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*-----------------------------------------------------------------------------------*/ 
-/* INRIA 2006 */
-/* ALAN LAYEC initial revision  : 30/09/06 fftw3 toolbox*/
-/* Allan CORNET scilab module */
-/*-----------------------------------------------------------------------------------*/ 
-#include "sci_freefftw_plan.h"
-#include "fftw_utilities.h"
-#include "gw_fftw.h"
-/*-----------------------------------------------------------------------------------*/ 
-extern FFTW_Plan_struct Sci_Plan;
-/*-----------------------------------------------------------------------------------*/ 
-/* freefftw_plan function.
-*
-* Scilab Calling sequence :
-*   -->[a]=freefftw_plan();
-*
-*  a is an double scalar given the
-*  current plan number stored in
-*  Sci_Plan structure. (always 0!)
-*
-* free all the static structure Sci_Plan.
-*
-*/
-int sci_freefftw_plan __PARAMS((char *fname,unsigned long fname_len))
-{
-       static int l1, m1, n1;
-
-       CheckLhs(0,1);
-
-       /* */
-       FreeFTTWPlan();
-
-       /* */
-       m1=1;n1=m1;
-       CreateVar( Rhs+1, "d", &m1, &n1, &l1);
-       *stk(l1)=Sci_Plan.nb_CPlan;
-
-       /* */
-       LhsVar(1)=Rhs+1;
-       PutLhsVar();
-       /* */
-       return(0);
-}
-/*-----------------------------------------------------------------------------------*/ 
diff --git a/scilab/modules/fftw/sci_gateway/c/sci_get_fftw_wisdom.c b/scilab/modules/fftw/sci_gateway/c/sci_get_fftw_wisdom.c
new file mode 100644 (file)
index 0000000..10621dc
--- /dev/null
@@ -0,0 +1,84 @@
+/*-----------------------------------------------------------------------------------*/
+/* INRIA 2007 */
+/* Alan Layec : - initial  revision : 18/04/07 */
+/* Allan CORNET scilab module */
+/*-----------------------------------------------------------------------------------*/
+#include "sci_get_fftw_wisdom.h"
+#include "callfftw.h"
+#include "MALLOC.h"
+#include "gw_fftw.h"
+/*-----------------------------------------------------------------------------------*/
+
+/* Return text of fftw wisdom
+ *
+ * Scilab Calling sequence :
+ *   -->tt=get_fftw_wisdom();
+ *
+ * Input : Nothing
+ *
+ * Output : a scilab string matrix
+ *
+ */
+int sci_get_fftw_wisdom __PARAMS((char *fname,unsigned long fname_len))
+{
+  int n1,i,j,k,len;
+  char *Str;
+  char **Str1=NULL;
+
+  CheckRhs(0,0);
+  CheckLhs(0,1);
+
+  Str=call_fftw_export_wisdom_to_string();
+
+  n1 = 0; j = 0;
+  for(i = 0; i < strlen(Str); i++) {
+   if (Str[i] == '\n') {
+     n1++;
+     if ((Str1 = (char **)REALLOC(Str1,sizeof(char *)*n1)) == NULL) {
+       Scierror(999,"%s: "
+                    "Memory allocation error\n",
+                    fname);
+       return(0);
+     }
+     len = i-j;
+     if ((Str1[n1-1] = (char *)MALLOC(sizeof(char)*(len+1))) == NULL) {
+       Scierror(999,"%s: "
+                    "Memory allocation error\n",
+                    fname);
+       return(0);
+     }
+     for(k = 0; k < len;k++) {
+      Str1[n1-1][k] = Str[k+j];
+     }
+     Str1[n1-1][len] = '\0';
+     j = i+1;
+    }
+  }
+
+  n1++;
+  if ((Str1 = (char **)REALLOC(Str1,sizeof(char *)*n1)) == NULL) {
+     Scierror(999,"%s: "
+                  "Memory allocation error\n",
+                  fname);
+     return(0);
+  }
+  if ((Str1[n1-1] = (char *)MALLOC(sizeof(char))) == NULL) {
+     Scierror(999,"%s: "
+                  "Memory allocation error\n",
+                  fname);
+     return(0);
+  }
+  Str1[n1-1][0] = '\0';
+
+  CreateVarFromPtr(1, "S", &n1, (j=1,&j), Str1);
+
+  LhsVar(1)=1;
+
+  PutLhsVar();
+
+  for (i = 0; i < n1; i++) FREE(Str1[i]);
+  FREE(Str1);
+
+  return(0);
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/scilab/modules/fftw/sci_gateway/c/sci_pushfftw_plan.c b/scilab/modules/fftw/sci_gateway/c/sci_pushfftw_plan.c
deleted file mode 100644 (file)
index 9203ecc..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-----------------------------------------------------------------------------------*/ 
-/* INRIA 2006 */
-/* ALAN LAYEC initial revision  : 30/09/06 fftw3 toolbox*/
-/* Allan CORNET scilab module */
-/*-----------------------------------------------------------------------------------*/ 
-#include "sci_pushfftw_plan.h"
-#include "fftw_utilities.h"
-#include "gw_fftw.h"
-/*-----------------------------------------------------------------------------------*/ 
-extern FFTW_Plan_struct Sci_Plan;
-/*-----------------------------------------------------------------------------------*/ 
-/* pushfftw_plan function.
-*
-* Scilab Calling sequence :
-*   -->[a]=pushfftw_plan();
-*
-*  a is a double scalar given the
-*  current plan number stored in
-*  Sci_Plan structure.
-*
-*  store the last created plan in memory
-*  to reuse-it.
-*  It should be used when fftw is called
-*  many times with many set of parameters...
-*
-*/
-int sci_pushfftw_plan __PARAMS((char *fname,unsigned long fname_len))
-{
-       static int l1, m1, n1;
-
-       CheckLhs(0,1);
-
-       /* */
-       FreeFTTWPlan();
-
-       /* */
-       m1=1;n1=m1;
-       CreateVar(Rhs+ 1, "d", &m1, &n1, &l1);
-       *stk(l1)=Sci_Plan.nb_CPlan;
-
-       /* */
-       LhsVar(1)=Rhs+1;
-       PutLhsVar();
-       /* */
-       return(0);
-}
-/*-----------------------------------------------------------------------------------*/ 
diff --git a/scilab/modules/fftw/sci_gateway/c/sci_set_fftw_wisdom.c b/scilab/modules/fftw/sci_gateway/c/sci_set_fftw_wisdom.c
new file mode 100644 (file)
index 0000000..78d8363
--- /dev/null
@@ -0,0 +1,76 @@
+/*-----------------------------------------------------------------------------------*/
+/* INRIA 2007 */
+/* Alan Layec : - initial  revision : 18/04/07 */
+/* Allan CORNET scilab module */
+/*-----------------------------------------------------------------------------------*/
+#include "sci_set_fftw_wisdom.h"
+#include "callfftw.h"
+#include "MALLOC.h"
+#include "gw_fftw.h"
+/*-----------------------------------------------------------------------------------*/
+
+/* Set fftw wisdom
+ *
+ * Scilab Calling sequence :
+ *   -->set_fftw_wisdom(txt);
+ *
+ * Input : a scilab string matrix
+ *
+ * Output : Nothing or an error messsage if
+ *          wisdom can't be read by fftw
+ *
+ */
+int sci_set_fftw_wisdom __PARAMS((char *fname,unsigned long fname_len))
+{
+ int m1,n1,i,j,k,len;
+ char **Str1;
+ char *Str=NULL;
+
+ CheckRhs(1,1);
+
+ if (VarType(1)==10) {
+
+  GetRhsVar(1,"S",&m1,&n1,&Str1);
+
+  len = 0; k = 0;
+  for (j = 0; j < m1*n1; j++) {
+    len += strlen(Str1[j])+1;
+    if ((Str = (char *)REALLOC(Str,sizeof(char)*(len))) == NULL) {
+       Scierror(999,"%s: "
+                    "Memory allocation error\n",
+                    fname);
+       return(0);
+    }
+    for (i = 0; i < strlen(Str1[j]); i++) {
+     Str[k+i] = Str1[j][i];
+    }
+    Str[k+strlen(Str1[j])] = '\n';
+    k += strlen(Str1[j])+1;
+  }
+  Str[k-1] = '\0';
+
+  /*FreeRhsSVar(Str1);*/
+  if (Str1) for (i = 0; i<m1*n1 ;i++) {
+    if (Str1[i]) {
+       FREE(Str1[i]);
+       Str1[i]=NULL;
+    }
+  }
+  if (Str1) {FREE(Str1); Str1=NULL;}
+
+  if(!(call_fftw_import_wisdom_from_string(Str))) {
+   Scierror(999,"%s: "
+                "FFTW can't read wisdom\n",
+                 fname);
+  }
+  FREE(Str);
+ }
+ else {
+  Scierror(999,"%s: "
+                "Bad Rhs type parameter\n",
+                fname);
+ }
+ PutLhsVar();
+ return(0);
+}
+/*-----------------------------------------------------------------------------------*/
index f286081..ae282a5 100644 (file)
@@ -29,8 +29,7 @@
 <PRIMITIVE gatewayId="51" primitiveId="3" primitiveName="fftwlibraryisloaded" />
 <PRIMITIVE gatewayId="51" primitiveId="4" primitiveName="fftw" />
 <PRIMITIVE gatewayId="51" primitiveId="5" primitiveName="fftw_flags" />
-<PRIMITIVE gatewayId="51" primitiveId="6" primitiveName="fftw_inplace" />
-<PRIMITIVE gatewayId="51" primitiveId="7" primitiveName="fftw_norm" />
-<PRIMITIVE gatewayId="51" primitiveId="8" primitiveName="pushfftw_plan" />
-<PRIMITIVE gatewayId="51" primitiveId="9" primitiveName="freefftw_plan" />
+<PRIMITIVE gatewayId="51" primitiveId="6" primitiveName="get_fftw_wisdom" />
+<PRIMITIVE gatewayId="51" primitiveId="7" primitiveName="set_fftw_wisdom" />
+<PRIMITIVE gatewayId="51" primitiveId="8" primitiveName="fftw_forget_wisdom" />
 </GATEWAY>
\ No newline at end of file
index 2c8711c..8a6ae7a 100644 (file)
@@ -14,11 +14,17 @@ BOOL LoadFFTWLibrary(char *libraryname);
 /*-----------------------------------------------------------------------------------*/
 BOOL DisposeFFTWLibrary(void);
 /*-----------------------------------------------------------------------------------*/
-void  call_fftw_execute_split_dft (const fftw_plan p, double *ri, double *ii, double *ro, double *io); 
+void call_fftw_execute_split_dft (const fftw_plan p, double *ri, double *ii, double *ro, double *io); 
 /*-----------------------------------------------------------------------------------*/
-fftw_plan  call_fftw_plan_guru_split_dft (int rank, const fftw_iodim *dims, int howmany_rank, const fftw_iodim *howmany_dims, double *ri, double *ii, double *ro, double *io, unsigned flags) ;
+fftw_plan call_fftw_plan_guru_split_dft (int rank, const fftw_iodim *dims, int howmany_rank, const fftw_iodim *howmany_dims, double *ri, double *ii, double *ro, double *io, unsigned flags) ;
 /*-----------------------------------------------------------------------------------*/
-void  call_fftw_destroy_plan (fftw_plan p); 
+void call_fftw_destroy_plan (fftw_plan p); 
+/*-----------------------------------------------------------------------------------*/
+char *call_fftw_export_wisdom_to_string (void);
+/*-----------------------------------------------------------------------------------*/
+int call_fftw_import_wisdom_from_string (const char *input_string);
+/*-----------------------------------------------------------------------------------*/
+void call_fftw_forget_wisdom (void);
 /*-----------------------------------------------------------------------------------*/
 #endif /* __CALLFFTW_H__ */
 /*-----------------------------------------------------------------------------------*/
index ab5f6f5..f63d897 100644 (file)
@@ -8,17 +8,27 @@
 /*-----------------------------------------------------------------------------------*/
 typedef void (*PROC_FFTW_EXECUTE_SPLIT_DFT) (const fftw_plan p, double *ri, double *ii, double *ro, double *io);
 typedef fftw_plan (*PROC_FFTW_PLAN_GURU_SPLIT_DFT) (int rank, const fftw_iodim *dims, int howmany_rank, const fftw_iodim *howmany_dims, double *ri, double *ii, double *ro, double *io, unsigned flags);
-typedef void (*PROC_FFTW_DESTROY_PLAN) (fftw_plan p) ;
+typedef void (*PROC_FFTW_DESTROY_PLAN) (fftw_plan p);
+
+typedef char *(*PROC_FFTW_EXPORT_WISDOM_TO_STRING) (void);
+typedef int (*PROC_FFTW_IMPORT_WISDOM_FROM_STRING) (const char *input_string);
+typedef void (*PROC_FFTW_FORGET_WISDOM) (void);
 /*-----------------------------------------------------------------------------------*/
 static void *hinstLib = NULL;
 static PROC_FFTW_EXECUTE_SPLIT_DFT MY_FFTW_EXECUTE_SPLIT_DFT=NULL;
 static PROC_FFTW_PLAN_GURU_SPLIT_DFT MY_FFTW_PLAN_GURU_SPLIT_DFT=NULL;
 static PROC_FFTW_DESTROY_PLAN MY_FFTW_DESTROY_PLAN=NULL;
+
+static PROC_FFTW_EXPORT_WISDOM_TO_STRING MY_FFTW_EXPORT_WISDOM_TO_STRING=NULL;
+static PROC_FFTW_IMPORT_WISDOM_FROM_STRING MY_FFTW_IMPORT_WISDOM_FROM_STRING=NULL;
+static PROC_FFTW_FORGET_WISDOM MY_FFTW_FORGET_WISDOM=NULL;
 /*-----------------------------------------------------------------------------------*/
 BOOL IsLoadedFFTW(void)
 {
        BOOL bOK=FALSE;
-       if ( (MY_FFTW_EXECUTE_SPLIT_DFT) && (MY_FFTW_PLAN_GURU_SPLIT_DFT) && (MY_FFTW_DESTROY_PLAN) ) bOK=TRUE;
+       if ( (MY_FFTW_EXECUTE_SPLIT_DFT) && (MY_FFTW_PLAN_GURU_SPLIT_DFT) && (MY_FFTW_DESTROY_PLAN) &&\
+             (MY_FFTW_EXPORT_WISDOM_TO_STRING) && (MY_FFTW_IMPORT_WISDOM_FROM_STRING) &&\
+             (MY_FFTW_FORGET_WISDOM) ) bOK=TRUE;
        return bOK;
 }
 /*-----------------------------------------------------------------------------------*/
@@ -34,12 +44,22 @@ BOOL LoadFFTWLibrary(char *libraryname)
                MY_FFTW_PLAN_GURU_SPLIT_DFT=NULL;
                MY_FFTW_DESTROY_PLAN=NULL;
 
+                MY_FFTW_EXPORT_WISDOM_TO_STRING=NULL;
+                MY_FFTW_IMPORT_WISDOM_FROM_STRING=NULL;
+                MY_FFTW_FORGET_WISDOM=NULL;
+
                MY_FFTW_EXECUTE_SPLIT_DFT = (PROC_FFTW_EXECUTE_SPLIT_DFT) dlsym(hinstLib,"fftw_execute_split_dft");
                MY_FFTW_PLAN_GURU_SPLIT_DFT = (PROC_FFTW_PLAN_GURU_SPLIT_DFT) dlsym(hinstLib,"fftw_plan_guru_split_dft");
                MY_FFTW_DESTROY_PLAN = (PROC_FFTW_DESTROY_PLAN) dlsym(hinstLib,"fftw_destroy_plan");
+
+                MY_FFTW_EXPORT_WISDOM_TO_STRING = (PROC_FFTW_EXPORT_WISDOM_TO_STRING) dlsym(hinstLib,"fftw_export_wisdom_to_string");
+                MY_FFTW_IMPORT_WISDOM_FROM_STRING = (PROC_FFTW_IMPORT_WISDOM_FROM_STRING) dlsym(hinstLib,"fftw_import_wisdom_from_string");
+                MY_FFTW_FORGET_WISDOM = (PROC_FFTW_FORGET_WISDOM) dlsym(hinstLib,"fftw_forget_wisdom");
        }
 
-       if ( MY_FFTW_EXECUTE_SPLIT_DFT && MY_FFTW_PLAN_GURU_SPLIT_DFT && MY_FFTW_DESTROY_PLAN )
+       if ( MY_FFTW_EXECUTE_SPLIT_DFT && MY_FFTW_PLAN_GURU_SPLIT_DFT && MY_FFTW_DESTROY_PLAN &&\
+             MY_FFTW_EXPORT_WISDOM_TO_STRING && MY_FFTW_IMPORT_WISDOM_FROM_STRING &&\
+             MY_FFTW_FORGET_WISDOM )
        {
                bOK=TRUE;
        }
@@ -61,7 +81,13 @@ BOOL DisposeFFTWLibrary(void)
        if (MY_FFTW_PLAN_GURU_SPLIT_DFT) MY_FFTW_PLAN_GURU_SPLIT_DFT=NULL;
        if (MY_FFTW_DESTROY_PLAN) MY_FFTW_DESTROY_PLAN=NULL;
 
-       if ( !MY_FFTW_EXECUTE_SPLIT_DFT && !MY_FFTW_PLAN_GURU_SPLIT_DFT && !MY_FFTW_DESTROY_PLAN )
+        if (MY_FFTW_EXPORT_WISDOM_TO_STRING) MY_FFTW_EXPORT_WISDOM_TO_STRING=NULL;
+        if (MY_FFTW_IMPORT_WISDOM_FROM_STRING) MY_FFTW_IMPORT_WISDOM_FROM_STRING=NULL;
+        if (MY_FFTW_FORGET_WISDOM) MY_FFTW_FORGET_WISDOM=NULL;
+
+       if ( !MY_FFTW_EXECUTE_SPLIT_DFT && !MY_FFTW_PLAN_GURU_SPLIT_DFT && !MY_FFTW_DESTROY_PLAN &&\
+             !MY_FFTW_EXPORT_WISDOM_TO_STRING && !MY_FFTW_IMPORT_WISDOM_FROM_STRING &&\
+             !MY_FFTW_FORGET_WISDOM )
        {
                bOK=TRUE;
        }
@@ -94,3 +120,28 @@ void call_fftw_destroy_plan (fftw_plan p)
        }
 }
 /*-----------------------------------------------------------------------------------*/
+char *call_fftw_export_wisdom_to_string (void)
+{
+       if (MY_FFTW_EXPORT_WISDOM_TO_STRING)
+       {
+               return (char *)(MY_FFTW_EXPORT_WISDOM_TO_STRING)();
+       }
+}
+/*-----------------------------------------------------------------------------------*/
+int call_fftw_import_wisdom_from_string (const char *input_string)
+{
+       if (MY_FFTW_IMPORT_WISDOM_FROM_STRING)
+       {
+               return (int)(MY_FFTW_IMPORT_WISDOM_FROM_STRING)(input_string);
+       }
+}
+/*-----------------------------------------------------------------------------------*/
+void call_fftw_forget_wisdom (void)
+{
+       if (MY_FFTW_FORGET_WISDOM)
+       {
+               (MY_FFTW_FORGET_WISDOM)();
+       }
+}
+/*-----------------------------------------------------------------------------------*/
+
index f57197a..f89a82b 100644 (file)
@@ -8,17 +8,27 @@
 /*-----------------------------------------------------------------------------------*/
 typedef void (*PROC_FFTW_EXECUTE_SPLIT_DFT) (const fftw_plan p, double *ri, double *ii, double *ro, double *io);
 typedef fftw_plan (*PROC_FFTW_PLAN_GURU_SPLIT_DFT) (int rank, const fftw_iodim *dims, int howmany_rank, const fftw_iodim *howmany_dims, double *ri, double *ii, double *ro, double *io, unsigned flags);
-typedef void (*PROC_FFTW_DESTROY_PLAN) (fftw_plan p) ;
+typedef void (*PROC_FFTW_DESTROY_PLAN) (fftw_plan p);
+
+typedef char *(*PROC_FFTW_EXPORT_WISDOM_TO_STRING) (void);
+typedef int (*PROC_FFTW_IMPORT_WISDOM_FROM_STRING) (const char *input_string);
+typedef void (*PROC_FFTW_FORGET_WISDOM) (void);
 /*-----------------------------------------------------------------------------------*/
 static HINSTANCE hinstLib=NULL; 
 static PROC_FFTW_EXECUTE_SPLIT_DFT MY_FFTW_EXECUTE_SPLIT_DFT=NULL;
 static PROC_FFTW_PLAN_GURU_SPLIT_DFT MY_FFTW_PLAN_GURU_SPLIT_DFT=NULL;
 static PROC_FFTW_DESTROY_PLAN MY_FFTW_DESTROY_PLAN=NULL;
+
+static PROC_FFTW_EXPORT_WISDOM_TO_STRING MY_FFTW_EXPORT_WISDOM_TO_STRING=NULL;
+static PROC_FFTW_IMPORT_WISDOM_FROM_STRING MY_FFTW_IMPORT_WISDOM_FROM_STRING=NULL;
+static PROC_FFTW_FORGET_WISDOM MY_FFTW_FORGET_WISDOM=NULL;
 /*-----------------------------------------------------------------------------------*/
 BOOL IsLoadedFFTW(void)
 {
        BOOL bOK=FALSE;
-       if ( (MY_FFTW_EXECUTE_SPLIT_DFT) && (MY_FFTW_PLAN_GURU_SPLIT_DFT) && (MY_FFTW_DESTROY_PLAN) ) bOK=TRUE;
+       if ( (MY_FFTW_EXECUTE_SPLIT_DFT) && (MY_FFTW_PLAN_GURU_SPLIT_DFT) && (MY_FFTW_DESTROY_PLAN) &&\
+             (MY_FFTW_EXPORT_WISDOM_TO_STRING) && (MY_FFTW_IMPORT_WISDOM_FROM_STRING) &&\
+             (MY_FFTW_FORGET_WISDOM) ) bOK=TRUE;
        return bOK;
 }
 /*-----------------------------------------------------------------------------------*/
@@ -35,12 +45,22 @@ BOOL LoadFFTWLibrary(char *libraryname)
                MY_FFTW_PLAN_GURU_SPLIT_DFT=NULL;
                MY_FFTW_DESTROY_PLAN=NULL;
 
+                MY_FFTW_EXPORT_WISDOM_TO_STRING=NULL;
+                MY_FFTW_IMPORT_WISDOM_FROM_STRING=NULL;
+                MY_FFTW_FORGET_WISDOM=NULL;
+
                MY_FFTW_EXECUTE_SPLIT_DFT = (PROC_FFTW_EXECUTE_SPLIT_DFT) GetProcAddress(hinstLib, TEXT("fftw_execute_split_dft"));
                MY_FFTW_PLAN_GURU_SPLIT_DFT = (PROC_FFTW_PLAN_GURU_SPLIT_DFT) GetProcAddress(hinstLib, TEXT("fftw_plan_guru_split_dft"));
                MY_FFTW_DESTROY_PLAN = (PROC_FFTW_DESTROY_PLAN) GetProcAddress(hinstLib, TEXT("fftw_destroy_plan"));
+
+                MY_FFTW_EXPORT_WISDOM_TO_STRING = (PROC_FFTW_EXPORT_WISDOM_TO_STRING) GetProcAddress(hinstLib, TEXT("fftw_export_wisdom_to_string"));
+                MY_FFTW_IMPORT_WISDOM_FROM_STRING = (PROC_FFTW_IMPORT_WISDOM_FROM_STRING) GetProcAddress(hinstLib, TEXT("fftw_import_wisdom_from_string"));
+                MY_FFTW_FORGET_WISDOM = (PROC_FFTW_FORGET_WISDOM) GetProcAddress(hinstLib, TEXT("fftw_forget_wisdom"));
        }
 
-       if ( MY_FFTW_EXECUTE_SPLIT_DFT && MY_FFTW_PLAN_GURU_SPLIT_DFT && MY_FFTW_DESTROY_PLAN )
+       if ( MY_FFTW_EXECUTE_SPLIT_DFT && MY_FFTW_PLAN_GURU_SPLIT_DFT && MY_FFTW_DESTROY_PLAN &&\
+             MY_FFTW_EXPORT_WISDOM_TO_STRING && MY_FFTW_IMPORT_WISDOM_FROM_STRING &&\
+             MY_FFTW_FORGET_WISDOM )
        {
                bOK=TRUE;
        }
@@ -63,7 +83,13 @@ BOOL DisposeFFTWLibrary(void)
        if (MY_FFTW_PLAN_GURU_SPLIT_DFT) MY_FFTW_PLAN_GURU_SPLIT_DFT=NULL;
        if (MY_FFTW_DESTROY_PLAN) MY_FFTW_DESTROY_PLAN=NULL;
 
-       if ( !MY_FFTW_EXECUTE_SPLIT_DFT && !MY_FFTW_PLAN_GURU_SPLIT_DFT && !MY_FFTW_DESTROY_PLAN )
+        if (MY_FFTW_EXPORT_WISDOM_TO_STRING) MY_FFTW_EXPORT_WISDOM_TO_STRING=NULL;
+        if (MY_FFTW_IMPORT_WISDOM_FROM_STRING) MY_FFTW_IMPORT_WISDOM_FROM_STRING=NULL;
+        if (MY_FFTW_FORGET_WISDOM) MY_FFTW_FORGET_WISDOM=NULL;
+
+       if ( !MY_FFTW_EXECUTE_SPLIT_DFT && !MY_FFTW_PLAN_GURU_SPLIT_DFT && !MY_FFTW_DESTROY_PLAN &&\
+             !MY_FFTW_EXPORT_WISDOM_TO_STRING && !MY_FFTW_IMPORT_WISDOM_FROM_STRING &&\
+             !MY_FFTW_FORGET_WISDOM )
        {
                bOK=TRUE;
        }
@@ -96,3 +122,27 @@ void call_fftw_destroy_plan (fftw_plan p)
        }
 }
 /*-----------------------------------------------------------------------------------*/
+char *call_fftw_export_wisdom_to_string (void)
+{
+       if (MY_FFTW_EXPORT_WISDOM_TO_STRING)
+       {
+               return (char *)(MY_FFTW_EXPORT_WISDOM_TO_STRING)();
+       }
+}
+/*-----------------------------------------------------------------------------------*/
+int call_fftw_import_wisdom_from_string (const char *input_string)
+{
+       if (MY_FFTW_IMPORT_WISDOM_FROM_STRING)
+       {
+               return (int)(MY_FFTW_IMPORT_WISDOM_FROM_STRING)(input_string);
+       }
+}
+/*-----------------------------------------------------------------------------------*/
+void call_fftw_forget_wisdom (void)
+{
+       if (MY_FFTW_FORGET_WISDOM)
+       {
+               (MY_FFTW_FORGET_WISDOM)();
+       }
+}
+/*-----------------------------------------------------------------------------------*/
index 01cc153..b7bd75a 100644 (file)
 /*-----------------------------------------------------------------------------------*/
 /* INRIA 2006 */
-/* ALAN LAYEC initial revision  : 30/09/06 fftw3 toolbox*/
+/* Alan Layec :  - initial revision  : 30/09/06 fftw3 toolbox*/
+/*               - revision : 18/04/07 */
 /* Allan CORNET scilab module */
 /*-----------------------------------------------------------------------------------*/ 
 #include "fftw_utilities.h"
 #include "MALLOC.h"
 #include "callfftw.h"
 /*-----------------------------------------------------------------------------------*/ 
-/* definition of a structure to store parameters
-* of FFTW plan - set here default value -
-*/
-FFTW_Plan_struct Sci_Plan =
+/* definition of structures to store parameters
+ * of FFTW planners - set here default value -
+ */
+FFTW_Plan_struct Sci_Forward_Plan =
 {
-       NULL,          /* fftw_plan *p              */
-       NULL,          /* int *rank                 */
-       NULL,          /* fftw_iodim **dims         */
-       NULL,          /* int *howmany_rank         */
-       NULL,          /* fftw_iodim **howmany_dims */
-       NULL,          /* int *isn                  */
-       NULL,          /* unsigned *sflags          */
-
-       {NULL,NULL,    /* double * input/output     */
-       NULL,NULL},
-       FFTW_ESTIMATE, /* unsigned flags            */
-       1,             /* int in                    */
-       1,             /* int norm                  */
-
-       0,             /* nb_CPlan                  */
+  NULL,            /* fftw_plan p              */
+  {0,NULL,0,NULL}, /* guru_dim_struct gdim     */
+  FFTW_ESTIMATE    /* unsigned flags           */
 };
-/*-----------------------------------------------------------------------------------*/ 
-/* Put fftw_plan p value in the static structure Sci_Plan
-* and parameters of fftw_plan_guru_split_dft to reuse
-* plan if parameters are the same between each call of
-* fftw().
-*
-* Input : void
-*
-* Output : int, return 0 if failed, else 1.
-*
-*/
-int PushFTTWPlan(void)
-{
-       /* declaration of local variable */
-       int nbp,i;
-
-       /* get number of plan */
-       nbp = Sci_Plan.nb_CPlan+1;
-
-       /* realloc Sci_Plan.p */
-       if ((Sci_Plan.p=(fftw_plan *) REALLOC(Sci_Plan.p,sizeof(fftw_plan)*(nbp+1))) == NULL)
-               return(0);
-       Sci_Plan.p[nbp]=Sci_Plan.p[nbp-1];
-
-       /* realloc Sci_Plan.rank */
-       if ((Sci_Plan.rank=(int *) REALLOC(Sci_Plan.rank,sizeof(int)*(nbp+1))) == NULL)
-               return(0);
-       Sci_Plan.rank[nbp]=Sci_Plan.rank[nbp-1];
-
-       /* realloc Sci_Plan.dims */
-       if ((Sci_Plan.dims=(fftw_iodim **) REALLOC(Sci_Plan.dims,sizeof(fftw_iodim *)*(nbp+1))) == NULL)
-               return(0);
-       Sci_Plan.dims[nbp] = NULL;
-       if (Sci_Plan.dims[nbp-1]!=NULL)
-       {
-               if ((Sci_Plan.dims[nbp]=(fftw_iodim *) MALLOC(sizeof(fftw_iodim)*Sci_Plan.rank[nbp])) == NULL)
-                       return(0);
-               for(i=0;i<Sci_Plan.rank[nbp];i++)
-               {
-                       Sci_Plan.dims[nbp][i].n  = Sci_Plan.dims[nbp-1][i].n;
-                       Sci_Plan.dims[nbp][i].is = Sci_Plan.dims[nbp-1][i].is;
-                       Sci_Plan.dims[nbp][i].os = Sci_Plan.dims[nbp-1][i].os;
-               }
-       }
-
-       /* realloc Sci_Plan.howmany_rank */
-       if ((Sci_Plan.howmany_rank=(int *) REALLOC(Sci_Plan.howmany_rank,sizeof(int)*(nbp+1))) == NULL)
-               return(0);
-       Sci_Plan.howmany_rank[nbp]=Sci_Plan.howmany_rank[nbp-1];
-
-       /* realloc Sci_Plan.howmany_dims */
-       if ((Sci_Plan.howmany_dims=(fftw_iodim **) REALLOC(Sci_Plan.howmany_dims,sizeof(fftw_iodim *)*(nbp+1))) == NULL)
-               return(0);
-       Sci_Plan.howmany_dims[nbp]=NULL;
-       if (Sci_Plan.howmany_dims[nbp-1]!=NULL)
-       {
-               if ((Sci_Plan.howmany_dims[nbp]=(fftw_iodim *) MALLOC(sizeof(fftw_iodim)*Sci_Plan.howmany_rank[nbp])) == NULL)
-                       return(0);
-               for(i=0;i<Sci_Plan.howmany_rank[nbp];i++)
-               {
-                       Sci_Plan.howmany_dims[nbp][i].n  = Sci_Plan.howmany_dims[nbp-1][i].n;
-                       Sci_Plan.howmany_dims[nbp][i].is = Sci_Plan.howmany_dims[nbp-1][i].is;
-                       Sci_Plan.howmany_dims[nbp][i].os = Sci_Plan.howmany_dims[nbp-1][i].os;
-               }
-       }
-
-       /* realloc Sci_Plan.sflags */
-       if ((Sci_Plan.sflags=(unsigned *) REALLOC(Sci_Plan.sflags,sizeof(unsigned)*(nbp+1))) == NULL)
-               return(0);
-       Sci_Plan.sflags[nbp]=Sci_Plan.sflags[nbp-1];
-
-       /* realloc Sci_Plan.isn */
-       if ((Sci_Plan.isn=(int *) REALLOC(Sci_Plan.isn,sizeof(int)*(nbp+1))) == NULL)
-               return(0);
-       Sci_Plan.isn[nbp]=Sci_Plan.isn[nbp-1];
 
-       /* increase number of plan */
-       Sci_Plan.nb_CPlan++;
-
-       /* */
-       return(1);
-}
-/*-----------------------------------------------------------------------------------*/ 
-/* Free plan the Sci_Plan structure
-*
-* Input : void
-*
-* Output : int, return 0 if failed, else 1.
-*
-*/
-int FreeFTTWPlan(void)
+FFTW_Plan_struct Sci_Backward_Plan =
 {
-       /* declaration of local variable */
-       int i,nbp;
-
-       /* get number of plan */
-       nbp = Sci_Plan.nb_CPlan+1;
-
-       if (Sci_Plan.p!=NULL)
-       {
-               /* free Sci_Plan.p */
-               FREE(Sci_Plan.p);
-               Sci_Plan.p=NULL;
-
-               /* free Sci_Plan.dims/Sci_Plan.howmany_dims */
-               for (i=0;i<nbp;i++)
-               {
-                       if (Sci_Plan.dims[i]!=NULL)
-                       {
-                               FREE(Sci_Plan.dims[i]);
-                       }
-                       if (Sci_Plan.howmany_dims[i]!=NULL)
-                       {
-                               FREE(Sci_Plan.howmany_dims[i]);
-                       }
-               }
-               FREE(Sci_Plan.dims);
-               FREE(Sci_Plan.howmany_dims);
-               Sci_Plan.dims=NULL;
-               Sci_Plan.howmany_dims=NULL;
-
-               /* free Sci_Plan.sflags */
-               FREE(Sci_Plan.sflags);
-               Sci_Plan.sflags=NULL;
-
-               /* free Sci_Plan.rank */
-               FREE(Sci_Plan.rank);
-               Sci_Plan.rank=NULL;
-
-               /* free Sci_Plan.howmany_rank */
-               FREE(Sci_Plan.howmany_rank);
-               Sci_Plan.howmany_rank=NULL;
-
-               /* free Sci_Plan.isn */
-               FREE(Sci_Plan.isn);
-               Sci_Plan.isn=NULL;
+  NULL,             /* fftw_plan p              */
+  {0,NULL,0,NULL},  /* guru_dim_struct gdim     */
+  FFTW_ESTIMATE     /* unsigned flags           */
+};
 
-               /* number of plan = 0 */
-               Sci_Plan.nb_CPlan=0;
-       }
-       /* */
-       return(1);
-}
-/*-----------------------------------------------------------------------------------*/ 
-/* Update the static structure Sci_Plan with new
-* fftw_plan p value and parameters of
-* fftw_plan_guru_split_dft to reuse
-* plan if parameters are the same between each call of
-* fftw().
-*
-* Input : fftw_plan p
-*         int rank
-*         const fftw_iodim *dims
-*         int howmany_rank
-*         const fftw_iodim *howmany_dims
-*
-* Output : int, return 0 if failed, else 1.
-*
-*/
-int UpdateFTTWPlan(fftw_plan p, int rank, const fftw_iodim *dims,
-                                  int howmany_rank, const fftw_iodim *howmany_dims, int isn)
+unsigned cur_fftw_flags=FFTW_ESTIMATE;
+/*-----------------------------------------------------------------------------------*/
+/* Free a FFTW_Plan_struct
+ *
+ * Input : FFTW_Plan_struct *Sci_Plan
+ *
+ * Output : int, return 1.
+ *
+ */
+int FreeFFTWPlan(FFTW_Plan_struct *Sci_Plan)
 {
-       /* declaration of local variable */
-       int curp,i;
-
-       /* get current plan number*/
-       curp = Sci_Plan.nb_CPlan;
-
-       /* Sci_Plan.p */
-       if (Sci_Plan.p==NULL)
-       {
-               if ((Sci_Plan.p=(fftw_plan *) MALLOC(sizeof(fftw_plan))) == NULL)
-                       return(0);
-       }
-       Sci_Plan.p[curp]=p;
-
-       /* Sci_Plan.rank */
-       if (Sci_Plan.rank==NULL)
-       {
-               if ((Sci_Plan.rank=(int *) MALLOC(sizeof(int))) == NULL)
-                       return(0);
-       }
-       /* Sci_Plan.dims */
-       if (Sci_Plan.dims==NULL)
-       {
-               if ((Sci_Plan.dims=(fftw_iodim **) MALLOC(sizeof(fftw_iodim *))) == NULL)
-                       return(0);
-               Sci_Plan.dims[0]=NULL;
-       }
-       if (Sci_Plan.dims[curp]==NULL)
-       {
-               if ((Sci_Plan.dims[curp]=(fftw_iodim *) MALLOC(sizeof(fftw_iodim)*rank)) == NULL)
-                       return(0);
-       }
-       else
-       {
-               if (Sci_Plan.rank[curp] < rank)
-               {
-                       if ((Sci_Plan.dims[curp]=(fftw_iodim *) REALLOC(Sci_Plan.dims[curp],sizeof(fftw_iodim)*rank)) == NULL)
-                               return(0);
-               }
-       }
-       Sci_Plan.rank[curp]=rank;
-       for(i=0;i<rank;i++)
-       {
-               if (dims!=NULL)
-               {
-                       Sci_Plan.dims[curp][i].n  = dims[i].n;
-                       Sci_Plan.dims[curp][i].is = dims[i].is;
-                       Sci_Plan.dims[curp][i].os = dims[i].os;
-               }
-       }
-
-       /* Sci_Plan.howmany_rank */
-       if (Sci_Plan.howmany_rank==NULL)
-       {
-               if ((Sci_Plan.howmany_rank=(int *) MALLOC(sizeof(int))) == NULL)
-                       return(0);
-       }
-       /* Sci_Plan.howmany_dims */
-       if (Sci_Plan.howmany_dims==NULL)
-       {
-               if ((Sci_Plan.howmany_dims=(fftw_iodim **) MALLOC(sizeof(fftw_iodim *))) == NULL)
-                       return(0);
-               Sci_Plan.howmany_dims[0]=NULL;
-       }
-       if (Sci_Plan.howmany_dims[curp]==NULL)
-       {
-               if (howmany_rank!=0)
-               {
-                       if ((Sci_Plan.howmany_dims[curp]=(fftw_iodim *) MALLOC(sizeof(fftw_iodim)*howmany_rank)) == NULL)
-                               return(0);
-               }
-       }
-       else
-       {
-               if (Sci_Plan.howmany_rank[curp] < howmany_rank)
-               {
-                       if ((Sci_Plan.howmany_dims[curp]=(fftw_iodim *) REALLOC(Sci_Plan.howmany_dims[curp],sizeof(fftw_iodim)*howmany_rank)) == NULL)
-                               return(0);
-               }
-       }
-       Sci_Plan.howmany_rank[curp]=howmany_rank;
-       for(i=0;i<howmany_rank;i++)
-       {
-               if (howmany_dims!=NULL)
-               {
-                       Sci_Plan.howmany_dims[curp][i].n  = howmany_dims[i].n;
-                       Sci_Plan.howmany_dims[curp][i].is = howmany_dims[i].is;
-                       Sci_Plan.howmany_dims[curp][i].os = howmany_dims[i].os;
-               }
-       }
-
-       /* Sci_Plan.sflags */
-       if (Sci_Plan.sflags==NULL)
-       {
-               if ((Sci_Plan.sflags=(unsigned *) MALLOC(sizeof(unsigned))) == NULL)
-                       return(0);
-       }
-       Sci_Plan.sflags[curp]=Sci_Plan.flags;
-
-       /* Sci_Plan.isn */
-       if (Sci_Plan.isn==NULL)
-       {
-               if ((Sci_Plan.isn=(int *) MALLOC(sizeof(int))) == NULL)
-                       return(0);
-       }
-       Sci_Plan.isn[curp]=isn;
-
-       /* */
-       return(1);
+  if(Sci_Plan->p != NULL) {
+    call_fftw_destroy_plan(Sci_Plan->p);
+    Sci_Plan->p = NULL;
+  }
+  if(Sci_Plan->gdim.rank != 0) {
+    Sci_Plan->gdim.rank = 0;
+    FREE(Sci_Plan->gdim.dims);
+    Sci_Plan->gdim.dims = NULL;
+  }
+  if(Sci_Plan->gdim.howmany_rank != 0) {
+    Sci_Plan->gdim.howmany_rank = 0;
+    FREE(Sci_Plan->gdim.howmany_dims);
+    Sci_Plan->gdim.howmany_dims = NULL;
+  }
+  return(1);
 }
-/*-----------------------------------------------------------------------------------*/ 
+/*-----------------------------------------------------------------------------------*/
 /* Return a valid plan ptr.
-* This function search in the static structure if
-* the given input parameters follows an already stored
-* set of parameters.
-* If found then return an already stored plan ptr.
-* If not found, then clean the last index and create
-* a new set of parameters (and a new plan)
-* with fftw_plan_guru_split_dft.
-*
-* Input : int rank
-*         const fftw_iodim *dims
-*         int howmany_rank
-*         const fftw_iodim *howmany_dims
-*         double *ri, double *ii
-*         double *ro, double *io
-*         unsigned flags, int isn
-*
-* Output : fftw_plan
-*
-*
-*/
-fftw_plan GetFFTWPlan(int rank, const fftw_iodim *dims,
-                                         int howmany_rank, const fftw_iodim *howmany_dims,
-                                         double *ri, double *ii, double *ro, double *io,
-                                         unsigned flags, int isn)
+ * This function search in the Sci_xx_Plan structures if
+ * the given input parameters follows an already stored
+ * set of parameters.
+ * If found then return an already stored plan ptr.
+ * If not found, then returns 
+ * a new set of parameters (and a new plan)
+ * with fftw_plan_guru_split_dft
+ * and store it in Sci_xx_Plan structures
+ *
+ * Input : guru_dim_struct *gdim
+ *         double *ri, double *ii
+ *         double *ro, double *io
+ *         unsigned flags, int isn
+ *
+ * Output : fftw_plan
+ *
+ *
+ */
+fftw_plan GetFFTWPlan(guru_dim_struct *gdim,
+                      double *ri, double *ii,
+                      double *ro, double *io,
+                      unsigned flags, int isn)
 {
-       /* declaration of local variable */
-       fftw_plan p;
-       int i,j,ok,ko;
-
-       ok=0;
-       ko=ok;
-
-       /* check if for set of parameters there is plan stored
-       * in Sci_Plan
-       */
-       if (Sci_Plan.p!=NULL)
-       {
-               for (i=0;i<(Sci_Plan.nb_CPlan+1);i++)
-               {/* set ok flag to false.
-                * ok becomes 1 if it exists a plan for given parameters
-                * in Sci_pplan struct.
-                */
-                       ok=0;
-
-                       if (i==Sci_Plan.nb_CPlan)
-                       {
-                               if (Sci_Plan.sflags[i]!=Sci_Plan.flags) /* ! must be removed later ! */
-                                       break;
-                       }
-                       /* check if Sci_Plan.p[i] is already allocated */
-                       if (Sci_Plan.p[i]!=NULL)
-                       {
-                               /* check if Sci_Plan.rank[i] */
-                               if (Sci_Plan.rank[i]==rank)
-                               {
-                                       /* check if Sci_Plan.howmany_rank[i] */
-                                       if (Sci_Plan.howmany_rank[i]==howmany_rank)
-                                       {
-                                               /* check if Sci_Plan.isn[i] */
-                                               if (Sci_Plan.isn[i]==isn)
-                                               {
-                                                       /* check for NULL case of dims */
-                                                       if (dims==Sci_Plan.dims[i]) /*NULL case*/
-                                                       {
-                                                               /* check for NULL case of howmany_dims */
-                                                               if(howmany_dims==Sci_Plan.howmany_dims[i]) /*NULL case*/
-                                                                       ok=1; /*it is stupid!*/
-                                                       }
-                                                       else
-                                                       {
-                                                               /* set ok to true as default */
-                                                               ok=1 ;
-                                                               /* check dims (of type fftw_iodim) structure */
-                                                               for (j=0;j<Sci_Plan.rank[i];j++)
-                                                               {
-                                                                       if (Sci_Plan.dims[i][j].n != dims[j].n)   {ok=0;break;}
-                                                                       if (Sci_Plan.dims[i][j].is != dims[j].is) {ok=0;break;}
-                                                                       if (Sci_Plan.dims[i][j].os != dims[j].os) {ok=0;break;}
-                                                               }
-                                                               /* that ok, all seems to be good */
-                                                               if (ok)
-                                                               {
-                                                                       /*NULL case*/
-                                                                       if(howmany_dims==Sci_Plan.howmany_dims[i]) 
-                                                                       {
-                                                                               /* */
-                                                                               ok=1;
-                                                                               /* */
-                                                                               p = Sci_Plan.p[i];
-                                                                               /* get out from Sci_Plan loop */
-                                                                               break;
-                                                                       }
-                                                                       else
-                                                                       {
-                                                                               /* check howmany_dims (of type fftw_iodim) structure */
-                                                                               for (j=0;j<Sci_Plan.howmany_rank[i];j++)
-                                                                               {
-                                                                                       if (Sci_Plan.howmany_dims[i][j].n != howmany_dims[j].n)   {ok=0;break;}
-                                                                                       if (Sci_Plan.howmany_dims[i][j].is != howmany_dims[j].is) {ok=0;break;}
-                                                                                       if (Sci_Plan.howmany_dims[i][j].os != howmany_dims[j].os) {ok=0;break;}
-                                                                               }
-                                                                               if (ok)
-                                                                               {
-                                                                                       /* */
-                                                                                       p = Sci_Plan.p[i];
-                                                                                       /* get out from Sci_Plan loop */
-                                                                                       break;
-                                                                               }
-                                                                       }
-                                                               }
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-               }
-       }
-
-       /* if !ok then destroy the last set of parameters
-       * and create a new set at index Sci_Plan.nb_CPlan
-       */
-       if (!ok)
-       {
-               if (Sci_Plan.p!=NULL)
-               {
-                       if (Sci_Plan.p[Sci_Plan.nb_CPlan]!=NULL)
-                       {
-                               /* */
-                               call_fftw_destroy_plan(Sci_Plan.p[Sci_Plan.nb_CPlan]);
-                       }
-               }
-
-               /* create a new plan */
-               p = call_fftw_plan_guru_split_dft(rank, dims,howmany_rank, howmany_dims,
-                       ri, ii, ro, io,flags);
-
-               /* */
-               Sci_Plan.io[0]=ri;
-               Sci_Plan.io[1]=ii;
-               Sci_Plan.io[2]=ro;
-               Sci_Plan.io[3]=io;
-
-               /* store new plan and its parameters in Sci_Plan */
-               if ((UpdateFTTWPlan(p, rank, dims, howmany_rank, howmany_dims, isn))==0)
-               {
-                       /* */
-                       call_fftw_destroy_plan(p);
-                       /* */
-                       p=NULL;
-               }
-       }
-
-       /* return value of fftw_plan */
-       return (p);
+  FFTW_Plan_struct *Sci_Plan;
+  int i;
+
+  if (isn==-1) Sci_Plan = &Sci_Backward_Plan;
+  else Sci_Plan = &Sci_Forward_Plan;
+
+  if ( (!(CheckGuruDims(&(Sci_Plan->gdim), gdim))) ||
+       (Sci_Plan->flags != cur_fftw_flags) ) {
+
+    FreeFFTWPlan(Sci_Plan);
+
+    if (gdim->rank != 0) {
+      Sci_Plan->gdim.rank = gdim->rank;
+      if ((Sci_Plan->gdim.dims = \
+              (fftw_iodim *)MALLOC(sizeof(fftw_iodim)*gdim->rank))==NULL) {
+       return(NULL);
+      }
+      for (i=0;i<gdim->rank;i++) {
+        Sci_Plan->gdim.dims[i].n  = gdim->dims[i].n;
+        Sci_Plan->gdim.dims[i].is = gdim->dims[i].is;
+        Sci_Plan->gdim.dims[i].os = gdim->dims[i].os;
+      }
+    }
+
+    if (gdim->howmany_rank != 0) {
+      Sci_Plan->gdim.howmany_rank = gdim->howmany_rank;
+      if ((Sci_Plan->gdim.howmany_dims = \
+             (fftw_iodim *)MALLOC(sizeof(fftw_iodim)*gdim->howmany_rank))==NULL) {
+       FREE(Sci_Plan->gdim.dims);
+       return(NULL);
+      }
+      for (i=0;i<gdim->howmany_rank;i++) {
+        Sci_Plan->gdim.howmany_dims[i].n  = gdim->howmany_dims[i].n;
+        Sci_Plan->gdim.howmany_dims[i].is = gdim->howmany_dims[i].is;
+        Sci_Plan->gdim.howmany_dims[i].os = gdim->howmany_dims[i].os;
+      }
+    }
+
+    Sci_Plan->flags = cur_fftw_flags;
+
+    Sci_Plan->p = call_fftw_plan_guru_split_dft(Sci_Plan->gdim.rank,
+                                                Sci_Plan->gdim.dims,
+                                                Sci_Plan->gdim.howmany_rank,
+                                                Sci_Plan->gdim.howmany_dims,
+                                                ri, ii, ro, io,
+                                                Sci_Plan->flags);
+  }
+  return(Sci_Plan->p);
 }
-/*-----------------------------------------------------------------------------------*/ 
+/*-----------------------------------------------------------------------------------*/
+/* Check if two guru_dim structures are equal
+ *
+ * Input : guru_dim_struct *gdim1
+ *         guru_dim_struct *gdim2
+ *
+ * Output : int, return 0 if False, else 1.
+ *
+ */
+int CheckGuruDims(guru_dim_struct *gdim1, guru_dim_struct *gdim2)
+{
+  int i;
+
+  if( (gdim1->rank==gdim2->rank) &&
+      (gdim1->howmany_rank==gdim2->howmany_rank)) {
+    for(i=0;i<gdim1->rank;i++) {
+      if (gdim1->dims[i].n  != gdim2->dims[i].n)  return(0);
+      if (gdim1->dims[i].is != gdim2->dims[i].is) return(0);
+      if (gdim1->dims[i].os != gdim2->dims[i].os) return(0);
+    }
+    for(i=0;i<gdim1->howmany_rank;i++) {
+      if (gdim1->howmany_dims[i].n  != gdim2->howmany_dims[i].n)  return(0);
+      if (gdim1->howmany_dims[i].is != gdim2->howmany_dims[i].is) return(0);
+      if (gdim1->howmany_dims[i].os != gdim2->howmany_dims[i].os) return(0);
+    }
+    return(1);
+  }
+  else return(0);
+}
+/*-----------------------------------------------------------------------------------*/
index 4ffb855..288fd98 100644 (file)
@@ -1,6 +1,7 @@
 /*-----------------------------------------------------------------------------------*/
 /* INRIA 2006 */
-/* ALAN LAYEC initial revision  : 30/09/06 fftw3 toolbox*/
+/* Alan Layec :  - initial revision  : 30/09/06 fftw3 toolbox*/
+/*               - revision : 18/04/07 */
 /* Allan CORNET scilab module */
 /*-----------------------------------------------------------------------------------*/ 
 #ifndef __FFTW_UTILITIES__
 #include "stack-c.h"
 
 
-/* definiton of a static FFTW_Plan structure type */
+/* definiton of a guru_dim structure type */
+typedef struct guru_dim_st
+{
+  int rank;
+  fftw_iodim *dims;
+  int howmany_rank;
+  fftw_iodim *howmany_dims;
+} guru_dim_struct;
+
+/* definiton of a FFTW_Plan structure type */
 typedef struct fftw_plan_st
 {
-       /* stored parmeters of fftw_plan_guru_split_dft function */
-       fftw_plan *p;
-       int *rank;
-       fftw_iodim **dims;
-       int *howmany_rank;
-       fftw_iodim **howmany_dims;
-       int *isn;
-       unsigned *sflags;
-
-       /* specific FFTW parameters */
-       double *io[4];  /* to store input/ouput address when pushing planners */
-       unsigned flags; /* to set the "flags" parameters when creating planners */
-       int in;         /* to set if it is an in or out place transform */
-       int norm;       /* to set if we compute normalized transform */
-
-       int nb_CPlan;   /* Current index in FFTW_Plan_struct */
+  /* stored parmeters of fftw_plan_guru_split_dft function */
+  fftw_plan p;
+  guru_dim_struct gdim;
+  unsigned flags;
 } FFTW_Plan_struct;
 
 extern int C2F(dset)();
 
 /* prototypes of utilities functions */
-fftw_plan GetFFTWPlan(int rank, const fftw_iodim *dims,
-                                         int howmany_rank, const fftw_iodim *howmany_dims,
-                                         double *ri, double *ii, double *ro, double *io,
-                                         unsigned flags, int isn);
+fftw_plan GetFFTWPlan(guru_dim_struct *gdim,
+                      double *ri, double *ii,
+                      double *ro, double *io,
+                      unsigned flags, int isn);
+
+int FreeFFTWPlan(FFTW_Plan_struct *Sci_Plan);
 
-int UpdateFTTWPlan(fftw_plan p, int rank, const fftw_iodim *dims,
-                                  int howmany_rank, const fftw_iodim *howmany_dims,
-                                  int isn);
+int CheckGuruDims(guru_dim_struct *gdim1,
+                  guru_dim_struct *gdim2);
 
-int PushFTTWPlan(void);
-int FreeFTTWPlan(void);
 
 
 #endif /* __FFTW_UTILITIES__ */