summaryrefslogtreecommitdiff
path: root/modules/fftw
diff options
context:
space:
mode:
Diffstat (limited to 'modules/fftw')
-rwxr-xr-xmodules/fftw/.libs/libscifftw-algo.abin0 -> 182490 bytes
l---------modules/fftw/.libs/libscifftw-algo.la1
-rwxr-xr-xmodules/fftw/.libs/libscifftw.abin0 -> 471468 bytes
l---------modules/fftw/.libs/libscifftw.la1
-rwxr-xr-xmodules/fftw/Elementary_functions_f_Import.def5
-rwxr-xr-xmodules/fftw/Makefile1609
-rwxr-xr-xmodules/fftw/Makefile.am95
-rwxr-xr-xmodules/fftw/Makefile.in1609
-rwxr-xr-xmodules/fftw/core_Import.def26
-rwxr-xr-xmodules/fftw/etc/fftw.quit17
-rwxr-xr-xmodules/fftw/etc/fftw.start52
-rwxr-xr-xmodules/fftw/fftw.iss51
-rwxr-xr-xmodules/fftw/fftw.vcxproj264
-rwxr-xr-xmodules/fftw/fftw.vcxproj.filters127
-rwxr-xr-xmodules/fftw/help/en_US/addchapter.sce11
-rwxr-xr-xmodules/fftw/help/en_US/fftw_flags.xml145
-rwxr-xr-xmodules/fftw/help/en_US/fftw_forget_wisdom.xml63
-rwxr-xr-xmodules/fftw/help/en_US/get_fftw_wisdom.xml97
-rwxr-xr-xmodules/fftw/help/en_US/set_fftw_wisdom.xml92
-rwxr-xr-xmodules/fftw/help/fr_FR/addchapter.sce11
-rwxr-xr-xmodules/fftw/help/fr_FR/fftw_flags.xml151
-rwxr-xr-xmodules/fftw/help/fr_FR/fftw_forget_wisdom.xml64
-rwxr-xr-xmodules/fftw/help/fr_FR/get_fftw_wisdom.xml99
-rwxr-xr-xmodules/fftw/help/fr_FR/set_fftw_wisdom.xml98
-rwxr-xr-xmodules/fftw/help/ja_JP/addchapter.sce11
-rwxr-xr-xmodules/fftw/help/ja_JP/fftw_flags.xml145
-rwxr-xr-xmodules/fftw/help/ja_JP/fftw_forget_wisdom.xml60
-rwxr-xr-xmodules/fftw/help/ja_JP/get_fftw_wisdom.xml91
-rwxr-xr-xmodules/fftw/help/ja_JP/set_fftw_wisdom.xml90
-rwxr-xr-xmodules/fftw/help/pt_BR/addchapter.sce11
-rwxr-xr-xmodules/fftw/help/ru_RU/addchapter.sce11
-rwxr-xr-xmodules/fftw/help/ru_RU/fftw.xml121
-rwxr-xr-xmodules/fftw/help/ru_RU/fftw_flags.xml151
-rwxr-xr-xmodules/fftw/help/ru_RU/fftw_forget_wisdom.xml56
-rwxr-xr-xmodules/fftw/help/ru_RU/get_fftw_wisdom.xml67
-rwxr-xr-xmodules/fftw/help/ru_RU/set_fftw_wisdom.xml67
-rwxr-xr-xmodules/fftw/includes/dynlib_fftw.h28
-rwxr-xr-xmodules/fftw/includes/gw_fftw.h31
-rwxr-xr-xmodules/fftw/includes/with_fftw.h34
-rwxr-xr-xmodules/fftw/libscifftw-algo.la41
-rwxr-xr-xmodules/fftw/libscifftw.la41
-rwxr-xr-xmodules/fftw/license.txt47
-rwxr-xr-xmodules/fftw/locales/ca_ES.po174
-rwxr-xr-xmodules/fftw/locales/cs_CZ.po182
-rwxr-xr-xmodules/fftw/locales/de_DE.po171
-rwxr-xr-xmodules/fftw/locales/es_ES.po171
-rwxr-xr-xmodules/fftw/locales/fftw.pot362
-rwxr-xr-xmodules/fftw/locales/fr_FR.po206
-rwxr-xr-xmodules/fftw/locales/it_IT.po181
-rwxr-xr-xmodules/fftw/locales/ja_JP.po175
-rwxr-xr-xmodules/fftw/locales/pl_PL.po173
-rwxr-xr-xmodules/fftw/locales/pt_BR.po171
-rwxr-xr-xmodules/fftw/locales/ru_RU.po195
-rwxr-xr-xmodules/fftw/locales/uk_UA.po208
-rwxr-xr-xmodules/fftw/locales/zh_CN.po168
-rwxr-xr-xmodules/fftw/locales/zh_TW.po198
-rwxr-xr-xmodules/fftw/macros/buildmacros.bat1
-rwxr-xr-xmodules/fftw/macros/buildmacros.sce14
-rwxr-xr-xmodules/fftw/macros/cleanmacros.bat3
-rwxr-xr-xmodules/fftw/sci_gateway/c/.deps/.dirstamp0
-rwxr-xr-xmodules/fftw/sci_gateway/c/.deps/libscifftw_la-gw_fftw.Plo325
-rwxr-xr-xmodules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_dct.Plo318
-rwxr-xr-xmodules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_disposefftwlibrary.Plo316
-rwxr-xr-xmodules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_dst.Plo318
-rwxr-xr-xmodules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_fftw.Plo318
-rwxr-xr-xmodules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_fftw_flags.Plo315
-rwxr-xr-xmodules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_fftw_forget_wisdom.Plo291
-rwxr-xr-xmodules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_fftwlibraryisloaded.Plo308
-rwxr-xr-xmodules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_get_fftw_wisdom.Plo318
-rwxr-xr-xmodules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_loadfftwlibrary.Plo310
-rwxr-xr-xmodules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_set_fftw_wisdom.Plo316
-rwxr-xr-xmodules/fftw/sci_gateway/c/.dirstamp0
-rwxr-xr-xmodules/fftw/sci_gateway/c/.libs/libscifftw_la-gw_fftw.obin0 -> 11360 bytes
-rwxr-xr-xmodules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_dct.obin0 -> 60976 bytes
-rwxr-xr-xmodules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_disposefftwlibrary.obin0 -> 9128 bytes
-rwxr-xr-xmodules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_dst.obin0 -> 58880 bytes
-rwxr-xr-xmodules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_fftw.obin0 -> 66208 bytes
-rwxr-xr-xmodules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_fftw_flags.obin0 -> 24104 bytes
-rwxr-xr-xmodules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_fftw_forget_wisdom.obin0 -> 8064 bytes
-rwxr-xr-xmodules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_fftwlibraryisloaded.obin0 -> 8864 bytes
-rwxr-xr-xmodules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_get_fftw_wisdom.obin0 -> 12960 bytes
-rwxr-xr-xmodules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_loadfftwlibrary.obin0 -> 11960 bytes
-rwxr-xr-xmodules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_set_fftw_wisdom.obin0 -> 15216 bytes
-rwxr-xr-xmodules/fftw/sci_gateway/c/gw_fftw.c76
-rwxr-xr-xmodules/fftw/sci_gateway/c/libscifftw_la-gw_fftw.lo12
-rwxr-xr-xmodules/fftw/sci_gateway/c/libscifftw_la-sci_dct.lo12
-rwxr-xr-xmodules/fftw/sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo12
-rwxr-xr-xmodules/fftw/sci_gateway/c/libscifftw_la-sci_dst.lo12
-rwxr-xr-xmodules/fftw/sci_gateway/c/libscifftw_la-sci_fftw.lo12
-rwxr-xr-xmodules/fftw/sci_gateway/c/libscifftw_la-sci_fftw_flags.lo12
-rwxr-xr-xmodules/fftw/sci_gateway/c/libscifftw_la-sci_fftw_forget_wisdom.lo12
-rwxr-xr-xmodules/fftw/sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo12
-rwxr-xr-xmodules/fftw/sci_gateway/c/libscifftw_la-sci_get_fftw_wisdom.lo12
-rwxr-xr-xmodules/fftw/sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo12
-rwxr-xr-xmodules/fftw/sci_gateway/c/libscifftw_la-sci_set_fftw_wisdom.lo12
-rwxr-xr-xmodules/fftw/sci_gateway/c/sci_dct.c1206
-rwxr-xr-xmodules/fftw/sci_gateway/c/sci_disposefftwlibrary.c47
-rwxr-xr-xmodules/fftw/sci_gateway/c/sci_dst.c1203
-rwxr-xr-xmodules/fftw/sci_gateway/c/sci_fftw.c1314
-rwxr-xr-xmodules/fftw/sci_gateway/c/sci_fftw_flags.c346
-rwxr-xr-xmodules/fftw/sci_gateway/c/sci_fftw_forget_wisdom.c45
-rwxr-xr-xmodules/fftw/sci_gateway/c/sci_fftwlibraryisloaded.c44
-rwxr-xr-xmodules/fftw/sci_gateway/c/sci_get_fftw_wisdom.c161
-rwxr-xr-xmodules/fftw/sci_gateway/c/sci_loadfftwlibrary.c78
-rwxr-xr-xmodules/fftw/sci_gateway/c/sci_set_fftw_wisdom.c147
-rwxr-xr-xmodules/fftw/sci_gateway/fftw_gateway.xml44
-rwxr-xr-xmodules/fftw/scilab_windows_Import.def8
-rwxr-xr-xmodules/fftw/src/c/.deps/.dirstamp0
-rwxr-xr-xmodules/fftw/src/c/.deps/libscifftw_algo_la-callfftw.Plo157
-rwxr-xr-xmodules/fftw/src/c/.deps/libscifftw_algo_la-fftw_utilities.Plo167
-rwxr-xr-xmodules/fftw/src/c/.deps/libscifftw_algo_la-fftwlibname.Plo104
-rwxr-xr-xmodules/fftw/src/c/.deps/libscifftw_algo_la-sci_data_utilities.Plo285
-rwxr-xr-xmodules/fftw/src/c/.deps/libscifftw_algo_la-with_fftw.Plo14
-rwxr-xr-xmodules/fftw/src/c/.deps/libscifftw_la-callfftw.Plo1
-rwxr-xr-xmodules/fftw/src/c/.deps/libscifftw_la-fftw_utilities.Plo1
-rwxr-xr-xmodules/fftw/src/c/.deps/libscifftw_la-fftwlibname.Plo1
-rwxr-xr-xmodules/fftw/src/c/.deps/libscifftw_la-sci_data_utilities.Plo1
-rwxr-xr-xmodules/fftw/src/c/.deps/libscifftw_la-with_fftw.Plo1
-rwxr-xr-xmodules/fftw/src/c/.dirstamp0
-rwxr-xr-xmodules/fftw/src/c/.libs/libscifftw_algo_la-callfftw.obin0 -> 26528 bytes
-rwxr-xr-xmodules/fftw/src/c/.libs/libscifftw_algo_la-fftw_utilities.obin0 -> 110800 bytes
-rwxr-xr-xmodules/fftw/src/c/.libs/libscifftw_algo_la-fftwlibname.obin0 -> 5224 bytes
-rwxr-xr-xmodules/fftw/src/c/.libs/libscifftw_algo_la-sci_data_utilities.obin0 -> 34760 bytes
-rwxr-xr-xmodules/fftw/src/c/.libs/libscifftw_algo_la-with_fftw.obin0 -> 3240 bytes
-rwxr-xr-xmodules/fftw/src/c/DllmainFttw.c32
-rwxr-xr-xmodules/fftw/src/c/callfftw.c307
-rwxr-xr-xmodules/fftw/src/c/callfftw.h54
-rwxr-xr-xmodules/fftw/src/c/fftw.rc97
-rwxr-xr-xmodules/fftw/src/c/fftw3.h334
-rwxr-xr-xmodules/fftw/src/c/fftw_utilities.c1933
-rwxr-xr-xmodules/fftw/src/c/fftw_utilities.h78
-rwxr-xr-xmodules/fftw/src/c/fftwlibname.c55
-rwxr-xr-xmodules/fftw/src/c/fftwlibname.h21
-rwxr-xr-xmodules/fftw/src/c/libscifftw_algo_la-callfftw.lo12
-rwxr-xr-xmodules/fftw/src/c/libscifftw_algo_la-fftw_utilities.lo12
-rwxr-xr-xmodules/fftw/src/c/libscifftw_algo_la-fftwlibname.lo12
-rwxr-xr-xmodules/fftw/src/c/libscifftw_algo_la-sci_data_utilities.lo12
-rwxr-xr-xmodules/fftw/src/c/libscifftw_algo_la-with_fftw.lo12
-rwxr-xr-xmodules/fftw/src/c/sci_data_utilities.c484
-rwxr-xr-xmodules/fftw/src/c/sci_data_utilities.h27
-rwxr-xr-xmodules/fftw/src/c/with_fftw.c25
-rwxr-xr-xmodules/fftw/src/nofftw/.deps/libscifftw_algo_la-nofftw.Plo1
-rwxr-xr-xmodules/fftw/src/nofftw/.deps/libscifftw_la-nofftw.Plo1
-rwxr-xr-xmodules/fftw/src/nofftw/nofftw.c35
-rwxr-xr-xmodules/fftw/src/nofftw/nofftw.rc97
-rwxr-xr-xmodules/fftw/src/nofftw/nofftw.vcxproj195
-rwxr-xr-xmodules/fftw/src/nofftw/nofftw.vcxproj.filters30
-rwxr-xr-xmodules/fftw/tests/benchmarks/bench_fft.tst19
-rwxr-xr-xmodules/fftw/tests/nonreg_tests/bug_10807.dia.ref41
-rwxr-xr-xmodules/fftw/tests/nonreg_tests/bug_10807.tst47
-rwxr-xr-xmodules/fftw/tests/nonreg_tests/bug_5081.dia.ref31
-rwxr-xr-xmodules/fftw/tests/nonreg_tests/bug_5081.tst34
-rwxr-xr-xmodules/fftw/tests/nonreg_tests/bug_8390.tst22
-rwxr-xr-xmodules/fftw/tests/nonreg_tests/bug_9266.dia.ref24
-rwxr-xr-xmodules/fftw/tests/nonreg_tests/bug_9266.tst27
-rwxr-xr-xmodules/fftw/tests/nonreg_tests/bug_9647.dia.ref23
-rwxr-xr-xmodules/fftw/tests/nonreg_tests/bug_9647.tst24
-rwxr-xr-xmodules/fftw/tests/unit_tests/dct_part1.dia.ref133
-rwxr-xr-xmodules/fftw/tests/unit_tests/dct_part1.tst151
-rwxr-xr-xmodules/fftw/tests/unit_tests/dct_part2.dia.ref181
-rwxr-xr-xmodules/fftw/tests/unit_tests/dct_part2.tst204
-rwxr-xr-xmodules/fftw/tests/unit_tests/dct_part3.dia.ref65
-rwxr-xr-xmodules/fftw/tests/unit_tests/dct_part3.tst83
-rwxr-xr-xmodules/fftw/tests/unit_tests/dct_part4.dia.ref33
-rwxr-xr-xmodules/fftw/tests/unit_tests/dct_part4.tst40
-rwxr-xr-xmodules/fftw/tests/unit_tests/dst.dia.ref48
-rwxr-xr-xmodules/fftw/tests/unit_tests/dst.tst60
-rwxr-xr-xmodules/fftw/tests/unit_tests/fftw_flag.dia.ref20
-rwxr-xr-xmodules/fftw/tests/unit_tests/fftw_flag.tst22
-rwxr-xr-xmodules/fftw/tests/unit_tests/fftw_part1.dia.ref272
-rwxr-xr-xmodules/fftw/tests/unit_tests/fftw_part1.tst333
-rwxr-xr-xmodules/fftw/tests/unit_tests/fftw_part2.dia.ref386
-rwxr-xr-xmodules/fftw/tests/unit_tests/fftw_part2.tst421
-rwxr-xr-xmodules/fftw/tests/unit_tests/fftw_part3.dia.ref53
-rwxr-xr-xmodules/fftw/tests/unit_tests/fftw_part3.tst61
-rwxr-xr-xmodules/fftw/tests/unit_tests/fftw_part4.dia.ref152
-rwxr-xr-xmodules/fftw/tests/unit_tests/fftw_part4.tst171
-rwxr-xr-xmodules/fftw/tests/unit_tests/fftw_part5.dia.ref45
-rwxr-xr-xmodules/fftw/tests/unit_tests/fftw_part5.tst57
-rwxr-xr-xmodules/fftw/tests/unit_tests/setget_fftw_wisdom.dia.ref20
-rwxr-xr-xmodules/fftw/tests/unit_tests/setget_fftw_wisdom.tst22
181 files changed, 24771 insertions, 0 deletions
diff --git a/modules/fftw/.libs/libscifftw-algo.a b/modules/fftw/.libs/libscifftw-algo.a
new file mode 100755
index 000000000..204e5d3e3
--- /dev/null
+++ b/modules/fftw/.libs/libscifftw-algo.a
Binary files differ
diff --git a/modules/fftw/.libs/libscifftw-algo.la b/modules/fftw/.libs/libscifftw-algo.la
new file mode 120000
index 000000000..684bb42f6
--- /dev/null
+++ b/modules/fftw/.libs/libscifftw-algo.la
@@ -0,0 +1 @@
+../libscifftw-algo.la \ No newline at end of file
diff --git a/modules/fftw/.libs/libscifftw.a b/modules/fftw/.libs/libscifftw.a
new file mode 100755
index 000000000..0fc91bd37
--- /dev/null
+++ b/modules/fftw/.libs/libscifftw.a
Binary files differ
diff --git a/modules/fftw/.libs/libscifftw.la b/modules/fftw/.libs/libscifftw.la
new file mode 120000
index 000000000..fe579a093
--- /dev/null
+++ b/modules/fftw/.libs/libscifftw.la
@@ -0,0 +1 @@
+../libscifftw.la \ No newline at end of file
diff --git a/modules/fftw/Elementary_functions_f_Import.def b/modules/fftw/Elementary_functions_f_Import.def
new file mode 100755
index 000000000..a687a6752
--- /dev/null
+++ b/modules/fftw/Elementary_functions_f_Import.def
@@ -0,0 +1,5 @@
+LIBRARY elementary_functions_f.dll
+
+
+EXPORTS
+dset_ \ No newline at end of file
diff --git a/modules/fftw/Makefile b/modules/fftw/Makefile
new file mode 100755
index 000000000..498639673
--- /dev/null
+++ b/modules/fftw/Makefile
@@ -0,0 +1,1609 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# modules/fftw/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) 2007 - INRIA - Sylvestre LEDRU
+# Copyright (C) 2007 - INRIA - Allan CORNET
+#
+# This file must be used under the terms of the CeCILL.
+# This source file is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at
+# http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) 2006-2008 - INRIA - Sylvestre LEDRU <sylvestre.ledru@inria.fr>
+# Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre.marechal@inria.fr>
+#
+# This file must be used under the terms of the CeCILL.
+# This source file is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at
+# http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+#
+
+##########
+### Makefile included stuff
+### Target, variable, suffixes which are supposed to be useful in every makefile.am
+##########
+
+
+
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/scilab
+pkgincludedir = $(includedir)/scilab
+pkglibdir = $(libdir)/scilab
+pkglibexecdir = $(libexecdir)/scilab
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+am__append_1 = libscifftw-algo.la
+DIST_COMMON = $(top_srcdir)/Makefile.incl.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/config/mkinstalldirs \
+ $(top_srcdir)/config/depcomp
+am__append_2 = java
+subdir = modules/fftw
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/backtrace.m4 \
+ $(top_srcdir)/m4/compiler.m4 $(top_srcdir)/m4/curl.m4 \
+ $(top_srcdir)/m4/docbook.m4 $(top_srcdir)/m4/doxygen.m4 \
+ $(top_srcdir)/m4/fftw.m4 $(top_srcdir)/m4/fortran.m4 \
+ $(top_srcdir)/m4/giws.m4 $(top_srcdir)/m4/hdf5.m4 \
+ $(top_srcdir)/m4/intel_compiler.m4 \
+ $(top_srcdir)/m4/java-thirdparty.m4 $(top_srcdir)/m4/java.m4 \
+ $(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/libsmath.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/macosx.m4 \
+ $(top_srcdir)/m4/mpi.m4 $(top_srcdir)/m4/ocaml.m4 \
+ $(top_srcdir)/m4/pcre.m4 $(top_srcdir)/m4/pkg.m4 \
+ $(top_srcdir)/m4/relocatable.m4 $(top_srcdir)/m4/swig.m4 \
+ $(top_srcdir)/m4/symlinks.m4 $(top_srcdir)/m4/tcltk.m4 \
+ $(top_srcdir)/m4/umfpack.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/modules/core/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(pkglibdir)" \
+ "$(DESTDIR)$(libscifftw_la_etcdir)" \
+ "$(DESTDIR)$(libscifftw_la_rootdir)" \
+ "$(DESTDIR)$(libscifftw_la_sci_gatewaydir)"
+LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkglib_LTLIBRARIES)
+libscifftw_algo_la_LIBADD =
+am__libscifftw_algo_la_SOURCES_DIST = src/nofftw/nofftw.c \
+ src/c/callfftw.c src/c/fftwlibname.c src/c/fftw_utilities.c \
+ src/c/sci_data_utilities.c src/c/with_fftw.c
+am__dirstamp = $(am__leading_dot)dirstamp
+#am__objects_1 = src/nofftw/libscifftw_algo_la-nofftw.lo
+am__objects_1 = src/c/libscifftw_algo_la-callfftw.lo \
+ src/c/libscifftw_algo_la-fftwlibname.lo \
+ src/c/libscifftw_algo_la-fftw_utilities.lo \
+ src/c/libscifftw_algo_la-sci_data_utilities.lo \
+ src/c/libscifftw_algo_la-with_fftw.lo
+am_libscifftw_algo_la_OBJECTS = $(am__objects_1)
+libscifftw_algo_la_OBJECTS = $(am_libscifftw_algo_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+am__v_lt_1 =
+am_libscifftw_algo_la_rpath =
+#am_libscifftw_algo_la_rpath =
+am__DEPENDENCIES_1 =
+libscifftw_la_DEPENDENCIES = libscifftw-algo.la \
+ $(am__DEPENDENCIES_1)
+am__libscifftw_la_SOURCES_DIST = src/nofftw/nofftw.c src/c/callfftw.c \
+ src/c/fftwlibname.c src/c/fftw_utilities.c \
+ src/c/sci_data_utilities.c src/c/with_fftw.c \
+ sci_gateway/c/gw_fftw.c \
+ sci_gateway/c/sci_fftwlibraryisloaded.c \
+ sci_gateway/c/sci_disposefftwlibrary.c \
+ sci_gateway/c/sci_fftw.c sci_gateway/c/sci_fftw_flags.c \
+ sci_gateway/c/sci_loadfftwlibrary.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 sci_gateway/c/sci_dct.c \
+ sci_gateway/c/sci_dst.c
+#am__objects_2 = src/nofftw/libscifftw_la-nofftw.lo
+am__objects_2 = src/c/libscifftw_la-callfftw.lo \
+ src/c/libscifftw_la-fftwlibname.lo \
+ src/c/libscifftw_la-fftw_utilities.lo \
+ src/c/libscifftw_la-sci_data_utilities.lo \
+ src/c/libscifftw_la-with_fftw.lo
+am__objects_3 = sci_gateway/c/libscifftw_la-gw_fftw.lo \
+ sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo \
+ sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo \
+ sci_gateway/c/libscifftw_la-sci_fftw.lo \
+ sci_gateway/c/libscifftw_la-sci_fftw_flags.lo \
+ sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo \
+ sci_gateway/c/libscifftw_la-sci_get_fftw_wisdom.lo \
+ sci_gateway/c/libscifftw_la-sci_set_fftw_wisdom.lo \
+ sci_gateway/c/libscifftw_la-sci_fftw_forget_wisdom.lo \
+ sci_gateway/c/libscifftw_la-sci_dct.lo \
+ sci_gateway/c/libscifftw_la-sci_dst.lo
+#am_libscifftw_la_OBJECTS = $(am__objects_2)
+am_libscifftw_la_OBJECTS = $(am__objects_3)
+libscifftw_la_OBJECTS = $(am_libscifftw_la_OBJECTS)
+libscifftw_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(libscifftw_la_LDFLAGS) $(LDFLAGS) -o $@
+am_libscifftw_la_rpath =
+#am_libscifftw_la_rpath = -rpath $(pkglibdir)
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/modules/core/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libscifftw_algo_la_SOURCES) $(libscifftw_la_SOURCES)
+DIST_SOURCES = $(am__libscifftw_algo_la_SOURCES_DIST) \
+ $(am__libscifftw_la_SOURCES_DIST)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DATA = $(libscifftw_la_etc_DATA) $(libscifftw_la_root_DATA) \
+ $(libscifftw_la_sci_gateway_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/shashank/scilab-master_5.5.2/config/missing aclocal-1.14
+ALL_LINGUAS = en_US fr_FR zh_CN zh_TW ru_RU ca_ES de_DE es_ES pt_BR ja_JP it_IT uk_UA pl_PL cs_CZ
+ALL_LINGUAS_DOC = en_US fr_FR pt_BR ja_JP ru_RU
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+ANT = /usr/bin/ant
+ANTLR = /usr/share/java/antlr.jar
+AR = ar
+ARPACK_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -larpack
+ASM3 = /usr/share/java/asm3-3.3.2.jar
+AUTOCONF = ${SHELL} /home/shashank/scilab-master_5.5.2/config/missing autoconf
+AUTOHEADER = ${SHELL} /home/shashank/scilab-master_5.5.2/config/missing autoheader
+AUTOMAKE = ${SHELL} /home/shashank/scilab-master_5.5.2/config/missing automake-1.14
+AVALON_FRAMEWORK = /home/shashank/scilab-master_5.5.2/thirdparty/avalon-framework.jar
+AWK = mawk
+BATIK = /home/shashank/scilab-master_5.5.2/thirdparty/batik-all-1.7.jar
+BLAS_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lblas
+CC = gcc
+CCACHE =
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CHECKSTYLE =
+COBERTURA = /usr/share/java/cobertura.jar
+COMMONS_BEANUTILS =
+COMMONS_IO = /home/shashank/scilab-master_5.5.2/thirdparty/commons-io.jar
+COMMONS_LOGGING = /home/shashank/scilab-master_5.5.2/thirdparty/commons-logging.jar
+CPP = gcc -E
+CPPFLAGS =
+CURL_CFLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include
+CURL_CONFIG = /home/shashank/scilab-master_5.5.2/usr/bin/curl-config
+CURL_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lcurl -L/home/scilab/work/linux-prerequisites-sources/trunk/Dev-Tools/SE/Prerequirements/linux_x64/usr/lib -L/home/scilab/work/linux-prerequisites-sources/trunk/Dev-Tools/SE/Prerequirements/linux_x64/usr/lib -lssl -lcrypto -lrt -lz
+CURL_VERSION = libcurl 7.19.7
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEMOTOOLS_ENABLE = yes
+DEPDIR = .deps
+DLLTOOL = false
+DOCBOOK_ROOT = /home/shashank/scilab-master_5.5.2/thirdparty/docbook/
+DOXYGEN_BIN =
+DSYMUTIL =
+DUMPBIN =
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+ECJ = /home/shashank/scilab-master_5.5.2/thirdparty/ecj.jar
+EGREP = /bin/grep -E
+EXEEXT =
+F77 = gfortran
+FFLAGS = -g -O2
+FFTW3_LIB = -L/home/shashank/scilab-master_5.5.2/usr/lib -lfftw3
+FFTW_ENABLE = yes
+FGREP = /bin/grep -F
+FLEXDOCK = /home/shashank/scilab-master_5.5.2/thirdparty/flexdock-1.2.4.jar
+FLIBS = -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. -lpthread -ldl -lcurses -lgfortran -lm -lquadmath
+FOP = /home/shashank/scilab-master_5.5.2/thirdparty/fop.jar
+FREEHEP_GRAPHICS2D = /home/shashank/scilab-master_5.5.2/thirdparty/freehep-graphics2d.jar
+FREEHEP_GRAPHICSIO = /home/shashank/scilab-master_5.5.2/thirdparty/freehep-graphicsio.jar
+FREEHEP_GRAPHICSIO_EMF = /home/shashank/scilab-master_5.5.2/thirdparty/freehep-graphicsio-emf.jar
+FREEHEP_IO = /home/shashank/scilab-master_5.5.2/thirdparty/freehep-io.jar
+FREEHEP_UTIL = /home/shashank/scilab-master_5.5.2/thirdparty/freehep-util.jar
+GENHTML =
+GETTEXT_MACRO_VERSION = 0.19
+GIWS_BIN =
+GLUEGEN2_RT = /home/shashank/scilab-master_5.5.2/thirdparty/gluegen2-rt.jar
+GMSGFMT = /usr/bin/msgfmt
+GMSGFMT_015 = /usr/bin/msgfmt
+GRAPHICS_ENABLE = yes
+GREP = /bin/grep
+GUI_ENABLE = yes
+HDF5_CFLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include
+HDF5_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lhdf5 -lhdf5_hl
+HELP_ENABLE = yes
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+INTLLIBS =
+INTL_MACOSX_LIBS =
+JAR = /usr/lib/jvm/java-8-openjdk-amd64/bin/jar
+JAVA = /usr/lib/jvm/java-8-openjdk-amd64/bin/java
+JAVAC = /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
+JAVAC_DEBUG = off
+JAVADOC = /usr/lib/jvm/java-8-openjdk-amd64/bin/javadoc
+JAVAH = /usr/lib/jvm/java-8-openjdk-amd64/bin/javah
+JAVASCI_ENABLE = yes
+JAVA_ENABLE = yes
+JAVA_G = /usr/lib/jvm/java-8-openjdk-amd64/bin/java
+JAVA_HOME = /usr/lib/jvm/java-8-openjdk-amd64
+JAVA_JNI_INCLUDE = -I/usr/lib/jvm/java-8-openjdk-amd64/include -I/usr/lib/jvm/java-8-openjdk-amd64/include/linux
+JAVA_JNI_LIBS = -L/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64 -ljava -lverify -L/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server -ljvm
+JDB = /usr/lib/jvm/java-8-openjdk-amd64/bin/jdb
+JEUCLID_CORE = /home/shashank/scilab-master_5.5.2/thirdparty/jeuclid-core.jar
+JGRAPHX = /home/shashank/scilab-master_5.5.2/thirdparty/jgraphx.jar
+JHALL = /home/shashank/scilab-master_5.5.2/thirdparty/jhall.jar
+JLATEXMATH = /home/shashank/scilab-master_5.5.2/thirdparty/jlatexmath-1.0.3.jar
+JLATEXMATH_FOP = /home/shashank/scilab-master_5.5.2/thirdparty/jlatexmath-fop-1.0.3.jar
+JOGL2 = /home/shashank/scilab-master_5.5.2/thirdparty/jogl2.jar
+JROSETTA_API = /home/shashank/scilab-master_5.5.2/thirdparty/jrosetta-API.jar
+JROSETTA_ENGINE = /home/shashank/scilab-master_5.5.2/thirdparty/jrosetta-engine.jar
+JUNIT4 = /usr/share/java/junit4.jar
+LAPACK_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -llapack
+LCOV =
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS = -Wl,--no-as-needed
+LIBICONV = -liconv
+LIBINTL =
+LIBM = -lm
+LIBOBJS =
+LIBS = -lpthread -ldl -lcurses -lm
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LIPO =
+LN_S = ln -s
+LOGGING_LEVEL = SEVERE
+LOOKS = /home/shashank/scilab-master_5.5.2/thirdparty/looks-2.1.1.jar
+LTLIBICONV = -liconv
+LTLIBINTL =
+LTLIBOBJS =
+MAINT = #
+MAKEINFO = ${SHELL} /home/shashank/scilab-master_5.5.2/config/missing makeinfo
+MANIFEST_TOOL = :
+MATIO_CFLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include
+MATIO_ENABLE = yes
+MATIO_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lm -lz -lmatio -lhdf5
+MKDIR_P = /bin/mkdir -p
+MPI_ENABLE = no
+MSGCAT = /usr/bin/msgcat
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_015 = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NM = nm
+NMEDIT =
+OBJDUMP = objdump
+OBJEXT = o
+OCAMLC = ocamlc
+OCAMLDEP = ocamldep
+OCAMLLEX = ocamllex
+OCAMLOPT = ocamlopt
+OCAMLYACC = ocamlyacc
+OPENMPI_CC =
+OPENMPI_CFLAGS =
+OPENMPI_CXX =
+OPENMPI_CXXFLAGS =
+OPENMPI_LIBS =
+OPENMP_CFLAGS = -fopenmp
+OPENMP_CXXFLAGS = -fopenmp
+OPENMP_ENABLE = yes
+OPENMP_LIBS = -lgomp -lstdc++
+OTOOL =
+OTOOL64 =
+PACKAGE = scilab
+PACKAGE_BUGREPORT = http://bugzilla.scilab.org/
+PACKAGE_NAME = Scilab
+PACKAGE_STRING = Scilab 5
+PACKAGE_TARNAME = scilab
+PACKAGE_URL =
+PACKAGE_VERSION = 5
+PATH_SEPARATOR = :
+PCRE_CFLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include
+PCRE_CONFIG = /home/shashank/scilab-master_5.5.2/usr/bin/pcre-config
+PCRE_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lpcreposix -lpcre
+PCRE_VERSION = 8.35
+PKG_CONFIG = /usr/bin/pkg-config
+POSUB = po
+POW_LIB =
+PYTHON =
+RANLIB = ranlib
+RELOCATABLE = no
+RT_LIB = -lrt
+SAXON = /home/shashank/scilab-master_5.5.2/thirdparty/saxon9he.jar
+SCILAB_BINARY_VERSION = 5.5.2
+SCILAB_LIBRARY_VERSION = 5:5:2
+SCILAB_VERSION_MAINTENANCE = 2
+SCILAB_VERSION_MAJOR = 5
+SCILAB_VERSION_MINOR = 5
+SCIRENDERER = ${modules.dir}/scirenderer/${build.jar.dir}/scirenderer.jar
+SCIRENDERER_CP = $SCILAB/modules/scirenderer/jar/scirenderer.jar
+SCI_CFLAGS = -D_LARGEFILE64_SOURCE -DNDEBUG -m64 -fno-stack-protector
+SCI_CXXFLAGS = -DNDEBUG -fno-stack-protector
+SCI_FFLAGS = -DNDEBUG -m64 -fPIC
+SCI_LDFLAGS =
+SED = /bin/sed
+SET_MAKE =
+SET_RELOCATABLE =
+SHELL = /bin/bash
+SKINLF = /home/shashank/scilab-master_5.5.2/thirdparty/skinlf.jar
+SPLINT = no
+STRIP = strip
+SWIG_BIN =
+SWIG_JAVA =
+SWIG_RUNTIME_LIBS_DIR =
+SWIG_SCILAB =
+TCLTK_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -ltk8.5 -L/home/shashank/scilab-master_5.5.2/usr/lib -ltcl8.5 -ldl
+TCL_INC_PATH = -I/home/shashank/scilab-master_5.5.2/usr/include
+TK_INC_PATH = -I/home/shashank/scilab-master_5.5.2/usr/include
+UMFPACK_CFLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include
+UMFPACK_ENABLE = yes
+UMFPACK_LIB = -L/home/shashank/scilab-master_5.5.2/usr/lib -lumfpack -lamd
+USE_NLS = yes
+VERSION = 5
+WITH_OCAML =
+WITH_TKSCI = yes
+XCOS_ENABLE = yes
+XGETTEXT = /usr/bin/xgettext
+XGETTEXT_015 = /usr/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS =
+XMKMF =
+XMLGRAPHICS_COMMONS = /home/shashank/scilab-master_5.5.2/thirdparty/xmlgraphics-commons-1.4.jar
+XML_APIS_EXT = /home/shashank/scilab-master_5.5.2/thirdparty/xml-apis-ext.jar
+XML_CONFIG = /home/shashank/scilab-master_5.5.2/usr/bin/xml2-config
+XML_FLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include/libxml2
+XML_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lxml2 -L/home/scilab/work/linux-prerequisites-sources/trunk/Dev-Tools/SE/Prerequirements/linux_x64/usr/lib -lz -lm -ldl
+XML_VERSION = 2.9.1
+X_CFLAGS =
+X_EXTRA_LIBS =
+X_LIBS =
+X_PRE_LIBS =
+abs_builddir = /home/shashank/scilab-master_5.5.2/modules/fftw
+abs_srcdir = /home/shashank/scilab-master_5.5.2/modules/fftw
+abs_top_builddir = /home/shashank/scilab-master_5.5.2
+abs_top_srcdir = /home/shashank/scilab-master_5.5.2
+ac_ct_AR = ar
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DUMPBIN =
+ac_ct_F77 = gfortran
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias =
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+cxx_present = yes
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias =
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /home/shashank/scilab-master_5.5.2/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias =
+top_build_prefix = ../../
+top_builddir = ../..
+top_srcdir = ../..
+modulename = fftw
+#pkglib_LTLIBRARIES = libscifftw.la
+noinst_LTLIBRARIES = libscifftw.la \
+ $(am__append_1)
+#noinst_LTLIBRARIES = $(am__append_1)
+libscifftw_la_LDFLAGS = $(AM_LDFLAGS)
+
+#### fftw : Conf files ####
+libscifftw_la_rootdir = $(mydatadir)
+
+#### fftw : init scripts ####
+libscifftw_la_etcdir = $(mydatadir)/etc
+libscifftw_la_etc_DATA = etc/fftw.quit etc/fftw.start
+#FFTW_C_SOURCES = src/nofftw/nofftw.c
+FFTW_C_SOURCES = src/c/callfftw.c \
+src/c/fftwlibname.c \
+src/c/fftw_utilities.c \
+src/c/sci_data_utilities.c \
+src/c/with_fftw.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.c \
+ sci_gateway/c/sci_fftw_flags.c \
+ sci_gateway/c/sci_loadfftwlibrary.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 \
+ sci_gateway/c/sci_dct.c \
+ sci_gateway/c/sci_dst.c
+
+
+#### fftw : Conf files ####
+libscifftw_la_root_DATA = license.txt
+
+#### fftw : gateway declaration ####
+libscifftw_la_sci_gatewaydir = $(mydatadir)/sci_gateway
+libscifftw_la_sci_gateway_DATA = sci_gateway/fftw_gateway.xml
+libscifftw_algo_la_SOURCES = $(FFTW_C_SOURCES)
+#libscifftw_la_SOURCES = $(FFTW_C_SOURCES)
+libscifftw_la_SOURCES = $(GATEWAY_C_SOURCES)
+libscifftw_algo_la_CPPFLAGS = $(libscifftw_la_CPPFLAGS)
+
+# For the code check (splint)
+CHECK_SRC = $(FFTW_C_SOURCES) $(GATEWAY_C_SOURCES)
+INCLUDE_FLAGS = $(libscifftw_la_CPPFLAGS)
+libscifftw_la_LIBADD = libscifftw-algo.la $(FFTW3_LIB)
+#libscifftw_la_CPPFLAGS = -I$(srcdir)/includes/ \
+# -I$(srcdir)/src/c/ \
+# -I$(top_srcdir)/modules/api_scilab/includes/ \
+# -I$(top_srcdir)/modules/output_stream/includes/ \
+# -I$(top_srcdir)/modules/localization/includes/ \
+# $(AM_CPPFLAGS)
+
+libscifftw_la_CPPFLAGS = -I$(srcdir)/includes/ \
+ -I$(srcdir)/src/c/ \
+ -I$(top_srcdir)/modules/dynamic_link/includes/ \
+ -I$(top_srcdir)/modules/fileio/includes/ \
+ -I$(top_srcdir)/modules/output_stream/includes/ \
+ -I$(top_srcdir)/modules/api_scilab/includes/ \
+ -I$(top_srcdir)/modules/localization/includes/ \
+ $(FFTW3_CFLAGS) \
+ $(AM_CPPFLAGS)
+
+
+# Where all the Scilab stuff is installed (macros, help, ...)
+mydatadir = $(pkgdatadir)/modules/$(modulename)
+
+# Set AM_* SCI detected settings
+AM_CPPFLAGS = $(SCI_CPPFLAGS)
+AM_CFLAGS = $(SCI_CFLAGS)
+AM_CXXFLAGS = $(SCI_CXXFLAGS)
+# append includes to AM_FFLAGS to manage fortran includes
+AM_FFLAGS = $(SCI_FFLAGS) -I$(top_srcdir)/modules/core/includes/
+
+# Tag shared libraries with the Scilab version
+AM_LDFLAGS = $(SCI_LDFLAGS) -version-number $(SCILAB_LIBRARY_VERSION)
+
+# splint options
+SPLINT_OPTIONS = -weak -booltype BOOL
+
+########################### JAVA ######################################
+#### We are delegating java compilation to ant... Thanks to that
+#### the procedure will be the same with Microsoft Windows (C)
+#### and Linux/Unix
+#######################################################################
+TARGETS_ALL = $(am__append_2)
+
+################ MACROS ######################
+# Rule to build a macro
+# NOT USED AT THE MOMENT
+SUFFIXES = .sci
+
+########### INSTALL DOCUMENTATION ###################
+
+# Install documentation files into the right target
+# We do not use the automake mechanism (libxxxx_la_help_fr_DATA) because
+# automake needs the html files to be present which is not the case when
+# we are building Scilab
+
+# Where it should be installed
+pkgdocdir = $(mydatadir)
+
+# What is the mask of the help source
+DOCMASKXML = *.xml
+
+# What is the mask of the MathML sources
+DOCMASKMML = *.mml
+
+########### INSTALL DATA ###################
+# Install macros, help & demos
+# Where it should be installed
+pkgmacrosdir = $(mydatadir)
+# Which directory we process
+MACRODIRS = macros/
+# Mask of the Scilab sources macros
+MACROMASK = *.sci
+# Mask of the Scilab executable sources macros
+MACROBUILDMASK = *.sce
+# Mask of the Scilab compiled macros
+MACROBINMASK = *.bin
+# List of the standard directory for tests
+TESTS_DIR = tests/benchmarks tests/nonreg_tests tests/unit_tests tests/java
+# Where the demos should be installed
+pkgdemosdir = $(mydatadir)
+# List of the standard directory for demos
+DEMOS_DIR = demos
+# List of the standard directory for examples
+EXAMPLES_DIR = examples
+# Where to export JAVA archives (.jar)
+JARDIR = jar/
+# JAR files mask
+JARMASK = *.jar
+# Chapter file
+HELP_CHAPTERDIR = help/
+HELP_CHAPTERFILE = addchapter.sce
+HELP_CHAPTERLANG = en_US fr_FR pt_BR
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .sci .bin .c .lo .o .obj
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(top_srcdir)/Makefile.incl.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign modules/fftw/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign modules/fftw/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/Makefile.incl.am:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+src/nofftw/$(am__dirstamp):
+ @$(MKDIR_P) src/nofftw
+ @: > src/nofftw/$(am__dirstamp)
+src/nofftw/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/nofftw/$(DEPDIR)
+ @: > src/nofftw/$(DEPDIR)/$(am__dirstamp)
+src/nofftw/libscifftw_algo_la-nofftw.lo: src/nofftw/$(am__dirstamp) \
+ src/nofftw/$(DEPDIR)/$(am__dirstamp)
+src/c/$(am__dirstamp):
+ @$(MKDIR_P) src/c
+ @: > src/c/$(am__dirstamp)
+src/c/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/c/$(DEPDIR)
+ @: > src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_algo_la-callfftw.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_algo_la-fftwlibname.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_algo_la-fftw_utilities.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_algo_la-sci_data_utilities.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_algo_la-with_fftw.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+
+libscifftw-algo.la: $(libscifftw_algo_la_OBJECTS) $(libscifftw_algo_la_DEPENDENCIES) $(EXTRA_libscifftw_algo_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(am_libscifftw_algo_la_rpath) $(libscifftw_algo_la_OBJECTS) $(libscifftw_algo_la_LIBADD) $(LIBS)
+src/nofftw/libscifftw_la-nofftw.lo: src/nofftw/$(am__dirstamp) \
+ src/nofftw/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_la-callfftw.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_la-fftwlibname.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_la-fftw_utilities.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_la-sci_data_utilities.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_la-with_fftw.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/$(am__dirstamp):
+ @$(MKDIR_P) sci_gateway/c
+ @: > sci_gateway/c/$(am__dirstamp)
+sci_gateway/c/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) sci_gateway/c/$(DEPDIR)
+ @: > sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-gw_fftw.lo: sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_fftw.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_fftw_flags.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_get_fftw_wisdom.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_set_fftw_wisdom.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_fftw_forget_wisdom.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_dct.lo: sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_dst.lo: sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+
+libscifftw.la: $(libscifftw_la_OBJECTS) $(libscifftw_la_DEPENDENCIES) $(EXTRA_libscifftw_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libscifftw_la_LINK) $(am_libscifftw_la_rpath) $(libscifftw_la_OBJECTS) $(libscifftw_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f sci_gateway/c/*.$(OBJEXT)
+ -rm -f sci_gateway/c/*.lo
+ -rm -f src/c/*.$(OBJEXT)
+ -rm -f src/c/*.lo
+ -rm -f src/nofftw/*.$(OBJEXT)
+ -rm -f src/nofftw/*.lo
+
+distclean-compile:
+ -rm -f *.tab.c
+
+include sci_gateway/c/$(DEPDIR)/libscifftw_la-gw_fftw.Plo
+include sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_dct.Plo
+include sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_disposefftwlibrary.Plo
+include sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_dst.Plo
+include sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw.Plo
+include sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw_flags.Plo
+include sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw_forget_wisdom.Plo
+include sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftwlibraryisloaded.Plo
+include sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_get_fftw_wisdom.Plo
+include sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_loadfftwlibrary.Plo
+include sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_set_fftw_wisdom.Plo
+include src/c/$(DEPDIR)/libscifftw_algo_la-callfftw.Plo
+include src/c/$(DEPDIR)/libscifftw_algo_la-fftw_utilities.Plo
+include src/c/$(DEPDIR)/libscifftw_algo_la-fftwlibname.Plo
+include src/c/$(DEPDIR)/libscifftw_algo_la-sci_data_utilities.Plo
+include src/c/$(DEPDIR)/libscifftw_algo_la-with_fftw.Plo
+include src/c/$(DEPDIR)/libscifftw_la-callfftw.Plo
+include src/c/$(DEPDIR)/libscifftw_la-fftw_utilities.Plo
+include src/c/$(DEPDIR)/libscifftw_la-fftwlibname.Plo
+include src/c/$(DEPDIR)/libscifftw_la-sci_data_utilities.Plo
+include src/c/$(DEPDIR)/libscifftw_la-with_fftw.Plo
+include src/nofftw/$(DEPDIR)/libscifftw_algo_la-nofftw.Plo
+include src/nofftw/$(DEPDIR)/libscifftw_la-nofftw.Plo
+
+.c.o:
+ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ $(am__mv) $$depbase.Tpo $$depbase.Po
+# $(AM_V_CC)source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ $(am__mv) $$depbase.Tpo $$depbase.Po
+# $(AM_V_CC)source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ $(am__mv) $$depbase.Tpo $$depbase.Plo
+# $(AM_V_CC)source='$<' object='$@' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $<
+
+src/nofftw/libscifftw_algo_la-nofftw.lo: src/nofftw/nofftw.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/nofftw/libscifftw_algo_la-nofftw.lo -MD -MP -MF src/nofftw/$(DEPDIR)/libscifftw_algo_la-nofftw.Tpo -c -o src/nofftw/libscifftw_algo_la-nofftw.lo `test -f 'src/nofftw/nofftw.c' || echo '$(srcdir)/'`src/nofftw/nofftw.c
+ $(AM_V_at)$(am__mv) src/nofftw/$(DEPDIR)/libscifftw_algo_la-nofftw.Tpo src/nofftw/$(DEPDIR)/libscifftw_algo_la-nofftw.Plo
+# $(AM_V_CC)source='src/nofftw/nofftw.c' object='src/nofftw/libscifftw_algo_la-nofftw.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/nofftw/libscifftw_algo_la-nofftw.lo `test -f 'src/nofftw/nofftw.c' || echo '$(srcdir)/'`src/nofftw/nofftw.c
+
+src/c/libscifftw_algo_la-callfftw.lo: src/c/callfftw.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_algo_la-callfftw.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_algo_la-callfftw.Tpo -c -o src/c/libscifftw_algo_la-callfftw.lo `test -f 'src/c/callfftw.c' || echo '$(srcdir)/'`src/c/callfftw.c
+ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_algo_la-callfftw.Tpo src/c/$(DEPDIR)/libscifftw_algo_la-callfftw.Plo
+# $(AM_V_CC)source='src/c/callfftw.c' object='src/c/libscifftw_algo_la-callfftw.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_algo_la-callfftw.lo `test -f 'src/c/callfftw.c' || echo '$(srcdir)/'`src/c/callfftw.c
+
+src/c/libscifftw_algo_la-fftwlibname.lo: src/c/fftwlibname.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_algo_la-fftwlibname.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_algo_la-fftwlibname.Tpo -c -o src/c/libscifftw_algo_la-fftwlibname.lo `test -f 'src/c/fftwlibname.c' || echo '$(srcdir)/'`src/c/fftwlibname.c
+ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_algo_la-fftwlibname.Tpo src/c/$(DEPDIR)/libscifftw_algo_la-fftwlibname.Plo
+# $(AM_V_CC)source='src/c/fftwlibname.c' object='src/c/libscifftw_algo_la-fftwlibname.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_algo_la-fftwlibname.lo `test -f 'src/c/fftwlibname.c' || echo '$(srcdir)/'`src/c/fftwlibname.c
+
+src/c/libscifftw_algo_la-fftw_utilities.lo: src/c/fftw_utilities.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_algo_la-fftw_utilities.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_algo_la-fftw_utilities.Tpo -c -o src/c/libscifftw_algo_la-fftw_utilities.lo `test -f 'src/c/fftw_utilities.c' || echo '$(srcdir)/'`src/c/fftw_utilities.c
+ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_algo_la-fftw_utilities.Tpo src/c/$(DEPDIR)/libscifftw_algo_la-fftw_utilities.Plo
+# $(AM_V_CC)source='src/c/fftw_utilities.c' object='src/c/libscifftw_algo_la-fftw_utilities.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_algo_la-fftw_utilities.lo `test -f 'src/c/fftw_utilities.c' || echo '$(srcdir)/'`src/c/fftw_utilities.c
+
+src/c/libscifftw_algo_la-sci_data_utilities.lo: src/c/sci_data_utilities.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_algo_la-sci_data_utilities.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_algo_la-sci_data_utilities.Tpo -c -o src/c/libscifftw_algo_la-sci_data_utilities.lo `test -f 'src/c/sci_data_utilities.c' || echo '$(srcdir)/'`src/c/sci_data_utilities.c
+ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_algo_la-sci_data_utilities.Tpo src/c/$(DEPDIR)/libscifftw_algo_la-sci_data_utilities.Plo
+# $(AM_V_CC)source='src/c/sci_data_utilities.c' object='src/c/libscifftw_algo_la-sci_data_utilities.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_algo_la-sci_data_utilities.lo `test -f 'src/c/sci_data_utilities.c' || echo '$(srcdir)/'`src/c/sci_data_utilities.c
+
+src/c/libscifftw_algo_la-with_fftw.lo: src/c/with_fftw.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_algo_la-with_fftw.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_algo_la-with_fftw.Tpo -c -o src/c/libscifftw_algo_la-with_fftw.lo `test -f 'src/c/with_fftw.c' || echo '$(srcdir)/'`src/c/with_fftw.c
+ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_algo_la-with_fftw.Tpo src/c/$(DEPDIR)/libscifftw_algo_la-with_fftw.Plo
+# $(AM_V_CC)source='src/c/with_fftw.c' object='src/c/libscifftw_algo_la-with_fftw.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_algo_la-with_fftw.lo `test -f 'src/c/with_fftw.c' || echo '$(srcdir)/'`src/c/with_fftw.c
+
+src/nofftw/libscifftw_la-nofftw.lo: src/nofftw/nofftw.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/nofftw/libscifftw_la-nofftw.lo -MD -MP -MF src/nofftw/$(DEPDIR)/libscifftw_la-nofftw.Tpo -c -o src/nofftw/libscifftw_la-nofftw.lo `test -f 'src/nofftw/nofftw.c' || echo '$(srcdir)/'`src/nofftw/nofftw.c
+ $(AM_V_at)$(am__mv) src/nofftw/$(DEPDIR)/libscifftw_la-nofftw.Tpo src/nofftw/$(DEPDIR)/libscifftw_la-nofftw.Plo
+# $(AM_V_CC)source='src/nofftw/nofftw.c' object='src/nofftw/libscifftw_la-nofftw.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/nofftw/libscifftw_la-nofftw.lo `test -f 'src/nofftw/nofftw.c' || echo '$(srcdir)/'`src/nofftw/nofftw.c
+
+src/c/libscifftw_la-callfftw.lo: src/c/callfftw.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_la-callfftw.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_la-callfftw.Tpo -c -o src/c/libscifftw_la-callfftw.lo `test -f 'src/c/callfftw.c' || echo '$(srcdir)/'`src/c/callfftw.c
+ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_la-callfftw.Tpo src/c/$(DEPDIR)/libscifftw_la-callfftw.Plo
+# $(AM_V_CC)source='src/c/callfftw.c' object='src/c/libscifftw_la-callfftw.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_la-callfftw.lo `test -f 'src/c/callfftw.c' || echo '$(srcdir)/'`src/c/callfftw.c
+
+src/c/libscifftw_la-fftwlibname.lo: src/c/fftwlibname.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_la-fftwlibname.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_la-fftwlibname.Tpo -c -o src/c/libscifftw_la-fftwlibname.lo `test -f 'src/c/fftwlibname.c' || echo '$(srcdir)/'`src/c/fftwlibname.c
+ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_la-fftwlibname.Tpo src/c/$(DEPDIR)/libscifftw_la-fftwlibname.Plo
+# $(AM_V_CC)source='src/c/fftwlibname.c' object='src/c/libscifftw_la-fftwlibname.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_la-fftwlibname.lo `test -f 'src/c/fftwlibname.c' || echo '$(srcdir)/'`src/c/fftwlibname.c
+
+src/c/libscifftw_la-fftw_utilities.lo: src/c/fftw_utilities.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_la-fftw_utilities.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_la-fftw_utilities.Tpo -c -o src/c/libscifftw_la-fftw_utilities.lo `test -f 'src/c/fftw_utilities.c' || echo '$(srcdir)/'`src/c/fftw_utilities.c
+ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_la-fftw_utilities.Tpo src/c/$(DEPDIR)/libscifftw_la-fftw_utilities.Plo
+# $(AM_V_CC)source='src/c/fftw_utilities.c' object='src/c/libscifftw_la-fftw_utilities.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_la-fftw_utilities.lo `test -f 'src/c/fftw_utilities.c' || echo '$(srcdir)/'`src/c/fftw_utilities.c
+
+src/c/libscifftw_la-sci_data_utilities.lo: src/c/sci_data_utilities.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_la-sci_data_utilities.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_la-sci_data_utilities.Tpo -c -o src/c/libscifftw_la-sci_data_utilities.lo `test -f 'src/c/sci_data_utilities.c' || echo '$(srcdir)/'`src/c/sci_data_utilities.c
+ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_la-sci_data_utilities.Tpo src/c/$(DEPDIR)/libscifftw_la-sci_data_utilities.Plo
+# $(AM_V_CC)source='src/c/sci_data_utilities.c' object='src/c/libscifftw_la-sci_data_utilities.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_la-sci_data_utilities.lo `test -f 'src/c/sci_data_utilities.c' || echo '$(srcdir)/'`src/c/sci_data_utilities.c
+
+src/c/libscifftw_la-with_fftw.lo: src/c/with_fftw.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_la-with_fftw.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_la-with_fftw.Tpo -c -o src/c/libscifftw_la-with_fftw.lo `test -f 'src/c/with_fftw.c' || echo '$(srcdir)/'`src/c/with_fftw.c
+ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_la-with_fftw.Tpo src/c/$(DEPDIR)/libscifftw_la-with_fftw.Plo
+# $(AM_V_CC)source='src/c/with_fftw.c' object='src/c/libscifftw_la-with_fftw.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_la-with_fftw.lo `test -f 'src/c/with_fftw.c' || echo '$(srcdir)/'`src/c/with_fftw.c
+
+sci_gateway/c/libscifftw_la-gw_fftw.lo: sci_gateway/c/gw_fftw.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-gw_fftw.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-gw_fftw.Tpo -c -o sci_gateway/c/libscifftw_la-gw_fftw.lo `test -f 'sci_gateway/c/gw_fftw.c' || echo '$(srcdir)/'`sci_gateway/c/gw_fftw.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-gw_fftw.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-gw_fftw.Plo
+# $(AM_V_CC)source='sci_gateway/c/gw_fftw.c' object='sci_gateway/c/libscifftw_la-gw_fftw.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscifftw_la-gw_fftw.lo `test -f 'sci_gateway/c/gw_fftw.c' || echo '$(srcdir)/'`sci_gateway/c/gw_fftw.c
+
+sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo: sci_gateway/c/sci_fftwlibraryisloaded.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftwlibraryisloaded.Tpo -c -o sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo `test -f 'sci_gateway/c/sci_fftwlibraryisloaded.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftwlibraryisloaded.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftwlibraryisloaded.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftwlibraryisloaded.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_fftwlibraryisloaded.c' object='sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo `test -f 'sci_gateway/c/sci_fftwlibraryisloaded.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftwlibraryisloaded.c
+
+sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo: sci_gateway/c/sci_disposefftwlibrary.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_disposefftwlibrary.Tpo -c -o sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo `test -f 'sci_gateway/c/sci_disposefftwlibrary.c' || echo '$(srcdir)/'`sci_gateway/c/sci_disposefftwlibrary.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_disposefftwlibrary.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_disposefftwlibrary.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_disposefftwlibrary.c' object='sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo `test -f 'sci_gateway/c/sci_disposefftwlibrary.c' || echo '$(srcdir)/'`sci_gateway/c/sci_disposefftwlibrary.c
+
+sci_gateway/c/libscifftw_la-sci_fftw.lo: sci_gateway/c/sci_fftw.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_fftw.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw.Tpo -c -o sci_gateway/c/libscifftw_la-sci_fftw.lo `test -f 'sci_gateway/c/sci_fftw.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_fftw.c' object='sci_gateway/c/libscifftw_la-sci_fftw.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscifftw_la-sci_fftw.lo `test -f 'sci_gateway/c/sci_fftw.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw.c
+
+sci_gateway/c/libscifftw_la-sci_fftw_flags.lo: sci_gateway/c/sci_fftw_flags.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_fftw_flags.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw_flags.Tpo -c -o sci_gateway/c/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_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw_flags.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw_flags.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_fftw_flags.c' object='sci_gateway/c/libscifftw_la-sci_fftw_flags.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscifftw_la-sci_fftw_flags.lo `test -f 'sci_gateway/c/sci_fftw_flags.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw_flags.c
+
+sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo: sci_gateway/c/sci_loadfftwlibrary.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_loadfftwlibrary.Tpo -c -o sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo `test -f 'sci_gateway/c/sci_loadfftwlibrary.c' || echo '$(srcdir)/'`sci_gateway/c/sci_loadfftwlibrary.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_loadfftwlibrary.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_loadfftwlibrary.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_loadfftwlibrary.c' object='sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo `test -f 'sci_gateway/c/sci_loadfftwlibrary.c' || echo '$(srcdir)/'`sci_gateway/c/sci_loadfftwlibrary.c
+
+sci_gateway/c/libscifftw_la-sci_get_fftw_wisdom.lo: sci_gateway/c/sci_get_fftw_wisdom.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_get_fftw_wisdom.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_get_fftw_wisdom.Tpo -c -o sci_gateway/c/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_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_get_fftw_wisdom.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_get_fftw_wisdom.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_get_fftw_wisdom.c' object='sci_gateway/c/libscifftw_la-sci_get_fftw_wisdom.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/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
+
+sci_gateway/c/libscifftw_la-sci_set_fftw_wisdom.lo: sci_gateway/c/sci_set_fftw_wisdom.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_set_fftw_wisdom.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_set_fftw_wisdom.Tpo -c -o sci_gateway/c/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_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_set_fftw_wisdom.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_set_fftw_wisdom.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_set_fftw_wisdom.c' object='sci_gateway/c/libscifftw_la-sci_set_fftw_wisdom.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/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
+
+sci_gateway/c/libscifftw_la-sci_fftw_forget_wisdom.lo: sci_gateway/c/sci_fftw_forget_wisdom.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_fftw_forget_wisdom.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw_forget_wisdom.Tpo -c -o sci_gateway/c/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_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw_forget_wisdom.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw_forget_wisdom.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_fftw_forget_wisdom.c' object='sci_gateway/c/libscifftw_la-sci_fftw_forget_wisdom.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/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
+
+sci_gateway/c/libscifftw_la-sci_dct.lo: sci_gateway/c/sci_dct.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_dct.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_dct.Tpo -c -o sci_gateway/c/libscifftw_la-sci_dct.lo `test -f 'sci_gateway/c/sci_dct.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dct.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_dct.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_dct.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_dct.c' object='sci_gateway/c/libscifftw_la-sci_dct.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscifftw_la-sci_dct.lo `test -f 'sci_gateway/c/sci_dct.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dct.c
+
+sci_gateway/c/libscifftw_la-sci_dst.lo: sci_gateway/c/sci_dst.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_dst.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_dst.Tpo -c -o sci_gateway/c/libscifftw_la-sci_dst.lo `test -f 'sci_gateway/c/sci_dst.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dst.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_dst.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_dst.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_dst.c' object='sci_gateway/c/libscifftw_la-sci_dst.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscifftw_la-sci_dst.lo `test -f 'sci_gateway/c/sci_dst.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dst.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+ -rm -rf sci_gateway/c/.libs sci_gateway/c/_libs
+ -rm -rf src/c/.libs src/c/_libs
+ -rm -rf src/nofftw/.libs src/nofftw/_libs
+install-libscifftw_la_etcDATA: $(libscifftw_la_etc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscifftw_la_etc_DATA)'; test -n "$(libscifftw_la_etcdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscifftw_la_etcdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscifftw_la_etcdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscifftw_la_etcdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscifftw_la_etcdir)" || exit $$?; \
+ done
+
+uninstall-libscifftw_la_etcDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscifftw_la_etc_DATA)'; test -n "$(libscifftw_la_etcdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscifftw_la_etcdir)'; $(am__uninstall_files_from_dir)
+install-libscifftw_la_rootDATA: $(libscifftw_la_root_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscifftw_la_root_DATA)'; test -n "$(libscifftw_la_rootdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscifftw_la_rootdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscifftw_la_rootdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscifftw_la_rootdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscifftw_la_rootdir)" || exit $$?; \
+ done
+
+uninstall-libscifftw_la_rootDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscifftw_la_root_DATA)'; test -n "$(libscifftw_la_rootdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscifftw_la_rootdir)'; $(am__uninstall_files_from_dir)
+install-libscifftw_la_sci_gatewayDATA: $(libscifftw_la_sci_gateway_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscifftw_la_sci_gateway_DATA)'; test -n "$(libscifftw_la_sci_gatewaydir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscifftw_la_sci_gatewaydir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscifftw_la_sci_gatewaydir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscifftw_la_sci_gatewaydir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscifftw_la_sci_gatewaydir)" || exit $$?; \
+ done
+
+uninstall-libscifftw_la_sci_gatewayDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscifftw_la_sci_gateway_DATA)'; test -n "$(libscifftw_la_sci_gatewaydir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscifftw_la_sci_gatewaydir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+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 \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA) all-local
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(libscifftw_la_etcdir)" "$(DESTDIR)$(libscifftw_la_rootdir)" "$(DESTDIR)$(libscifftw_la_sci_gatewaydir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+ -rm -f sci_gateway/c/$(am__dirstamp)
+ -rm -f src/c/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/c/$(am__dirstamp)
+ -rm -f src/nofftw/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/nofftw/$(am__dirstamp)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local \
+ clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf sci_gateway/c/$(DEPDIR) src/c/$(DEPDIR) src/nofftw/$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-local distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+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-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am: install-html-local
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf sci_gateway/c/$(DEPDIR) src/c/$(DEPDIR) src/nofftw/$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libscifftw_la_etcDATA \
+ uninstall-libscifftw_la_rootDATA \
+ uninstall-libscifftw_la_sci_gatewayDATA \
+ uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am \
+ check-local clean clean-generic clean-libtool clean-local \
+ clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-local 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-libscifftw_la_etcDATA \
+ 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 tags-am uninstall \
+ uninstall-am uninstall-libscifftw_la_etcDATA \
+ uninstall-libscifftw_la_rootDATA \
+ uninstall-libscifftw_la_sci_gatewayDATA \
+ uninstall-pkglibLTLIBRARIES
+
+
+# This target enables tests for Scilab
+check-local: $(top_builddir)/scilab-bin test
+ if test -d $(mydatadir)/tests; then \
+ @COMMAND="try test_run('$(modulename)');catch exit(-1);end;exit(0)"; export LANG=C; $(top_builddir)/bin/scilab -nwni -nb -e "$$COMMAND"; \
+ fi
+check-code:
+ if test -f build.xml; then \
+ $(ANT) checkstyle; \
+ fi
+ if test -x "$(SPLINT)"; then \
+ $(SPLINT) $(SPLINT_OPTIONS) -I$(top_srcdir)/modules/core/includes/ -I$(top_srcdir)/libs/MALLOC/includes/ -I$(top_srcdir)/modules/localization/includes/ $(INCLUDE_FLAGS) $(CHECK_SRC); \
+ fi
+java:
+# Some configurations needs to export JAVA_HOME in the current env
+ @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
+ if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+ if test -f build.xml -a $$USEANT -eq 1; then \
+ $(ANT); \
+ fi
+
+clean-java:
+# Some configurations needs to export JAVA_HOME in the current env
+ @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
+ if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+ if test -f build.xml -a $$USEANT -eq 1; then \
+ $(ANT) clean; \
+ fi;
+
+# If the user request for the SWIG generation of the wrappers Java => C/C++
+# We call the target swig-build on the variable SWIG_WRAPPERS
+
+#swig: $(SWIG_WRAPPERS)
+# @SWIG_PACKAGENAME=org.scilab.modules.$(modulename); \
+# SWIG_OUTDIR=src/java/org/scilab/modules/$(modulename)/; \
+# if test -n "$(SWIG_WRAPPERS)"; then \
+# for file in $(SWIG_WRAPPERS) ; do \
+# echo "Swig process of $$file (Java) ..."; \
+# $(SWIG_BIN) $(SWIG_JAVA) -package $$SWIG_PACKAGENAME -outdir $$SWIG_OUTDIR $$file; \
+# done; \
+# fi
+
+#swig-scilab: $(SWIG_SCILAB_WRAPPERS)
+# @SWIG_OUTDIR=src/swig/; \
+# if test -n "$(SWIG_SCILAB_WRAPPERS)"; then \
+# for file in $(SWIG_SCILAB_WRAPPERS) ; do \
+# echo "Swig process of $$file (Scilab) ..."; \
+# $(SWIG_BIN) $(SWIG_SCILAB) -outdir $$SWIG_OUTDIR $$file; \
+# done; \
+# fi
+
+# If the user request for the SWIG generation of the wrappers Java => C/C++
+# We call the target swig-build on the variable SWIG_WRAPPERS
+
+#giws: $(GIWS_WRAPPERS)
+# @GIWS_OUTPUTDIR=src/jni/; \
+# MANDATORY_OPTIONS="--throws-exception-on-error --description-file"; \
+# if test -n "$(GIWS_WRAPPERS)"; then \
+# for file in $(GIWS_WRAPPERS) ; do \
+# echo "GIWS process of $$file ..."; \
+# if test -z "$(GIWS_OPTIONS)"; then \
+# $(GIWS_BIN) --disable-return-size-array --output-dir $$GIWS_OUTPUTDIR $$MANDATORY_OPTIONS $$file; \
+# else \
+# echo "Custom GIWS call with '$$GIWS_OPTIONS'"; \
+# $(GIWS_BIN) $$GIWS_OPTIONS --output-dir $$GIWS_OUTPUTDIR $$MANDATORY_OPTIONS $$file; \
+# fi \
+# done; \
+# fi
+
+#giws-exception:
+# @GIWS_OUTPUTDIR=src/jni/;\
+# echo "GIWS: Generation of exception class ..."; \
+# $(GIWS_BIN) --generate-exception-class --output-dir $$GIWS_OUTPUTDIR
+
+macros:
+ -@( if test ! -x $(top_builddir)/scilab-bin; then \
+ echo "Error : Cannot build $< : Scilab has not been built"; \
+ else \
+ $(top_builddir)/bin/scilab -ns -nwni -e "exec('macros/buildmacros.sce');quit;";\
+ fi)
+
+# Removes the macros
+clean-macros:
+# Removes macros (*.bin generated from .sci)
+ @for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
+ echo "rm -f $(builddir)/$$dir/$(MACROBINMASK)"; \
+ rm -f $(builddir)/$$dir/$(MACROBINMASK); \
+ done
+
+test:
+# More tests could be added here
+ @if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+ if test -f build.xml -a $$USEANT -eq 1; then \
+ $(ANT) test; \
+ fi
+
+all-local: $(TARGETS_ALL)
+
+.sci.bin:
+ -@( if test ! -x $(top_builddir)/scilab-bin; then \
+ echo "Error : Cannot build $< : Scilab has not been build"; \
+ else \
+ echo "Creating $@"; \
+ $(top_builddir)/bin/scilab -ns -nwni -e "exec('$(abs_srcdir)/$<');save('$(abs_srcdir)/$@');exit;"; \
+ fi )
+
+install-html-local:
+
+install-data-local-local:
+# Mainly for javasci
+ @if test -d $(srcdir)/javadoc; then \
+ cp -R $(srcdir)/javadoc $(DESTDIR)/$(mydatadir)/; \
+ fi
+# If the user wants the help sources to be installed
+ @echo "-------- Install of XML sources of help files --------"; \
+ for lang in $(ALL_LINGUAS); do \
+ if test -d $(srcdir)/help/$$lang; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/$$lang && \
+ if ls -lLd $(srcdir)/help/$$lang/$(DOCMASKXML) >/dev/null 2>&1; then \
+ for file in $(srcdir)/help/$$lang/$(DOCMASKXML) ; do \
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/$$lang" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/$$lang ; \
+ done ; \
+ fi; \
+ fi; \
+ done; \
+ @echo "-------- Install of MathML sources --------"; \
+ if test -d $(srcdir)/help/mml/; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/mml/ && \
+ if ls -lLd $(srcdir)/help/mml/$(DOCMASKMML) >/dev/null 2>&1; then \
+ for file in $(srcdir)/help/mml/$(DOCMASKMML) ; do \
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/mml" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/mml ; \
+ done ; \
+ fi; \
+ fi
+install-data-local:
+# Install the tests
+ @echo "-------- Install tests (if any) --------"; \
+ for dir in $(TESTS_DIR) $(TESTS_DIREXT) ; do \
+ if test -d $(srcdir)/$$dir/; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
+ for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
+ if test -d "$(srcdir)/$$dir/$$file"; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir/$$file; \
+ $(mkinstalldirs) "$(DESTDIR)$(pkgmacrosdir)/$$dir/$$file"; \
+ else \
+ echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
+ $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
+ fi \
+ done; \
+ fi; \
+ done
+# Install the help chapter
+ @echo "-------- Install the help chapter (if any) --------"; \
+ for lang in $(HELP_CHAPTERLANG); do \
+ HELPFILE=$(srcdir)/$(HELP_CHAPTERDIR)$$lang/$(HELP_CHAPTERFILE); \
+ if test -f $$HELPFILE; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
+ echo $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
+ $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
+ fi; \
+ done
+# Install the demos & examples
+ @echo "-------- Install demos & examples (if any) --------"; \
+ for dir in $(DEMOS_DIR) $(DEMOS_DIREXT) $(EXAMPLES_DIR) $(EXAMPLES_DIREXT) ; do \
+ if test -d $(srcdir)/$$dir/; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir && \
+ for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
+ if test -d "$(srcdir)/$$dir/$$file"; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir/$$file; \
+ $(mkinstalldirs) "$(DESTDIR)$(pkgdocdir)/$$dir/$$file"; \
+ else \
+ echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
+ $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
+ fi \
+ done; \
+ fi; \
+ done
+# Install the macros
+ @echo "-------- Install macros (if any) --------"; \
+ for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
+ $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
+ if test -d $(srcdir)/$$dir/; then \
+ FILELIST="$(srcdir)/$$dir/$(MACROMASK) $(srcdir)/$$dir/$(MACROBINMASK) $(srcdir)/$$dir/$(MACROBUILDMASK) $(srcdir)/$$dir/names $(srcdir)/$$dir/lib";\
+ if test -n "$(MACROSSPECIALEXT)"; then \
+ specialExtDir=""; \
+ for specialExt in $(MACROSSPECIALEXT); do \
+ specialExtDir="$$specialExtDir $(srcdir)/$$dir/$$specialExt"; \
+ done; \
+ FILELIST="$$FILELIST $$specialExtDir"; \
+ fi; \
+ for file in `ls -1 $$FILELIST 2>/dev/null`; do \
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgmacrosdir)/$$dir" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgmacrosdir)/$$dir ; \
+ done; \
+ fi; \
+ done
+# Install java files (.jar)
+ @if ls -lLd $(srcdir)/$(JARDIR)$(JARMASK) >/dev/null 2>&1; then \
+ echo "-------- Install jar files --------"; \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(JARDIR); \
+ for file in $(srcdir)/$(JARDIR)$(JARMASK); do\
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/$(JARDIR)" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/$(JARDIR) ; \
+ done ; \
+ fi
+
+########### CLEAN ###################
+# Clean help (generated automatically by Scilab)
+# It used to clean the macro (clean-macros) but this was causing
+# make clean && make to fail Scilab startup
+clean-local: clean-java
+#clean-local:
+
+distclean-local:
+ rm -f $(builddir)/help/*/.last_successful_build_javaHelp $(builddir)/help/*/.list_*
+
+.PHONY: macros java swig giws
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/modules/fftw/Makefile.am b/modules/fftw/Makefile.am
new file mode 100755
index 000000000..bb757093e
--- /dev/null
+++ b/modules/fftw/Makefile.am
@@ -0,0 +1,95 @@
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) 2007 - INRIA - Sylvestre LEDRU
+# Copyright (C) 2007 - INRIA - Allan CORNET
+#
+# This file must be used under the terms of the CeCILL.
+# This source file is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at
+# http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+modulename=fftw
+
+if MAINTAINER_MODE
+pkglib_LTLIBRARIES = libscifftw.la
+noinst_LTLIBRARIES =
+else
+noinst_LTLIBRARIES = libscifftw.la
+endif
+
+
+if FFTW
+noinst_LTLIBRARIES += libscifftw-algo.la
+endif
+
+libscifftw_la_LDFLAGS = $(AM_LDFLAGS)
+
+#### fftw : Conf files ####
+libscifftw_la_rootdir = $(mydatadir)
+
+#### fftw : init scripts ####
+libscifftw_la_etcdir = $(mydatadir)/etc
+libscifftw_la_etc_DATA = etc/fftw.quit etc/fftw.start
+
+if FFTW
+
+FFTW_C_SOURCES = src/c/callfftw.c \
+src/c/fftwlibname.c \
+src/c/fftw_utilities.c \
+src/c/sci_data_utilities.c \
+src/c/with_fftw.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.c \
+ sci_gateway/c/sci_fftw_flags.c \
+ sci_gateway/c/sci_loadfftwlibrary.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 \
+ sci_gateway/c/sci_dct.c \
+ sci_gateway/c/sci_dst.c
+
+#### fftw : Conf files ####
+libscifftw_la_root_DATA = license.txt
+
+#### fftw : gateway declaration ####
+libscifftw_la_sci_gatewaydir = $(mydatadir)/sci_gateway
+libscifftw_la_sci_gateway_DATA = sci_gateway/fftw_gateway.xml
+
+libscifftw_algo_la_SOURCES = $(FFTW_C_SOURCES)
+libscifftw_la_SOURCES = $(GATEWAY_C_SOURCES)
+libscifftw_algo_la_CPPFLAGS = $(libscifftw_la_CPPFLAGS)
+
+# For the code check (splint)
+CHECK_SRC= $(FFTW_C_SOURCES) $(GATEWAY_C_SOURCES)
+INCLUDE_FLAGS = $(libscifftw_la_CPPFLAGS)
+
+libscifftw_la_LIBADD = libscifftw-algo.la $(FFTW3_LIB)
+
+libscifftw_la_CPPFLAGS = -I$(srcdir)/includes/ \
+ -I$(srcdir)/src/c/ \
+ -I$(top_srcdir)/modules/dynamic_link/includes/ \
+ -I$(top_srcdir)/modules/fileio/includes/ \
+ -I$(top_srcdir)/modules/output_stream/includes/ \
+ -I$(top_srcdir)/modules/api_scilab/includes/ \
+ -I$(top_srcdir)/modules/localization/includes/ \
+ $(FFTW3_CFLAGS) \
+ $(AM_CPPFLAGS)
+
+else
+
+FFTW_C_SOURCES = src/nofftw/nofftw.c
+
+libscifftw_la_SOURCES = $(FFTW_C_SOURCES)
+
+libscifftw_la_CPPFLAGS = -I$(srcdir)/includes/ \
+ -I$(srcdir)/src/c/ \
+ -I$(top_srcdir)/modules/api_scilab/includes/ \
+ -I$(top_srcdir)/modules/output_stream/includes/ \
+ -I$(top_srcdir)/modules/localization/includes/ \
+ $(AM_CPPFLAGS)
+endif
+
+include $(top_srcdir)/Makefile.incl.am
diff --git a/modules/fftw/Makefile.in b/modules/fftw/Makefile.in
new file mode 100755
index 000000000..67fd8a005
--- /dev/null
+++ b/modules/fftw/Makefile.in
@@ -0,0 +1,1609 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) 2007 - INRIA - Sylvestre LEDRU
+# Copyright (C) 2007 - INRIA - Allan CORNET
+#
+# This file must be used under the terms of the CeCILL.
+# This source file is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at
+# http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) 2006-2008 - INRIA - Sylvestre LEDRU <sylvestre.ledru@inria.fr>
+# Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre.marechal@inria.fr>
+#
+# This file must be used under the terms of the CeCILL.
+# This source file is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at
+# http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+#
+
+##########
+### Makefile included stuff
+### Target, variable, suffixes which are supposed to be useful in every makefile.am
+##########
+
+
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@FFTW_TRUE@am__append_1 = libscifftw-algo.la
+DIST_COMMON = $(top_srcdir)/Makefile.incl.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/config/mkinstalldirs \
+ $(top_srcdir)/config/depcomp
+@NEED_JAVA_TRUE@am__append_2 = java
+subdir = modules/fftw
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/backtrace.m4 \
+ $(top_srcdir)/m4/compiler.m4 $(top_srcdir)/m4/curl.m4 \
+ $(top_srcdir)/m4/docbook.m4 $(top_srcdir)/m4/doxygen.m4 \
+ $(top_srcdir)/m4/fftw.m4 $(top_srcdir)/m4/fortran.m4 \
+ $(top_srcdir)/m4/giws.m4 $(top_srcdir)/m4/hdf5.m4 \
+ $(top_srcdir)/m4/intel_compiler.m4 \
+ $(top_srcdir)/m4/java-thirdparty.m4 $(top_srcdir)/m4/java.m4 \
+ $(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/libsmath.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/macosx.m4 \
+ $(top_srcdir)/m4/mpi.m4 $(top_srcdir)/m4/ocaml.m4 \
+ $(top_srcdir)/m4/pcre.m4 $(top_srcdir)/m4/pkg.m4 \
+ $(top_srcdir)/m4/relocatable.m4 $(top_srcdir)/m4/swig.m4 \
+ $(top_srcdir)/m4/symlinks.m4 $(top_srcdir)/m4/tcltk.m4 \
+ $(top_srcdir)/m4/umfpack.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/modules/core/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(pkglibdir)" \
+ "$(DESTDIR)$(libscifftw_la_etcdir)" \
+ "$(DESTDIR)$(libscifftw_la_rootdir)" \
+ "$(DESTDIR)$(libscifftw_la_sci_gatewaydir)"
+LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkglib_LTLIBRARIES)
+libscifftw_algo_la_LIBADD =
+am__libscifftw_algo_la_SOURCES_DIST = src/nofftw/nofftw.c \
+ src/c/callfftw.c src/c/fftwlibname.c src/c/fftw_utilities.c \
+ src/c/sci_data_utilities.c src/c/with_fftw.c
+am__dirstamp = $(am__leading_dot)dirstamp
+@FFTW_FALSE@am__objects_1 = src/nofftw/libscifftw_algo_la-nofftw.lo
+@FFTW_TRUE@am__objects_1 = src/c/libscifftw_algo_la-callfftw.lo \
+@FFTW_TRUE@ src/c/libscifftw_algo_la-fftwlibname.lo \
+@FFTW_TRUE@ src/c/libscifftw_algo_la-fftw_utilities.lo \
+@FFTW_TRUE@ src/c/libscifftw_algo_la-sci_data_utilities.lo \
+@FFTW_TRUE@ src/c/libscifftw_algo_la-with_fftw.lo
+@FFTW_TRUE@am_libscifftw_algo_la_OBJECTS = $(am__objects_1)
+libscifftw_algo_la_OBJECTS = $(am_libscifftw_algo_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+@FFTW_TRUE@@MAINTAINER_MODE_FALSE@am_libscifftw_algo_la_rpath =
+@FFTW_TRUE@@MAINTAINER_MODE_TRUE@am_libscifftw_algo_la_rpath =
+am__DEPENDENCIES_1 =
+@FFTW_TRUE@libscifftw_la_DEPENDENCIES = libscifftw-algo.la \
+@FFTW_TRUE@ $(am__DEPENDENCIES_1)
+am__libscifftw_la_SOURCES_DIST = src/nofftw/nofftw.c src/c/callfftw.c \
+ src/c/fftwlibname.c src/c/fftw_utilities.c \
+ src/c/sci_data_utilities.c src/c/with_fftw.c \
+ sci_gateway/c/gw_fftw.c \
+ sci_gateway/c/sci_fftwlibraryisloaded.c \
+ sci_gateway/c/sci_disposefftwlibrary.c \
+ sci_gateway/c/sci_fftw.c sci_gateway/c/sci_fftw_flags.c \
+ sci_gateway/c/sci_loadfftwlibrary.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 sci_gateway/c/sci_dct.c \
+ sci_gateway/c/sci_dst.c
+@FFTW_FALSE@am__objects_2 = src/nofftw/libscifftw_la-nofftw.lo
+@FFTW_TRUE@am__objects_2 = src/c/libscifftw_la-callfftw.lo \
+@FFTW_TRUE@ src/c/libscifftw_la-fftwlibname.lo \
+@FFTW_TRUE@ src/c/libscifftw_la-fftw_utilities.lo \
+@FFTW_TRUE@ src/c/libscifftw_la-sci_data_utilities.lo \
+@FFTW_TRUE@ src/c/libscifftw_la-with_fftw.lo
+@FFTW_TRUE@am__objects_3 = sci_gateway/c/libscifftw_la-gw_fftw.lo \
+@FFTW_TRUE@ sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo \
+@FFTW_TRUE@ sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo \
+@FFTW_TRUE@ sci_gateway/c/libscifftw_la-sci_fftw.lo \
+@FFTW_TRUE@ sci_gateway/c/libscifftw_la-sci_fftw_flags.lo \
+@FFTW_TRUE@ sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo \
+@FFTW_TRUE@ sci_gateway/c/libscifftw_la-sci_get_fftw_wisdom.lo \
+@FFTW_TRUE@ sci_gateway/c/libscifftw_la-sci_set_fftw_wisdom.lo \
+@FFTW_TRUE@ sci_gateway/c/libscifftw_la-sci_fftw_forget_wisdom.lo \
+@FFTW_TRUE@ sci_gateway/c/libscifftw_la-sci_dct.lo \
+@FFTW_TRUE@ sci_gateway/c/libscifftw_la-sci_dst.lo
+@FFTW_FALSE@am_libscifftw_la_OBJECTS = $(am__objects_2)
+@FFTW_TRUE@am_libscifftw_la_OBJECTS = $(am__objects_3)
+libscifftw_la_OBJECTS = $(am_libscifftw_la_OBJECTS)
+libscifftw_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(libscifftw_la_LDFLAGS) $(LDFLAGS) -o $@
+@MAINTAINER_MODE_FALSE@am_libscifftw_la_rpath =
+@MAINTAINER_MODE_TRUE@am_libscifftw_la_rpath = -rpath $(pkglibdir)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/modules/core/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libscifftw_algo_la_SOURCES) $(libscifftw_la_SOURCES)
+DIST_SOURCES = $(am__libscifftw_algo_la_SOURCES_DIST) \
+ $(am__libscifftw_la_SOURCES_DIST)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DATA = $(libscifftw_la_etc_DATA) $(libscifftw_la_root_DATA) \
+ $(libscifftw_la_sci_gateway_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+ALL_LINGUAS_DOC = @ALL_LINGUAS_DOC@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANT = @ANT@
+ANTLR = @ANTLR@
+AR = @AR@
+ARPACK_LIBS = @ARPACK_LIBS@
+ASM3 = @ASM3@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AVALON_FRAMEWORK = @AVALON_FRAMEWORK@
+AWK = @AWK@
+BATIK = @BATIK@
+BLAS_LIBS = @BLAS_LIBS@
+CC = @CC@
+CCACHE = @CCACHE@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECKSTYLE = @CHECKSTYLE@
+COBERTURA = @COBERTURA@
+COMMONS_BEANUTILS = @COMMONS_BEANUTILS@
+COMMONS_IO = @COMMONS_IO@
+COMMONS_LOGGING = @COMMONS_LOGGING@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CFLAGS = @CURL_CFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CURL_LIBS = @CURL_LIBS@
+CURL_VERSION = @CURL_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEMOTOOLS_ENABLE = @DEMOTOOLS_ENABLE@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOCBOOK_ROOT = @DOCBOOK_ROOT@
+DOXYGEN_BIN = @DOXYGEN_BIN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+ECJ = @ECJ@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FFTW3_LIB = @FFTW3_LIB@
+FFTW_ENABLE = @FFTW_ENABLE@
+FGREP = @FGREP@
+FLEXDOCK = @FLEXDOCK@
+FLIBS = @FLIBS@
+FOP = @FOP@
+FREEHEP_GRAPHICS2D = @FREEHEP_GRAPHICS2D@
+FREEHEP_GRAPHICSIO = @FREEHEP_GRAPHICSIO@
+FREEHEP_GRAPHICSIO_EMF = @FREEHEP_GRAPHICSIO_EMF@
+FREEHEP_IO = @FREEHEP_IO@
+FREEHEP_UTIL = @FREEHEP_UTIL@
+GENHTML = @GENHTML@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GIWS_BIN = @GIWS_BIN@
+GLUEGEN2_RT = @GLUEGEN2_RT@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GRAPHICS_ENABLE = @GRAPHICS_ENABLE@
+GREP = @GREP@
+GUI_ENABLE = @GUI_ENABLE@
+HDF5_CFLAGS = @HDF5_CFLAGS@
+HDF5_LIBS = @HDF5_LIBS@
+HELP_ENABLE = @HELP_ENABLE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAC_DEBUG = @JAVAC_DEBUG@
+JAVADOC = @JAVADOC@
+JAVAH = @JAVAH@
+JAVASCI_ENABLE = @JAVASCI_ENABLE@
+JAVA_ENABLE = @JAVA_ENABLE@
+JAVA_G = @JAVA_G@
+JAVA_HOME = @JAVA_HOME@
+JAVA_JNI_INCLUDE = @JAVA_JNI_INCLUDE@
+JAVA_JNI_LIBS = @JAVA_JNI_LIBS@
+JDB = @JDB@
+JEUCLID_CORE = @JEUCLID_CORE@
+JGRAPHX = @JGRAPHX@
+JHALL = @JHALL@
+JLATEXMATH = @JLATEXMATH@
+JLATEXMATH_FOP = @JLATEXMATH_FOP@
+JOGL2 = @JOGL2@
+JROSETTA_API = @JROSETTA_API@
+JROSETTA_ENGINE = @JROSETTA_ENGINE@
+JUNIT4 = @JUNIT4@
+LAPACK_LIBS = @LAPACK_LIBS@
+LCOV = @LCOV@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOGGING_LEVEL = @LOGGING_LEVEL@
+LOOKS = @LOOKS@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MATIO_CFLAGS = @MATIO_CFLAGS@
+MATIO_ENABLE = @MATIO_ENABLE@
+MATIO_LIBS = @MATIO_LIBS@
+MKDIR_P = @MKDIR_P@
+MPI_ENABLE = @MPI_ENABLE@
+MSGCAT = @MSGCAT@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLDEP = @OCAMLDEP@
+OCAMLLEX = @OCAMLLEX@
+OCAMLOPT = @OCAMLOPT@
+OCAMLYACC = @OCAMLYACC@
+OPENMPI_CC = @OPENMPI_CC@
+OPENMPI_CFLAGS = @OPENMPI_CFLAGS@
+OPENMPI_CXX = @OPENMPI_CXX@
+OPENMPI_CXXFLAGS = @OPENMPI_CXXFLAGS@
+OPENMPI_LIBS = @OPENMPI_LIBS@
+OPENMP_CFLAGS = @OPENMP_CFLAGS@
+OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@
+OPENMP_ENABLE = @OPENMP_ENABLE@
+OPENMP_LIBS = @OPENMP_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PCRE_CFLAGS = @PCRE_CFLAGS@
+PCRE_CONFIG = @PCRE_CONFIG@
+PCRE_LIBS = @PCRE_LIBS@
+PCRE_VERSION = @PCRE_VERSION@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PYTHON = @PYTHON@
+RANLIB = @RANLIB@
+RELOCATABLE = @RELOCATABLE@
+RT_LIB = @RT_LIB@
+SAXON = @SAXON@
+SCILAB_BINARY_VERSION = @SCILAB_BINARY_VERSION@
+SCILAB_LIBRARY_VERSION = @SCILAB_LIBRARY_VERSION@
+SCILAB_VERSION_MAINTENANCE = @SCILAB_VERSION_MAINTENANCE@
+SCILAB_VERSION_MAJOR = @SCILAB_VERSION_MAJOR@
+SCILAB_VERSION_MINOR = @SCILAB_VERSION_MINOR@
+SCIRENDERER = @SCIRENDERER@
+SCIRENDERER_CP = @SCIRENDERER_CP@
+SCI_CFLAGS = @SCI_CFLAGS@
+SCI_CXXFLAGS = @SCI_CXXFLAGS@
+SCI_FFLAGS = @SCI_FFLAGS@
+SCI_LDFLAGS = @SCI_LDFLAGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SET_RELOCATABLE = @SET_RELOCATABLE@
+SHELL = @SHELL@
+SKINLF = @SKINLF@
+SPLINT = @SPLINT@
+STRIP = @STRIP@
+SWIG_BIN = @SWIG_BIN@
+SWIG_JAVA = @SWIG_JAVA@
+SWIG_RUNTIME_LIBS_DIR = @SWIG_RUNTIME_LIBS_DIR@
+SWIG_SCILAB = @SWIG_SCILAB@
+TCLTK_LIBS = @TCLTK_LIBS@
+TCL_INC_PATH = @TCL_INC_PATH@
+TK_INC_PATH = @TK_INC_PATH@
+UMFPACK_CFLAGS = @UMFPACK_CFLAGS@
+UMFPACK_ENABLE = @UMFPACK_ENABLE@
+UMFPACK_LIB = @UMFPACK_LIB@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WITH_OCAML = @WITH_OCAML@
+WITH_TKSCI = @WITH_TKSCI@
+XCOS_ENABLE = @XCOS_ENABLE@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+XMKMF = @XMKMF@
+XMLGRAPHICS_COMMONS = @XMLGRAPHICS_COMMONS@
+XML_APIS_EXT = @XML_APIS_EXT@
+XML_CONFIG = @XML_CONFIG@
+XML_FLAGS = @XML_FLAGS@
+XML_LIBS = @XML_LIBS@
+XML_VERSION = @XML_VERSION@
+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_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cxx_present = @cxx_present@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+modulename = fftw
+@MAINTAINER_MODE_TRUE@pkglib_LTLIBRARIES = libscifftw.la
+@MAINTAINER_MODE_FALSE@noinst_LTLIBRARIES = libscifftw.la \
+@MAINTAINER_MODE_FALSE@ $(am__append_1)
+@MAINTAINER_MODE_TRUE@noinst_LTLIBRARIES = $(am__append_1)
+libscifftw_la_LDFLAGS = $(AM_LDFLAGS)
+
+#### fftw : Conf files ####
+libscifftw_la_rootdir = $(mydatadir)
+
+#### fftw : init scripts ####
+libscifftw_la_etcdir = $(mydatadir)/etc
+libscifftw_la_etc_DATA = etc/fftw.quit etc/fftw.start
+@FFTW_FALSE@FFTW_C_SOURCES = src/nofftw/nofftw.c
+@FFTW_TRUE@FFTW_C_SOURCES = src/c/callfftw.c \
+@FFTW_TRUE@src/c/fftwlibname.c \
+@FFTW_TRUE@src/c/fftw_utilities.c \
+@FFTW_TRUE@src/c/sci_data_utilities.c \
+@FFTW_TRUE@src/c/with_fftw.c
+
+@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.c \
+@FFTW_TRUE@ sci_gateway/c/sci_fftw_flags.c \
+@FFTW_TRUE@ sci_gateway/c/sci_loadfftwlibrary.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_TRUE@ sci_gateway/c/sci_dct.c \
+@FFTW_TRUE@ sci_gateway/c/sci_dst.c
+
+
+#### fftw : Conf files ####
+@FFTW_TRUE@libscifftw_la_root_DATA = license.txt
+
+#### fftw : gateway declaration ####
+@FFTW_TRUE@libscifftw_la_sci_gatewaydir = $(mydatadir)/sci_gateway
+@FFTW_TRUE@libscifftw_la_sci_gateway_DATA = sci_gateway/fftw_gateway.xml
+@FFTW_TRUE@libscifftw_algo_la_SOURCES = $(FFTW_C_SOURCES)
+@FFTW_FALSE@libscifftw_la_SOURCES = $(FFTW_C_SOURCES)
+@FFTW_TRUE@libscifftw_la_SOURCES = $(GATEWAY_C_SOURCES)
+@FFTW_TRUE@libscifftw_algo_la_CPPFLAGS = $(libscifftw_la_CPPFLAGS)
+
+# For the code check (splint)
+@FFTW_TRUE@CHECK_SRC = $(FFTW_C_SOURCES) $(GATEWAY_C_SOURCES)
+@FFTW_TRUE@INCLUDE_FLAGS = $(libscifftw_la_CPPFLAGS)
+@FFTW_TRUE@libscifftw_la_LIBADD = libscifftw-algo.la $(FFTW3_LIB)
+@FFTW_FALSE@libscifftw_la_CPPFLAGS = -I$(srcdir)/includes/ \
+@FFTW_FALSE@ -I$(srcdir)/src/c/ \
+@FFTW_FALSE@ -I$(top_srcdir)/modules/api_scilab/includes/ \
+@FFTW_FALSE@ -I$(top_srcdir)/modules/output_stream/includes/ \
+@FFTW_FALSE@ -I$(top_srcdir)/modules/localization/includes/ \
+@FFTW_FALSE@ $(AM_CPPFLAGS)
+
+@FFTW_TRUE@libscifftw_la_CPPFLAGS = -I$(srcdir)/includes/ \
+@FFTW_TRUE@ -I$(srcdir)/src/c/ \
+@FFTW_TRUE@ -I$(top_srcdir)/modules/dynamic_link/includes/ \
+@FFTW_TRUE@ -I$(top_srcdir)/modules/fileio/includes/ \
+@FFTW_TRUE@ -I$(top_srcdir)/modules/output_stream/includes/ \
+@FFTW_TRUE@ -I$(top_srcdir)/modules/api_scilab/includes/ \
+@FFTW_TRUE@ -I$(top_srcdir)/modules/localization/includes/ \
+@FFTW_TRUE@ $(FFTW3_CFLAGS) \
+@FFTW_TRUE@ $(AM_CPPFLAGS)
+
+
+# Where all the Scilab stuff is installed (macros, help, ...)
+mydatadir = $(pkgdatadir)/modules/$(modulename)
+
+# Set AM_* SCI detected settings
+AM_CPPFLAGS = $(SCI_CPPFLAGS)
+AM_CFLAGS = $(SCI_CFLAGS)
+AM_CXXFLAGS = $(SCI_CXXFLAGS)
+# append includes to AM_FFLAGS to manage fortran includes
+AM_FFLAGS = $(SCI_FFLAGS) -I$(top_srcdir)/modules/core/includes/
+
+# Tag shared libraries with the Scilab version
+AM_LDFLAGS = $(SCI_LDFLAGS) -version-number $(SCILAB_LIBRARY_VERSION)
+
+# splint options
+SPLINT_OPTIONS = -weak -booltype BOOL
+
+########################### JAVA ######################################
+#### We are delegating java compilation to ant... Thanks to that
+#### the procedure will be the same with Microsoft Windows (C)
+#### and Linux/Unix
+#######################################################################
+TARGETS_ALL = $(am__append_2)
+
+################ MACROS ######################
+# Rule to build a macro
+# NOT USED AT THE MOMENT
+SUFFIXES = .sci
+
+########### INSTALL DOCUMENTATION ###################
+
+# Install documentation files into the right target
+# We do not use the automake mechanism (libxxxx_la_help_fr_DATA) because
+# automake needs the html files to be present which is not the case when
+# we are building Scilab
+
+# Where it should be installed
+pkgdocdir = $(mydatadir)
+
+# What is the mask of the help source
+DOCMASKXML = *.xml
+
+# What is the mask of the MathML sources
+DOCMASKMML = *.mml
+
+########### INSTALL DATA ###################
+# Install macros, help & demos
+# Where it should be installed
+pkgmacrosdir = $(mydatadir)
+# Which directory we process
+MACRODIRS = macros/
+# Mask of the Scilab sources macros
+MACROMASK = *.sci
+# Mask of the Scilab executable sources macros
+MACROBUILDMASK = *.sce
+# Mask of the Scilab compiled macros
+MACROBINMASK = *.bin
+# List of the standard directory for tests
+TESTS_DIR = tests/benchmarks tests/nonreg_tests tests/unit_tests tests/java
+# Where the demos should be installed
+pkgdemosdir = $(mydatadir)
+# List of the standard directory for demos
+DEMOS_DIR = demos
+# List of the standard directory for examples
+EXAMPLES_DIR = examples
+# Where to export JAVA archives (.jar)
+JARDIR = jar/
+# JAR files mask
+JARMASK = *.jar
+# Chapter file
+HELP_CHAPTERDIR = help/
+HELP_CHAPTERFILE = addchapter.sce
+HELP_CHAPTERLANG = en_US fr_FR pt_BR
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .sci .bin .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.incl.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign modules/fftw/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign modules/fftw/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/Makefile.incl.am:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+src/nofftw/$(am__dirstamp):
+ @$(MKDIR_P) src/nofftw
+ @: > src/nofftw/$(am__dirstamp)
+src/nofftw/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/nofftw/$(DEPDIR)
+ @: > src/nofftw/$(DEPDIR)/$(am__dirstamp)
+src/nofftw/libscifftw_algo_la-nofftw.lo: src/nofftw/$(am__dirstamp) \
+ src/nofftw/$(DEPDIR)/$(am__dirstamp)
+src/c/$(am__dirstamp):
+ @$(MKDIR_P) src/c
+ @: > src/c/$(am__dirstamp)
+src/c/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/c/$(DEPDIR)
+ @: > src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_algo_la-callfftw.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_algo_la-fftwlibname.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_algo_la-fftw_utilities.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_algo_la-sci_data_utilities.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_algo_la-with_fftw.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+
+libscifftw-algo.la: $(libscifftw_algo_la_OBJECTS) $(libscifftw_algo_la_DEPENDENCIES) $(EXTRA_libscifftw_algo_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) $(am_libscifftw_algo_la_rpath) $(libscifftw_algo_la_OBJECTS) $(libscifftw_algo_la_LIBADD) $(LIBS)
+src/nofftw/libscifftw_la-nofftw.lo: src/nofftw/$(am__dirstamp) \
+ src/nofftw/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_la-callfftw.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_la-fftwlibname.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_la-fftw_utilities.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_la-sci_data_utilities.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libscifftw_la-with_fftw.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/$(am__dirstamp):
+ @$(MKDIR_P) sci_gateway/c
+ @: > sci_gateway/c/$(am__dirstamp)
+sci_gateway/c/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) sci_gateway/c/$(DEPDIR)
+ @: > sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-gw_fftw.lo: sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_fftw.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_fftw_flags.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_get_fftw_wisdom.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_set_fftw_wisdom.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_fftw_forget_wisdom.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_dct.lo: sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libscifftw_la-sci_dst.lo: sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+
+libscifftw.la: $(libscifftw_la_OBJECTS) $(libscifftw_la_DEPENDENCIES) $(EXTRA_libscifftw_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libscifftw_la_LINK) $(am_libscifftw_la_rpath) $(libscifftw_la_OBJECTS) $(libscifftw_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f sci_gateway/c/*.$(OBJEXT)
+ -rm -f sci_gateway/c/*.lo
+ -rm -f src/c/*.$(OBJEXT)
+ -rm -f src/c/*.lo
+ -rm -f src/nofftw/*.$(OBJEXT)
+ -rm -f src/nofftw/*.lo
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscifftw_la-gw_fftw.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_dct.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_disposefftwlibrary.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_dst.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw_flags.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw_forget_wisdom.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftwlibraryisloaded.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_get_fftw_wisdom.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_loadfftwlibrary.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_set_fftw_wisdom.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscifftw_algo_la-callfftw.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscifftw_algo_la-fftw_utilities.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscifftw_algo_la-fftwlibname.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscifftw_algo_la-sci_data_utilities.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscifftw_algo_la-with_fftw.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscifftw_la-callfftw.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscifftw_la-fftw_utilities.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscifftw_la-fftwlibname.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscifftw_la-sci_data_utilities.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libscifftw_la-with_fftw.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/nofftw/$(DEPDIR)/libscifftw_algo_la-nofftw.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/nofftw/$(DEPDIR)/libscifftw_la-nofftw.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+src/nofftw/libscifftw_algo_la-nofftw.lo: src/nofftw/nofftw.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/nofftw/libscifftw_algo_la-nofftw.lo -MD -MP -MF src/nofftw/$(DEPDIR)/libscifftw_algo_la-nofftw.Tpo -c -o src/nofftw/libscifftw_algo_la-nofftw.lo `test -f 'src/nofftw/nofftw.c' || echo '$(srcdir)/'`src/nofftw/nofftw.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/nofftw/$(DEPDIR)/libscifftw_algo_la-nofftw.Tpo src/nofftw/$(DEPDIR)/libscifftw_algo_la-nofftw.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/nofftw/nofftw.c' object='src/nofftw/libscifftw_algo_la-nofftw.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/nofftw/libscifftw_algo_la-nofftw.lo `test -f 'src/nofftw/nofftw.c' || echo '$(srcdir)/'`src/nofftw/nofftw.c
+
+src/c/libscifftw_algo_la-callfftw.lo: src/c/callfftw.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_algo_la-callfftw.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_algo_la-callfftw.Tpo -c -o src/c/libscifftw_algo_la-callfftw.lo `test -f 'src/c/callfftw.c' || echo '$(srcdir)/'`src/c/callfftw.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_algo_la-callfftw.Tpo src/c/$(DEPDIR)/libscifftw_algo_la-callfftw.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/c/callfftw.c' object='src/c/libscifftw_algo_la-callfftw.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_algo_la-callfftw.lo `test -f 'src/c/callfftw.c' || echo '$(srcdir)/'`src/c/callfftw.c
+
+src/c/libscifftw_algo_la-fftwlibname.lo: src/c/fftwlibname.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_algo_la-fftwlibname.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_algo_la-fftwlibname.Tpo -c -o src/c/libscifftw_algo_la-fftwlibname.lo `test -f 'src/c/fftwlibname.c' || echo '$(srcdir)/'`src/c/fftwlibname.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_algo_la-fftwlibname.Tpo src/c/$(DEPDIR)/libscifftw_algo_la-fftwlibname.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/c/fftwlibname.c' object='src/c/libscifftw_algo_la-fftwlibname.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_algo_la-fftwlibname.lo `test -f 'src/c/fftwlibname.c' || echo '$(srcdir)/'`src/c/fftwlibname.c
+
+src/c/libscifftw_algo_la-fftw_utilities.lo: src/c/fftw_utilities.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_algo_la-fftw_utilities.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_algo_la-fftw_utilities.Tpo -c -o src/c/libscifftw_algo_la-fftw_utilities.lo `test -f 'src/c/fftw_utilities.c' || echo '$(srcdir)/'`src/c/fftw_utilities.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_algo_la-fftw_utilities.Tpo src/c/$(DEPDIR)/libscifftw_algo_la-fftw_utilities.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/c/fftw_utilities.c' object='src/c/libscifftw_algo_la-fftw_utilities.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_algo_la-fftw_utilities.lo `test -f 'src/c/fftw_utilities.c' || echo '$(srcdir)/'`src/c/fftw_utilities.c
+
+src/c/libscifftw_algo_la-sci_data_utilities.lo: src/c/sci_data_utilities.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_algo_la-sci_data_utilities.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_algo_la-sci_data_utilities.Tpo -c -o src/c/libscifftw_algo_la-sci_data_utilities.lo `test -f 'src/c/sci_data_utilities.c' || echo '$(srcdir)/'`src/c/sci_data_utilities.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_algo_la-sci_data_utilities.Tpo src/c/$(DEPDIR)/libscifftw_algo_la-sci_data_utilities.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/c/sci_data_utilities.c' object='src/c/libscifftw_algo_la-sci_data_utilities.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_algo_la-sci_data_utilities.lo `test -f 'src/c/sci_data_utilities.c' || echo '$(srcdir)/'`src/c/sci_data_utilities.c
+
+src/c/libscifftw_algo_la-with_fftw.lo: src/c/with_fftw.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_algo_la-with_fftw.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_algo_la-with_fftw.Tpo -c -o src/c/libscifftw_algo_la-with_fftw.lo `test -f 'src/c/with_fftw.c' || echo '$(srcdir)/'`src/c/with_fftw.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_algo_la-with_fftw.Tpo src/c/$(DEPDIR)/libscifftw_algo_la-with_fftw.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/c/with_fftw.c' object='src/c/libscifftw_algo_la-with_fftw.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_algo_la-with_fftw.lo `test -f 'src/c/with_fftw.c' || echo '$(srcdir)/'`src/c/with_fftw.c
+
+src/nofftw/libscifftw_la-nofftw.lo: src/nofftw/nofftw.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/nofftw/libscifftw_la-nofftw.lo -MD -MP -MF src/nofftw/$(DEPDIR)/libscifftw_la-nofftw.Tpo -c -o src/nofftw/libscifftw_la-nofftw.lo `test -f 'src/nofftw/nofftw.c' || echo '$(srcdir)/'`src/nofftw/nofftw.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/nofftw/$(DEPDIR)/libscifftw_la-nofftw.Tpo src/nofftw/$(DEPDIR)/libscifftw_la-nofftw.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/nofftw/nofftw.c' object='src/nofftw/libscifftw_la-nofftw.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/nofftw/libscifftw_la-nofftw.lo `test -f 'src/nofftw/nofftw.c' || echo '$(srcdir)/'`src/nofftw/nofftw.c
+
+src/c/libscifftw_la-callfftw.lo: src/c/callfftw.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_la-callfftw.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_la-callfftw.Tpo -c -o src/c/libscifftw_la-callfftw.lo `test -f 'src/c/callfftw.c' || echo '$(srcdir)/'`src/c/callfftw.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_la-callfftw.Tpo src/c/$(DEPDIR)/libscifftw_la-callfftw.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/c/callfftw.c' object='src/c/libscifftw_la-callfftw.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_la-callfftw.lo `test -f 'src/c/callfftw.c' || echo '$(srcdir)/'`src/c/callfftw.c
+
+src/c/libscifftw_la-fftwlibname.lo: src/c/fftwlibname.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_la-fftwlibname.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_la-fftwlibname.Tpo -c -o src/c/libscifftw_la-fftwlibname.lo `test -f 'src/c/fftwlibname.c' || echo '$(srcdir)/'`src/c/fftwlibname.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_la-fftwlibname.Tpo src/c/$(DEPDIR)/libscifftw_la-fftwlibname.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/c/fftwlibname.c' object='src/c/libscifftw_la-fftwlibname.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_la-fftwlibname.lo `test -f 'src/c/fftwlibname.c' || echo '$(srcdir)/'`src/c/fftwlibname.c
+
+src/c/libscifftw_la-fftw_utilities.lo: src/c/fftw_utilities.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_la-fftw_utilities.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_la-fftw_utilities.Tpo -c -o src/c/libscifftw_la-fftw_utilities.lo `test -f 'src/c/fftw_utilities.c' || echo '$(srcdir)/'`src/c/fftw_utilities.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_la-fftw_utilities.Tpo src/c/$(DEPDIR)/libscifftw_la-fftw_utilities.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/c/fftw_utilities.c' object='src/c/libscifftw_la-fftw_utilities.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_la-fftw_utilities.lo `test -f 'src/c/fftw_utilities.c' || echo '$(srcdir)/'`src/c/fftw_utilities.c
+
+src/c/libscifftw_la-sci_data_utilities.lo: src/c/sci_data_utilities.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_la-sci_data_utilities.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_la-sci_data_utilities.Tpo -c -o src/c/libscifftw_la-sci_data_utilities.lo `test -f 'src/c/sci_data_utilities.c' || echo '$(srcdir)/'`src/c/sci_data_utilities.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_la-sci_data_utilities.Tpo src/c/$(DEPDIR)/libscifftw_la-sci_data_utilities.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/c/sci_data_utilities.c' object='src/c/libscifftw_la-sci_data_utilities.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_la-sci_data_utilities.lo `test -f 'src/c/sci_data_utilities.c' || echo '$(srcdir)/'`src/c/sci_data_utilities.c
+
+src/c/libscifftw_la-with_fftw.lo: src/c/with_fftw.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libscifftw_la-with_fftw.lo -MD -MP -MF src/c/$(DEPDIR)/libscifftw_la-with_fftw.Tpo -c -o src/c/libscifftw_la-with_fftw.lo `test -f 'src/c/with_fftw.c' || echo '$(srcdir)/'`src/c/with_fftw.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libscifftw_la-with_fftw.Tpo src/c/$(DEPDIR)/libscifftw_la-with_fftw.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/c/with_fftw.c' object='src/c/libscifftw_la-with_fftw.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libscifftw_la-with_fftw.lo `test -f 'src/c/with_fftw.c' || echo '$(srcdir)/'`src/c/with_fftw.c
+
+sci_gateway/c/libscifftw_la-gw_fftw.lo: sci_gateway/c/gw_fftw.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-gw_fftw.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-gw_fftw.Tpo -c -o sci_gateway/c/libscifftw_la-gw_fftw.lo `test -f 'sci_gateway/c/gw_fftw.c' || echo '$(srcdir)/'`sci_gateway/c/gw_fftw.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-gw_fftw.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-gw_fftw.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/gw_fftw.c' object='sci_gateway/c/libscifftw_la-gw_fftw.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscifftw_la-gw_fftw.lo `test -f 'sci_gateway/c/gw_fftw.c' || echo '$(srcdir)/'`sci_gateway/c/gw_fftw.c
+
+sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo: sci_gateway/c/sci_fftwlibraryisloaded.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftwlibraryisloaded.Tpo -c -o sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo `test -f 'sci_gateway/c/sci_fftwlibraryisloaded.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftwlibraryisloaded.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftwlibraryisloaded.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftwlibraryisloaded.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_fftwlibraryisloaded.c' object='sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo `test -f 'sci_gateway/c/sci_fftwlibraryisloaded.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftwlibraryisloaded.c
+
+sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo: sci_gateway/c/sci_disposefftwlibrary.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_disposefftwlibrary.Tpo -c -o sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo `test -f 'sci_gateway/c/sci_disposefftwlibrary.c' || echo '$(srcdir)/'`sci_gateway/c/sci_disposefftwlibrary.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_disposefftwlibrary.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_disposefftwlibrary.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_disposefftwlibrary.c' object='sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo `test -f 'sci_gateway/c/sci_disposefftwlibrary.c' || echo '$(srcdir)/'`sci_gateway/c/sci_disposefftwlibrary.c
+
+sci_gateway/c/libscifftw_la-sci_fftw.lo: sci_gateway/c/sci_fftw.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_fftw.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw.Tpo -c -o sci_gateway/c/libscifftw_la-sci_fftw.lo `test -f 'sci_gateway/c/sci_fftw.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_fftw.c' object='sci_gateway/c/libscifftw_la-sci_fftw.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscifftw_la-sci_fftw.lo `test -f 'sci_gateway/c/sci_fftw.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw.c
+
+sci_gateway/c/libscifftw_la-sci_fftw_flags.lo: sci_gateway/c/sci_fftw_flags.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_fftw_flags.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw_flags.Tpo -c -o sci_gateway/c/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@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw_flags.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw_flags.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_fftw_flags.c' object='sci_gateway/c/libscifftw_la-sci_fftw_flags.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscifftw_la-sci_fftw_flags.lo `test -f 'sci_gateway/c/sci_fftw_flags.c' || echo '$(srcdir)/'`sci_gateway/c/sci_fftw_flags.c
+
+sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo: sci_gateway/c/sci_loadfftwlibrary.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_loadfftwlibrary.Tpo -c -o sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo `test -f 'sci_gateway/c/sci_loadfftwlibrary.c' || echo '$(srcdir)/'`sci_gateway/c/sci_loadfftwlibrary.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_loadfftwlibrary.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_loadfftwlibrary.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_loadfftwlibrary.c' object='sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo `test -f 'sci_gateway/c/sci_loadfftwlibrary.c' || echo '$(srcdir)/'`sci_gateway/c/sci_loadfftwlibrary.c
+
+sci_gateway/c/libscifftw_la-sci_get_fftw_wisdom.lo: sci_gateway/c/sci_get_fftw_wisdom.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_get_fftw_wisdom.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_get_fftw_wisdom.Tpo -c -o sci_gateway/c/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@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_get_fftw_wisdom.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_get_fftw_wisdom.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_get_fftw_wisdom.c' object='sci_gateway/c/libscifftw_la-sci_get_fftw_wisdom.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/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
+
+sci_gateway/c/libscifftw_la-sci_set_fftw_wisdom.lo: sci_gateway/c/sci_set_fftw_wisdom.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_set_fftw_wisdom.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_set_fftw_wisdom.Tpo -c -o sci_gateway/c/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@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_set_fftw_wisdom.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_set_fftw_wisdom.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_set_fftw_wisdom.c' object='sci_gateway/c/libscifftw_la-sci_set_fftw_wisdom.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/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
+
+sci_gateway/c/libscifftw_la-sci_fftw_forget_wisdom.lo: sci_gateway/c/sci_fftw_forget_wisdom.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_fftw_forget_wisdom.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw_forget_wisdom.Tpo -c -o sci_gateway/c/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@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw_forget_wisdom.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_fftw_forget_wisdom.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_fftw_forget_wisdom.c' object='sci_gateway/c/libscifftw_la-sci_fftw_forget_wisdom.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/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
+
+sci_gateway/c/libscifftw_la-sci_dct.lo: sci_gateway/c/sci_dct.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_dct.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_dct.Tpo -c -o sci_gateway/c/libscifftw_la-sci_dct.lo `test -f 'sci_gateway/c/sci_dct.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dct.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_dct.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_dct.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_dct.c' object='sci_gateway/c/libscifftw_la-sci_dct.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscifftw_la-sci_dct.lo `test -f 'sci_gateway/c/sci_dct.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dct.c
+
+sci_gateway/c/libscifftw_la-sci_dst.lo: sci_gateway/c/sci_dst.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libscifftw_la-sci_dst.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_dst.Tpo -c -o sci_gateway/c/libscifftw_la-sci_dst.lo `test -f 'sci_gateway/c/sci_dst.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dst.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_dst.Tpo sci_gateway/c/$(DEPDIR)/libscifftw_la-sci_dst.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_dst.c' object='sci_gateway/c/libscifftw_la-sci_dst.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscifftw_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libscifftw_la-sci_dst.lo `test -f 'sci_gateway/c/sci_dst.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dst.c
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+ -rm -rf sci_gateway/c/.libs sci_gateway/c/_libs
+ -rm -rf src/c/.libs src/c/_libs
+ -rm -rf src/nofftw/.libs src/nofftw/_libs
+install-libscifftw_la_etcDATA: $(libscifftw_la_etc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscifftw_la_etc_DATA)'; test -n "$(libscifftw_la_etcdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscifftw_la_etcdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscifftw_la_etcdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscifftw_la_etcdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscifftw_la_etcdir)" || exit $$?; \
+ done
+
+uninstall-libscifftw_la_etcDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscifftw_la_etc_DATA)'; test -n "$(libscifftw_la_etcdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscifftw_la_etcdir)'; $(am__uninstall_files_from_dir)
+install-libscifftw_la_rootDATA: $(libscifftw_la_root_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscifftw_la_root_DATA)'; test -n "$(libscifftw_la_rootdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscifftw_la_rootdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscifftw_la_rootdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscifftw_la_rootdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscifftw_la_rootdir)" || exit $$?; \
+ done
+
+uninstall-libscifftw_la_rootDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscifftw_la_root_DATA)'; test -n "$(libscifftw_la_rootdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscifftw_la_rootdir)'; $(am__uninstall_files_from_dir)
+install-libscifftw_la_sci_gatewayDATA: $(libscifftw_la_sci_gateway_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscifftw_la_sci_gateway_DATA)'; test -n "$(libscifftw_la_sci_gatewaydir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscifftw_la_sci_gatewaydir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscifftw_la_sci_gatewaydir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscifftw_la_sci_gatewaydir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscifftw_la_sci_gatewaydir)" || exit $$?; \
+ done
+
+uninstall-libscifftw_la_sci_gatewayDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscifftw_la_sci_gateway_DATA)'; test -n "$(libscifftw_la_sci_gatewaydir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscifftw_la_sci_gatewaydir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+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 \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA) all-local
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(libscifftw_la_etcdir)" "$(DESTDIR)$(libscifftw_la_rootdir)" "$(DESTDIR)$(libscifftw_la_sci_gatewaydir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+ -rm -f sci_gateway/c/$(am__dirstamp)
+ -rm -f src/c/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/c/$(am__dirstamp)
+ -rm -f src/nofftw/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/nofftw/$(am__dirstamp)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local \
+ clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf sci_gateway/c/$(DEPDIR) src/c/$(DEPDIR) src/nofftw/$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-local distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+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-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am: install-html-local
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf sci_gateway/c/$(DEPDIR) src/c/$(DEPDIR) src/nofftw/$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libscifftw_la_etcDATA \
+ uninstall-libscifftw_la_rootDATA \
+ uninstall-libscifftw_la_sci_gatewayDATA \
+ uninstall-pkglibLTLIBRARIES
+
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am \
+ check-local clean clean-generic clean-libtool clean-local \
+ clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-local 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-libscifftw_la_etcDATA \
+ 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 tags-am uninstall \
+ uninstall-am uninstall-libscifftw_la_etcDATA \
+ uninstall-libscifftw_la_rootDATA \
+ uninstall-libscifftw_la_sci_gatewayDATA \
+ uninstall-pkglibLTLIBRARIES
+
+
+# This target enables tests for Scilab
+check-local: $(top_builddir)/scilab-bin test
+ if test -d $(mydatadir)/tests; then \
+ @COMMAND="try test_run('$(modulename)');catch exit(-1);end;exit(0)"; export LANG=C; $(top_builddir)/bin/scilab -nwni -nb -e "$$COMMAND"; \
+ fi
+check-code:
+ if test -f build.xml; then \
+ $(ANT) checkstyle; \
+ fi
+ if test -x "$(SPLINT)"; then \
+ $(SPLINT) $(SPLINT_OPTIONS) -I$(top_srcdir)/modules/core/includes/ -I$(top_srcdir)/libs/MALLOC/includes/ -I$(top_srcdir)/modules/localization/includes/ $(INCLUDE_FLAGS) $(CHECK_SRC); \
+ fi
+@NEED_JAVA_TRUE@java:
+# Some configurations needs to export JAVA_HOME in the current env
+@NEED_JAVA_TRUE@ @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
+@NEED_JAVA_TRUE@ if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+@NEED_JAVA_TRUE@ if test -f build.xml -a $$USEANT -eq 1; then \
+@NEED_JAVA_TRUE@ $(ANT); \
+@NEED_JAVA_TRUE@ fi
+
+@NEED_JAVA_TRUE@clean-java:
+# Some configurations needs to export JAVA_HOME in the current env
+@NEED_JAVA_TRUE@ @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
+@NEED_JAVA_TRUE@ if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+@NEED_JAVA_TRUE@ if test -f build.xml -a $$USEANT -eq 1; then \
+@NEED_JAVA_TRUE@ $(ANT) clean; \
+@NEED_JAVA_TRUE@ fi;
+
+# If the user request for the SWIG generation of the wrappers Java => C/C++
+# We call the target swig-build on the variable SWIG_WRAPPERS
+
+@SWIG_TRUE@swig: $(SWIG_WRAPPERS)
+@SWIG_TRUE@ @SWIG_PACKAGENAME=org.scilab.modules.$(modulename); \
+@SWIG_TRUE@ SWIG_OUTDIR=src/java/org/scilab/modules/$(modulename)/; \
+@SWIG_TRUE@ if test -n "$(SWIG_WRAPPERS)"; then \
+@SWIG_TRUE@ for file in $(SWIG_WRAPPERS) ; do \
+@SWIG_TRUE@ echo "Swig process of $$file (Java) ..."; \
+@SWIG_TRUE@ $(SWIG_BIN) $(SWIG_JAVA) -package $$SWIG_PACKAGENAME -outdir $$SWIG_OUTDIR $$file; \
+@SWIG_TRUE@ done; \
+@SWIG_TRUE@ fi
+
+@SWIG_TRUE@swig-scilab: $(SWIG_SCILAB_WRAPPERS)
+@SWIG_TRUE@ @SWIG_OUTDIR=src/swig/; \
+@SWIG_TRUE@ if test -n "$(SWIG_SCILAB_WRAPPERS)"; then \
+@SWIG_TRUE@ for file in $(SWIG_SCILAB_WRAPPERS) ; do \
+@SWIG_TRUE@ echo "Swig process of $$file (Scilab) ..."; \
+@SWIG_TRUE@ $(SWIG_BIN) $(SWIG_SCILAB) -outdir $$SWIG_OUTDIR $$file; \
+@SWIG_TRUE@ done; \
+@SWIG_TRUE@ fi
+
+# If the user request for the SWIG generation of the wrappers Java => C/C++
+# We call the target swig-build on the variable SWIG_WRAPPERS
+
+@GIWS_TRUE@giws: $(GIWS_WRAPPERS)
+@GIWS_TRUE@ @GIWS_OUTPUTDIR=src/jni/; \
+@GIWS_TRUE@ MANDATORY_OPTIONS="--throws-exception-on-error --description-file"; \
+@GIWS_TRUE@ if test -n "$(GIWS_WRAPPERS)"; then \
+@GIWS_TRUE@ for file in $(GIWS_WRAPPERS) ; do \
+@GIWS_TRUE@ echo "GIWS process of $$file ..."; \
+@GIWS_TRUE@ if test -z "$(GIWS_OPTIONS)"; then \
+@GIWS_TRUE@ $(GIWS_BIN) --disable-return-size-array --output-dir $$GIWS_OUTPUTDIR $$MANDATORY_OPTIONS $$file; \
+@GIWS_TRUE@ else \
+@GIWS_TRUE@ echo "Custom GIWS call with '$$GIWS_OPTIONS'"; \
+@GIWS_TRUE@ $(GIWS_BIN) $$GIWS_OPTIONS --output-dir $$GIWS_OUTPUTDIR $$MANDATORY_OPTIONS $$file; \
+@GIWS_TRUE@ fi \
+@GIWS_TRUE@ done; \
+@GIWS_TRUE@ fi
+
+@GIWS_TRUE@giws-exception:
+@GIWS_TRUE@ @GIWS_OUTPUTDIR=src/jni/;\
+@GIWS_TRUE@ echo "GIWS: Generation of exception class ..."; \
+@GIWS_TRUE@ $(GIWS_BIN) --generate-exception-class --output-dir $$GIWS_OUTPUTDIR
+
+macros:
+ -@( if test ! -x $(top_builddir)/scilab-bin; then \
+ echo "Error : Cannot build $< : Scilab has not been built"; \
+ else \
+ $(top_builddir)/bin/scilab -ns -nwni -e "exec('macros/buildmacros.sce');quit;";\
+ fi)
+
+# Removes the macros
+clean-macros:
+# Removes macros (*.bin generated from .sci)
+ @for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
+ echo "rm -f $(builddir)/$$dir/$(MACROBINMASK)"; \
+ rm -f $(builddir)/$$dir/$(MACROBINMASK); \
+ done
+
+test:
+# More tests could be added here
+ @if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+ if test -f build.xml -a $$USEANT -eq 1; then \
+ $(ANT) test; \
+ fi
+
+all-local: $(TARGETS_ALL)
+
+.sci.bin:
+ -@( if test ! -x $(top_builddir)/scilab-bin; then \
+ echo "Error : Cannot build $< : Scilab has not been build"; \
+ else \
+ echo "Creating $@"; \
+ $(top_builddir)/bin/scilab -ns -nwni -e "exec('$(abs_srcdir)/$<');save('$(abs_srcdir)/$@');exit;"; \
+ fi )
+
+install-html-local:
+
+install-data-local-local:
+# Mainly for javasci
+ @if test -d $(srcdir)/javadoc; then \
+ cp -R $(srcdir)/javadoc $(DESTDIR)/$(mydatadir)/; \
+ fi
+# If the user wants the help sources to be installed
+@INSTALL_HELP_XML_TRUE@ @echo "-------- Install of XML sources of help files --------"; \
+@INSTALL_HELP_XML_TRUE@ for lang in $(ALL_LINGUAS); do \
+@INSTALL_HELP_XML_TRUE@ if test -d $(srcdir)/help/$$lang; then \
+@INSTALL_HELP_XML_TRUE@ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/$$lang && \
+@INSTALL_HELP_XML_TRUE@ if ls -lLd $(srcdir)/help/$$lang/$(DOCMASKXML) >/dev/null 2>&1; then \
+@INSTALL_HELP_XML_TRUE@ for file in $(srcdir)/help/$$lang/$(DOCMASKXML) ; do \
+@INSTALL_HELP_XML_TRUE@ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/$$lang" ; \
+@INSTALL_HELP_XML_TRUE@ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/$$lang ; \
+@INSTALL_HELP_XML_TRUE@ done ; \
+@INSTALL_HELP_XML_TRUE@ fi; \
+@INSTALL_HELP_XML_TRUE@ fi; \
+@INSTALL_HELP_XML_TRUE@ done; \
+@INSTALL_HELP_XML_TRUE@ @echo "-------- Install of MathML sources --------"; \
+@INSTALL_HELP_XML_TRUE@ if test -d $(srcdir)/help/mml/; then \
+@INSTALL_HELP_XML_TRUE@ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/mml/ && \
+@INSTALL_HELP_XML_TRUE@ if ls -lLd $(srcdir)/help/mml/$(DOCMASKMML) >/dev/null 2>&1; then \
+@INSTALL_HELP_XML_TRUE@ for file in $(srcdir)/help/mml/$(DOCMASKMML) ; do \
+@INSTALL_HELP_XML_TRUE@ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/mml" ; \
+@INSTALL_HELP_XML_TRUE@ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/mml ; \
+@INSTALL_HELP_XML_TRUE@ done ; \
+@INSTALL_HELP_XML_TRUE@ fi; \
+@INSTALL_HELP_XML_TRUE@ fi
+install-data-local:
+# Install the tests
+ @echo "-------- Install tests (if any) --------"; \
+ for dir in $(TESTS_DIR) $(TESTS_DIREXT) ; do \
+ if test -d $(srcdir)/$$dir/; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
+ for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
+ if test -d "$(srcdir)/$$dir/$$file"; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir/$$file; \
+ $(mkinstalldirs) "$(DESTDIR)$(pkgmacrosdir)/$$dir/$$file"; \
+ else \
+ echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
+ $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
+ fi \
+ done; \
+ fi; \
+ done
+# Install the help chapter
+ @echo "-------- Install the help chapter (if any) --------"; \
+ for lang in $(HELP_CHAPTERLANG); do \
+ HELPFILE=$(srcdir)/$(HELP_CHAPTERDIR)$$lang/$(HELP_CHAPTERFILE); \
+ if test -f $$HELPFILE; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
+ echo $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
+ $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
+ fi; \
+ done
+# Install the demos & examples
+ @echo "-------- Install demos & examples (if any) --------"; \
+ for dir in $(DEMOS_DIR) $(DEMOS_DIREXT) $(EXAMPLES_DIR) $(EXAMPLES_DIREXT) ; do \
+ if test -d $(srcdir)/$$dir/; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir && \
+ for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
+ if test -d "$(srcdir)/$$dir/$$file"; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir/$$file; \
+ $(mkinstalldirs) "$(DESTDIR)$(pkgdocdir)/$$dir/$$file"; \
+ else \
+ echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
+ $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
+ fi \
+ done; \
+ fi; \
+ done
+# Install the macros
+ @echo "-------- Install macros (if any) --------"; \
+ for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
+ $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
+ if test -d $(srcdir)/$$dir/; then \
+ FILELIST="$(srcdir)/$$dir/$(MACROMASK) $(srcdir)/$$dir/$(MACROBINMASK) $(srcdir)/$$dir/$(MACROBUILDMASK) $(srcdir)/$$dir/names $(srcdir)/$$dir/lib";\
+ if test -n "$(MACROSSPECIALEXT)"; then \
+ specialExtDir=""; \
+ for specialExt in $(MACROSSPECIALEXT); do \
+ specialExtDir="$$specialExtDir $(srcdir)/$$dir/$$specialExt"; \
+ done; \
+ FILELIST="$$FILELIST $$specialExtDir"; \
+ fi; \
+ for file in `ls -1 $$FILELIST 2>/dev/null`; do \
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgmacrosdir)/$$dir" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgmacrosdir)/$$dir ; \
+ done; \
+ fi; \
+ done
+# Install java files (.jar)
+ @if ls -lLd $(srcdir)/$(JARDIR)$(JARMASK) >/dev/null 2>&1; then \
+ echo "-------- Install jar files --------"; \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(JARDIR); \
+ for file in $(srcdir)/$(JARDIR)$(JARMASK); do\
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/$(JARDIR)" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/$(JARDIR) ; \
+ done ; \
+ fi
+
+########### CLEAN ###################
+# Clean help (generated automatically by Scilab)
+# It used to clean the macro (clean-macros) but this was causing
+# make clean && make to fail Scilab startup
+@NEED_JAVA_TRUE@clean-local: clean-java
+@NEED_JAVA_FALSE@clean-local:
+
+distclean-local:
+ rm -f $(builddir)/help/*/.last_successful_build_javaHelp $(builddir)/help/*/.list_*
+
+.PHONY: macros java swig giws
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/modules/fftw/core_Import.def b/modules/fftw/core_Import.def
new file mode 100755
index 000000000..179a8b06e
--- /dev/null
+++ b/modules/fftw/core_Import.def
@@ -0,0 +1,26 @@
+LIBRARY core.dll
+
+
+EXPORTS
+callFunctionFromGateway
+com_
+putlhsvar_
+intersci_
+stack_
+createvar_
+createcvar_
+vartype_
+check_dims
+GetData
+getrhscvar_
+checklhs_
+checkrhs_
+createvarfromptr_
+freeArrayOfString
+getrhsvar_
+gettype_
+vstk_
+overload_
+MyHeapAlloc
+MyHeapFree
+MyHeapRealloc
diff --git a/modules/fftw/etc/fftw.quit b/modules/fftw/etc/fftw.quit
new file mode 100755
index 000000000..54148ecda
--- /dev/null
+++ b/modules/fftw/etc/fftw.quit
@@ -0,0 +1,17 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+// Copyright (C) 2009 - DIGITEO
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+if %fftw then
+
+ if ( fftwlibraryisloaded() ) then
+ disposefftwlibrary();
+ end
+
+end
diff --git a/modules/fftw/etc/fftw.start b/modules/fftw/etc/fftw.start
new file mode 100755
index 000000000..e1866d19c
--- /dev/null
+++ b/modules/fftw/etc/fftw.start
@@ -0,0 +1,52 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009-2011 - DIGITEO - Allan CORNET
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+function startModule()
+ if %fftw then
+ if getos() == "Windows" then
+ librarynamefftw = SCI+"/bin/fftw/libfftw3-3"+getdynlibext();
+ librarynamefftw3 = "";
+ else
+ librarynamefftw = "libfftw3"+getdynlibext();
+ // Some distribs/os are not adding the .3 extension...
+ librarynamefftw3 = librarynamefftw+".3";
+ end
+
+ if ( loadfftwlibrary(librarynamefftw3) | loadfftwlibrary(librarynamefftw)) then
+ // replace scilab fft function by fftw
+ clearfun('fft');
+ newfun('fft', funptr('fftw'));
+
+ else // if ( loadfftwlibrary(librarynamefftw) )
+ settings_file = pathconvert(SCIHOME+"/.scilab_settings", %f, %t)
+ w = fileinfo(settings_file);
+ show = %t;
+ if w <> [] then
+ show = grep(mgetl(SCIHOME+"/.scilab_settings"),"displayWarningFFTW=no")==[]
+ end
+ if show then
+ MSG_FTTW = [_("You choose to install scilab with fftw module.");
+ _("This module requires : "+librarynamefftw+" (GPL licence).");
+ _("Scilab will use standard fft by default until you install this library.");
+ _("See help fftw for more information.")];
+
+ if getscilabmode() == "STD" then
+ messagebox(MSG_FTTW,"","info");
+ else
+ warning(MSG_FTTW);
+ end
+ mputl("displayWarningFFTW=no",SCIHOME+"/.scilab_settings")
+ end
+ end // if ( loadfftwlibrary(librarynamefftw) )
+ end
+
+endfunction
+
+startModule();
+clear startModule;
diff --git a/modules/fftw/fftw.iss b/modules/fftw/fftw.iss
new file mode 100755
index 000000000..3ead3088d
--- /dev/null
+++ b/modules/fftw/fftw.iss
@@ -0,0 +1,51 @@
+;
+; Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+; Copyright (C) INRIA - Allan CORNET
+; Copyright (C) DIGITEO - 2010 - Allan CORNET
+;
+; This file must be used under the terms of the CeCILL.
+; This source file is licensed as described in the file COPYING, which
+; you should have received as part of this distribution. The terms
+; are also available at
+; http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+;
+;--------------------------------------------------------------------------------------------------------------
+; Inno Setup Script (5.3 and more) for Scilab (UNICODE version required)
+;
+;--------------------------------------------------------------------------------------------------------------
+; FFTW module
+;--------------------------------------------------------------------------------------------------------------
+;
+#define FFTW "fftw"
+;
+Source: bin\{#FFTW}\lib{#FFTW}3-3.dll; DestDir: {app}\bin\{#FFTW}; Components: {#COMPN_FFTW}
+Source: bin\{#FFTW}\COPYRIGHT; DestDir: {app}\bin\{#FFTW}; Components: {#COMPN_FFTW}
+Source: bin\{#FFTW}\COPYING; DestDir: {app}\bin\{#FFTW}; Components: {#COMPN_FFTW}
+
+Source: bin\{#FFTW}.dll; DestDir: {app}\bin; DestName: {#FFTW}.dll; Components: {#COMPN_FFTW}
+Source: bin\no{#FFTW}.dll; DestDir: {app}\bin; DestName: {#FFTW}.dll; Components: not ({#COMPN_FFTW})
+;
+
+Source: modules\{#FFTW}\license.txt; DestDir: {app}\modules\{#FFTW}; Components: {#COMPN_FFTW}
+;
+Source: modules\{#FFTW}\sci_gateway\{#FFTW}_gateway.xml; DestDir: {app}\modules\{#FFTW}\sci_gateway; Components: {#COMPN_FFTW}
+;
+Source: modules\{#FFTW}\etc\{#FFTW}.quit; DestDir: {app}\modules\{#FFTW}\etc; Components: {#COMPN_FFTW}
+Source: modules\{#FFTW}\etc\{#FFTW}.start; DestDir: {app}\modules\{#FFTW}\etc; Components: {#COMPN_FFTW}
+;
+;Source: modules\{#FFTW}\demos\*.*; DestDir: {app}\modules\{#FFTW}\demos; Flags: recursesubdirs; Components: {#COMPN_FFTW}
+;
+;Source: modules\{#FFTW}\includes\*.h; Flags: recursesubdirs; DestDir: {app}\modules\{#FFTW}\includes; Components: {#COMPN_FFTW}
+;
+;Source: modules\{#FFTW}\macros\lib; DestDir: {app}\modules\{#FFTW}\macros; Components: {#COMPN_FFTW}
+;Source: modules\{#FFTW}\macros\names; DestDir: {app}\modules\{#FFTW}\macros; Components: {#COMPN_FFTW}
+;Source: modules\{#FFTW}\macros\*.bin; DestDir: {app}\modules\{#FFTW}\macros; Components: {#COMPN_FFTW}
+;Source: modules\{#FFTW}\macros\*.sci; DestDir: {app}\modules\{#FFTW}\macros; Components: {#COMPN_FFTW}
+Source: modules\{#FFTW}\macros\buildmacros.sce; DestDir: {app}\modules\{#FFTW}\macros; Components: {#COMPN_FFTW}
+Source: modules\{#FFTW}\macros\buildmacros.bat; DestDir: {app}\modules\{#FFTW}\macros; Components: {#COMPN_FFTW}
+Source: modules\{#FFTW}\macros\cleanmacros.bat; DestDir: {app}\modules\{#FFTW}\macros; Components: {#COMPN_FFTW}
+;
+Source: modules\{#FFTW}\tests\*.*; DestDir: {app}\modules\{#FFTW}\tests; Flags: recursesubdirs; Components: {#COMPN_FFTW} and {#COMPN_TESTS}
+;
+;--------------------------------------------------------------------------------------------------------------
+;
diff --git a/modules/fftw/fftw.vcxproj b/modules/fftw/fftw.vcxproj
new file mode 100755
index 000000000..cc0f1cfac
--- /dev/null
+++ b/modules/fftw/fftw.vcxproj
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{13B86307-5A11-48D6-94BE-71F77BCB82D1}</ProjectGuid>
+ <RootNamespace>fftw</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>includes;src/c;../core/includes;../fileio/includes;../output_stream/includes;../windows_tools/includes;../localization/includes;../../libs/intl;../dynamic_link/includes;../api_scilab/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>FORDLL;_DEBUG;_WINDOWS;_USRDLL;FFTW_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)Scilab_Windows_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)Scilab_Windows.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)Elementary_functions_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)Elementary_functions_f.lib" 1&gt;NUL 2&gt;NUL
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.lib;scilab_windows.lib;elementary_functions_f.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>../../bin/blasplus.lib;scilab_windows.lib;core.lib;elementary_functions_f.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>includes;src/c;../core/includes;../fileio/includes;../output_stream/includes;../windows_tools/includes;../localization/includes;../../libs/intl;../dynamic_link/includes;../api_scilab/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>FORDLL;_DEBUG;_WINDOWS;_USRDLL;FFTW_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)Scilab_Windows_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)Scilab_Windows.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)Elementary_functions_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)Elementary_functions_f.lib" 1&gt;NUL 2&gt;NUL
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.lib;scilab_windows.lib;elementary_functions_f.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>../../bin/blasplus.lib;scilab_windows.lib;core.lib;elementary_functions_f.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>includes;src/c;../core/includes;../fileio/includes;../output_stream/includes;../windows_tools/includes;../localization/includes;../../libs/intl;../dynamic_link/includes;../api_scilab/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>FORDLL;NDEBUG;_WINDOWS;_USRDLL;FFTW_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)Scilab_Windows_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)Scilab_Windows.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)Elementary_functions_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)Elementary_functions_f.lib" 1&gt;NUL 2&gt;NUL
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.lib;scilab_windows.lib;elementary_functions_f.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>../../bin/blasplus.lib;scilab_windows.lib;core.lib;elementary_functions_f.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>includes;src/c;../core/includes;../fileio/includes;../output_stream/includes;../windows_tools/includes;../localization/includes;../../libs/intl;../dynamic_link/includes;../api_scilab/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>FORDLL;NDEBUG;_WINDOWS;_USRDLL;FFTW_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WarningLevel>Level3</WarningLevel>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)Scilab_Windows_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)Scilab_Windows.lib" 1&gt;NUL 2&gt;NUL
+lib /DEF:"$(ProjectDir)Elementary_functions_f_Import.def" /SUBSYSTEM:WINDOWS /MACHINE:$(Platform) /OUT:"$(ProjectDir)Elementary_functions_f.lib" 1&gt;NUL 2&gt;NUL
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.lib;scilab_windows.lib;elementary_functions_f.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>../../bin/blasplus.lib;scilab_windows.lib;core.lib;elementary_functions_f.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="sci_gateway\c\sci_dct.c" />
+ <ClCompile Include="sci_gateway\c\sci_dst.c" />
+ <ClCompile Include="src\c\callfftw.c" />
+ <ClCompile Include="src\c\DllmainFttw.c" />
+ <ClCompile Include="src\c\fftw_utilities.c" />
+ <ClCompile Include="src\c\fftwlibname.c" />
+ <ClCompile Include="sci_gateway\c\gw_fftw.c" />
+ <ClCompile Include="sci_gateway\c\sci_disposefftwlibrary.c" />
+ <ClCompile Include="sci_gateway\c\sci_fftw.c" />
+ <ClCompile Include="sci_gateway\c\sci_fftw_flags.c" />
+ <ClCompile Include="sci_gateway\c\sci_fftw_forget_wisdom.c" />
+ <ClCompile Include="sci_gateway\c\sci_fftwlibraryisloaded.c" />
+ <ClCompile Include="sci_gateway\c\sci_get_fftw_wisdom.c" />
+ <ClCompile Include="sci_gateway\c\sci_loadfftwlibrary.c" />
+ <ClCompile Include="sci_gateway\c\sci_set_fftw_wisdom.c" />
+ <ClCompile Include="src\c\sci_data_utilities.c" />
+ <ClCompile Include="src\c\with_fftw.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="src\c\callfftw.h" />
+ <ClInclude Include="includes\dynlib_fftw.h" />
+ <ClInclude Include="src\c\fftw3.h" />
+ <ClInclude Include="src\c\fftw_utilities.h" />
+ <ClInclude Include="src\c\fftwlibname.h" />
+ <ClInclude Include="includes\gw_fftw.h" />
+ <ClInclude Include="includes\with_fftw.h" />
+ <ClInclude Include="src\c\sci_data_utilities.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="src\c\fftw.rc" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Elementary_functions_f_Import.def" />
+ <None Include="core_import.def" />
+ <None Include="locales\fftw.pot" />
+ <None Include="scilab_windows_Import.def" />
+ <None Include="fftw.iss" />
+ <None Include="sci_gateway\fftw_gateway.xml" />
+ <None Include="Makefile.am" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\api_scilab\api_scilab.vcxproj">
+ <Project>{43c5bab1-1dca-4743-a183-77e0d42fe7d0}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\dynamic_link\src\c\dynamic_link.vcxproj">
+ <Project>{eab6c580-22b3-4359-ba1d-dd7499a96163}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\localization\src\localization.vcxproj">
+ <Project>{ecffeb0c-1eda-45ee-9a10-b18143852e17}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\output_stream\src\c\output_stream.vcxproj">
+ <Project>{a5911cd7-f8e8-440c-a23e-4843a0636f3a}</Project>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/modules/fftw/fftw.vcxproj.filters b/modules/fftw/fftw.vcxproj.filters
new file mode 100755
index 000000000..8ef992f63
--- /dev/null
+++ b/modules/fftw/fftw.vcxproj.filters
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ <Filter Include="localization">
+ <UniqueIdentifier>{9cf2ab0b-42d0-4c04-aa37-3fc1cfaf9640}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Libraries Dependencies">
+ <UniqueIdentifier>{f9cf187f-0c6e-4ad0-a9f9-6db2def25e81}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Libraries Dependencies\Imports">
+ <UniqueIdentifier>{474a3608-a988-49bd-b65f-7c60deada13c}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="src\c\callfftw.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\c\DllmainFttw.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\c\fftw_utilities.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\c\fftwlibname.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\gw_fftw.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\sci_disposefftwlibrary.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\sci_fftw.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\sci_fftw_flags.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\sci_fftw_forget_wisdom.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\sci_fftwlibraryisloaded.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\sci_get_fftw_wisdom.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\sci_loadfftwlibrary.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\sci_set_fftw_wisdom.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\c\with_fftw.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\sci_dct.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\sci_dst.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\c\sci_data_utilities.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="src\c\callfftw.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\dynlib_fftw.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\c\fftw3.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\c\fftw_utilities.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\c\fftwlibname.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\gw_fftw.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\with_fftw.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="src\c\sci_data_utilities.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="src\c\fftw.rc">
+ <Filter>Resource Files</Filter>
+ </ResourceCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="core_import.def">
+ <Filter>Libraries Dependencies\Imports</Filter>
+ </None>
+ <None Include="scilab_windows_Import.def">
+ <Filter>Libraries Dependencies\Imports</Filter>
+ </None>
+ <None Include="fftw.iss" />
+ <None Include="sci_gateway\fftw_gateway.xml" />
+ <None Include="Makefile.am" />
+ <None Include="Elementary_functions_f_Import.def">
+ <Filter>Libraries Dependencies\Imports</Filter>
+ </None>
+ <None Include="locales\fftw.pot">
+ <Filter>localization</Filter>
+ </None>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/modules/fftw/help/en_US/addchapter.sce b/modules/fftw/help/en_US/addchapter.sce
new file mode 100755
index 000000000..2c92f12a8
--- /dev/null
+++ b/modules/fftw/help/en_US/addchapter.sce
@@ -0,0 +1,11 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+add_help_chapter("FFTW",SCI+"/modules/fftw/help/en_US",%T);
+
diff --git a/modules/fftw/help/en_US/fftw_flags.xml b/modules/fftw/help/en_US/fftw_flags.xml
new file mode 100755
index 000000000..5569e3e94
--- /dev/null
+++ b/modules/fftw/help/en_US/fftw_flags.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:ns4="http://www.w3.org/1999/xhtml"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:scilab="http://www.scilab.org" xml:id="fftw_flags" xml:lang="en">
+ <refnamediv>
+ <refname>fftw_flags</refname>
+ <refpurpose>set method for fft planner algorithm selection
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[a,[S]]=fftw_flags(flag)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>
+ a string or an integer. Specifies the planner
+ algorithm. See below.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a</term>
+ <listitem>
+ <para>an integer. The planner code. See below.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>S</term>
+ <listitem>
+ <para>a character string. The planner name.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ This function enables the selection of the algorithm used to
+ determine the fftw planner algorithm. The planner is used to
+ determine an efficient way to compute the fft.
+ </para>
+ <para>
+ <warning>
+ Warning: the default value "FFTW_ESTIMATE" gives generally
+ quite efficient plans. Try to change it only if the fft efficiency is
+ really important and you have a lot of similar calls to do.
+ </warning>
+ </para>
+
+ <para>Accepted entries are :</para>
+ <itemizedlist>
+ <listitem>
+ <para>{FFTW_ESTIMATE} or 64. Specifies that, instead of actual
+ measurements of different algorithms, a simple heuristic is
+ used to pick a (probably sub-optimal) plan quickly. With this
+ flag, the input/output arrays are not overwritten during
+ planning. It is the default value
+ </para>
+ </listitem>
+ <listitem>
+ <para>FFTW_MEASURE or 0. tells FFTW to find an optimized
+ plan by actually computing several FFTs and measuring their
+ execution time. Depending on your machine, this can take some
+ time (often a few seconds).
+ </para>
+ </listitem>
+ <listitem>
+ <para>FFTW_PATIENT or 32. It is like "FFTW_MEASURE", but
+ considers a wider range of algorithms and often produces a
+ “more optimal” plan (especially for large transforms), but at
+ the expense of several times longer planning time (especially
+ for large transforms).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>FFTW_EXHAUSTIVE or 8. It is like "FFTW_PATIENT", but
+ considers an even wider range of algorithms, including many
+ that we think are unlikely to be fast, to produce the most
+ optimal plan but with a substantially increased planning
+ time.
+ </para>
+ </listitem>
+ </itemizedlist>
+
+
+ <para>Remark : when using FFTW_MEASURE/FFTW_PATIENT/FFTW_EXHAUSTIVE you must
+ call fftw twice. (first call for initialization, second and others
+ calls for computation)
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(1, 2^9 + 2^15);
+fftw_forget_wisdom();
+fftw_flags("FFTW_ESTIMATE");
+timer(); y=fft(A); timer()//first call determines the plan
+timer(); y=fft(A); timer() //subsequent similar calls
+fftw_flags("FFTW_MEASURE");
+fftw_forget_wisdom();
+timer(); y=fft(A); timer()//first call determines the plan, this takes about 5min
+timer(); y=fft(A); timer() //subsequent similar calls
+
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fft">fft</link>
+ </member>
+ <member>
+ <link linkend="set_fftw_wisdom">set_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="get_fftw_wisdom">get_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="fftw_forget_wisdom">fftw_forget_wisdom</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/fftw/help/en_US/fftw_forget_wisdom.xml b/modules/fftw/help/en_US/fftw_forget_wisdom.xml
new file mode 100755
index 000000000..4c6ee6990
--- /dev/null
+++ b/modules/fftw/help/en_US/fftw_forget_wisdom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - Allan Layec - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="fftw_forget_wisdom">
+ <refnamediv>
+ <refname>fftw_forget_wisdom</refname>
+ <refpurpose>Reset fftw wisdom</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>fftw_forget_wisdom()</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Description</title>
+ <para>
+ This function reset the current fftw wisdom.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Caveat</title>
+ <para>
+ This function do nothing in Scilab versions which use
+ the MKL intel library (Scilab official versions for windows in particular).
+ </para>
+ </refsection>
+
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+//return fftw wisdom
+txt=get_fftw_wisdom();
+//set fftw wisdom
+set_fftw_wisdom(txt);
+//reset fftw wisdom
+fftw_forget_wisdom();
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="get_fftw_wisdom">get_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="set_fftw_wisdom">set_fftw_wisdom</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/fftw/help/en_US/get_fftw_wisdom.xml b/modules/fftw/help/en_US/get_fftw_wisdom.xml
new file mode 100755
index 000000000..7ed76088d
--- /dev/null
+++ b/modules/fftw/help/en_US/get_fftw_wisdom.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - Allan Layec - INRIA
+ * Copyright (C) 2012 - Serge Steer - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="get_fftw_wisdom">
+ <refnamediv>
+ <refname>get_fftw_wisdom</refname>
+ <refpurpose>return fftw wisdom</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[txt]=get_fftw_wisdom()</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>txt</term>
+ <listitem>
+ <para>String matrix that contains fftw wisdom.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Caveat</title>
+ <para>
+ This function is not implemented in Scilab versions which use
+ the MKL intel library (Scilab official versions for windows in particular).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ This function return the fftw wisdom in a string matrix. Using
+ <literal>get_fftw_wisdom</literal> and
+ <literal>set_fftw_wisdom</literal> allows to optimize fft
+ efficiency if many calls have to be done on with same data sizes
+ and same options for the <link linkend="fft">fft</link> function.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+sample_rate=1000;
+t = 0:1/sample_rate:40;
+N=size(t,'*'); //number of samples
+s=sin(2*%pi*50*t)+sin(2*%pi*70*t+%pi/4)+grand(1,N,'nor',0,1);
+fftw_forget_wisdom();
+timer();y=fft(s);t1=timer() //first call
+timer();y=fft(s);t2=timer() //second call uses preserved wisdom
+t1/t2
+wisdom1=get_fftw_wisdom(); //preserve current wisdom
+//realize a different fft
+A = zeros(256,256);
+A(5:24,13:17) = 1;
+X = fft(A);
+
+//Create a new signal with same size as s
+s1=sin(2*%pi*10*t)+sin(2*%pi*7*t+%pi/4)+5*grand(1,N,'nor',0,1);
+//restore preserved wisdom
+set_fftw_wisdom(wisdom1);
+timer();y=fft(s);t3=timer()
+t3/t2
+
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fft">fft</link>
+ </member>
+
+ <member>
+ <link linkend="set_fftw_wisdom">set_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="fftw_forget_wisdom">fftw_forget_wisdom</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/fftw/help/en_US/set_fftw_wisdom.xml b/modules/fftw/help/en_US/set_fftw_wisdom.xml
new file mode 100755
index 000000000..4431a0a23
--- /dev/null
+++ b/modules/fftw/help/en_US/set_fftw_wisdom.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - Allan Layec - INRIA
+ * Copyright (C) 2012 - Serge Steer - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="set_fftw_wisdom">
+ <refnamediv>
+ <refname>set_fftw_wisdom</refname>
+ <refpurpose>set fftw wisdom</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>set_fftw_wisdom(txt)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>txt</term>
+ <listitem>
+ <para>String matrix that contains fftw wisdom.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Caveat</title>
+ <para>
+ This function is not implemented in Scilab versions which use
+ the MKL intel library (Scilab official versions for windows in particular).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ This function set the fftw wisdom with a string matrix.Using
+ <literal>get_fftw_wisdom</literal> and
+ <literal>set_fftw_wisdom</literal> allows to optimize fft
+ efficiency if many calls have to be done on with same data sizes
+ and same options for the <link linkend="fft">fft</link> function.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <programlisting role="example"><![CDATA[
+sample_rate=1000;
+t = 0:1/sample_rate:40;
+N=size(t,'*'); //number of samples
+s=sin(2*%pi*50*t)+sin(2*%pi*70*t+%pi/4)+grand(1,N,'nor',0,1);
+fftw_forget_wisdom();
+timer();y=fft(s);t1=timer() //first call
+timer();y=fft(s);t2=timer() //second call uses preserved wisdom
+t1/t2
+wisdom1=get_fftw_wisdom(); //preserve current wisdom
+//realize a different fft
+A = zeros(256,256);
+A(5:24,13:17) = 1;
+X = fft(A);
+
+//Create a new signal with same size as s
+s1=sin(2*%pi*10*t)+sin(2*%pi*7*t+%pi/4)+5*grand(1,N,'nor',0,1);
+//restore preserved wisdom
+set_fftw_wisdom(wisdom1);
+timer();y=fft(s);t3=timer()
+t3/t2
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="get_fftw_wisdom">get_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="fftw_forget_wisdom">fftw_forget_wisdom</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/fftw/help/fr_FR/addchapter.sce b/modules/fftw/help/fr_FR/addchapter.sce
new file mode 100755
index 000000000..6f6729a96
--- /dev/null
+++ b/modules/fftw/help/fr_FR/addchapter.sce
@@ -0,0 +1,11 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+add_help_chapter("FFTW",SCI+"/modules/fftw/help/fr_FR",%T);
+
diff --git a/modules/fftw/help/fr_FR/fftw_flags.xml b/modules/fftw/help/fr_FR/fftw_flags.xml
new file mode 100755
index 000000000..d09b03293
--- /dev/null
+++ b/modules/fftw/help/fr_FR/fftw_flags.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="fftw_flags">
+ <refnamediv>
+ <refname>fftw_flags</refname>
+ <refpurpose>choix de la méthode pour la sélection de l'algorithme
+ de planification pour la fft
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[a,[S]]=fftw_flags(flag)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>une chaîne de caractères ou bien un entier. Sert à
+ spécifier l'algorithme de planification. Voir ci-dessous.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a</term>
+ <listitem>
+ <para>un entier. Code de l'algorithme de planification. Voir
+ ci-dessous.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>S</term>
+ <listitem>
+ <para>une chaîne de caractères. Le nom de l'algorithme de
+ planification.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Cette fonction permet la sélection de l'algorithme utilisé pour
+ déterminer l'algorithme de planification de fftw. Le
+ planificateur est utilisé pour déterminer un moyen efficace pour
+ calculer la fft.
+ </para>
+ <para>
+ <warning>
+ Attention: la valeur par défaut "FFTW_ESTIMATE" donne le plus
+ souvent de bonnes performances. N'essayez d'autres choix que si
+ la performance est cruciale et que vous avez beaucoup d'appels
+ du même type à effectuer.
+ </warning>
+ </para>
+ <para>
+ Les entrées possibles sont :
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>{FFTW_ESTIMATE} ou 64. Selectionne une heuristique simple et
+ peu couteuse pour choisir un plan (probablement
+ sous-optimal). C'est la valeur par défaut.
+ </para>
+ </listitem>
+ <listitem>
+ <para>FFTW_MEASURE ou 0. Selectionne une méthode consistant a
+ effectuer plusieurs calcul de fft avec des planifications
+ différentes, à mesurer leur temps d'exécution et de choisir la
+ meilleure planification. En fonction de votre machine, cela
+ peut prendre un certain temps (souvent quelques
+ secondes).
+ </para>
+ </listitem>
+ <listitem>
+ <para>FFTW_PATIENT ou 32. Similaire à "FFTW_MEASURE", mais
+ considère un plus large éventail d'algorithmes et produit
+ souvent un plan plus efficace (en particulier pour les
+ transformations importantes). En revanche, le coût de la
+ détermination du plan peut être largement supérieur (en
+ particulier pour les transformations importantes).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>FFTW_EXHAUSTIVE ou 8. Comme "FFTW_PATIENT", mais
+ considère une gamme encore plus large d'algorithmes, visant a
+ trouver le plan optimal , mais avec un temps de planification
+ sensiblement augmenté.
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ <para>
+ Remarque : Lors de l'utilisation des méthodes
+ FFTW_MEASURE/FFTW_PATIENT/FFTW_EXHAUSTIVE la fonction fftw doit
+ être appélée au moins deux fois. (le premier appel est pour
+ l'initalisation, le second et les autres pour le calcul)
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+A=rand(1, 2^9 + 2^15);
+fftw_forget_wisdom();
+fftw_flags("FFTW_ESTIMATE");
+timer(); y=fft(A); timer()//premier appel, détermine le plan
+timer(); y=fft(A); timer() //appels similaires suivants
+fftw_flags("FFTW_MEASURE");
+fftw_forget_wisdom();
+timer(); y=fft(A); timer()//premier appel, détermine le plan, prend environ 5min
+timer(); y=fft(A); timer() //appels similaires suivants
+
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fft">fft</link>
+ </member>
+ <member>
+ <link linkend="set_fftw_wisdom">set_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="get_fftw_wisdom">get_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="fftw_forget_wisdom">fftw_forget_wisdom</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/fftw/help/fr_FR/fftw_forget_wisdom.xml b/modules/fftw/help/fr_FR/fftw_forget_wisdom.xml
new file mode 100755
index 000000000..2a76dee1c
--- /dev/null
+++ b/modules/fftw/help/fr_FR/fftw_forget_wisdom.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - Allan Layec - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="fftw_forget_wisdom">
+ <refnamediv>
+ <refname>fftw_forget_wisdom</refname>
+ <refpurpose>Réinitialise le wisdom fftw</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>fftw_forget_wisdom()</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Attention</title>
+ <para>
+ Cette fonction n'est pas implémentée lorsque Scilab utilise la
+ bibliothèque MKL d'Intel (c'est en particulier le cas des
+ binaires Windows officielles).
+ </para>
+ </refsection>
+
+ <refsection>
+ <title>Description</title>
+ <para>
+ Cette fonction réinitialise le wisdom fftw.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+//return fftw wisdom
+txt=get_fftw_wisdom();
+//set fftw wisdom
+set_fftw_wisdom(txt);
+//reset fftw wisdom
+fftw_forget_wisdom();
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="get_fftw_wisdom">get_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="set_fftw_wisdom">set_fftw_wisdom</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/fftw/help/fr_FR/get_fftw_wisdom.xml b/modules/fftw/help/fr_FR/get_fftw_wisdom.xml
new file mode 100755
index 000000000..109e153b3
--- /dev/null
+++ b/modules/fftw/help/fr_FR/get_fftw_wisdom.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - Allan Layec - INRIA
+ * Copyright (C) 2012 - Serge Steer - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="get_fftw_wisdom">
+ <refnamediv>
+ <refname>get_fftw_wisdom</refname>
+ <refpurpose>retourne le wisdom fftw</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>[txt]=get_fftw_wisdom()</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>txt</term>
+ <listitem>
+ <para>Matrice de chaîne de caractères contenant le wisdom courant de fftw.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Attention</title>
+ <para>
+ Cette fonction n'est pas implémentée lorsque Scilab utilise la
+ bibliothèque MKL d'Intel (c'est en particulier le cas des
+ binaires Windows officielles).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Cette fonction retourne le wisdom fftw sous la forme d'une
+ chaîne de caractère. L'utilisation de
+ <literal>get_fftw_wisdom</literal> et de
+ <literal>set_fftw_wisdom</literal> permet d'optimiser
+ l'efficacité de la fft si de nombreux appels doivent être
+ effectués sur des tailles de données identiques et pour les
+ mêmes options de la fonction <link linkend="fft">fft</link>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+sample_rate=1000;
+t = 0:1/sample_rate:40;
+N=size(t,'*'); //number of samples
+s=sin(2*%pi*50*t)+sin(2*%pi*70*t+%pi/4)+grand(1,N,'nor',0,1);
+fftw_forget_wisdom();
+timer();y=fft(s);t1=timer() //premier appel
+timer();y=fft(s);t2=timer() //second appel similaire utilise le wisdom courant
+t1/t2
+wisdom1=get_fftw_wisdom(); //préserve le wisdom courant
+//une fft différente
+A = zeros(256,256);
+A(5:24,13:17) = 1;
+X = fft(A);
+
+//un nouveau signal avec la même taille que s
+s1=sin(2*%pi*10*t)+sin(2*%pi*7*t+%pi/4)+5*grand(1,N,'nor',0,1);
+//reinstallation du wisdom
+set_fftw_wisdom(wisdom1);
+timer();y=fft(s);t3=timer()
+t3/t2
+
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fft">fft</link>
+ </member>
+ <member>
+ <link linkend="set_fftw_wisdom">set_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="fftw_forget_wisdom">fftw_forget_wisdom</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/fftw/help/fr_FR/set_fftw_wisdom.xml b/modules/fftw/help/fr_FR/set_fftw_wisdom.xml
new file mode 100755
index 000000000..6d28eae50
--- /dev/null
+++ b/modules/fftw/help/fr_FR/set_fftw_wisdom.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - Allan Layec - INRIA
+ * Copyright (C) 2012 - Serge Steer - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:scilab="http://www.scilab.org" xml:lang="fr" xml:id="set_fftw_wisdom">
+ <refnamediv>
+ <refname>set_fftw_wisdom</refname>
+ <refpurpose>charge un wisdom fftw</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Séquence d'appel</title>
+ <synopsis>set_fftw_wisdom(txt)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Paramètres</title>
+ <variablelist>
+ <varlistentry>
+ <term>txt</term>
+ <listitem>
+ <para>Matrice de chaîne de caractères contenant le wisdom fftw.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Attention</title>
+ <para>
+ Cette fonction n'est pas implémentée lorsque Scilab utilise la
+ bibliothèque MKL d'Intel (c'est en particulier le cas des
+ binaires Windows officielles).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Cette fonction charge un wisdom fftw contenue dans une chaîne de
+ caractères. L'utilisation de <literal>get_fftw_wisdom</literal>
+ et de <literal>set_fftw_wisdom</literal> permet d'optimiser
+ l'efficacité de la fft si de nombreux appels doivent être
+ effectués sur des tailles de données identiques et pour les
+ mêmes options de la fonction <link linkend="fft">fft</link>.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Exemples</title>
+ <programlisting role="example"><![CDATA[
+sample_rate=1000;
+t = 0:1/sample_rate:40;
+N=size(t,'*'); //number of samples
+s=sin(2*%pi*50*t)+sin(2*%pi*70*t+%pi/4)+grand(1,N,'nor',0,1);
+fftw_forget_wisdom();
+timer();y=fft(s);t1=timer() //first call
+timer();y=fft(s);t2=timer() //second call uses preserved wisdom
+t1/t2
+wisdom1=get_fftw_wisdom(); //preserve current wisdom
+//realize a different fft
+A = zeros(256,256);
+A(5:24,13:17) = 1;
+X = fft(A);
+
+//Create a new signal with same size as s
+s1=sin(2*%pi*10*t)+sin(2*%pi*7*t+%pi/4)+5*grand(1,N,'nor',0,1);
+//restore preserved wisdom
+set_fftw_wisdom(wisdom1);
+timer();y=fft(s);t3=timer()
+t3/t2
+
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Voir aussi</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fft">fft</link>
+ </member>
+ <member>
+ <link linkend="get_fftw_wisdom">get_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="fftw_forget_wisdom">fftw_forget_wisdom</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/fftw/help/ja_JP/addchapter.sce b/modules/fftw/help/ja_JP/addchapter.sce
new file mode 100755
index 000000000..aaac3ad4f
--- /dev/null
+++ b/modules/fftw/help/ja_JP/addchapter.sce
@@ -0,0 +1,11 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+add_help_chapter("FFTW",SCI+"/modules/fftw/help/ja_JP",%T);
+
diff --git a/modules/fftw/help/ja_JP/fftw_flags.xml b/modules/fftw/help/ja_JP/fftw_flags.xml
new file mode 100755
index 000000000..b7d70a88e
--- /dev/null
+++ b/modules/fftw/help/ja_JP/fftw_flags.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="fftw_flags" xml:lang="ja">
+ <refnamediv>
+ <refname>fftw_flags</refname>
+ <refpurpose>fftプランナアルゴリズム選択用手法を設定する</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>呼び出し手順</title>
+ <synopsis>[a,[S]]=fftw_flags(flag)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>引数</title>
+ <variablelist>
+ <varlistentry>
+ <term>flag</term>
+ <listitem>
+ <para>
+ 文字列または整数. プランナアルゴリズムを指定.
+ 下記参照.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a</term>
+ <listitem>
+ <para>整数. プランナコード.下記参照.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>S</term>
+ <listitem>
+ <para>文字列行列. プランナ名.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>説明</title>
+ <para>
+ この関数により,fftwプランナアルゴリズムを定義する際に
+ 使用されるアルゴリズムを選択できます.
+ プランナはfftを計算する効率的な手法を定義する
+ 際に使用されます.
+ </para>
+ <para>
+ <warning>
+ 警告: デフォルト値 "FFTW_ESTIMATE" は通常かなり効率的な
+ プランです.
+ fft効率が実際に重要で
+ 類似のコールを数多く行う場合にのみ変更を検討ください.
+ </warning>
+ </para>
+ <para>以下のエントリを指定可能です :</para>
+ <itemizedlist>
+ <listitem>
+ <para>{FFTW_ESTIMATE} または 64.
+ これを指定すると, 他のアルゴリズムで使用される
+ 実際の観測量の代わりに,
+ (おそらく準最適の)プランを簡単に選択できる
+ 簡単な経験則が使用されます.
+ このフラグを指定すると,
+ 入力/出力配列はプランニングの間は上書きされません.
+ これがデフォルト値です.
+ </para>
+ </listitem>
+ <listitem>
+ <para>FFTW_MEASURE または 0.
+ 実際に計算した複数回のFFTとそれらの実行時間
+ の計測値から最適なプランをみつけるようFFTWに指示します.
+ 実行する計算機に依存した時間がかかります(通常は数秒).
+ </para>
+ </listitem>
+ <listitem>
+ <para>FFTW_PATIENT または 32.
+ "FFTW_MEASURE"と似ていますが,
+ より広範なアルゴリズムを検討し,しばしば
+ "より最適な"プランを出力します
+ (特に大規模な変換の場合).
+ しかし,プランニング時間は数倍かかります
+ (特に大規模な変換の場合).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>FFTW_EXHAUSTIVE または 8.
+ "FFTW_PATIENT"に似ていますが,
+ 高速と思われないようなものを多く含む
+ さらにより広範なアルゴリズムを検討します.
+ 最も最適なプランを出力しますが,
+ プランニング時間は著しく増加します.
+ </para>
+ </listitem>
+ </itemizedlist>
+
+
+ <para>注意 : FFTW_MEASURE/FFTW_PATIENT/FFTW_EXHAUSTIVE を使用する時,
+ fftwを2回コールする必要があります.
+ (最初のコールは初期化用, 2回目以降は計算用)
+ </para>
+ </refsection>
+ <refsection>
+ <title>例</title>
+ <programlisting role="example"><![CDATA[
+A=rand(1, 2^9 + 2^15);
+fftw_forget_wisdom();
+fftw_flags("FFTW_ESTIMATE");
+timer(); y=fft(A); timer()//最初のコールでプランを定義
+timer(); y=fft(A); timer() //同じコールを続ける
+fftw_flags("FFTW_MEASURE");
+fftw_forget_wisdom();
+timer(); y=fft(A); timer()//最初のコールでプランを定義, 5分ほどかかる
+timer(); y=fft(A); timer() //同じコールを続ける
+
+ ]]></programlisting>
+ </refsection>
+ <refsection>
+ <title>参考</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fft">fft</link>
+ </member>
+ <member>
+ <link linkend="set_fftw_wisdom">set_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="get_fftw_wisdom">get_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="fftw_forget_wisdom">fftw_forget_wisdom</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/fftw/help/ja_JP/fftw_forget_wisdom.xml b/modules/fftw/help/ja_JP/fftw_forget_wisdom.xml
new file mode 100755
index 000000000..2363ff5f2
--- /dev/null
+++ b/modules/fftw/help/ja_JP/fftw_forget_wisdom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="fftw_forget_wisdom">
+ <refnamediv>
+ <refname>fftw_forget_wisdom</refname>
+ <refpurpose>fftw wisdomをリセット</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>呼び出し手順</title>
+ <synopsis>fftw_forget_wisdom()</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>説明</title>
+ <para>
+ この関数は, カレントの fftw wisdom をリセットします.
+ </para>
+ </refsection>
+ <refsection>
+ <title>注意</title>
+ <para>
+ この関数は,
+ MKL intelライブラリを使用する
+ Scilabバージョンではなにもしません
+ (特にWindows用のScilab公式版).
+ </para>
+ </refsection>
+
+ <refsection>
+ <title>例</title>
+ <programlisting role="example"><![CDATA[
+//fftw wisdomを返す
+txt=get_fftw_wisdom();
+//fftw wisdomを設定
+set_fftw_wisdom(txt);
+//fftw wisdomをリセット
+fftw_forget_wisdom();
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>参照</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="get_fftw_wisdom">get_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="set_fftw_wisdom">set_fftw_wisdom</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/fftw/help/ja_JP/get_fftw_wisdom.xml b/modules/fftw/help/ja_JP/get_fftw_wisdom.xml
new file mode 100755
index 000000000..d1e443503
--- /dev/null
+++ b/modules/fftw/help/ja_JP/get_fftw_wisdom.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="get_fftw_wisdom">
+ <refnamediv>
+ <refname>get_fftw_wisdom</refname>
+ <refpurpose>fftw wisdomを返す</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>呼び出し手順</title>
+ <synopsis>[txt]=get_fftw_wisdom()</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>引数</title>
+ <variablelist>
+ <varlistentry>
+ <term>txt</term>
+ <listitem>
+ <para>fftw wisdomを含む文字列行列.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>注意</title>
+ <para>
+ この関数は,
+ MKL intelライブラリを使用する
+ Scilabバージョンでは実装されていません
+ (特にWindows用のScilab公式版).
+ </para>
+ </refsection>
+ <refsection>
+ <title>説明</title>
+ <para>
+ この関数は,文字列行列として fftw wisdom を返します.
+ <literal>get_fftw_wisdom</literal> および
+ <literal>set_fftw_wisdom</literal> を使用することで,
+ 同じデータの大きさと
+ <link linkend="fft">fft</link>関数に同じオプションにして
+ 多くのコールを行う場合に
+ fft効率を最適化できるようになります.
+ </para>
+ </refsection>
+ <refsection>
+ <title>例</title>
+ <programlisting role="example"><![CDATA[
+sample_rate=1000;
+t = 0:1/sample_rate:40;
+N=size(t,'*'); //サンプル数
+s=sin(2*%pi*50*t)+sin(2*%pi*70*t+%pi/4)+grand(1,N,'nor',0,1);
+fftw_forget_wisdom();
+timer();y=fft(s);t1=timer() //最初のコール
+timer();y=fft(s);t2=timer() //2番目のコールは保存したwisdomを使用
+t1/t2
+wisdom1=get_fftw_wisdom(); //カレントの wisdomを保存
+//異なるfftを実行
+A = zeros(256,256);
+A(5:24,13:17) = 1;
+X = fft(A);
+
+//s と同じ大きさで新規信号を作成
+s1=sin(2*%pi*10*t)+sin(2*%pi*7*t+%pi/4)+5*grand(1,N,'nor',0,1);
+//保存したwisdomを回復
+set_fftw_wisdom(wisdom1);
+timer();y=fft(s);t3=timer()
+t3/t2
+
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>参照</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="set_fftw_wisdom">set_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="fftw_forget_wisdom">fftw_forget_wisdom</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/fftw/help/ja_JP/set_fftw_wisdom.xml b/modules/fftw/help/ja_JP/set_fftw_wisdom.xml
new file mode 100755
index 000000000..f12800a1f
--- /dev/null
+++ b/modules/fftw/help/ja_JP/set_fftw_wisdom.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ja" xml:id="set_fftw_wisdom">
+ <refnamediv>
+ <refname>set_fftw_wisdom</refname>
+ <refpurpose>fftw wisdomを設定</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>呼び出し手順</title>
+ <synopsis>set_fftw_wisdom(txt)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>引数</title>
+ <variablelist>
+ <varlistentry>
+ <term>txt</term>
+ <listitem>
+ <para>fftw wisdomを含む文字列行列.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>注意</title>
+ <para>
+ この関数は,
+ MKL intelライブラリを使用する
+ Scilabバージョンでは実装されていません
+ (特にWindows用のScilab公式版).
+ </para>
+ </refsection>
+ <refsection>
+ <title>説明</title>
+ <para>
+ この関数は文字列行列により fftw wisdom を設定します.
+ <literal>get_fftw_wisdom</literal> および
+ <literal>set_fftw_wisdom</literal> を使用することで,
+ 同じデータの大きさと
+ <link linkend="fft">fft</link>関数に同じオプションにして
+ 多くのコールを行う場合に
+ fft効率を最適化できるようになります.
+ </para>
+ </refsection>
+ <refsection>
+ <title>例</title>
+ <programlisting role="example"><![CDATA[
+sample_rate=1000;
+t = 0:1/sample_rate:40;
+N=size(t,'*'); //サンプル数
+s=sin(2*%pi*50*t)+sin(2*%pi*70*t+%pi/4)+grand(1,N,'nor',0,1);
+fftw_forget_wisdom();
+timer();y=fft(s);t1=timer() //最初のコール
+timer();y=fft(s);t2=timer() //2番目のコールは保存したwisdomを使用
+t1/t2
+wisdom1=get_fftw_wisdom(); //カレントの wisdomを保存
+//異なるfftを実行
+A = zeros(256,256);
+A(5:24,13:17) = 1;
+X = fft(A);
+
+//s と同じ大きさで新規信号を作成
+s1=sin(2*%pi*10*t)+sin(2*%pi*7*t+%pi/4)+5*grand(1,N,'nor',0,1);
+//保存したwisdomを回復
+set_fftw_wisdom(wisdom1);
+timer();y=fft(s);t3=timer()
+t3/t2
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>参照</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="get_fftw_wisdom">get_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="fftw_forget_wisdom">fftw_forget_wisdom</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/fftw/help/pt_BR/addchapter.sce b/modules/fftw/help/pt_BR/addchapter.sce
new file mode 100755
index 000000000..9dfc8565a
--- /dev/null
+++ b/modules/fftw/help/pt_BR/addchapter.sce
@@ -0,0 +1,11 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+add_help_chapter("FFTW",SCI+"/modules/fftw/help/pt_BR",%T);
+
diff --git a/modules/fftw/help/ru_RU/addchapter.sce b/modules/fftw/help/ru_RU/addchapter.sce
new file mode 100755
index 000000000..95dee6f02
--- /dev/null
+++ b/modules/fftw/help/ru_RU/addchapter.sce
@@ -0,0 +1,11 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+add_help_chapter("FFTW",SCI+"/modules/fftw/help/ru_RU",%T);
+
diff --git a/modules/fftw/help/ru_RU/fftw.xml b/modules/fftw/help/ru_RU/fftw.xml
new file mode 100755
index 000000000..6213a6ee2
--- /dev/null
+++ b/modules/fftw/help/ru_RU/fftw.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<!-- This document was created with Syntext Serna Free. -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns3="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="fftw" xml:lang="ru">
+ <refnamediv>
+ <refname>fftw</refname>
+ <refpurpose>Быстрое преобразование Фурье на основе библиотеки fftw</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Последовательность вызова</title>
+ <synopsis>[y]=fftw(x)
+ [y]=fftw(x,sign)
+ [y]=fftw(x,sign,dim,incr)
+ [y]=fftw(x,sign,[dim1 dim2 ...dimN],[incr1 incr2 ...incrN])
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Аргументы</title>
+ <variablelist>
+ <varlistentry>
+ <term>y,x</term>
+ <listitem>
+ <para>matrix/вектор вещественных/комплексных данных. Входные/выходные данные, которые должны быть преобразованы.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>sign</term>
+ <listitem>
+ <para>Целое число. 1 или -1. Устанавливает прямое или обратное преобразование.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>dim</term>
+ <listitem>
+ <para>Целое число. Устанавливает размерность (длину) преобразования.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>incr</term>
+ <listitem>
+ <para>Целое число. Устанавливает шаг (интервал) преобразования.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Описание</title>
+ <para>Эта функция реализует прямое/обратное Дискретное Преобразование Фурье (ДПФ) с помощью библиотеки FFTW.</para>
+ <para>С помощью этой функции можно делать одномерное (вектор), двумерное, и многомерное преобразование.</para>
+ <para>
+ За подробной информацией о синтаксисе fftw обращайтесь к функции <link linkend="fft">fft</link> Scilab'а.
+ </para>
+ <para>
+ За подробной информацией о библиотеке FFTW обращайтесь на вэб-сайт FFTW : <ulink url="http://www.fftw.org">http://www.fftw.org</ulink>
+ </para>
+ <para>Примечание: Функция fftw автоматически сохраняет свои последние параметры в памяти для повторного использования.</para>
+ <para>Это значительно улучшает время вычисления при выполнении последовательных вызовов.</para>
+ </refsection>
+ <refsection>
+ <title>Примеры</title>
+ <programlisting role="example"><![CDATA[
+//простое одномерное прямое преобразование
+a = rand(50,1)+%i*rand(50,1);
+y = fftw(a); y = fftw(a,-1);
+
+//обратное преобразование
+b = fftw(y,1);
+
+//двумерное преобразование
+a = rand(512,512)+%i*rand(512,512);
+y = fftw(a);
+
+//многомерное преобразование -старая последовательность вызова-
+a = rand(120,1);
+y = a;
+dim=[5 6 4];
+incr=[1 5 30];
+for i=1:3
+ y = fftw(y,-1,dim(i),incr(i));
+end
+
+//многомерное преобразование -новая последовательность вызова-
+//Более эффективна, чем старая
+y = fftw(a,-1,[5 6 4],[1 5 30]);
+b = fftw(y,1,[5 6 4],[1 5 30]);
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Смотрите также</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fftw_flags">fftw_flags</link>
+ </member>
+ <member>
+ <link linkend="get_fftw_wisdom">get_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="set_fftw_wisdom">set_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="fftw_forget_wisdom">fftw_forget_wisdom</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Литература</title>
+ <para>
+ Matteo Frigo and Steven G. Johnson, "FFTW Documentation" <ulink url="http://www.fftw.org/#documentation">http://www.fftw.org/#documentation</ulink>
+ </para>
+ </refsection>
+</refentry>
diff --git a/modules/fftw/help/ru_RU/fftw_flags.xml b/modules/fftw/help/ru_RU/fftw_flags.xml
new file mode 100755
index 000000000..7ed268c28
--- /dev/null
+++ b/modules/fftw/help/ru_RU/fftw_flags.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="fftw_flags" xml:lang="en">
+ <refnamediv>
+ <refname>fftw_flags</refname>
+ <refpurpose>устанавливают метод вычисления быстрого преобразования Фурье функции fftw
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Последовательность вызова</title>
+ <synopsis>[a,[S]]=fftw_flags([x1;x2;...])</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Аргументы</title>
+ <variablelist>
+ <varlistentry>
+ <term>[x1;x2;...]</term>
+ <listitem>
+ <para>Матрица строк или целых чисел. Запись для переключения метода вычисления БПФ для fftw.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>a</term>
+ <listitem>
+ <para>Целое число. Даёт текущее значение флага функции fftw
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>S</term>
+ <listitem>
+ <para>Матрица строковых значений. Даёт строковое значение флага fftw.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Описание</title>
+ <para>
+ Эта функция позволяет изменять параметры <literal>беззнаковых
+ флагов
+ </literal>
+ функции
+ <literal>fftw_plan_guru_split_dft</literal>, которая используется в функции <link linkend="fftw">fftw</link>.
+ </para>
+ <para>Значение по умолчанию FFTW_ESTIMATE</para>
+ <para>Принимаемые элементы:</para>
+ <itemizedlist>
+ <listitem>
+ <para>FFTW_MEASURE или 0</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_DESTROY_INPUT или 1</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_UNALIGNED или 2</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_CONSERVE_MEMORY или 4</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_EXHAUSTIVE или 8</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_PRESERVE_INPUT или 16</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_PATIENT или 32</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_ESTIMATE или 64</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_ESTIMATE_PATIENT или 128</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_BELIEVE_PCOST иил 256</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_NO_DFT_R2HC или 512</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_NO_NONTHREADED или 1024</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_NO_BUFFERING или 2048</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_NO_INDIRECT_OP или 4096</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_ALLOW_LARGE_GENERIC или 8192</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_NO_RANK_SPLITS или 16384</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_NO_VRANK_SPLITS или 32768</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_NO_VRECURSE или 65536</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_NO_SIMD или 131072</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_NO_SLOW или 262144</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_NO_FIXED_RADIX_LARGE_N или 524288</para>
+ </listitem>
+ <listitem>
+ <para>FFTW_ALLOW_PRUNING или 1048576</para>
+ </listitem>
+ </itemizedlist>
+ <para>Rmk : при использовании FFTW_MEASURE/FFTW_PATIENT/FFTW_EXHAUSTIVE вы должны
+ дважды вызвать fftw. (Первый вызов для инициализации, второй и последующие вызовы для вычисления)
+ </para>
+ </refsection>
+ <refsection>
+ <title>Примеры</title>
+ <programlisting role="example"><![CDATA[
+//возврат целого значения флага
+fftw_flags()
+
+//смена флагов
+fftw_flags(["FFTW_MEASURE";"FFTW_CONSERVE_MEMORY"]);
+
+//смена флагов и распечатка текущего значения флагов fftw (как целочисленные значения, так и строки)
+[a,S]=fftw_flags("FFTW_PATIENT")
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Смотрите также</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fftw">fftw</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/fftw/help/ru_RU/fftw_forget_wisdom.xml b/modules/fftw/help/ru_RU/fftw_forget_wisdom.xml
new file mode 100755
index 000000000..48cc11d9f
--- /dev/null
+++ b/modules/fftw/help/ru_RU/fftw_forget_wisdom.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="fftw_forget_wisdom">
+ <refnamediv>
+ <refname>fftw_forget_wisdom</refname>
+ <refpurpose>Сброс опыта fftw</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Последовательность вызова</title>
+ <synopsis>fftw_forget_wisdom()</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Описание</title>
+ <para>
+ Эта функция сбрасывает текущий опыт fftw.
+ </para>
+ <para>
+ FFTW включает в себя метод для сохранения планов на диск и восстановления их. На самом деле то, что делает FFTW, это вообще-то больше, чем просто сохранение и загрузка планов. Этот механизм называется "опыт" (wisdom). Файлы опыта wisdom содержат информацию о том, как оптимально вычислить БПФ разных размеров.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Примеры</title>
+ <programlisting role="example"><![CDATA[
+//вернуть опыт fftw
+txt=get_fftw_wisdom();
+//установить опыт fftw
+set_fftw_wisdom(txt);
+//сбросить опыт fftw
+fftw_forget_wisdom();
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Смотрите также</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fftw">fftw</link>
+ </member>
+ <member>
+ <link linkend="get_fftw_wisdom">get_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="set_fftw_wisdom">set_fftw_wisdom</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/fftw/help/ru_RU/get_fftw_wisdom.xml b/modules/fftw/help/ru_RU/get_fftw_wisdom.xml
new file mode 100755
index 000000000..984003f86
--- /dev/null
+++ b/modules/fftw/help/ru_RU/get_fftw_wisdom.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="get_fftw_wisdom">
+ <refnamediv>
+ <refname>get_fftw_wisdom</refname>
+ <refpurpose>возврат опыта fftw</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Последовательность вызова</title>
+ <synopsis>[txt]=get_fftw_wisdom()</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Аргументы</title>
+ <variablelist>
+ <varlistentry>
+ <term>txt</term>
+ <listitem>
+ <para>Матрица строковых значений, содержащая опыт fftw.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Описание</title>
+ <para>
+ Эта функция возвращает опыт fftw в виде матрицы строковых значений.
+ </para>
+ <para>
+ FFTW включает в себя метод для сохранения планов на диск и восстановления их. На самом деле то, что делает FFTW, это вообще-то больше, чем просто сохранение и загрузка планов. Этот механизм называется "опыт" (wisdom). Файлы опыта wisdom содержат информацию о том, как оптимально вычислить БПФ разных размеров.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Примеры</title>
+ <programlisting role="example"><![CDATA[
+//вернуть опыт fftw
+txt=get_fftw_wisdom();
+//установить опыт fftw
+set_fftw_wisdom(txt);
+//сбросить опыт fftw
+fftw_forget_wisdom();
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Смотрите также</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fftw">fftw</link>
+ </member>
+ <member>
+ <link linkend="set_fftw_wisdom">set_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="fftw_forget_wisdom">fftw_forget_wisdom</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/fftw/help/ru_RU/set_fftw_wisdom.xml b/modules/fftw/help/ru_RU/set_fftw_wisdom.xml
new file mode 100755
index 000000000..8a33c155d
--- /dev/null
+++ b/modules/fftw/help/ru_RU/set_fftw_wisdom.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - INRIA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="en" xml:id="set_fftw_wisdom">
+ <refnamediv>
+ <refname>set_fftw_wisdom</refname>
+ <refpurpose>Устанавливает опыт fftw</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Последовательность вызова</title>
+ <synopsis>set_fftw_wisdom(txt)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Аргументы</title>
+ <variablelist>
+ <varlistentry>
+ <term>txt</term>
+ <listitem>
+ <para>Матрица строковых значений, содержащая опыт fftw.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Описание</title>
+ <para>
+ Эта функция устанавливает опыт fftw с помощью матрицы строковых значений.
+ </para>
+ <para>
+ FFTW включает в себя метод для сохранения планов на диск и восстановления их. На самом деле то, что делает FFTW, это вообще-то больше, чем просто сохранение и загрузка планов. Этот механизм называется "опыт" (wisdom). Файлы опыта wisdom содержат информацию о том, как оптимально вычислить БПФ разных размеров.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Примеры</title>
+ <programlisting role="example"><![CDATA[
+//вернуть опыт fftw
+txt=get_fftw_wisdom();
+//установить опыт fftw
+set_fftw_wisdom(txt);
+//сбросить опыт fftw
+fftw_forget_wisdom();
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Смотрите также </title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="fftw">fftw</link>
+ </member>
+ <member>
+ <link linkend="get_fftw_wisdom">get_fftw_wisdom</link>
+ </member>
+ <member>
+ <link linkend="fftw_forget_wisdom">fftw_forget_wisdom</link>
+ </member>
+ </simplelist>
+ </refsection>
+</refentry>
diff --git a/modules/fftw/includes/dynlib_fftw.h b/modules/fftw/includes/dynlib_fftw.h
new file mode 100755
index 000000000..d5a568382
--- /dev/null
+++ b/modules/fftw/includes/dynlib_fftw.h
@@ -0,0 +1,28 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) DIGITEO - 2009 - Allan CORNET
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+
+/*--------------------------------------------------------------------------*/
+#ifndef __DYNLIB_FTTW_H__
+#define __DYNLIB_FTTW_H__
+
+#ifdef _MSC_VER
+#ifdef FFTW_EXPORTS
+#define FTTW_SCILAB_IMPEXP __declspec(dllexport)
+#else
+#define FTTW_SCILAB_IMPEXP __declspec(dllimport)
+#endif
+#else
+#define FTTW_SCILAB_IMPEXP
+#endif
+
+#endif /* __DYNLIB_FTTW_H__ */
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/includes/gw_fftw.h b/modules/fftw/includes/gw_fftw.h
new file mode 100755
index 000000000..64d21e474
--- /dev/null
+++ b/modules/fftw/includes/gw_fftw.h
@@ -0,0 +1,31 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006 - INRIA - Allan CORNET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __GW_FFTW__
+#define __GW_FFTW__
+/*--------------------------------------------------------------------------*/
+#include "dynlib_fftw.h"
+/*--------------------------------------------------------------------------*/
+FTTW_SCILAB_IMPEXP int gw_fftw(void);
+FTTW_SCILAB_IMPEXP int sci_disposefftwlibrary(char *fname, unsigned long fname_len);
+FTTW_SCILAB_IMPEXP int sci_fftw(char *fname, unsigned long fname_len);
+FTTW_SCILAB_IMPEXP int sci_fftw_flags(char *fname, unsigned long fname_len);
+FTTW_SCILAB_IMPEXP int sci_fftw_forget_wisdom(char *fname, unsigned long fname_len);
+FTTW_SCILAB_IMPEXP int sci_fftwlibraryisloaded(char *fname, unsigned long fname_len);
+FTTW_SCILAB_IMPEXP int sci_get_fftw_wisdom(char *fname, unsigned long fname_len);
+FTTW_SCILAB_IMPEXP int sci_loadfftwlibrary(char *fname, unsigned long fname_len);
+FTTW_SCILAB_IMPEXP int sci_set_fftw_wisdom(char *fname, unsigned long fname_len);
+FTTW_SCILAB_IMPEXP int sci_dct(char *fname, unsigned long fname_len);
+FTTW_SCILAB_IMPEXP int sci_dst(char *fname, unsigned long fname_len);
+/*--------------------------------------------------------------------------*/
+#endif /* __GW_FFTW__ */
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/includes/with_fftw.h b/modules/fftw/includes/with_fftw.h
new file mode 100755
index 000000000..268f714fe
--- /dev/null
+++ b/modules/fftw/includes/with_fftw.h
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - INRIA - Allan CORNET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __WITH_FFTW_H__
+#define __WITH_FFTW_H__
+
+#include "machine.h" /* C2F */
+#include "BOOL.h"
+#include "dynlib_fftw.h"
+
+/**
+* check if it is with FFTW
+* @param rep 1 (WITH) or 0 (WITHOUT)
+* @return 0
+*/
+FTTW_SCILAB_IMPEXP int C2F(withfftw)(int *rep);
+
+/**
+* check if it is with FFTW
+* @return TRUE or FALSE
+*/
+FTTW_SCILAB_IMPEXP BOOL withfftw(void);
+
+#endif /* __WITH_FFTW_H__ */
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/libscifftw-algo.la b/modules/fftw/libscifftw-algo.la
new file mode 100755
index 000000000..0065c187a
--- /dev/null
+++ b/modules/fftw/libscifftw-algo.la
@@ -0,0 +1,41 @@
+# libscifftw-algo.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname=''
+
+# Names of this library.
+library_names=''
+
+# The name of the static archive.
+old_library='libscifftw-algo.a'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' -lpthread -ldl -lcurses -lm'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libscifftw-algo.
+current=
+age=
+revision=
+
+# Is this an already installed library?
+installed=no
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir=''
diff --git a/modules/fftw/libscifftw.la b/modules/fftw/libscifftw.la
new file mode 100755
index 000000000..76d4c7bb1
--- /dev/null
+++ b/modules/fftw/libscifftw.la
@@ -0,0 +1,41 @@
+# libscifftw.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname=''
+
+# Names of this library.
+library_names=''
+
+# The name of the static archive.
+old_library='libscifftw.a'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' -L/home/shashank/scilab-master_5.5.2/usr/lib -lfftw3 -lpthread -ldl -lcurses -lm'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libscifftw.
+current=
+age=
+revision=
+
+# Is this an already installed library?
+installed=no
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir=''
diff --git a/modules/fftw/license.txt b/modules/fftw/license.txt
new file mode 100755
index 000000000..d0147205b
--- /dev/null
+++ b/modules/fftw/license.txt
@@ -0,0 +1,47 @@
+Copyright:
+Copyright (c) 2008 - DIGITEO
+Copyright (c) 1989-2008 - INRIA
+
+License:
+This module must be used under the terms of the CeCILL.
+This module file is licensed as described in the file COPYING, which
+you should have received as part of this distribution. The terms
+are also available at
+http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+FFTW3:
+======
+
+Files:
+src/c/fftw3.h
+
+Copyright:
+2003, 2006 Matteo Frigo
+2003, 2006 Massachusetts Institute of Technology
+
+License:
+ * The following statement of license applies *only* to this header file,
+ * and *not* to the other files distributed with FFTW or derived therefrom:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/modules/fftw/locales/ca_ES.po b/modules/fftw/locales/ca_ES.po
new file mode 100755
index 000000000..a0ef78231
--- /dev/null
+++ b/modules/fftw/locales/ca_ES.po
@@ -0,0 +1,174 @@
+# Catalan translation for scilab
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2013-03-19 19:44+0000\n"
+"Last-Translator: Scilab.team <Unknown>\n"
+"Language-Team: Catalan <ca@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: ca\n"
+
+#, c-format
+msgid "FFTW Library %s not found.\n"
+msgstr "No s'ha trobat la llibreria FFTW %s.\n"
+
+msgid "FFTW Library not found.\n"
+msgstr "No s'ha trobat la llibreria FFTW.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Cannot allocate more memory.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %d or %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: Array of floating point numbers expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: L'argument d'entrada #%d és d'un tipus incorrecte.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Must be between %d and %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Positive integers expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be less than %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be in increasing "
+"order.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be greater than %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be less than %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be a divisor of %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be divisors of %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Creation of requested fftw plan failed.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: No more memory.\n"
+msgstr "%s: No hi ha més memòria.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A int32 expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: FFTW flag expected.\n"
+msgstr ""
+"%s: L'argument d'entrada #%d té un valor incorrecte: Ha de ser una marca "
+"FFTW.\n"
+
+#, c-format
+msgid "%s: MKL fftw library does not implement wisdom functions yet.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr ""
+"%s: L'argument d'entrada #%d és d'un tipus incorrecte: Ha de ser una cadena "
+"de caràcters.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: a valid wisdom expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An integer or a floating point number "
+"expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d.\n"
+msgstr "%s: L'argument d'entrada #%d té una mida incorrecta.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An array of floating point or integer "
+"numbers expected.\n"
+msgstr ""
+
+msgid "Scilab FFTW module not installed.\n"
+msgstr "El mòdul FFTW de Scilab no està instal·lat.\n"
+
+msgid "You choose to install scilab with fftw module."
+msgstr "Heu triat instal·lar Scilab amb el mòdul fftw."
+
+msgid "This module requires : "
+msgstr "Aquest mòdul requereix: "
+
+msgid ""
+"Scilab will use standard fft by default until you install this library."
+msgstr ""
+"Scilab farà servir per defecte el fft estàndard fins que instal·leu aquesta "
+"llibreria."
+
+msgid "See help fftw for more information."
+msgstr "Veieu l'ajuda del fftw per a més informació."
diff --git a/modules/fftw/locales/cs_CZ.po b/modules/fftw/locales/cs_CZ.po
new file mode 100755
index 000000000..d51ce0d88
--- /dev/null
+++ b/modules/fftw/locales/cs_CZ.po
@@ -0,0 +1,182 @@
+# Czech translation for scilab
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2013-04-19 21:59+0000\n"
+"Last-Translator: Zbyněk Schwarz <Unknown>\n"
+"Language-Team: Czech <cs@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+
+#, c-format
+msgid "FFTW Library %s not found.\n"
+msgstr "Knihovna FFTW %s nenalezena.\n"
+
+msgid "FFTW Library not found.\n"
+msgstr "Knihovna FFTW nenalezena.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s: Nelze přečíst vstupní argument #%d.\n"
+
+#, c-format
+msgid "%s: Cannot allocate more memory.\n"
+msgstr "%s: Nelze přidělit více paměti.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %d or %d expected.\n"
+msgstr "%s: Špatná hodnota vstupního argumentu #%d: Očekáváno %d nebo %d.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr "%s: Špatná hodnota vstupního argumentu #%d: Musí být v sadě {%s}.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: Array of floating point numbers expected.\n"
+msgstr "%s: Špatný typ argumentu #%d: Očekáváno pole desetinných čísel.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: Špatný typ vstupního argumentu #%d.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Must be between %d and %d.\n"
+msgstr ""
+"%s: Špatná velikost vstupního argumentu #%d: Musí být mezi %d a %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Positive integers expected.\n"
+msgstr ""
+"%s: Špatné hodnoty vstupního argumentu #%d: Očekávána kladná celá čísla.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be less than %d.\n"
+msgstr ""
+"%s: Špatné hodnoty vstupního argumentu #%d: Prvky musí být menší než %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be in increasing "
+"order.\n"
+msgstr ""
+"%s: Špatné hodnoty vstupního argumentu #%d: Prvky musí být ve vzestupném "
+"pořadí.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be greater than %d.\n"
+msgstr ""
+"%s: Špatné hodnoty vstupního argumentu #%d: Prvky musí být větší než %d.\n"
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be less than %d.\n"
+msgstr "%s: Špatné hodnoty vstupního argumentu #%d: Musí být menší než %d.\n"
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be a divisor of %d.\n"
+msgstr "%s: Špatné hodnoty vstupního argumentu #%d: Musí být dělitelem %d.\n"
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+"%s: Nekompatibilní vstupní argumenty #%d a #%d: Očekávány stejné velikosti.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be divisors of %d.\n"
+msgstr ""
+"%s: Špatné hodnoty vstupního argumentu #%d: Prvky musí být dělitelem %d.\n"
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d.\n"
+msgstr "%s: Nekompatibilní vstupní argumenty #%d a #%d.\n"
+
+#, c-format
+msgid "%s: Creation of requested fftw plan failed.\n"
+msgstr "%s: Vytvoření požadovaného plánu fftw selhalo.\n"
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr "%s: Chyba při přidělování paměti.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: Očekáváno '%s', nebo '%s'.\n"
+
+#, c-format
+msgid "%s: No more memory.\n"
+msgstr "%s: Není víc paměti.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A int32 expected.\n"
+msgstr ""
+"%s: Špatný typ vstupního argumentu #%d: Očekáváno celé číslo s velikostí 32 "
+"bitů.\n"
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: FFTW flag expected.\n"
+msgstr ""
+"%s: Špatné hodnoty pro vstupní argument #%d: Očekáván příznak FFTW.\n"
+
+#, c-format
+msgid "%s: MKL fftw library does not implement wisdom functions yet.\n"
+msgstr "%s: MKL knihovna fftw nemá zatím zavedeny funkce wisdom.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr "%s: Špatný typ vstupního argumentu #%d: Očekáván řetězec.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: a valid wisdom expected.\n"
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: Očekávána platná wisdom.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr "%s: Špatná velikost vstupního argumentu #%d: Očekáván skalár.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An integer or a floating point number "
+"expected.\n"
+msgstr "%s: Špatný typ argumentu #%d: Očekáváno celé nebo desetinné číslo.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d.\n"
+msgstr "%s: Špatná velikost vstupního argumentu #%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An array of floating point or integer "
+"numbers expected.\n"
+msgstr ""
+"%s: Špatný typ argumentu #%d: Očekáváno pole celých nebo desetinných čísel.\n"
+
+msgid "Scilab FFTW module not installed.\n"
+msgstr "Scilab modul FFTW není nainstalován.\n"
+
+msgid "You choose to install scilab with fftw module."
+msgstr "Zvolili jste instalovat scilab s modulem fftw."
+
+msgid "This module requires : "
+msgstr "Tento modul vyžaduje : "
+
+msgid ""
+"Scilab will use standard fft by default until you install this library."
+msgstr ""
+"Scilab bude používat standardní fft, dokud nenainstalujete tuto knihovnu."
+
+msgid "See help fftw for more information."
+msgstr "Viz nápověda fftw pro více informací."
diff --git a/modules/fftw/locales/de_DE.po b/modules/fftw/locales/de_DE.po
new file mode 100755
index 000000000..bb52154c3
--- /dev/null
+++ b/modules/fftw/locales/de_DE.po
@@ -0,0 +1,171 @@
+# German translation for scilab
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2010-02-22 07:47+0000\n"
+"Last-Translator: Keruskerfuerst <armin_mohring@web.de>\n"
+"Language-Team: German <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: de\n"
+
+#, c-format
+msgid "FFTW Library %s not found.\n"
+msgstr "FFTW Bibliothek %s nicht gefunden.\n"
+
+msgid "FFTW Library not found.\n"
+msgstr "FFTW Bibliothek nicht gefunden.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Cannot allocate more memory.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %d or %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: Array of floating point numbers expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: falscher Typ für Eingangsargument #%d.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Must be between %d and %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Positive integers expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be less than %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be in increasing "
+"order.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be greater than %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be less than %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be a divisor of %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be divisors of %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Creation of requested fftw plan failed.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: No more memory.\n"
+msgstr "%s: kein weiterer Speicher verfügbar\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A int32 expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: FFTW flag expected.\n"
+msgstr ""
+"%s: falscher Wert für Eingangsargument #%d: FFTW Erkennungszeichen "
+"erwartet.\n"
+
+#, c-format
+msgid "%s: MKL fftw library does not implement wisdom functions yet.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr ""
+"%s: falscher Typ für Eingangsargument '%d: eine Zeichenkette erwartet.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: a valid wisdom expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An integer or a floating point number "
+"expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d.\n"
+msgstr "%s: falsche Größe für Eingangsargument #%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An array of floating point or integer "
+"numbers expected.\n"
+msgstr ""
+
+msgid "Scilab FFTW module not installed.\n"
+msgstr "Scilab FFTW Modul nicht installiert.\n"
+
+msgid "You choose to install scilab with fftw module."
+msgstr ""
+
+msgid "This module requires : "
+msgstr ""
+
+msgid ""
+"Scilab will use standard fft by default until you install this library."
+msgstr ""
+
+msgid "See help fftw for more information."
+msgstr ""
diff --git a/modules/fftw/locales/es_ES.po b/modules/fftw/locales/es_ES.po
new file mode 100755
index 000000000..6ab03dcf7
--- /dev/null
+++ b/modules/fftw/locales/es_ES.po
@@ -0,0 +1,171 @@
+# Spanish translation for scilab
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2013-03-19 19:46+0000\n"
+"Last-Translator: Scilab.team <Unknown>\n"
+"Language-Team: Spanish <es@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: es\n"
+
+#, c-format
+msgid "FFTW Library %s not found.\n"
+msgstr "No se encontró la biblioteca FFTW %s.\n"
+
+msgid "FFTW Library not found.\n"
+msgstr "No se encontró la biblioteca FFTW.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Cannot allocate more memory.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %d or %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: Array of floating point numbers expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: Tipo incorrecto del argumento de entrada #%d.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Must be between %d and %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Positive integers expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be less than %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be in increasing "
+"order.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be greater than %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be less than %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be a divisor of %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be divisors of %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Creation of requested fftw plan failed.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: No more memory.\n"
+msgstr "%s: No hay más memoria.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A int32 expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: FFTW flag expected.\n"
+msgstr ""
+"%s: Valores incorrectos del argumento de entrada #%d: Se esperaba una "
+"bandera FFTW.\n"
+
+#, c-format
+msgid "%s: MKL fftw library does not implement wisdom functions yet.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr ""
+"%s: Tipo incorrecto del argumento de entrada #%d: Se esperaba un string.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: a valid wisdom expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An integer or a floating point number "
+"expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d.\n"
+msgstr "%s: Tamaño incorrecto para el argumento de entrada #%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An array of floating point or integer "
+"numbers expected.\n"
+msgstr ""
+
+msgid "Scilab FFTW module not installed.\n"
+msgstr "El módulo FFTW de Scilab no está instalado.\n"
+
+msgid "You choose to install scilab with fftw module."
+msgstr "Escogió instalar Scilab con el módulo fftw"
+
+msgid "This module requires : "
+msgstr "Este módulo requiere: "
+
+msgid ""
+"Scilab will use standard fft by default until you install this library."
+msgstr "Scilab utilizará la fft estándar hasta que instale esta biblioteca."
+
+msgid "See help fftw for more information."
+msgstr "Vea la ayuda de fftw para mas información."
diff --git a/modules/fftw/locales/fftw.pot b/modules/fftw/locales/fftw.pot
new file mode 100755
index 000000000..f38413c11
--- /dev/null
+++ b/modules/fftw/locales/fftw.pot
@@ -0,0 +1,362 @@
+# Localization of the module fftw
+# Please see in SCI/tools/localization for localization management
+# Copyright (C) 2007-2008 - INRIA
+# Copyright (C) 2008-2011 - DIGITEO
+# Copyright (C) 2012-2014 - Scilab-Enterprises
+# This file is distributed under the same license as the Scilab package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"Last-Translator: Vincent COUVERT <vincent.couvert@scilab-enterprises.com>\n"
+"Language-Team: Scilab Localization <localization@lists.scilab.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Revision-Date: 2015-03-27 13:54+0100\n"
+
+# File: sci_gateway/c/gw_fftw.c, line: 49
+#, c-format
+msgid "FFTW Library %s not found.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/gw_fftw.c, line: 53
+msgid "FFTW Library not found.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dct.c, line: 88
+# File: sci_gateway/c/sci_dct.c, line: 96
+# File: sci_gateway/c/sci_dct.c, line: 121
+# File: sci_gateway/c/sci_dst.c, line: 88
+# File: sci_gateway/c/sci_dst.c, line: 96
+# File: sci_gateway/c/sci_dst.c, line: 120
+# File: sci_gateway/c/sci_fftw.c, line: 97
+# File: sci_gateway/c/sci_fftw.c, line: 105
+# File: sci_gateway/c/sci_fftw.c, line: 130
+# File: sci_gateway/c/sci_fftw_flags.c, line: 173
+# File: sci_gateway/c/sci_fftw_flags.c, line: 186
+# File: src/c/sci_data_utilities.c, line: 231
+# File: src/c/sci_data_utilities.c, line: 239
+# File: src/c/sci_data_utilities.c, line: 259
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dct.c, line: 135
+# File: sci_gateway/c/sci_dct.c, line: 293
+# File: sci_gateway/c/sci_dct.c, line: 438
+# File: sci_gateway/c/sci_dct.c, line: 497
+# File: sci_gateway/c/sci_dct.c, line: 753
+# File: sci_gateway/c/sci_dct.c, line: 764
+# File: sci_gateway/c/sci_dct.c, line: 833
+# File: sci_gateway/c/sci_dct.c, line: 897
+# File: sci_gateway/c/sci_dct.c, line: 1031
+# File: sci_gateway/c/sci_dct.c, line: 1039
+# File: sci_gateway/c/sci_dct.c, line: 1086
+# File: sci_gateway/c/sci_dct.c, line: 1119
+# File: sci_gateway/c/sci_dct.c, line: 1136
+# File: sci_gateway/c/sci_dct.c, line: 1150
+# File: sci_gateway/c/sci_dct.c, line: 1200
+# File: sci_gateway/c/sci_dst.c, line: 134
+# File: sci_gateway/c/sci_dst.c, line: 291
+# File: sci_gateway/c/sci_dst.c, line: 431
+# File: sci_gateway/c/sci_dst.c, line: 489
+# File: sci_gateway/c/sci_dst.c, line: 743
+# File: sci_gateway/c/sci_dst.c, line: 754
+# File: sci_gateway/c/sci_dst.c, line: 823
+# File: sci_gateway/c/sci_dst.c, line: 887
+# File: sci_gateway/c/sci_dst.c, line: 1023
+# File: sci_gateway/c/sci_dst.c, line: 1072
+# File: sci_gateway/c/sci_dst.c, line: 1106
+# File: sci_gateway/c/sci_dst.c, line: 1123
+# File: sci_gateway/c/sci_dst.c, line: 1137
+# File: sci_gateway/c/sci_dst.c, line: 1197
+# File: sci_gateway/c/sci_fftw.c, line: 255
+# File: sci_gateway/c/sci_fftw.c, line: 395
+# File: sci_gateway/c/sci_fftw.c, line: 455
+# File: sci_gateway/c/sci_fftw.c, line: 709
+# File: sci_gateway/c/sci_fftw.c, line: 720
+# File: sci_gateway/c/sci_fftw.c, line: 790
+# File: sci_gateway/c/sci_fftw.c, line: 844
+# File: sci_gateway/c/sci_fftw.c, line: 975
+# File: sci_gateway/c/sci_fftw.c, line: 1003
+# File: sci_gateway/c/sci_fftw.c, line: 1014
+# File: sci_gateway/c/sci_fftw.c, line: 1032
+# File: sci_gateway/c/sci_fftw.c, line: 1060
+# File: sci_gateway/c/sci_fftw.c, line: 1073
+# File: sci_gateway/c/sci_fftw.c, line: 1259
+# File: sci_gateway/c/sci_fftw.c, line: 1271
+# File: sci_gateway/c/sci_fftw.c, line: 1279
+# File: sci_gateway/c/sci_fftw.c, line: 1297
+# File: sci_gateway/c/sci_fftw.c, line: 1305
+# File: sci_gateway/c/sci_set_fftw_wisdom.c, line: 118
+# File: src/c/sci_data_utilities.c, line: 354
+#, c-format
+msgid "%s: Cannot allocate more memory.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dct.c, line: 159
+# File: sci_gateway/c/sci_dst.c, line: 156
+# File: sci_gateway/c/sci_fftw.c, line: 184
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %d or %d expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dct.c, line: 186
+# File: sci_gateway/c/sci_dct.c, line: 213
+# File: sci_gateway/c/sci_dst.c, line: 183
+# File: sci_gateway/c/sci_dst.c, line: 210
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dct.c, line: 230
+# File: sci_gateway/c/sci_dst.c, line: 228
+# File: sci_gateway/c/sci_fftw.c, line: 193
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: Array of floating point numbers expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dct.c, line: 382
+# File: sci_gateway/c/sci_dct.c, line: 629
+# File: sci_gateway/c/sci_dst.c, line: 380
+# File: sci_gateway/c/sci_dst.c, line: 619
+# File: sci_gateway/c/sci_fftw.c, line: 344
+# File: sci_gateway/c/sci_fftw.c, line: 585
+# File: sci_gateway/c/sci_fftw_flags.c, line: 261
+# File: src/c/sci_data_utilities.c, line: 337
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dct.c, line: 399
+# File: sci_gateway/c/sci_dst.c, line: 396
+# File: sci_gateway/c/sci_fftw.c, line: 360
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Must be between %d and %d.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dct.c, line: 410
+# File: sci_gateway/c/sci_dct.c, line: 717
+# File: sci_gateway/c/sci_dst.c, line: 406
+# File: sci_gateway/c/sci_dst.c, line: 707
+# File: sci_gateway/c/sci_fftw.c, line: 370
+# File: sci_gateway/c/sci_fftw.c, line: 673
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Positive integers expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dct.c, line: 418
+# File: sci_gateway/c/sci_dst.c, line: 413
+# File: sci_gateway/c/sci_fftw.c, line: 377
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be less than %d.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dct.c, line: 426
+# File: sci_gateway/c/sci_dct.c, line: 741
+# File: sci_gateway/c/sci_dst.c, line: 420
+# File: sci_gateway/c/sci_dst.c, line: 731
+# File: sci_gateway/c/sci_fftw.c, line: 384
+# File: sci_gateway/c/sci_fftw.c, line: 697
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be in increasing "
+"order.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dct.c, line: 656
+# File: sci_gateway/c/sci_dst.c, line: 646
+# File: sci_gateway/c/sci_fftw.c, line: 612
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be greater than %d.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dct.c, line: 669
+# File: sci_gateway/c/sci_dst.c, line: 659
+# File: sci_gateway/c/sci_fftw.c, line: 625
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be less than %d.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dct.c, line: 680
+# File: sci_gateway/c/sci_dst.c, line: 670
+# File: sci_gateway/c/sci_fftw.c, line: 636
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be a divisor of %d.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dct.c, line: 704
+# File: sci_gateway/c/sci_dst.c, line: 694
+# File: sci_gateway/c/sci_fftw.c, line: 660
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dct.c, line: 730
+# File: sci_gateway/c/sci_dst.c, line: 720
+# File: sci_gateway/c/sci_fftw.c, line: 686
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be divisors of %d.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dct.c, line: 792
+# File: sci_gateway/c/sci_dct.c, line: 814
+# File: sci_gateway/c/sci_dst.c, line: 782
+# File: sci_gateway/c/sci_dst.c, line: 804
+# File: sci_gateway/c/sci_fftw.c, line: 748
+# File: sci_gateway/c/sci_fftw.c, line: 770
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dct.c, line: 1091
+# File: sci_gateway/c/sci_dct.c, line: 1126
+# File: sci_gateway/c/sci_dst.c, line: 1077
+# File: sci_gateway/c/sci_dst.c, line: 1113
+# File: sci_gateway/c/sci_fftw.c, line: 1159
+# File: sci_gateway/c/sci_fftw.c, line: 1190
+#, c-format
+msgid "%s: Creation of requested fftw plan failed.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_disposefftwlibrary.c, line: 38
+# File: sci_gateway/c/sci_fftwlibraryisloaded.c, line: 35
+# File: sci_gateway/c/sci_loadfftwlibrary.c, line: 69
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_fftw.c, line: 150
+# File: sci_gateway/c/sci_fftw.c, line: 161
+#, c-format
+msgid "%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_fftw.c, line: 1154
+# File: sci_gateway/c/sci_fftw.c, line: 1183
+# File: sci_gateway/c/sci_fftw.c, line: 1200
+# File: sci_gateway/c/sci_fftw.c, line: 1214
+# File: sci_gateway/c/sci_fftw_flags.c, line: 274
+# File: sci_gateway/c/sci_fftw_flags.c, line: 286
+# File: sci_gateway/c/sci_fftw_flags.c, line: 293
+# File: sci_gateway/c/sci_fftw_flags.c, line: 316
+# File: sci_gateway/c/sci_fftw_flags.c, line: 324
+# File: sci_gateway/c/sci_get_fftw_wisdom.c, line: 74
+# File: sci_gateway/c/sci_get_fftw_wisdom.c, line: 95
+# File: sci_gateway/c/sci_get_fftw_wisdom.c, line: 122
+# File: sci_gateway/c/sci_get_fftw_wisdom.c, line: 141
+#, c-format
+msgid "%s: No more memory.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_fftw_flags.c, line: 156
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A int32 expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_fftw_flags.c, line: 242
+#, c-format
+msgid "%s: Wrong values for input argument #%d: FFTW flag expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_get_fftw_wisdom.c, line: 45
+# File: sci_gateway/c/sci_set_fftw_wisdom.c, line: 50
+#, c-format
+msgid "%s: MKL fftw library does not implement wisdom functions yet.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_loadfftwlibrary.c, line: 42
+# File: sci_gateway/c/sci_set_fftw_wisdom.c, line: 66
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_set_fftw_wisdom.c, line: 137
+#, c-format
+msgid "%s: Wrong value for input argument #%d: a valid wisdom expected.\n"
+msgstr ""
+
+#
+# File: src/c/sci_data_utilities.c, line: 245
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+
+#
+# File: src/c/sci_data_utilities.c, line: 300
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An integer or a floating point number "
+"expected.\n"
+msgstr ""
+
+#
+# File: src/c/sci_data_utilities.c, line: 348
+#, c-format
+msgid "%s: Wrong size for input argument #%d.\n"
+msgstr ""
+
+#
+# File: src/c/sci_data_utilities.c, line: 420
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An array of floating point or integer "
+"numbers expected.\n"
+msgstr ""
+
+#
+# File: src/nofftw/nofftw.c, line: 21
+msgid "Scilab FFTW module not installed.\n"
+msgstr ""
+
+# File: etc/fftw.start, line: 34
+msgid "You choose to install scilab with fftw module."
+msgstr ""
+
+#
+# File: etc/fftw.start, line: 35
+msgid "This module requires : "
+msgstr ""
+
+#
+# File: etc/fftw.start, line: 36
+msgid "Scilab will use standard fft by default until you install this library."
+msgstr ""
+
+#
+# File: etc/fftw.start, line: 37
+msgid "See help fftw for more information."
+msgstr ""
diff --git a/modules/fftw/locales/fr_FR.po b/modules/fftw/locales/fr_FR.po
new file mode 100755
index 000000000..476681093
--- /dev/null
+++ b/modules/fftw/locales/fr_FR.po
@@ -0,0 +1,206 @@
+# French translation for scilab
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2013-05-06 13:12+0000\n"
+"Last-Translator: Julie PAUL <Unknown>\n"
+"Language-Team: French <fr@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: fr\n"
+
+#, c-format
+msgid "FFTW Library %s not found.\n"
+msgstr "Impossible de trouver la bibliothèque FFTW %s.\n"
+
+msgid "FFTW Library not found.\n"
+msgstr "Impossible de trouver la bibliothèque FFTW.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s : Impossible de lire l'argument d'entrée n°%d.\n"
+
+#, c-format
+msgid "%s: Cannot allocate more memory.\n"
+msgstr "%s : Impossible d'allouer plus de mémoire.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %d or %d expected.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : %d ou %d attendu.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Doit être dans l'ensemble "
+"{%s}.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: Array of floating point numbers expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Un tableau de nombres à "
+"virgule flottante attendu.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s : Type erroné de l'argument d'entrée n°%d.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Must be between %d and %d.\n"
+msgstr ""
+"%s : Dimension erronée de l'argument d'entrée n°%d : Doit être entre %d et "
+"%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Positive integers expected.\n"
+msgstr ""
+"%s : Valeurs erronées de l'argument d'entrée n°%d : Des entiers positifs "
+"attendus.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be less than %d.\n"
+msgstr ""
+"%s : Valeurs erronées de l'argument d'entrée n°%d : Les éléments doivent "
+"être plus petits que %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be in increasing "
+"order.\n"
+msgstr ""
+"%s : Valeurs erronées de l'argument d'entrée n°%d : Les éléments doivent "
+"être en ordre croissant.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be greater than %d.\n"
+msgstr ""
+"%s : Valeurs erronées de l'argument d'entrée n°%d : Les éléments doivent "
+"être plus grands que %d.\n"
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be less than %d.\n"
+msgstr ""
+"%s : Valeurs erronées de l'argument d'entrée n°%d : Doivent être plus "
+"petites que %d.\n"
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be a divisor of %d.\n"
+msgstr ""
+"%s : Valeurs erronées de l'argument d'entrée n°%d : Doivent être un diviseur "
+"de %d.\n"
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+"%s : Arguments d'entrée n°%d et n°%d incompatibles : Mêmes dimensions "
+"attendues.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be divisors of %d.\n"
+msgstr ""
+"%s : Valeurs erronées de l'argument d'entrée n°%d : Les éléments doivent "
+"être des diviseurs de %d.\n"
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d.\n"
+msgstr "%s : Arguments d'entrée n°%d et n°%d incompatibles.\n"
+
+#, c-format
+msgid "%s: Creation of requested fftw plan failed.\n"
+msgstr "%s : Échec de la création du plan fftw demandé.\n"
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr "%s : Erreur d'allocation mémoire.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : '%s' ou '%s' attendu.\n"
+
+#, c-format
+msgid "%s: No more memory.\n"
+msgstr "%s : Plus de mémoire disponible.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A int32 expected.\n"
+msgstr "%s : Type erroné de l'argument d'entrée n°%d : Un int32 attendu.\n"
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: FFTW flag expected.\n"
+msgstr ""
+"%s : Valeurs erronées de l'argument d'entrée n°%d : Des drapeaux FFTW "
+"attendus.\n"
+
+#, c-format
+msgid "%s: MKL fftw library does not implement wisdom functions yet.\n"
+msgstr ""
+"%s : La fftw de la bibliothèque MKL ne met pas encore en oeuvre de fonctions "
+"wisdom.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Une chaîne de caractères "
+"attendue.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: a valid wisdom expected.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Un wisdom valide attendu.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+"%s : Dimension erronée de l'argument d'entrée n°%d : Un scalaire attendu.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An integer or a floating point number "
+"expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Un entier ou un nombre à "
+"virgule flottante attendu.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d.\n"
+msgstr "%s : Dimension erronée de l'argument d'entrée n°%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An array of floating point or integer "
+"numbers expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Un tableau de nombres à "
+"virgule flottante ou d'entiers attendu.\n"
+
+msgid "Scilab FFTW module not installed.\n"
+msgstr "Le module Scilab FFTW n'est pas installé.\n"
+
+msgid "You choose to install scilab with fftw module."
+msgstr "Vous avez choisi d'installer Scilab avec le module fftw."
+
+msgid "This module requires : "
+msgstr "Ce module nécessite : "
+
+msgid ""
+"Scilab will use standard fft by default until you install this library."
+msgstr ""
+"Scilab utilisera par défaut la fft standard jusqu'à l'installation de cette "
+"bibliothèque."
+
+msgid "See help fftw for more information."
+msgstr "Consultez l'aide de fftw pour plus d'informations."
diff --git a/modules/fftw/locales/it_IT.po b/modules/fftw/locales/it_IT.po
new file mode 100755
index 000000000..cf261d0b4
--- /dev/null
+++ b/modules/fftw/locales/it_IT.po
@@ -0,0 +1,181 @@
+# Italian translation for scilab
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2013-03-19 19:53+0000\n"
+"Last-Translator: Carml <mighty.carml@gmail.com>\n"
+"Language-Team: Italian <it@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: it\n"
+
+#, c-format
+msgid "FFTW Library %s not found.\n"
+msgstr "La libreria di FFTW %s non è stata trovata.\n"
+
+msgid "FFTW Library not found.\n"
+msgstr "La libreria FFTW non è stata trovata.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s: Impossibile leggere l'argomento in ingresso #%d.\n"
+
+#, c-format
+msgid "%s: Cannot allocate more memory.\n"
+msgstr "%s: Non è possibile allocare altra memoria.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %d or %d expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: era atteso %d o %d.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: deve essere "
+"nell'insieme {%s}.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: Array of floating point numbers expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: L'argomento in ingresso #%d è di tipo sbagliato.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Must be between %d and %d.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha una dimensione sbagliata: deve essere tra "
+"%d e %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Positive integers expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be less than %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be in increasing "
+"order.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha dei valori sbagliati: gli elementi devono "
+"essere in ordine crescente.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be greater than %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be less than %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be a divisor of %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be divisors of %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Creation of requested fftw plan failed.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: No more memory.\n"
+msgstr "%s: Memoria esaurita.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A int32 expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: FFTW flag expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha dei valori sbagliati: era atteso il flag "
+"FFTW.\n"
+
+#, c-format
+msgid "%s: MKL fftw library does not implement wisdom functions yet.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era attesa una "
+"stringa.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: a valid wisdom expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An integer or a floating point number "
+"expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d.\n"
+msgstr "%s: L'argomento in ingresso #%d ha una dimensione sbagliata.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An array of floating point or integer "
+"numbers expected.\n"
+msgstr ""
+
+msgid "Scilab FFTW module not installed.\n"
+msgstr "Il modulo FFTW di Scilab non è installato\n"
+
+msgid "You choose to install scilab with fftw module."
+msgstr "Si è scelto di installare Scilab con il modulo fftw."
+
+msgid "This module requires : "
+msgstr "Questo modulo richiede : "
+
+msgid ""
+"Scilab will use standard fft by default until you install this library."
+msgstr ""
+"Scilab userà in modo predefinito la fft standard a meno che non si installi "
+"questa libreria."
+
+msgid "See help fftw for more information."
+msgstr "Vedere l'aiuto di fftw per maggiori informazioni."
diff --git a/modules/fftw/locales/ja_JP.po b/modules/fftw/locales/ja_JP.po
new file mode 100755
index 000000000..30ccd2573
--- /dev/null
+++ b/modules/fftw/locales/ja_JP.po
@@ -0,0 +1,175 @@
+# Japanese translation for scilab
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2013-04-20 07:35+0000\n"
+"Last-Translator: Rui Hirokawa <Unknown>\n"
+"Language-Team: Japanese <z-saito@guitar.ocn.ne.jp>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"X-Poedit-Country: Japan\n"
+"Language: ja\n"
+"X-Poedit-Language: Japanese\n"
+
+# File: sci_gateway/c/gw_fftw.c, line: 45
+#, c-format
+msgid "FFTW Library %s not found.\n"
+msgstr "FFTW ライブラリ %s が見つかりません。\n"
+
+#
+# File: sci_gateway/c/gw_fftw.c, line: 49
+msgid "FFTW Library not found.\n"
+msgstr "FFTW ライブラリ が見つかりません。\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s: 入力引数 #%d を読み込めません.\n"
+
+#, c-format
+msgid "%s: Cannot allocate more memory.\n"
+msgstr "%s: メモリを確保できません.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %d or %d expected.\n"
+msgstr "%s: 入力引数 #%d の値が間違っています: %d または %d を指定してください.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr "%s: 入力引数 #%d の値が正しくありません: 集合 {%s} に含まれる値を指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: Array of floating point numbers expected.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: 浮動小数点数の配列を指定してください.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Must be between %d and %d.\n"
+msgstr "%s: 入力引数 #%d の大きさが間違っています: %d および %d の間としてください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Positive integers expected.\n"
+msgstr "%s: 入力引数 #%d の値が間違っています: 正の整数を指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be less than %d.\n"
+msgstr "%s: 入力引数 #%d の値が間違っています: 要素は %d 未満としてください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be in increasing "
+"order.\n"
+msgstr "%s: 入力引数 #%d の値が正しくありません: 要素は昇順としてください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be greater than %d.\n"
+msgstr "%s: 入力引数 #%d の値が間違っています: 要素は %d より大きな値としてください.\n"
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be less than %d.\n"
+msgstr "%s: 入力引数 #%d の値が間違っています: %d 未満としてください.\n"
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be a divisor of %d.\n"
+msgstr "%s: 入力引数 #%d の値が間違っています: %d の約数を指定してください.\n"
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr "%s: 入力引数 #%d と #%d で互換性がありません: 大きさを同じにしてください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be divisors of %d.\n"
+msgstr "%s: 入力引数 #%d の値が間違っています:要素は %d の約数としてください.\n"
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d.\n"
+msgstr "%s: 入力引数 #%d および #%d に互換性がありません.\n"
+
+#, c-format
+msgid "%s: Creation of requested fftw plan failed.\n"
+msgstr "%s: 指定した fftw プランの作成に失敗しました.\n"
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr "%s: メモリ割当エラー.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"
+msgstr "%s: 入力引数 #%d の値が間違っています: '%s' または '%s' を指定してください.\n"
+
+#, c-format
+msgid "%s: No more memory.\n"
+msgstr "%s: メモリ不足です.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A int32 expected.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: int32 を指定してください.\n"
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: FFTW flag expected.\n"
+msgstr "%s: 入力引数 #%d の値が間違っています: FFTWフラグを指定してください.\n"
+
+#, c-format
+msgid "%s: MKL fftw library does not implement wisdom functions yet.\n"
+msgstr "%s: MKL fftwライブラリはwisdom関数をまだ実装していません.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: 文字列を指定してください.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: a valid wisdom expected.\n"
+msgstr "%s: 入力引数 #%d の値が間違っています: 有効な wisdom を指定してください.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr "%s: 入力引数 #%d の大きさが正しくありません: スカラーを1つ指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An integer or a floating point number "
+"expected.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: 整数または浮動小数点数を指定してください.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d.\n"
+msgstr "%s: 入力引数 #%d の大きさが間違っています.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An array of floating point or integer "
+"numbers expected.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: 浮動小数点数または整数の配列を指定してください.\n"
+
+#
+# File: src/nofftw/nofftw.c, line: 20
+msgid "Scilab FFTW module not installed.\n"
+msgstr "Scilab FFTW モジュールはインストールされていません。\n"
+
+msgid "You choose to install scilab with fftw module."
+msgstr "fftwモジュール付きのscilabインストールが選択されました."
+
+msgid "This module requires : "
+msgstr "このモジュールは以下を必要とします : "
+
+msgid ""
+"Scilab will use standard fft by default until you install this library."
+msgstr "Scilab はこのライブラリをインストールするまで標準のfftを使用します."
+
+msgid "See help fftw for more information."
+msgstr "詳細については fftw のヘルプを参照ください."
diff --git a/modules/fftw/locales/pl_PL.po b/modules/fftw/locales/pl_PL.po
new file mode 100755
index 000000000..424f3605d
--- /dev/null
+++ b/modules/fftw/locales/pl_PL.po
@@ -0,0 +1,173 @@
+# Polish translation for scilab
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2013-03-19 19:51+0000\n"
+"Last-Translator: Scilab.team <Unknown>\n"
+"Language-Team: Polish <pl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: pl\n"
+
+#, c-format
+msgid "FFTW Library %s not found.\n"
+msgstr "Biblioteki FFTW %s nie odnaleziono.\n"
+
+msgid "FFTW Library not found.\n"
+msgstr "Biblioteki FFTW nie odnaleziono.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Cannot allocate more memory.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %d or %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: Array of floating point numbers expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: Nieprawidłowy typ dla argumentu wejściowego nr %d.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Must be between %d and %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Positive integers expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be less than %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be in increasing "
+"order.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be greater than %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be less than %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be a divisor of %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be divisors of %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Creation of requested fftw plan failed.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: No more memory.\n"
+msgstr "%s: Brak pamięci.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A int32 expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: FFTW flag expected.\n"
+msgstr ""
+"%s: Nieprawidłowe wartości argumentu wejściowego nr %d: oczekiwano flagi "
+"FFTW.\n"
+
+#, c-format
+msgid "%s: MKL fftw library does not implement wisdom functions yet.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr ""
+"%s: Nieprawidłowy typ argumentu wejściowego nr %d: oczekiwano łańcuch.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: a valid wisdom expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An integer or a floating point number "
+"expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d.\n"
+msgstr "%s: Nieprawidłowy rozmiar argumentu wejściowego nr %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An array of floating point or integer "
+"numbers expected.\n"
+msgstr ""
+
+msgid "Scilab FFTW module not installed.\n"
+msgstr "Modułu Scilab FFTW nie zainstalowano.\n"
+
+msgid "You choose to install scilab with fftw module."
+msgstr "Wybrałeś instalację Scilaba z modułem fft."
+
+msgid "This module requires : "
+msgstr "Ten moduł wymaga: "
+
+msgid ""
+"Scilab will use standard fft by default until you install this library."
+msgstr ""
+"Scilab używa domyślnie standardowej biblioteki fft dopóki nie zostanie "
+"zainstalowana ta biblioteka."
+
+msgid "See help fftw for more information."
+msgstr "Zobacz help fft po więcej informacji."
diff --git a/modules/fftw/locales/pt_BR.po b/modules/fftw/locales/pt_BR.po
new file mode 100755
index 000000000..fcba96037
--- /dev/null
+++ b/modules/fftw/locales/pt_BR.po
@@ -0,0 +1,171 @@
+# Brazilian Portuguese translation for scilab
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2013-03-19 19:49+0000\n"
+"Last-Translator: RodolfoRG <rodolforg@gmail.com>\n"
+"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: pt_BR\n"
+
+#, c-format
+msgid "FFTW Library %s not found.\n"
+msgstr "A biblioteca %s de FFTW não foi encontrada.\n"
+
+msgid "FFTW Library not found.\n"
+msgstr "A biblioteca de FFTW não foi encontrada.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Cannot allocate more memory.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %d or %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: Array of floating point numbers expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: Tipo incorreto para o argumento de entrada #%d.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Must be between %d and %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Positive integers expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be less than %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be in increasing "
+"order.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be greater than %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be less than %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be a divisor of %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be divisors of %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Creation of requested fftw plan failed.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: No more memory.\n"
+msgstr "%s: Memória esgotada.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A int32 expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: FFTW flag expected.\n"
+msgstr ""
+"%s: Valores incorretos para o argumento de entrada #%d: esperava-se um "
+"sinalizador de FFTW.\n"
+
+#, c-format
+msgid "%s: MKL fftw library does not implement wisdom functions yet.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr ""
+"%s: Tipo incorreto para o argumento de entrada #%d: esperava-se um texto.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: a valid wisdom expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An integer or a floating point number "
+"expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d.\n"
+msgstr "%s: Tamanho incorreto para o argumento de entrada #%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An array of floating point or integer "
+"numbers expected.\n"
+msgstr ""
+
+msgid "Scilab FFTW module not installed.\n"
+msgstr "O módulo FFTW do Scilab não está instalado.\n"
+
+msgid "You choose to install scilab with fftw module."
+msgstr "Você escolheu instalar o Scilab com o módulo fftw."
+
+msgid "This module requires : "
+msgstr "Este módulo exige: "
+
+msgid ""
+"Scilab will use standard fft by default until you install this library."
+msgstr "O Scilab usará o fft padrão até que você instale essa biblioteca."
+
+msgid "See help fftw for more information."
+msgstr "Para mais informações, veja a ajuda do fftw."
diff --git a/modules/fftw/locales/ru_RU.po b/modules/fftw/locales/ru_RU.po
new file mode 100755
index 000000000..cb9d71e8c
--- /dev/null
+++ b/modules/fftw/locales/ru_RU.po
@@ -0,0 +1,195 @@
+# Russian translation for scilab
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2013-04-19 00:03+0000\n"
+"Last-Translator: Stanislav V. Kroter <krotersv@gmail.com>\n"
+"Language-Team: Russian <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: ru\n"
+
+#, c-format
+msgid "FFTW Library %s not found.\n"
+msgstr "Библиотека FFTW %s не найдена.\n"
+
+msgid "FFTW Library not found.\n"
+msgstr "Библиотека FFTW не найдена.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s: Не могу прочитать входной аргумент №%d.\n"
+
+#, c-format
+msgid "%s: Cannot allocate more memory.\n"
+msgstr "%s: Не удалось выделить больше памяти.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %d or %d expected.\n"
+msgstr "%s: Неверное значение входного параметра №%d: ожидалось %d или %d.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: должно быть из множества "
+"{%s}.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: Array of floating point numbers expected.\n"
+msgstr ""
+"%s: Неверный тип аргумента №%d: ожидался массив чисел с плавающей запятой.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: Неверный тип входного параметра №%d.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Must be between %d and %d.\n"
+msgstr ""
+"%s: Неверный размер входного аргумента №%d: должен быть между %d и %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Positive integers expected.\n"
+msgstr ""
+"%s:Неверные значения входного аргумента №%d: ожидались положительные целые "
+"числа.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be less than %d.\n"
+msgstr ""
+"%s: Неверные значения входного аргумента №%d: элементы должны быть меньше "
+"%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be in increasing "
+"order.\n"
+msgstr ""
+"%s: Неверные значения входного аргумента №%d: элементы должны быть "
+"отсортированы по возрастанию.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be greater than %d.\n"
+msgstr ""
+"%s: Неверные значения входного аргумента №%d: элементы должны быть больше "
+"%d.\n"
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be less than %d.\n"
+msgstr ""
+"%s: Неверные значения входного аргумента №%d: должны быть меньше %d.\n"
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be a divisor of %d.\n"
+msgstr ""
+"%s: Неверные значения входного аргумента №%d: должны быть кратны %d.\n"
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+"%s: Несовместимые входные параметры №%d и №%d: ожидались одинаковые "
+"размеры.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be divisors of %d.\n"
+msgstr ""
+"%s: Неверные значения входного аргумента №%d: элементы должны быть кратны "
+"%d.\n"
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d.\n"
+msgstr "%s: Несовместимые входные аргументы №%d и №%d.\n"
+
+#, c-format
+msgid "%s: Creation of requested fftw plan failed.\n"
+msgstr "%s: Не удалось создание запрошенного плана fftw.\n"
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr "%s: Ошибка распределения памяти.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: ожидалось «%s» или «%s».\n"
+
+#, c-format
+msgid "%s: No more memory.\n"
+msgstr "%s: Не осталось доступной памяти.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A int32 expected.\n"
+msgstr "%s: Неверный тип входного аргумента №%d: ожидался int32.\n"
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: FFTW flag expected.\n"
+msgstr "%s: Неверные значения входного параметра №%d: ожидался флаг FFTW.\n"
+
+#, c-format
+msgid "%s: MKL fftw library does not implement wisdom functions yet.\n"
+msgstr "%s: Библиотека MKL fftw пока ещё не внедрила функции wisdom.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr "%s: Неверный тип входного параметра №%d: ожидалась строка.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: a valid wisdom expected.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: ожидалось корректное wisdom.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr "%s: Неверный размер входного аргумента №%d: ожидался скаляр.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An integer or a floating point number "
+"expected.\n"
+msgstr ""
+"%s: Неверный тип аргумента №%d: ожидалось целое число или число с плавающей "
+"запятой.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d.\n"
+msgstr "%s: Неверный размер входного параметра №%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An array of floating point or integer "
+"numbers expected.\n"
+msgstr ""
+"%s: Неверный тип аргумента №%d: ожидался массив чисел с плавающей запятой "
+"или массив целых чисел.\n"
+
+msgid "Scilab FFTW module not installed.\n"
+msgstr "Модуль Scilab FFTW не установлен.\n"
+
+msgid "You choose to install scilab with fftw module."
+msgstr "Вы выбрали установку scilab с модулем fftw."
+
+msgid "This module requires : "
+msgstr "Этот модуль требует: "
+
+msgid ""
+"Scilab will use standard fft by default until you install this library."
+msgstr ""
+"Scilab будет использовать по умолчанию стандартное быстрое преобразование "
+"Фурье до тех пор, пока вы не установите эту библиотеку."
+
+msgid "See help fftw for more information."
+msgstr ""
+"Дополнительную информацию можно получить с помощью команды \"help fftw\"."
diff --git a/modules/fftw/locales/uk_UA.po b/modules/fftw/locales/uk_UA.po
new file mode 100755
index 000000000..1eb45f39a
--- /dev/null
+++ b/modules/fftw/locales/uk_UA.po
@@ -0,0 +1,208 @@
+# Ukrainian translation for scilab
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the scilab package.
+#
+# Yuri Chornoivan <yurchor@gmail.com>, 2010, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2013-04-18 04:42+0000\n"
+"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
+"Language-Team: Ukrainian <translation@linux.org.ua>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: uk\n"
+
+#, c-format
+msgid "FFTW Library %s not found.\n"
+msgstr "Бібліотеки FFTW %s не виявлено.\n"
+
+msgid "FFTW Library not found.\n"
+msgstr "Бібліотеки FFTW не виявлено.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s: не вдалося прочитати вхідний параметр №%d.\n"
+
+#, c-format
+msgid "%s: Cannot allocate more memory.\n"
+msgstr "%s: не вдалося виділити більше пам’яті.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %d or %d expected.\n"
+msgstr ""
+"%s: помилкове значення вхідного параметра №%d: слід використовувати %d або "
+"%d.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+"%s: помилкове значення вхідного параметра №%d: слід використовувати значення "
+"з набору {%s}.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: Array of floating point numbers expected.\n"
+msgstr ""
+"%s: помилковий тип параметра №%d: мало бути використано масив зі значень з "
+"рухомою комою.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: помилковий тип вхідного параметра №%d.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Must be between %d and %d.\n"
+msgstr ""
+"%s: помилкова розмірність вхідного параметра №%d: слід використовувати "
+"значення між %d та %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Positive integers expected.\n"
+msgstr ""
+"%s: помилкові значення вхідного параметра №%d: слід використовувати додатні "
+"цілі числа.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be less than %d.\n"
+msgstr ""
+"%s: помилкові значення вхідного параметра №%d: елементи мають бути меншими "
+"за %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be in increasing "
+"order.\n"
+msgstr ""
+"%s: помилкові значення вхідного параметра №%d: елементи слід вказувати у "
+"порядку зростання.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be greater than %d.\n"
+msgstr ""
+"%s: помилкові значення вхідного параметра №%d: елементи мають бути більшими "
+"за %d.\n"
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be less than %d.\n"
+msgstr ""
+"%s: помилкові значення вхідного параметра №%d: має бути меншим за %d.\n"
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be a divisor of %d.\n"
+msgstr ""
+"%s: помилкові значення вхідного параметра №%d: має бути дільник %d.\n"
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+"%s: несумісні вхідні параметри №%d і №%d: слід використовувати однакову "
+"розмірність.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be divisors of %d.\n"
+msgstr ""
+"%s: помилкові значення вхідного параметра №%d: елементи мають дільниками "
+"%d.\n"
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d.\n"
+msgstr "%s: вхідні параметри №%d і №%d несумісні.\n"
+
+#, c-format
+msgid "%s: Creation of requested fftw plan failed.\n"
+msgstr "%s: спроба створення потрібного плану fftw зазнала невдачі.\n"
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr "%s: помилка під час спроби виділення пам’яті.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"
+msgstr ""
+"%s: Помилкове значення вхідного параметра №%d: слід використовувати «%s» або "
+"«%s».\n"
+
+#, c-format
+msgid "%s: No more memory.\n"
+msgstr "%s: доступну пам’ять вичерпано.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A int32 expected.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: мало бути використано тип int32.\n"
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: FFTW flag expected.\n"
+msgstr ""
+"%s: помилкові значення вхідного параметра №%d: слід використовувати "
+"прапорець FFTW.\n"
+
+#, c-format
+msgid "%s: MKL fftw library does not implement wisdom functions yet.\n"
+msgstr "%s: у бібліотеці MKL fftw ще не реалізовано функції wisdom.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: слід використовувати тип "
+"«string».\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: a valid wisdom expected.\n"
+msgstr ""
+"%s: помилкове значення вхідного параметра №%d: слід використовувати коректне "
+"значення wisdom.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+"%s: помилкова розмірність вхідного параметра №%d: слід використовувати "
+"дійсне число.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An integer or a floating point number "
+"expected.\n"
+msgstr ""
+"%s: помилковий тип параметра №%d: мало бути використано ціле число або число "
+"з рухомою комою.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d.\n"
+msgstr "%s: помилкова розмірність вхідного параметра №%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An array of floating point or integer "
+"numbers expected.\n"
+msgstr ""
+"%s: помилковий тип параметра №%d: мало бути використано масив з чисел з "
+"рухомою комою або цілих чисел.\n"
+
+msgid "Scilab FFTW module not installed.\n"
+msgstr "Модуль FFTW Scilab не встановлено.\n"
+
+msgid "You choose to install scilab with fftw module."
+msgstr "Вами вибрано встановлення scilab з модулем fftw."
+
+msgid "This module requires : "
+msgstr "Для роботи цього модуля потрібні: "
+
+msgid ""
+"Scilab will use standard fft by default until you install this library."
+msgstr ""
+"Scilab типово використовуватиме стандартну функцію швидкого перетворення "
+"Фур’є, доки не буде встановлено цю бібліотеку."
+
+msgid "See help fftw for more information."
+msgstr ""
+"Докладнішу інформацію можна отримати за допомогою команди «help fftw»."
diff --git a/modules/fftw/locales/zh_CN.po b/modules/fftw/locales/zh_CN.po
new file mode 100755
index 000000000..ff65e5e8d
--- /dev/null
+++ b/modules/fftw/locales/zh_CN.po
@@ -0,0 +1,168 @@
+# Simplified Chinese translation for scilab
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2013-03-19 19:43+0000\n"
+"Last-Translator: Scilab.team <Unknown>\n"
+"Language-Team: Simplified Chinese <zh_CN@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: \n"
+
+#, c-format
+msgid "FFTW Library %s not found.\n"
+msgstr "没有找到FFTW库%s。\n"
+
+msgid "FFTW Library not found.\n"
+msgstr "没有找到FFTW库。\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Cannot allocate more memory.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %d or %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: Array of floating point numbers expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s:第%d个输入参数的类型错误。\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Must be between %d and %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Positive integers expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be less than %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be in increasing "
+"order.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be greater than %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be less than %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be a divisor of %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be divisors of %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Creation of requested fftw plan failed.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: No more memory.\n"
+msgstr "%s:内存不足。\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A int32 expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: FFTW flag expected.\n"
+msgstr "%s:第%d个输入参数的值错误:应该为FFTW标志。\n"
+
+#, c-format
+msgid "%s: MKL fftw library does not implement wisdom functions yet.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr "%s:第%d个输入参数的类型错误:应该为字符串。\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: a valid wisdom expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An integer or a floating point number "
+"expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d.\n"
+msgstr "%s:第%d个输入参数的大小错误。\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An array of floating point or integer "
+"numbers expected.\n"
+msgstr ""
+
+msgid "Scilab FFTW module not installed.\n"
+msgstr "Scilab模块FFTW未安装。\n"
+
+msgid "You choose to install scilab with fftw module."
+msgstr "你选择要安装带FFTW模块的Scilab"
+
+msgid "This module requires : "
+msgstr "此模块需要: "
+
+msgid ""
+"Scilab will use standard fft by default until you install this library."
+msgstr "Scilab将使用FFT直到你安装FFTW库。"
+
+msgid "See help fftw for more information."
+msgstr "查看help fftw了解更多信息"
diff --git a/modules/fftw/locales/zh_TW.po b/modules/fftw/locales/zh_TW.po
new file mode 100755
index 000000000..d0773e039
--- /dev/null
+++ b/modules/fftw/locales/zh_TW.po
@@ -0,0 +1,198 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2010-06-19 13:43+0000\n"
+"Last-Translator: tim loo <timloo0710@gmail.com>\n"
+"Language-Team: Traditional Chinese <zh_TW@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+"Language: \n"
+"Revision-Date: 2011-04-04 22:09+0100\n"
+
+#
+# File: sci_gateway/c/gw_fftw.c, line: 45
+#, c-format
+msgid "FFTW Library %s not found.\n"
+msgstr "找不到 FFTW 程式庫 %s.\n"
+
+#
+# File: sci_gateway/c/gw_fftw.c, line: 49
+msgid "FFTW Library not found.\n"
+msgstr "找不到 FFTW 程式庫.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Cannot allocate more memory.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %d or %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: Array of floating point numbers expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_fftw_flags.c, line: 158
+#, c-format
+msgid "%s: Wrong type for input argument #%d.\n"
+msgstr "%s: 第 %d 個輸入參數型態錯誤.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: Must be between %d and %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Positive integers expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be less than %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be in increasing "
+"order.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be greater than %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be less than %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong values for input argument #%d: Must be a divisor of %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong values for input argument #%d: Elements must be divisors of %d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Incompatible input arguments #%d and #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Creation of requested fftw plan failed.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_get_fftw_wisdom.c, line: 59
+# File: sci_gateway/c/sci_get_fftw_wisdom.c, line: 66
+# File: sci_gateway/c/sci_get_fftw_wisdom.c, line: 86
+# File: sci_gateway/c/sci_get_fftw_wisdom.c, line: 92
+# File: sci_gateway/c/sci_set_fftw_wisdom.c, line: 60
+# File: sci_gateway/c/sci_fftw_flags.c, line: 176
+# File: sci_gateway/c/sci_fftw_flags.c, line: 183
+# File: sci_gateway/c/sci_fftw_flags.c, line: 201
+# File: sci_gateway/c/sci_fftw_flags.c, line: 208
+# File: sci_gateway/c/sci_fftw.c, line: 235
+# File: sci_gateway/c/sci_fftw.c, line: 241
+# File: sci_gateway/c/sci_fftw.c, line: 415
+# File: sci_gateway/c/sci_fftw.c, line: 433
+# File: sci_gateway/c/sci_fftw.c, line: 461
+# File: sci_gateway/c/sci_fftw.c, line: 472
+# File: sci_gateway/c/sci_fftw.c, line: 495
+# File: sci_gateway/c/sci_fftw.c, line: 535
+# File: sci_gateway/c/sci_fftw.c, line: 561
+#, c-format
+msgid "%s: No more memory.\n"
+msgstr "%s: 記憶體耗盡.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A int32 expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_fftw_flags.c, line: 146
+#, c-format
+msgid "%s: Wrong values for input argument #%d: FFTW flag expected.\n"
+msgstr "%s: 第 %d 個輸入參數數值錯誤: 應為 FFTW 旗標.\n"
+
+#, c-format
+msgid "%s: MKL fftw library does not implement wisdom functions yet.\n"
+msgstr ""
+
+# File: sci_gateway/c/sci_loadfftwlibrary.c, line: 50
+# File: sci_gateway/c/sci_set_fftw_wisdom.c, line: 85
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr "%s: 第 %d 個輸入參數型態錯誤: 應為一字串.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: a valid wisdom expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong size for input argument #%d: A scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An integer or a floating point number "
+"expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_fftw.c, line: 197
+# File: sci_gateway/c/sci_fftw.c, line: 221
+#, c-format
+msgid "%s: Wrong size for input argument #%d.\n"
+msgstr "%s: 第 %d 個輸入參數長度錯誤.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for argument #%d: An array of floating point or integer "
+"numbers expected.\n"
+msgstr ""
+
+#
+# File: src/nofftw/nofftw.c, line: 18
+msgid "Scilab FFTW module not installed.\n"
+msgstr "未安裝 Scilab FFTW 模組.\n"
+
+msgid "You choose to install scilab with fftw module."
+msgstr ""
+
+msgid "This module requires : "
+msgstr ""
+
+msgid ""
+"Scilab will use standard fft by default until you install this library."
+msgstr ""
+
+msgid "See help fftw for more information."
+msgstr ""
diff --git a/modules/fftw/macros/buildmacros.bat b/modules/fftw/macros/buildmacros.bat
new file mode 100755
index 000000000..c4e35ec40
--- /dev/null
+++ b/modules/fftw/macros/buildmacros.bat
@@ -0,0 +1 @@
+@..\..\..\bin\scilex -nwni -ns -e exec('buildmacros.sce');quit; \ No newline at end of file
diff --git a/modules/fftw/macros/buildmacros.sce b/modules/fftw/macros/buildmacros.sce
new file mode 100755
index 000000000..2a111df94
--- /dev/null
+++ b/modules/fftw/macros/buildmacros.sce
@@ -0,0 +1,14 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007 - INRIA - Allan Cornet
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+if (isdef("genlib") == %f) then
+ exec(SCI+"/modules/functions/scripts/buildmacros/loadgenlib.sce");
+end
+
+//genlib('fftwlib','SCI/modules/fftw/macros',%f,%t);
diff --git a/modules/fftw/macros/cleanmacros.bat b/modules/fftw/macros/cleanmacros.bat
new file mode 100755
index 000000000..5079dfd71
--- /dev/null
+++ b/modules/fftw/macros/cleanmacros.bat
@@ -0,0 +1,3 @@
+@del *.bin 2>NUL
+@del lib 2>NUL
+@del names 2>NUL \ No newline at end of file
diff --git a/modules/fftw/sci_gateway/c/.deps/.dirstamp b/modules/fftw/sci_gateway/c/.deps/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.deps/.dirstamp
diff --git a/modules/fftw/sci_gateway/c/.deps/libscifftw_la-gw_fftw.Plo b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-gw_fftw.Plo
new file mode 100755
index 000000000..adf78e891
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-gw_fftw.Plo
@@ -0,0 +1,325 @@
+sci_gateway/c/libscifftw_la-gw_fftw.lo: sci_gateway/c/gw_fftw.c \
+ /usr/include/stdc-predef.h src/c/callfftw.h \
+ ../../modules/core/includes/BOOL.h src/c/fftw3.h /usr/include/stdio.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h src/c/fftwlibname.h \
+ includes/gw_fftw.h includes/dynlib_fftw.h \
+ ../../modules/core/includes/callFunctionFromGateway.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/xlocale.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/values.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/float.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h
+
+/usr/include/stdc-predef.h:
+
+src/c/callfftw.h:
+
+../../modules/core/includes/BOOL.h:
+
+src/c/fftw3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+src/c/fftwlibname.h:
+
+includes/gw_fftw.h:
+
+includes/dynlib_fftw.h:
+
+../../modules/core/includes/callFunctionFromGateway.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/xlocale.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/values.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/float.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
diff --git a/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_dct.Plo b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_dct.Plo
new file mode 100755
index 000000000..d5662003a
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_dct.Plo
@@ -0,0 +1,318 @@
+sci_gateway/c/libscifftw_la-sci_dct.lo: sci_gateway/c/sci_dct.c \
+ /usr/include/stdc-predef.h ../../modules/core/includes/stack-c.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h src/c/fftw_utilities.h \
+ /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \
+ /usr/include/wchar.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h src/c/fftw3.h \
+ src/c/sci_data_utilities.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h src/c/callfftw.h \
+ ../../modules/core/includes/BOOL.h ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h includes/gw_fftw.h \
+ includes/dynlib_fftw.h \
+ ../../modules/localization/includes/localization.h \
+ ../../modules/core/includes/machine.h /usr/include/libintl.h \
+ /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h
+
+/usr/include/stdc-predef.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+src/c/fftw_utilities.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+src/c/fftw3.h:
+
+src/c/sci_data_utilities.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+src/c/callfftw.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+includes/gw_fftw.h:
+
+includes/dynlib_fftw.h:
+
+../../modules/localization/includes/localization.h:
+
+../../modules/core/includes/machine.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
diff --git a/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_disposefftwlibrary.Plo b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_disposefftwlibrary.Plo
new file mode 100755
index 000000000..fda5b06df
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_disposefftwlibrary.Plo
@@ -0,0 +1,316 @@
+sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo: \
+ sci_gateway/c/sci_disposefftwlibrary.c /usr/include/stdc-predef.h \
+ src/c/callfftw.h ../../modules/core/includes/BOOL.h src/c/fftw3.h \
+ /usr/include/stdio.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h src/c/fftwlibname.h \
+ includes/gw_fftw.h includes/dynlib_fftw.h \
+ ../../modules/localization/includes/localization.h \
+ ../../modules/core/includes/machine.h /usr/include/libintl.h \
+ /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \
+ /usr/include/xlocale.h ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/values.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/float.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h
+
+/usr/include/stdc-predef.h:
+
+src/c/callfftw.h:
+
+../../modules/core/includes/BOOL.h:
+
+src/c/fftw3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+src/c/fftwlibname.h:
+
+includes/gw_fftw.h:
+
+includes/dynlib_fftw.h:
+
+../../modules/localization/includes/localization.h:
+
+../../modules/core/includes/machine.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/xlocale.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/include/values.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/float.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
diff --git a/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_dst.Plo b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_dst.Plo
new file mode 100755
index 000000000..e0f7f7ac8
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_dst.Plo
@@ -0,0 +1,318 @@
+sci_gateway/c/libscifftw_la-sci_dst.lo: sci_gateway/c/sci_dst.c \
+ /usr/include/stdc-predef.h ../../modules/core/includes/stack-c.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h src/c/fftw_utilities.h \
+ /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \
+ /usr/include/wchar.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h src/c/fftw3.h \
+ src/c/sci_data_utilities.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h src/c/callfftw.h \
+ ../../modules/core/includes/BOOL.h ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h includes/gw_fftw.h \
+ includes/dynlib_fftw.h \
+ ../../modules/localization/includes/localization.h \
+ ../../modules/core/includes/machine.h /usr/include/libintl.h \
+ /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h
+
+/usr/include/stdc-predef.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+src/c/fftw_utilities.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+src/c/fftw3.h:
+
+src/c/sci_data_utilities.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+src/c/callfftw.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+includes/gw_fftw.h:
+
+includes/dynlib_fftw.h:
+
+../../modules/localization/includes/localization.h:
+
+../../modules/core/includes/machine.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
diff --git a/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_fftw.Plo b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_fftw.Plo
new file mode 100755
index 000000000..e5759a701
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_fftw.Plo
@@ -0,0 +1,318 @@
+sci_gateway/c/libscifftw_la-sci_fftw.lo: sci_gateway/c/sci_fftw.c \
+ /usr/include/stdc-predef.h ../../modules/core/includes/stack-c.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h src/c/fftw_utilities.h \
+ /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \
+ /usr/include/wchar.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h src/c/fftw3.h \
+ src/c/sci_data_utilities.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h src/c/callfftw.h \
+ ../../modules/core/includes/BOOL.h ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h includes/gw_fftw.h \
+ includes/dynlib_fftw.h \
+ ../../modules/localization/includes/localization.h \
+ ../../modules/core/includes/machine.h /usr/include/libintl.h \
+ /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h
+
+/usr/include/stdc-predef.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+src/c/fftw_utilities.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+src/c/fftw3.h:
+
+src/c/sci_data_utilities.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+src/c/callfftw.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+includes/gw_fftw.h:
+
+includes/dynlib_fftw.h:
+
+../../modules/localization/includes/localization.h:
+
+../../modules/core/includes/machine.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
diff --git a/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_fftw_flags.Plo b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_fftw_flags.Plo
new file mode 100755
index 000000000..617c8949c
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_fftw_flags.Plo
@@ -0,0 +1,315 @@
+sci_gateway/c/libscifftw_la-sci_fftw_flags.lo: \
+ sci_gateway/c/sci_fftw_flags.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h /usr/include/wchar.h \
+ /usr/include/stdio.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h src/c/fftw_utilities.h \
+ /usr/include/libio.h /usr/include/_G_config.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h src/c/fftw3.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h includes/gw_fftw.h \
+ includes/dynlib_fftw.h \
+ ../../modules/localization/includes/localization.h \
+ ../../modules/core/includes/machine.h /usr/include/libintl.h \
+ /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \
+ ../../modules/core/includes/freeArrayOfString.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+src/c/fftw_utilities.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+src/c/fftw3.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+includes/gw_fftw.h:
+
+includes/dynlib_fftw.h:
+
+../../modules/localization/includes/localization.h:
+
+../../modules/core/includes/machine.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+../../modules/core/includes/freeArrayOfString.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
diff --git a/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_fftw_forget_wisdom.Plo b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_fftw_forget_wisdom.Plo
new file mode 100755
index 000000000..76341adcd
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_fftw_forget_wisdom.Plo
@@ -0,0 +1,291 @@
+sci_gateway/c/libscifftw_la-sci_fftw_forget_wisdom.lo: \
+ sci_gateway/c/sci_fftw_forget_wisdom.c /usr/include/stdc-predef.h \
+ src/c/fftw_utilities.h /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h src/c/fftw3.h \
+ src/c/callfftw.h ../../modules/core/includes/BOOL.h includes/gw_fftw.h \
+ includes/dynlib_fftw.h ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h
+
+/usr/include/stdc-predef.h:
+
+src/c/fftw_utilities.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+src/c/fftw3.h:
+
+src/c/callfftw.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/gw_fftw.h:
+
+includes/dynlib_fftw.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
diff --git a/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_fftwlibraryisloaded.Plo b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_fftwlibraryisloaded.Plo
new file mode 100755
index 000000000..b58b71366
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_fftwlibraryisloaded.Plo
@@ -0,0 +1,308 @@
+sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo: \
+ sci_gateway/c/sci_fftwlibraryisloaded.c /usr/include/stdc-predef.h \
+ src/c/callfftw.h ../../modules/core/includes/BOOL.h src/c/fftw3.h \
+ /usr/include/stdio.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h includes/gw_fftw.h \
+ includes/dynlib_fftw.h ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h /usr/include/string.h \
+ /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/localization/includes/localization.h \
+ ../../modules/core/includes/machine.h /usr/include/libintl.h \
+ /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h
+
+/usr/include/stdc-predef.h:
+
+src/c/callfftw.h:
+
+../../modules/core/includes/BOOL.h:
+
+src/c/fftw3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+includes/gw_fftw.h:
+
+includes/dynlib_fftw.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/localization/includes/localization.h:
+
+../../modules/core/includes/machine.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
diff --git a/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_get_fftw_wisdom.Plo b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_get_fftw_wisdom.Plo
new file mode 100755
index 000000000..5f5346ce4
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_get_fftw_wisdom.Plo
@@ -0,0 +1,318 @@
+sci_gateway/c/libscifftw_la-sci_get_fftw_wisdom.lo: \
+ sci_gateway/c/sci_get_fftw_wisdom.c /usr/include/stdc-predef.h \
+ /usr/include/stdlib.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h src/c/callfftw.h \
+ ../../modules/core/includes/BOOL.h src/c/fftw3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h /usr/include/string.h \
+ /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h includes/gw_fftw.h \
+ includes/dynlib_fftw.h \
+ ../../modules/localization/includes/localization.h \
+ ../../modules/core/includes/machine.h /usr/include/libintl.h \
+ /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \
+ ../../modules/core/includes/freeArrayOfString.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+src/c/callfftw.h:
+
+../../modules/core/includes/BOOL.h:
+
+src/c/fftw3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+includes/gw_fftw.h:
+
+includes/dynlib_fftw.h:
+
+../../modules/localization/includes/localization.h:
+
+../../modules/core/includes/machine.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+../../modules/core/includes/freeArrayOfString.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
diff --git a/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_loadfftwlibrary.Plo b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_loadfftwlibrary.Plo
new file mode 100755
index 000000000..92fd03d76
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_loadfftwlibrary.Plo
@@ -0,0 +1,310 @@
+sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo: \
+ sci_gateway/c/sci_loadfftwlibrary.c /usr/include/stdc-predef.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h /usr/include/string.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h /usr/include/wchar.h \
+ /usr/include/stdio.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h src/c/callfftw.h \
+ ../../modules/core/includes/BOOL.h src/c/fftw3.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/core/includes/machine.h src/c/fftwlibname.h \
+ includes/gw_fftw.h includes/dynlib_fftw.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h
+
+/usr/include/stdc-predef.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+src/c/callfftw.h:
+
+../../modules/core/includes/BOOL.h:
+
+src/c/fftw3.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/core/includes/machine.h:
+
+src/c/fftwlibname.h:
+
+includes/gw_fftw.h:
+
+includes/dynlib_fftw.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
diff --git a/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_set_fftw_wisdom.Plo b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_set_fftw_wisdom.Plo
new file mode 100755
index 000000000..133663634
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.deps/libscifftw_la-sci_set_fftw_wisdom.Plo
@@ -0,0 +1,316 @@
+sci_gateway/c/libscifftw_la-sci_set_fftw_wisdom.lo: \
+ sci_gateway/c/sci_set_fftw_wisdom.c /usr/include/stdc-predef.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/core/includes/stack-c.h /usr/include/string.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h /usr/include/wchar.h \
+ /usr/include/stdio.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h src/c/callfftw.h \
+ ../../modules/core/includes/BOOL.h src/c/fftw3.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h includes/gw_fftw.h \
+ includes/dynlib_fftw.h \
+ ../../modules/localization/includes/localization.h \
+ ../../modules/core/includes/machine.h /usr/include/libintl.h \
+ /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \
+ ../../modules/core/includes/freeArrayOfString.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h
+
+/usr/include/stdc-predef.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+src/c/callfftw.h:
+
+../../modules/core/includes/BOOL.h:
+
+src/c/fftw3.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+includes/gw_fftw.h:
+
+includes/dynlib_fftw.h:
+
+../../modules/localization/includes/localization.h:
+
+../../modules/core/includes/machine.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+../../modules/core/includes/freeArrayOfString.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
diff --git a/modules/fftw/sci_gateway/c/.dirstamp b/modules/fftw/sci_gateway/c/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.dirstamp
diff --git a/modules/fftw/sci_gateway/c/.libs/libscifftw_la-gw_fftw.o b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-gw_fftw.o
new file mode 100755
index 000000000..d49bb47c2
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-gw_fftw.o
Binary files differ
diff --git a/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_dct.o b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_dct.o
new file mode 100755
index 000000000..52fbbda49
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_dct.o
Binary files differ
diff --git a/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_disposefftwlibrary.o b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_disposefftwlibrary.o
new file mode 100755
index 000000000..03d7276a1
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_disposefftwlibrary.o
Binary files differ
diff --git a/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_dst.o b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_dst.o
new file mode 100755
index 000000000..d149dd920
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_dst.o
Binary files differ
diff --git a/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_fftw.o b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_fftw.o
new file mode 100755
index 000000000..d5500fc80
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_fftw.o
Binary files differ
diff --git a/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_fftw_flags.o b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_fftw_flags.o
new file mode 100755
index 000000000..826220539
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_fftw_flags.o
Binary files differ
diff --git a/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_fftw_forget_wisdom.o b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_fftw_forget_wisdom.o
new file mode 100755
index 000000000..fbe35307e
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_fftw_forget_wisdom.o
Binary files differ
diff --git a/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_fftwlibraryisloaded.o b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_fftwlibraryisloaded.o
new file mode 100755
index 000000000..dcbe00570
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_fftwlibraryisloaded.o
Binary files differ
diff --git a/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_get_fftw_wisdom.o b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_get_fftw_wisdom.o
new file mode 100755
index 000000000..14c382d40
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_get_fftw_wisdom.o
Binary files differ
diff --git a/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_loadfftwlibrary.o b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_loadfftwlibrary.o
new file mode 100755
index 000000000..c0b32792f
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_loadfftwlibrary.o
Binary files differ
diff --git a/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_set_fftw_wisdom.o b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_set_fftw_wisdom.o
new file mode 100755
index 000000000..ea62cefd6
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/.libs/libscifftw_la-sci_set_fftw_wisdom.o
Binary files differ
diff --git a/modules/fftw/sci_gateway/c/gw_fftw.c b/modules/fftw/sci_gateway/c/gw_fftw.c
new file mode 100755
index 000000000..ff472864e
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/gw_fftw.c
@@ -0,0 +1,76 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006 - INRIA - Allan CORNET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "callfftw.h"
+#include "Scierror.h"
+#include "MALLOC.h"
+#include "fftwlibname.h"
+#include "gw_fftw.h"
+#include "callFunctionFromGateway.h"
+#include "localization.h"
+#include "api_scilab.h"
+#include "MALLOC.h"
+/*--------------------------------------------------------------------------*/
+static gw_generic_table Tab[] =
+{
+ { sci_loadfftwlibrary, "loadfftwlibrary"},
+ { sci_disposefftwlibrary, "disposefftwlibrary"},
+ { sci_fftwlibraryisloaded, "fftwlibraryisloaded"},
+ { sci_fftw, "fftw"},
+ { sci_fftw_flags, "fftw_flags"},
+ { sci_get_fftw_wisdom, "get_fftw_wisdom"},
+ { sci_set_fftw_wisdom, "set_fftw_wisdom"},
+ { sci_fftw_forget_wisdom, "fftw_forget_wisdom"},
+ { sci_dct, "dct"},
+ { sci_dst, "dst"}
+};
+/*--------------------------------------------------------------------------*/
+int gw_fftw(void)
+{
+ Rhs = Max(0, Rhs);
+
+ if (Fin > 3) /* loadfftwlibrary, disposefftwlibrary, fftwlibraryisloaded not test if dll is loaded*/
+ {
+ if (!IsLoadedFFTW())
+ {
+ char *fftwlibNAME = getfftwlibname();
+
+ if (fftwlibNAME)
+ {
+ Scierror(999, _("FFTW Library %s not found.\n"), fftwlibNAME);
+ }
+ else
+ {
+ Scierror(999, _("FFTW Library not found.\n"));
+ }
+
+ if (fftwlibNAME)
+ {
+ FREE(fftwlibNAME);
+ fftwlibNAME = NULL;
+ }
+
+ return 0;
+ }
+ }
+
+ if (pvApiCtx == NULL)
+ {
+ pvApiCtx = (StrCtx*)MALLOC(sizeof(StrCtx));
+ }
+
+ pvApiCtx->pstName = (char*)Tab[Fin - 1].name;
+ callFunctionFromGateway(Tab, SIZE_CURRENT_GENERIC_TABLE(Tab));
+
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/sci_gateway/c/libscifftw_la-gw_fftw.lo b/modules/fftw/sci_gateway/c/libscifftw_la-gw_fftw.lo
new file mode 100755
index 000000000..7cfee85bb
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/libscifftw_la-gw_fftw.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscifftw_la-gw_fftw.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscifftw_la-gw_fftw.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/fftw/sci_gateway/c/libscifftw_la-sci_dct.lo b/modules/fftw/sci_gateway/c/libscifftw_la-sci_dct.lo
new file mode 100755
index 000000000..28b9b329f
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/libscifftw_la-sci_dct.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscifftw_la-sci_dct.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscifftw_la-sci_dct.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/fftw/sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo b/modules/fftw/sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo
new file mode 100755
index 000000000..2b94a3d2a
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscifftw_la-sci_disposefftwlibrary.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscifftw_la-sci_disposefftwlibrary.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/fftw/sci_gateway/c/libscifftw_la-sci_dst.lo b/modules/fftw/sci_gateway/c/libscifftw_la-sci_dst.lo
new file mode 100755
index 000000000..1a4c7cb88
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/libscifftw_la-sci_dst.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscifftw_la-sci_dst.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscifftw_la-sci_dst.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/fftw/sci_gateway/c/libscifftw_la-sci_fftw.lo b/modules/fftw/sci_gateway/c/libscifftw_la-sci_fftw.lo
new file mode 100755
index 000000000..8df94e833
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/libscifftw_la-sci_fftw.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscifftw_la-sci_fftw.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscifftw_la-sci_fftw.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/fftw/sci_gateway/c/libscifftw_la-sci_fftw_flags.lo b/modules/fftw/sci_gateway/c/libscifftw_la-sci_fftw_flags.lo
new file mode 100755
index 000000000..2ae7bbce9
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/libscifftw_la-sci_fftw_flags.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscifftw_la-sci_fftw_flags.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscifftw_la-sci_fftw_flags.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/fftw/sci_gateway/c/libscifftw_la-sci_fftw_forget_wisdom.lo b/modules/fftw/sci_gateway/c/libscifftw_la-sci_fftw_forget_wisdom.lo
new file mode 100755
index 000000000..806804341
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/libscifftw_la-sci_fftw_forget_wisdom.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscifftw_la-sci_fftw_forget_wisdom.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscifftw_la-sci_fftw_forget_wisdom.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/fftw/sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo b/modules/fftw/sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo
new file mode 100755
index 000000000..4d9015e2d
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscifftw_la-sci_fftwlibraryisloaded.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscifftw_la-sci_fftwlibraryisloaded.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/fftw/sci_gateway/c/libscifftw_la-sci_get_fftw_wisdom.lo b/modules/fftw/sci_gateway/c/libscifftw_la-sci_get_fftw_wisdom.lo
new file mode 100755
index 000000000..5f6ad832d
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/libscifftw_la-sci_get_fftw_wisdom.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscifftw_la-sci_get_fftw_wisdom.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscifftw_la-sci_get_fftw_wisdom.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/fftw/sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo b/modules/fftw/sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo
new file mode 100755
index 000000000..cdbf5a663
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscifftw_la-sci_loadfftwlibrary.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscifftw_la-sci_loadfftwlibrary.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/fftw/sci_gateway/c/libscifftw_la-sci_set_fftw_wisdom.lo b/modules/fftw/sci_gateway/c/libscifftw_la-sci_set_fftw_wisdom.lo
new file mode 100755
index 000000000..44e91d744
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/libscifftw_la-sci_set_fftw_wisdom.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libscifftw_la-sci_set_fftw_wisdom.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscifftw_la-sci_set_fftw_wisdom.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/fftw/sci_gateway/c/sci_dct.c b/modules/fftw/sci_gateway/c/sci_dct.c
new file mode 100755
index 000000000..6d9effd8d
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/sci_dct.c
@@ -0,0 +1,1206 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2012 - INRIA - Serge STEER
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+/*--------------------------------------------------------------------------*/
+#include "stack-c.h"
+#include "fftw_utilities.h"
+#include "sci_data_utilities.h"
+#include "callfftw.h"
+#include "MALLOC.h"
+#include "gw_fftw.h"
+#include "api_scilab.h"
+#include "localization.h"
+#include "Scierror.h"
+#include "BOOL.h"
+#include "sci_data_utilities.h"
+
+
+/*--------------------------------------------------------------------------*/
+extern void C2F(dscal)(int *n, double *da, double *dx, int *incx); /* blas routine */
+extern void C2F(dset)(int *n, double *da, double *dx, int *incx); /* blas routine */
+/*--------------------------------------------------------------------------*/
+static int sci_dct_gen(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, guru_dim_struct gdim, int iopt);
+static int sci_dct_2args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt);
+static int sci_dct_3args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt);
+static int sci_dct_4args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt);
+/*--------------------------------------------------------------------------*/
+
+extern int WITHMKL;
+/* fftw function.
+*
+* Scilab Calling sequence :
+* dct(A )
+* dct(A,sign )
+* dct(A,sel,sign )
+* dct(A,sign,dim,incr )
+*
+* Input : A : a scilab double complex or real vector, matrix or hypermatrix
+*
+* sign : a scilab double or integer scalar (-1 or 1): the sign
+* in the exponential component
+*
+* sel : a scilab double or integer vector, the selection of dimensions
+
+* dim : a scilab double or integer vector: the dimensions
+* of the Fast Fourier Transform to perform
+*
+* incr : a scilab double or integer vector: the increments
+* of the Fast Fourier Transform to perform
+*
+* Output : a scilab double complex or real array with same shape as A that
+* gives the result of the transform.
+*
+*/
+int sci_dct(char *fname, unsigned long fname_len)
+{
+ SciErr sciErr;
+ int *piAddr = NULL;
+ int rhs = Rhs;
+ int iTypeOne = 0;
+ int iopt = 0;
+
+ int ndimsA = 0;
+ int *dimsA = NULL;
+ double *Ar = NULL, *Ai = NULL;
+ char *option = NULL;
+ int isn = FFTW_FORWARD;
+ WITHMKL = withMKL();
+ /****************************************
+ * Basic constraints on rhs arguments *
+ ****************************************/
+
+ /* check min/max lhs/rhs arguments of scilab function */
+ CheckRhs(1, 4);
+ CheckLhs(1, 1);
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
+ return 0;
+ }
+
+ sciErr = getVarType(pvApiCtx, piAddr, &iTypeOne);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
+ return 0;
+ }
+
+ if ((iTypeOne == sci_list) || (iTypeOne == sci_tlist))
+ {
+ OverLoad(1);
+ return 0;
+ }
+
+ if (iTypeOne == sci_mlist)
+ {
+ /* We allow overload for not hypermatrix type */
+ if (!isHyperMatrixMlist(pvApiCtx, piAddr))
+ {
+ OverLoad(1);
+ return 0;
+ }
+ }
+
+ /* checking if last argument is a potential option argument (character string) */
+ sciErr = getVarAddressFromPosition(pvApiCtx, Rhs, &piAddr);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, Rhs);
+ return 0;
+ }
+
+ if (isStringType(pvApiCtx, piAddr)) /* dct(...,option); */
+ {
+ if (isScalar(pvApiCtx, piAddr))
+ {
+ if (getAllocatedSingleString(pvApiCtx, piAddr, &option) == 0)
+ {
+ rhs = Rhs - 1;
+ }
+ else
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ }
+ }
+
+
+
+ /******************** Checking if isn is given ************************************************/
+ if (rhs == 1) /*only one rhs argument: forward dct*/
+ {
+ isn = FFTW_FORWARD; /* default value */
+ }
+ else /*get isn out of second argument*/
+ {
+ sciErr = getScalarIntArg(pvApiCtx, 2, fname, &isn);
+ if (sciErr.iErr)
+ {
+ Scierror(sciErr.iErr, getErrorMessage(sciErr));
+ return 0;
+ }
+ /* check value of second rhs argument */
+ if ((isn != FFTW_FORWARD) && (isn != FFTW_BACKWARD))
+ {
+ Scierror(53, _("%s: Wrong value for input argument #%d: %d or %d expected.\n"), fname, 2, FFTW_FORWARD, FFTW_BACKWARD);
+ return 0;
+ }
+ }
+
+ if (option != NULL)
+ {
+ if (isn == FFTW_FORWARD)
+ {
+ if (strcmp("dct1", option) == 0)
+ {
+ iopt = 1;
+ }
+ else if (strcmp("dct2", option) == 0)
+ {
+ iopt = 2;
+ }
+ else if (strcmp("dct", option) == 0)
+ {
+ iopt = 0;
+ }
+ else if (strcmp("dct4", option) == 0)
+ {
+ iopt = 4;
+ }
+ else
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"), fname, Rhs,
+ "\"dct\", \"dct1\",\"dct2\",\"dct4\"");
+ freeAllocatedSingleString(option);
+ option = NULL;
+ return 0;
+ }
+ }
+ else
+ {
+ if (strcmp("dct1", option) == 0)
+ {
+ iopt = 1;
+ }
+ else if (strcmp("dct3", option) == 0)
+ {
+ iopt = 3;
+ }
+ else if (strcmp("idct", option) == 0)
+ {
+ iopt = 0;
+ }
+ else if (strcmp("dct4", option) == 0)
+ {
+ iopt = 4;
+ }
+ else
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"), fname, Rhs,
+ "\"idct\", \"dct1\",\"dct3\",\"dct4\"");
+ freeAllocatedSingleString(option);
+ option = NULL;
+ return 0;
+ }
+
+ }
+ freeAllocatedSingleString(option);
+ option = NULL;
+
+ }
+
+ /******************** getting the array A ************************************************/
+ getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
+ if (!getArrayOfDouble(pvApiCtx, piAddr, &ndimsA, &dimsA, &Ar, &Ai))
+ {
+ Scierror(999, _("%s: Wrong type for argument #%d: Array of floating point numbers expected.\n"),
+ fname, 1);
+ return 0;
+ }
+
+
+ /******************** Select proper method ************************************************/
+ if (rhs < 3)
+ {
+ /* dct(A ,sign)*/
+ sci_dct_2args(pvApiCtx, fname, ndimsA, dimsA, Ar, Ai, isn, iopt);
+ }
+ else if (rhs == 3)
+ {
+ /* dct(A ,sign ,sel)*/
+ sci_dct_3args(pvApiCtx, fname, ndimsA, dimsA, Ar, Ai, isn, iopt);
+ }
+ else if (rhs == 4)
+ {
+ /* dct(A ,sign ,dim,incr)*/
+ sci_dct_4args(pvApiCtx, fname, ndimsA, dimsA, Ar, Ai, isn, iopt);
+ }
+
+ return 0;
+}
+
+int sci_dct_2args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt)
+{
+ /*FFTW specific library variable */
+ guru_dim_struct gdim = {0, NULL, 0, NULL};
+
+ /* local variable */
+ int ndims = 0; /* number of non singleton dimensions */
+ int first_nonsingleton = -1;
+ int i = 0, j = 0;
+ int prd = 1;
+
+ /* ignore singleton dimensions */
+ first_nonsingleton = -1;
+ ndims = 0;
+ for (i = 0; i < ndimsA; i++)
+ {
+ if (dimsA[i] > 1)
+ {
+ ndims++;
+ if (first_nonsingleton < 0)
+ {
+ first_nonsingleton = i;
+ }
+ }
+ }
+
+ /* void or scalar input gives void output or scalar*/
+ if (ndims == 0 )
+ {
+ AssignOutputVariable(_pvCtx, 1) = 1;
+ ReturnArguments(_pvCtx);
+ return 0;
+ }
+
+ gdim.rank = ndims;
+ if ((gdim.dims = (fftw_iodim *)MALLOC(sizeof(fftw_iodim) * gdim.rank)) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ j = 0;
+ prd = 1;
+ for (i = (first_nonsingleton); i < ndimsA; i++)
+ {
+ if (dimsA[i] > 1)
+ {
+ gdim.dims[j].n = dimsA[i];
+ gdim.dims[j].is = prd;
+ gdim.dims[j].os = prd;
+ prd *= dimsA[i];
+ j++;
+ }
+ }
+ gdim.howmany_rank = 0;
+ gdim.howmany_dims = NULL;
+
+
+ if (!sci_dct_gen(_pvCtx, fname, ndimsA, dimsA, Ar, Ai, isn, gdim, iopt))
+ {
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ /***********************************
+ * Return results in lhs argument *
+ ***********************************/
+
+ ReturnArguments(_pvCtx);
+
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+}
+
+
+int sci_dct_3args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt)
+{
+ /* API variables */
+ SciErr sciErr;
+ int *piAddr = NULL;
+
+ int *Sel = NULL;
+ int rank = 0;
+
+ /*FFTW specific library variable */
+ guru_dim_struct gdim = {0, NULL, 0, NULL};
+ /* local variable */
+ int ndims = 0;
+ int first_nonsingleton = -1;
+ int ih = 0;
+ int pd = 1; /* used to store prod(Dims(1:sel(k-1)))*/
+ int pds = 1; /* used to store prod(Dims(sel(k-1):sel(k)))*/
+ int i = 0, j = 0;
+
+ /* ignore singleton dimensions */
+ first_nonsingleton = -1;
+ ndims = 0;
+ for (i = 0; i < ndimsA; i++)
+ {
+ if (dimsA[i] > 1)
+ {
+ ndims++;
+ if (first_nonsingleton < 0)
+ {
+ first_nonsingleton = i;
+ }
+ }
+ }
+
+ /* void or scalar input gives void output or scalar*/
+ if (ndims == 0 )
+ {
+ AssignOutputVariable(_pvCtx, 1) = 1;
+ ReturnArguments(_pvCtx);
+ return 0;
+ }
+
+
+ /******************** get and check third argument (sel) ****************************************/
+ getVarAddressFromPosition(pvApiCtx, 3, &piAddr);
+ if (isVarMatrixType(pvApiCtx, piAddr) == 0)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d.\n"), fname, 3);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ sciErr = getVectorIntArg(pvApiCtx, 3, fname, &rank, &Sel);
+ if (sciErr.iErr)
+ {
+ Scierror(sciErr.iErr, getErrorMessage(sciErr));
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ FREE(Sel);
+ return 0;
+ }
+ /* size of Sel must be less than ndimsA */
+ if (rank <= 0 || rank >= ndimsA)
+ {
+ Scierror(999, _("%s: Wrong size for input argument #%d: Must be between %d and %d.\n"), fname, 3, 1, ndimsA - 1);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ FREE(Sel);
+ return 0;
+ }
+ /* check values of Sel[i] */
+ for (i = 0; i < rank; i++)
+ {
+ if (Sel[i] <= 0)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Positive integers expected.\n"), fname, 3);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ FREE(Sel);
+ return 0;
+ }
+ if (Sel[i] > ndimsA)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Elements must be less than %d.\n"), fname, 3, ndimsA);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ FREE(Sel);
+ return 0;
+ }
+ if (i > 0 && Sel[i] <= Sel[i - 1])
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Elements must be in increasing order.\n"), fname, 3);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ FREE(Sel);
+ return 0;
+ }
+ }
+
+ /* Create gdim struct */
+ gdim.rank = rank;
+ if ((gdim.dims = (fftw_iodim *)MALLOC(sizeof(fftw_iodim) * gdim.rank)) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ FREE(Sel);
+ return 0;
+ }
+
+ pd = 1; /* used to store prod(Dims(1:sel(k-1)))*/
+ pds = 1; /* used to store prod(Dims(sel(k-1):sel(k)))*/
+ j = 0;
+ for (i = 0; i < ndimsA; i++)
+ {
+ if (j >= gdim.rank)
+ {
+ break;
+ }
+ if (Sel[j] == i + 1)
+ {
+ gdim.dims[j].n = dimsA[i];
+ gdim.dims[j].is = pd;
+ gdim.dims[j].os = pd;
+ j++;
+ }
+ pd *= dimsA[i];
+ }
+ /* Compute howmany_rank based on jumps in the Sel sequence */
+ gdim.howmany_rank = 0;
+ if ((Sel[0] != 1) && (Sel[0] != ndimsA))
+ {
+ gdim.howmany_rank++;
+ }
+ for (i = 1; i <= rank - 1; i++)
+ {
+ if (Sel[i] != Sel[i - 1] + 1)
+ {
+ /*check if all dimensions between Sel[i-1]+1 and Sel[i]-1 are
+ equal to one, in this case they can be ignored and there is
+ no jump*/
+ for (j = Sel[i - 1] + 1; j <= Sel[i] - 1; j++)
+ {
+ if (dimsA[j - 1] != 1)
+ {
+ gdim.howmany_rank++;
+ break;
+ }
+ }
+ }
+ }
+
+ if ((Sel[rank - 1] != ndimsA) || (rank == 1))
+ {
+ gdim.howmany_rank++;
+ }
+ /* Fill the howmany_dims struct */
+ if (gdim.howmany_rank > 0)
+ {
+ /* it must be the case */
+ if ((gdim.howmany_dims = (fftw_iodim *)MALLOC(gdim.howmany_rank * sizeof(fftw_iodim))) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ FREE(Sel);
+ return 0;
+ }
+ pd = 1;
+ for (j = 1; j <= (Sel[0] - 1); j++)
+ {
+ pd *= dimsA[j - 1]; /*prod(Dims(1:(sel(1)-1)))*/
+ }
+ ih = 0;
+ if ((Sel[0] != 1) && (Sel[0] != ndimsA))
+ {
+ /* First seleted dimension */
+ gdim.howmany_dims[ih].is = 1;
+ gdim.howmany_dims[ih].os = 1;
+ gdim.howmany_dims[ih].n = pd;
+ ih++;
+ }
+ pd *= dimsA[Sel[0] - 1]; /*prod(Dims(1:sel(1)))*/
+ for (i = 1; i <= rank - 1; i++)
+ {
+ /* intermediate selected dimensions */
+ if (Sel[i] != Sel[i - 1] + 1)
+ {
+ pds = 1;
+ for (j = (Sel[i - 1] + 1); j <= (Sel[i] - 1); j++)
+ {
+ pds *= dimsA[j - 1]; /*prod(Dims(sel(i-1)+1:(sel(i)-1)))*/
+ }
+ /*check again if all dimensions between Sel[i-1]+1 and
+ Sel[i]-1 are equal to one, in this case they can be
+ ignored and there is no jump*/
+ for (j = (Sel[i - 1] + 1); j <= (Sel[i] - 1); j++)
+ {
+ if (dimsA[j - 1] != 1)
+ {
+ gdim.howmany_dims[ih].is = pd;
+ gdim.howmany_dims[ih].os = pd;
+ gdim.howmany_dims[ih].n = pds;
+ ih++;
+ break;
+ }
+ }
+ }
+ pd *= pds * dimsA[Sel[i] - 1]; /*prod(Dims(1:sel(i)))*/
+ }
+
+ if (Sel[rank - 1] != ndimsA)
+ {
+ /* last selected dimension*/
+ pds = 1;
+ for (j = (Sel[rank - 1] + 1); j <= ndimsA; j++)
+ {
+ pds *= dimsA[j - 1]; /*prod(Dims(sel(i-1)+1:(sel(i)-1)))*/
+ }
+ gdim.howmany_dims[ih].is = pd;
+ gdim.howmany_dims[ih].os = pd;
+ gdim.howmany_dims[ih].n = pds;
+ ih++;
+ }
+ else if (rank == 1)
+ {
+ /* the only selected dimension is the last one */
+ gdim.howmany_dims[ih].is = 1;
+ gdim.howmany_dims[ih].os = 1;
+ gdim.howmany_dims[ih].n = pd / dimsA[Sel[0] - 1];
+ ih++;
+ }
+ }
+
+ if (!sci_dct_gen(_pvCtx, fname, ndimsA, dimsA, Ar, Ai, isn, gdim, iopt))
+ {
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ FREE(Sel);
+ return 0;
+ }
+
+ /***********************************
+ * Return results in lhs argument *
+ ***********************************/
+
+ ReturnArguments(_pvCtx);
+
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+}
+
+int sci_dct_4args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt)
+{
+ /* API variables */
+ SciErr sciErr;
+ int *piAddr = NULL;
+
+ /* Input array variables */
+ int *Dim1 = NULL;
+ int ndims = 0;
+ int *Incr = NULL;
+ int nincr = 0;
+
+ /*FFTW specific library variable */
+ guru_dim_struct gdim = {0, NULL, 0, NULL};
+ /* input/output address for transform variables */
+
+ /* local variable */
+ int *Dim = NULL, *Sel = NULL;
+ int pd = 1;
+ int pds = 1;
+ int nd = 0;
+ int rank = 0;
+ int i = 0, j = 0, k = 0, lA = 1;
+
+ for (i = 0; i < ndimsA; i++)
+ {
+ lA *= dimsA[i];
+ }
+
+ /* void or scalar input gives void output or scalar*/
+ if (lA <= 1 )
+ {
+ AssignOutputVariable(_pvCtx, 1) = 1;
+ ReturnArguments(_pvCtx);
+ return 0;
+ }
+
+ /******************** get and check third argument (dim) ****************************************/
+ getVarAddressFromPosition(pvApiCtx, 3, &piAddr);
+ if (isVarMatrixType(pvApiCtx, piAddr) == 0)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d.\n"), fname, 3);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ sciErr = getVectorIntArg(pvApiCtx, 3, fname, &ndims, &Dim1);
+ if (sciErr.iErr)
+ {
+ Scierror(sciErr.iErr, getErrorMessage(sciErr));
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ /* check values of Dim1[i] */
+ pd = 1;
+ for (i = 0; i < ndims; i++)
+ {
+ if (Dim1[i] <= 1)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Elements must be greater than %d.\n"), fname, 3, 1);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ pd *= Dim1[i];
+ }
+ if ( pd > lA)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Must be less than %d.\n"), fname, 3, lA);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if (lA % pd)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Must be a divisor of %d.\n"), fname, 3, lA);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ /******************** get and check fourth argument (incr) ****************************************/
+ sciErr = getVectorIntArg(pvApiCtx, 4, fname, &nincr, &Incr);
+ if (sciErr.iErr)
+ {
+ Scierror(sciErr.iErr, getErrorMessage(sciErr));
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if (nincr != ndims)
+ {
+ Scierror(999, _("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"), fname, 3, 4);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ /* check values of Incr[i] */
+ if (Incr[0] <= 0)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Positive integers expected.\n"), fname, 4);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ for (i = 0; i < ndims; i++)
+ {
+ if (lA % Incr[i])
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Elements must be divisors of %d.\n"), fname, 3, lA);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if (i > 0 && (Incr[i] <= Incr[i - 1]))
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Elements must be in increasing ""order.\n"), fname, 4);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ }
+ if ((Dim = (int *)MALLOC((2 * ndims + 1) * sizeof(int))) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if ((Sel = (int *)MALLOC((ndims) * sizeof(int))) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+
+ /*Transform Dim1 and Incr into Dim and Sel and check validity*/
+
+ nd = 0;
+ pd = 1;
+ if (Incr[0] != 1)
+ {
+ Dim[nd++] = Incr[0];
+ pd *= Incr[0];
+ }
+ Dim[nd++] = Dim1[0];
+ pd *= Dim1[0];
+ Sel[0] = nd;
+
+ for (k = 1; k < ndims; k++)
+ {
+ if (Incr[k] % pd != 0)
+ {
+ Scierror(999, _("%s: Incompatible input arguments #%d and #%d.\n"), fname, 3, 4);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if (Incr[k] != pd)
+ {
+ Dim[nd++] = (int)(Incr[k] / pd);
+ pd = Incr[k];
+ }
+ Dim[nd++] = Dim1[k];
+ pd *= Dim1[k];
+ Sel[k] = nd;
+ }
+ if (pd < lA)
+ {
+ if (lA % pd != 0)
+ {
+ Scierror(999, _("%s: Incompatible input arguments #%d and #%d.\n"), fname, 3, 4);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ Dim[nd++] = (int)(lA / pd);
+ }
+
+ rank = ndims;
+ ndims = nd;
+ /* now same algorithm than sci_dct_3args applies */
+ /* Create gdim struct */
+ gdim.rank = rank;
+ if ((gdim.dims = (fftw_iodim *)MALLOC(sizeof(fftw_iodim) * gdim.rank)) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ pd = 1; /* used to store prod(Dims(1:sel(k-1)))*/
+ pds = 1; /* used to store prod(Dims(sel(k-1):sel(k)))*/
+ j = 0;
+ for (i = 0; i < ndims; i++)
+ {
+ if (j >= gdim.rank)
+ {
+ break;
+ }
+ if (Sel[j] == i + 1)
+ {
+ gdim.dims[j].n = Dim[i];
+ gdim.dims[j].is = pd;
+ gdim.dims[j].os = pd;
+ j++;
+ }
+ pd *= Dim[i];
+ }
+ /* Compute howmany_rank based on jumps in the Sel sequence */
+ gdim.howmany_rank = 0;
+ if ((Sel[0] != 1) && (Sel[0] != ndims))
+ {
+ gdim.howmany_rank++;
+ }
+
+ for (i = 1; i <= rank - 1; i++)
+ {
+ if (Sel[i] != Sel[i - 1] + 1)
+ {
+ /*check if all dimensions between Sel[i-1]+1 and Sel[i]-1 are
+ equal to one, in this case they can be ignored and there is
+ no jump*/
+ for (j = Sel[i - 1] + 1; j <= Sel[i] - 1; j++)
+ {
+ if (Dim[j - 1] != 1)
+ {
+ gdim.howmany_rank++;
+ break;
+ }
+ }
+ }
+ }
+ if ((Sel[rank - 1] != ndims) || (rank == 1))
+ {
+ gdim.howmany_rank++;
+ }
+ /* Fill the howmany_dims struct */
+ if (gdim.howmany_rank > 0)
+ {
+ /* it must be the case */
+ int ih = 0;
+
+ if ((gdim.howmany_dims = (fftw_iodim *)MALLOC(gdim.howmany_rank * sizeof(fftw_iodim))) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ pd = 1;
+ for (j = 1; j <= (Sel[0] - 1); j++)
+ {
+ pd *= Dim[j - 1]; /*prod(Dims(1:(sel(1)-1)))*/
+ }
+ ih = 0;
+ if ((Sel[0] != 1) && (Sel[0] != ndims))
+ {
+ /* First seleted dimension */
+ gdim.howmany_dims[ih].is = 1;
+ gdim.howmany_dims[ih].os = 1;
+ gdim.howmany_dims[ih].n = pd;
+ ih++;
+ }
+ pd *= Dim[Sel[0] - 1]; /*prod(Dims(1:sel(1)))*/
+
+ for (i = 1; i <= rank - 1; i++)
+ {
+ /* intermediate selected dimensions */
+ if (Sel[i] != Sel[i - 1] + 1)
+ {
+ pds = 1;
+ for (j = (Sel[i - 1] + 1); j <= (Sel[i] - 1); j++)
+ {
+ pds *= Dim[j - 1]; /*prod(Dims(sel(i-1)+1:(sel(i)-1)))*/
+ }
+ /*check again if all dimensions between Sel[i-1]+1 and
+ Sel[i]-1 are equal to one, in this case they can be
+ ignored and there is no jump*/
+ for (j = (Sel[i - 1] + 1); j <= (Sel[i] - 1); j++)
+ {
+ if (Dim[j - 1] != 1)
+ {
+ gdim.howmany_dims[ih].is = pd;
+ gdim.howmany_dims[ih].os = pd;
+ gdim.howmany_dims[ih].n = pds;
+ ih++;
+ break;
+ }
+ }
+ }
+
+ pd *= pds * Dim[Sel[i] - 1]; /*prod(Dims(1:sel(i)))*/
+ }
+
+ if (Sel[rank - 1] != ndims)
+ {
+ /* last selected dimension*/
+ pds = 1;
+ for (j = (Sel[rank - 1] + 1); j <= ndims; j++)
+ {
+ pds *= Dim[j - 1]; /*prod(Dims(sel(i-1)+1:(sel(i)-1)))*/
+ }
+ gdim.howmany_dims[ih].is = pd;
+ gdim.howmany_dims[ih].os = pd;
+ gdim.howmany_dims[ih].n = pds;
+ ih++;
+ }
+ else if (rank == 1) /* the only selected dimension is the last one */
+ {
+ gdim.howmany_dims[ih].is = 1;
+ gdim.howmany_dims[ih].os = 1;
+ gdim.howmany_dims[ih].n = pd / Dim[Sel[0] - 1];
+ ih++;
+ }
+ }
+ if (!sci_dct_gen(_pvCtx, fname, ndimsA, dimsA, Ar, Ai, isn, gdim, iopt))
+ {
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ /***********************************
+ * Return results in lhs argument *
+ ***********************************/
+
+ ReturnArguments(_pvCtx);
+
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
+int sci_dct_gen(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, guru_dim_struct gdim, int iopt)
+{
+
+ /* Input array variables */
+ int isrealA = (Ai == NULL), lA = 1;
+ /*for MKL*/
+
+ /*FFTW specific library variable */
+ enum Plan_Type type;
+ fftw_r2r_kind *kind = NULL;
+ fftw_plan p = NULL;
+
+ /* for MKL special cases */
+ int * dims1 = NULL;
+ int * incr1 = NULL;
+
+ /* local variable */
+ int one = 1;
+ int i = 0;
+ int errflag = 0;
+
+ for (i = 0; i < ndimsA; i++)
+ {
+ lA *= dimsA[i];
+ }
+
+
+ AssignOutputVariable(_pvCtx, 1) = 1;/* assume inplace transform*/
+ if (isn == 1 && iopt == 0)
+ {
+ /* normalization */
+ if (dct_scale_array(Ar, Ai, gdim, isn) == -1)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ }
+ /* use inplace transform*/
+ type = R2R_PLAN;
+ if ((kind = (fftw_r2r_kind *)MALLOC(sizeof(fftw_r2r_kind) * gdim.rank)) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+
+ if (isn == -1)
+ {
+ if (iopt == 0 || iopt == 2)
+ for (i = 0; i < gdim.rank; i++)
+ {
+ kind[i] = FFTW_REDFT10;
+ }
+ else if (iopt == 1)
+ for (i = 0; i < gdim.rank; i++)
+ {
+ kind[i] = FFTW_REDFT00;
+ }
+ else if (iopt == 4)
+ for (i = 0; i < gdim.rank; i++)
+ {
+ kind[i] = FFTW_REDFT11;
+ }
+ }
+ else
+ {
+ if (iopt == 0 || iopt == 3)
+ for (i = 0; i < gdim.rank; i++)
+ {
+ kind[i] = FFTW_REDFT01;
+ }
+ else if (iopt == 1)
+ for (i = 0; i < gdim.rank; i++)
+ {
+ kind[i] = FFTW_REDFT00;
+ }
+ else if (iopt == 4)
+ for (i = 0; i < gdim.rank; i++)
+ {
+ kind[i] = FFTW_REDFT11;
+ }
+ }
+
+ if (!WITHMKL || gdim.howmany_rank <= 1)
+ {
+ /* Set Plan */
+ p = GetFFTWPlan(type, &gdim, Ar, NULL, Ar, NULL, getCurrentFftwFlags(), isn , kind, &errflag);
+ if (errflag == 1)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ else if (errflag == 2)
+ {
+ Scierror(999, _("%s: Creation of requested fftw plan failed.\n"), fname);
+ return 0;
+ }
+ /* execute FFTW plan */
+ ExecuteFFTWPlan(type, p, Ar, NULL, Ar, NULL);
+ if (!isrealA)
+ {
+ ExecuteFFTWPlan(type, p, Ai, NULL, Ai, NULL);
+ }
+ }
+ else
+ {
+ /*FFTW MKL does not implement yet guru plan with howmany_rank>1 */
+ /* associated loops described in gdim.howmany_rank and gdim.howmany_dims */
+ /* are implemented here by a set of call with howmany_rank==1 */
+ fftw_iodim *howmany_dims = gdim.howmany_dims;
+ int howmany_rank = gdim.howmany_rank;
+ int i1 = 0, i2 = 0;
+ int nloop = 0;
+ int t = 0;
+
+
+ gdim.howmany_rank = 0;
+ gdim.howmany_dims = NULL;
+
+ p = GetFFTWPlan(type, &gdim, Ar, NULL, Ar, NULL, getCurrentFftwFlags(), isn , kind, &errflag);
+ if (errflag == 1)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(dims1);
+ FREE(incr1);
+ return 0;
+ }
+ else if (errflag == 2)
+ {
+ Scierror(999, _("%s: Creation of requested fftw plan failed.\n"), fname);
+ FREE(dims1);
+ FREE(incr1);
+ return 0;
+ }
+
+ /* flatten nested loops: replace howmany_rank nested loops by a single one*/
+ /* Build temporary arrays used by flatened loop */
+ if ((dims1 = (int *)MALLOC(sizeof(int) * howmany_rank)) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(dims1);
+ FREE(incr1);
+ return 0;
+ }
+ dims1[0] = howmany_dims[0].n;
+ for (i = 1; i < howmany_rank; i++)
+ {
+ dims1[i] = dims1[i - 1] * howmany_dims[i].n;
+ }
+ nloop = dims1[howmany_rank - 1];
+
+ if ((incr1 = (int *)MALLOC(sizeof(int) * howmany_rank)) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(dims1);
+ FREE(incr1);
+ return 0;
+ }
+ t = 1;
+ for (i = 0; i < howmany_rank; i++)
+ {
+ t += (howmany_dims[i].n - 1) * howmany_dims[i].is;
+ incr1[i] = t;
+ }
+ /*loop on each "plan" */
+ i = 0; /*index on the first plan entry */
+ for (i1 = 1; i1 <= nloop; i1++)
+ {
+ /* the input and output are assumed to be complex because
+ within MKL real cases are transformed to complex ones in
+ previous steps of sci_dct_gen*/
+ ExecuteFFTWPlan(type, p, &Ar[i], NULL, &Ar[i], NULL);
+ if (!isrealA)
+ {
+ ExecuteFFTWPlan(type, p, &Ai[i], NULL, &Ai[i], NULL);
+ }
+
+ i += howmany_dims[0].is;
+ /* check if a loop ends*/
+ for (i2 = howmany_rank - 2; i2 >= 0; i2--)
+ {
+ if ((i1 % dims1[i2]) == 0)
+ {
+ /*loop on dimension i2 ends, compute jump on the first plan entry index*/
+ i += howmany_dims[i2 + 1].is - incr1[i2];
+ break;
+ }
+ }
+ }
+ /* free temporary arrays */
+ FREE(dims1);
+ FREE(incr1);
+ /* reset initial value of gdim for post treatment*/
+ gdim.howmany_rank = howmany_rank;
+ gdim.howmany_dims = howmany_dims;
+
+ }
+ if (isn == -1 && iopt == 0)
+ {
+ /* normalization */
+
+ if (dct_scale_array(Ar, Ai, gdim, isn) == -1)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ }
+ return 1;
+}
+
diff --git a/modules/fftw/sci_gateway/c/sci_disposefftwlibrary.c b/modules/fftw/sci_gateway/c/sci_disposefftwlibrary.c
new file mode 100755
index 000000000..2c43cdc45
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/sci_disposefftwlibrary.c
@@ -0,0 +1,47 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2006 - INRIA - Allan CORNET
+* Copyright (C) 2012 - Scilab Enterprises - Cedric Delamarre
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+
+#include "callfftw.h"
+#include "fftwlibname.h"
+#include "gw_fftw.h"
+#include "localization.h"
+#include "api_scilab.h"
+#include "Scierror.h"
+
+/*--------------------------------------------------------------------------*/
+int sci_disposefftwlibrary(char *fname, unsigned long fname_len)
+{
+ int iErr;
+
+ if (DisposeFFTWLibrary())
+ {
+ iErr = createScalarBoolean(pvApiCtx, nbInputArgument(pvApiCtx) + 1, 1); // true
+ }
+ else
+ {
+ iErr = createScalarBoolean(pvApiCtx, nbInputArgument(pvApiCtx) + 1, 0); // false
+ }
+ freefftwlibname();
+
+ if (iErr)
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ return iErr;
+ }
+
+ AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1;
+ ReturnArguments(pvApiCtx);
+
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/sci_gateway/c/sci_dst.c b/modules/fftw/sci_gateway/c/sci_dst.c
new file mode 100755
index 000000000..0eda646d5
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/sci_dst.c
@@ -0,0 +1,1203 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2012 - INRIA - Serge STEER
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+/*--------------------------------------------------------------------------*/
+#include "stack-c.h"
+#include "fftw_utilities.h"
+#include "sci_data_utilities.h"
+#include "callfftw.h"
+#include "MALLOC.h"
+#include "gw_fftw.h"
+#include "api_scilab.h"
+#include "localization.h"
+#include "Scierror.h"
+#include "BOOL.h"
+#include "sci_data_utilities.h"
+
+
+/*--------------------------------------------------------------------------*/
+extern void C2F(dscal)(int *n, double *da, double *dx, int *incx); /* blas routine */
+extern void C2F(dset)(int *n, double *da, double *dx, int *incx); /* blas routine */
+/*--------------------------------------------------------------------------*/
+static int sci_dst_gen(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, guru_dim_struct gdim, int iopt);
+static int sci_dst_2args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt);
+static int sci_dst_3args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt);
+static int sci_dst_4args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt);
+/*--------------------------------------------------------------------------*/
+
+extern int WITHMKL;
+/* fftw function.
+*
+* Scilab Calling sequence :
+* dst(A )
+* dst(A,sign )
+* dst(A,sel,sign )
+* dst(A,sign,dim,incr )
+*
+* Input : A : a scilab double complex or real vector, matrix or hypermatrix
+*
+* sign : a scilab double or integer scalar (-1 or 1): the sign
+* in the exponential component
+*
+* sel : a scilab double or integer vector, the selection of dimensions
+
+* dim : a scilab double or integer vector: the dimensions
+* of the Fast Fourier Transform to perform
+*
+* incr : a scilab double or integer vector: the increments
+* of the Fast Fourier Transform to perform
+*
+* Output : a scilab double complex or real array with same shape as A that
+* gives the result of the transform.
+*
+*/
+int sci_dst(char *fname, unsigned long fname_len)
+{
+ SciErr sciErr;
+ int *piAddr = NULL;
+ int rhs = Rhs;
+ int iTypeOne = 0;
+ int iopt = 0;
+
+ int ndimsA = 0;
+ int *dimsA = NULL;
+ double *Ar = NULL, *Ai = NULL;
+ char *option = NULL;
+ int isn = FFTW_FORWARD;
+ WITHMKL = withMKL();
+ /****************************************
+ * Basic constraints on rhs arguments *
+ ****************************************/
+
+ /* check min/max lhs/rhs arguments of scilab function */
+ CheckRhs(1, 4);
+ CheckLhs(1, 1);
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
+ return 0;
+ }
+
+ sciErr = getVarType(pvApiCtx, piAddr, &iTypeOne);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
+ return 0;
+ }
+
+ if ((iTypeOne == sci_list) || (iTypeOne == sci_tlist))
+ {
+ OverLoad(1);
+ return 0;
+ }
+
+ if (iTypeOne == sci_mlist)
+ {
+ /* We allow overload for not hypermatrix type */
+ if (!isHyperMatrixMlist(pvApiCtx, piAddr))
+ {
+ OverLoad(1);
+ return 0;
+ }
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, Rhs, &piAddr);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, Rhs);
+ return 0;
+ }
+
+ if (isStringType(pvApiCtx, piAddr)) /* dst(...,option); */
+ {
+ if (isScalar(pvApiCtx, piAddr))
+ {
+ if (getAllocatedSingleString(pvApiCtx, piAddr, &option) == 0)
+ {
+ rhs = Rhs - 1;
+ }
+ else
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ }
+ }
+
+ /******************** Checking if isn is given ************************************************/
+ if (rhs == 1) /*only one rhs argument: forward dst*/
+ {
+ isn = FFTW_FORWARD; /* default value */
+ }
+ else /*get isn out of second argument*/
+ {
+ sciErr = getScalarIntArg(pvApiCtx, 2, fname, &isn);
+ if (sciErr.iErr)
+ {
+ Scierror(sciErr.iErr, getErrorMessage(sciErr));
+ return 0;
+ }
+ /* check value of second rhs argument */
+ if ((isn != FFTW_FORWARD) && (isn != FFTW_BACKWARD))
+ {
+ Scierror(53, _("%s: Wrong value for input argument #%d: %d or %d expected.\n"), fname, 2, FFTW_FORWARD, FFTW_BACKWARD);
+ return 0;
+ }
+ }
+
+ if (option != NULL)
+ {
+ if (isn == FFTW_FORWARD)
+ {
+ if (strcmp("dst1", option) == 0)
+ {
+ iopt = 1;
+ }
+ else if (strcmp("dst2", option) == 0)
+ {
+ iopt = 2;
+ }
+ else if (strcmp("dst", option) == 0)
+ {
+ iopt = 0;
+ }
+ else if (strcmp("dst4", option) == 0)
+ {
+ iopt = 4;
+ }
+ else
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"), fname, Rhs,
+ "\"dst\", \"dst1\",\"dst2\",\"dst4\"");
+ freeAllocatedSingleString(option);
+ option = NULL;
+ return 0;
+ }
+ }
+ else
+ {
+ if (strcmp("dst1", option) == 0)
+ {
+ iopt = 1;
+ }
+ else if (strcmp("dst3", option) == 0)
+ {
+ iopt = 3;
+ }
+ else if (strcmp("idst", option) == 0)
+ {
+ iopt = 0;
+ }
+ else if (strcmp("dst4", option) == 0)
+ {
+ iopt = 4;
+ }
+ else
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"), fname, Rhs,
+ "\"idst\", \"dst1\",\"dst3\",\"dst4\"");
+ freeAllocatedSingleString(option);
+ option = NULL;
+ return 0;
+ }
+
+ }
+ freeAllocatedSingleString(option);
+ option = NULL;
+
+ }
+
+
+ /******************** getting the array A ************************************************/
+ getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
+ if (!getArrayOfDouble(pvApiCtx, piAddr, &ndimsA, &dimsA, &Ar, &Ai))
+ {
+ Scierror(999, _("%s: Wrong type for argument #%d: Array of floating point numbers expected.\n"),
+ fname, 1);
+ return 0;
+ }
+
+
+ /******************** Select proper method ************************************************/
+ if (rhs < 3)
+ {
+ /* dst(A ,sign)*/
+ sci_dst_2args(pvApiCtx, fname, ndimsA, dimsA, Ar, Ai, isn, iopt);
+ }
+ else if (rhs == 3)
+ {
+ /* dst(A ,sign ,sel)*/
+ sci_dst_3args(pvApiCtx, fname, ndimsA, dimsA, Ar, Ai, isn, iopt);
+ }
+ else if (rhs == 4)
+ {
+ /* dst(A ,sign ,dim,incr)*/
+ sci_dst_4args(pvApiCtx, fname, ndimsA, dimsA, Ar, Ai, isn, iopt);
+ }
+
+ return 0;
+}
+
+int sci_dst_2args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt)
+{
+ /*FFTW specific library variable */
+ guru_dim_struct gdim = {0, NULL, 0, NULL};
+
+ /* local variable */
+ int ndims = 0; /* number of non singleton dimensions */
+ int first_nonsingleton = -1;
+ int i = 0, j = 0;
+ int prd = 1;
+
+ /* ignore singleton dimensions */
+ first_nonsingleton = -1;
+ ndims = 0;
+ for (i = 0; i < ndimsA; i++)
+ {
+ if (dimsA[i] > 1)
+ {
+ ndims++;
+ if (first_nonsingleton < 0)
+ {
+ first_nonsingleton = i;
+ }
+ }
+ }
+
+ /* void or scalar input gives void output or scalar*/
+ if (ndims == 0 )
+ {
+ AssignOutputVariable(_pvCtx, 1) = 1;
+ ReturnArguments(_pvCtx);
+ return 0;
+ }
+
+ gdim.rank = ndims;
+ if ((gdim.dims = (fftw_iodim *)MALLOC(sizeof(fftw_iodim) * gdim.rank)) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ j = 0;
+ prd = 1;
+ for (i = (first_nonsingleton); i < ndimsA; i++)
+ {
+ if (dimsA[i] > 1)
+ {
+ gdim.dims[j].n = dimsA[i];
+ gdim.dims[j].is = prd;
+ gdim.dims[j].os = prd;
+ prd *= dimsA[i];
+ j++;
+ }
+ }
+ gdim.howmany_rank = 0;
+ gdim.howmany_dims = NULL;
+
+
+ if (!sci_dst_gen(_pvCtx, fname, ndimsA, dimsA, Ar, Ai, isn, gdim, iopt))
+ {
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ /***********************************
+ * Return results in lhs argument *
+ ***********************************/
+
+ ReturnArguments(_pvCtx);
+
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+}
+
+
+int sci_dst_3args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt)
+{
+ /* API variables */
+ SciErr sciErr;
+ int *piAddr = NULL;
+
+ int *Sel = NULL;
+ int rank = 0;
+
+ /*FFTW specific library variable */
+ guru_dim_struct gdim = {0, NULL, 0, NULL};
+ /* local variable */
+ int ndims = 0;
+ int first_nonsingleton = -1;
+ int ih = 0;
+ int pd = 1; /* used to store prod(Dims(1:sel(k-1)))*/
+ int pds = 1; /* used to store prod(Dims(sel(k-1):sel(k)))*/
+ int i = 0, j = 0;
+
+ /* ignore singleton dimensions */
+ first_nonsingleton = -1;
+ ndims = 0;
+ for (i = 0; i < ndimsA; i++)
+ {
+ if (dimsA[i] > 1)
+ {
+ ndims++;
+ if (first_nonsingleton < 0)
+ {
+ first_nonsingleton = i;
+ }
+ }
+ }
+
+ /* void or scalar input gives void output or scalar*/
+ if (ndims == 0 )
+ {
+ AssignOutputVariable(_pvCtx, 1) = 1;
+ ReturnArguments(_pvCtx);
+ return 0;
+ }
+
+
+ /******************** get and check third argument (sel) ****************************************/
+ getVarAddressFromPosition(pvApiCtx, 3, &piAddr);
+ if (isVarMatrixType(pvApiCtx, piAddr) == 0)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d.\n"), fname, 3);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ sciErr = getVectorIntArg(pvApiCtx, 3, fname, &rank, &Sel);
+ if (sciErr.iErr)
+ {
+ Scierror(sciErr.iErr, getErrorMessage(sciErr));
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ /* size of Sel must be less than ndimsA */
+ if (rank <= 0 || rank >= ndimsA)
+ {
+ Scierror(999, _("%s: Wrong size for input argument #%d: Must be between %d and %d.\n"), fname, 3, 1, ndimsA - 1);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ /* check values of Sel[i] */
+ for (i = 0; i < rank; i++)
+ {
+ if (Sel[i] <= 0)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Positive integers expected.\n"), fname, 3);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if (Sel[i] > ndimsA)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Elements must be less than %d.\n"), fname, 3, ndimsA);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if (i > 0 && Sel[i] <= Sel[i - 1])
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Elements must be in increasing order.\n"), fname, 3);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ }
+
+ /* Create gdim struct */
+ gdim.rank = rank;
+ if ((gdim.dims = (fftw_iodim *)MALLOC(sizeof(fftw_iodim) * gdim.rank)) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ pd = 1; /* used to store prod(Dims(1:sel(k-1)))*/
+ pds = 1; /* used to store prod(Dims(sel(k-1):sel(k)))*/
+ j = 0;
+ for (i = 0; i < ndimsA; i++)
+ {
+ if (j >= gdim.rank)
+ {
+ break;
+ }
+ if (Sel[j] == i + 1)
+ {
+ gdim.dims[j].n = dimsA[i];
+ gdim.dims[j].is = pd;
+ gdim.dims[j].os = pd;
+ j++;
+ }
+ pd *= dimsA[i];
+ }
+ /* Compute howmany_rank based on jumps in the Sel sequence */
+ gdim.howmany_rank = 0;
+ if ((Sel[0] != 1) && (Sel[0] != ndimsA))
+ {
+ gdim.howmany_rank++;
+ }
+ for (i = 1; i <= rank - 1; i++)
+ {
+ if (Sel[i] != Sel[i - 1] + 1)
+ {
+ /*check if all dimensions between Sel[i-1]+1 and Sel[i]-1 are
+ equal to one, in this case they can be ignored and there is
+ no jump*/
+ for (j = Sel[i - 1] + 1; j <= Sel[i] - 1; j++)
+ {
+ if (dimsA[j - 1] != 1)
+ {
+ gdim.howmany_rank++;
+ break;
+ }
+ }
+ }
+ }
+
+ if ((Sel[rank - 1] != ndimsA) || (rank == 1))
+ {
+ gdim.howmany_rank++;
+ }
+ /* Fill the howmany_dims struct */
+ if (gdim.howmany_rank > 0)
+ {
+ /* it must be the case */
+ if ((gdim.howmany_dims = (fftw_iodim *)MALLOC(gdim.howmany_rank * sizeof(fftw_iodim))) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ pd = 1;
+ for (j = 1; j <= (Sel[0] - 1); j++)
+ {
+ pd *= dimsA[j - 1]; /*prod(Dims(1:(sel(1)-1)))*/
+ }
+ ih = 0;
+ if ((Sel[0] != 1) && (Sel[0] != ndimsA))
+ {
+ /* First seleted dimension */
+ gdim.howmany_dims[ih].is = 1;
+ gdim.howmany_dims[ih].os = 1;
+ gdim.howmany_dims[ih].n = pd;
+ ih++;
+ }
+ pd *= dimsA[Sel[0] - 1]; /*prod(Dims(1:sel(1)))*/
+ for (i = 1; i <= rank - 1; i++)
+ {
+ /* intermediate selected dimensions */
+ if (Sel[i] != Sel[i - 1] + 1)
+ {
+ pds = 1;
+ for (j = (Sel[i - 1] + 1); j <= (Sel[i] - 1); j++)
+ {
+ pds *= dimsA[j - 1]; /*prod(Dims(sel(i-1)+1:(sel(i)-1)))*/
+ }
+ /*check again if all dimensions between Sel[i-1]+1 and
+ Sel[i]-1 are equal to one, in this case they can be
+ ignored and there is no jump*/
+ for (j = (Sel[i - 1] + 1); j <= (Sel[i] - 1); j++)
+ {
+ if (dimsA[j - 1] != 1)
+ {
+ gdim.howmany_dims[ih].is = pd;
+ gdim.howmany_dims[ih].os = pd;
+ gdim.howmany_dims[ih].n = pds;
+ ih++;
+ break;
+ }
+ }
+ }
+ pd *= pds * dimsA[Sel[i] - 1]; /*prod(Dims(1:sel(i)))*/
+ }
+
+ if (Sel[rank - 1] != ndimsA)
+ {
+ /* last selected dimension*/
+ pds = 1;
+ for (j = (Sel[rank - 1] + 1); j <= ndimsA; j++)
+ {
+ pds *= dimsA[j - 1]; /*prod(Dims(sel(i-1)+1:(sel(i)-1)))*/
+ }
+ gdim.howmany_dims[ih].is = pd;
+ gdim.howmany_dims[ih].os = pd;
+ gdim.howmany_dims[ih].n = pds;
+ ih++;
+ }
+ else if (rank == 1)
+ {
+ /* the only selected dimension is the last one */
+ gdim.howmany_dims[ih].is = 1;
+ gdim.howmany_dims[ih].os = 1;
+ gdim.howmany_dims[ih].n = pd / dimsA[Sel[0] - 1];
+ ih++;
+ }
+ }
+
+ if (!sci_dst_gen(_pvCtx, fname, ndimsA, dimsA, Ar, Ai, isn, gdim, iopt))
+ {
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ /***********************************
+ * Return results in lhs argument *
+ ***********************************/
+
+ ReturnArguments(_pvCtx);
+
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+}
+
+int sci_dst_4args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt)
+{
+ /* API variables */
+ SciErr sciErr;
+ int *piAddr = NULL;
+
+ /* Input array variables */
+ int *Dim1 = NULL;
+ int ndims = 0;
+ int *Incr = NULL;
+ int nincr = 0;
+
+ /*FFTW specific library variable */
+ guru_dim_struct gdim = {0, NULL, 0, NULL};
+ /* input/output address for transform variables */
+
+ /* local variable */
+ int *Dim = NULL, *Sel = NULL;
+ int pd = 1;
+ int pds = 1;
+ int nd = 0;
+ int rank = 0;
+ int i = 0, j = 0, k = 0, lA = 1;
+
+ for (i = 0; i < ndimsA; i++)
+ {
+ lA *= dimsA[i];
+ }
+
+ /* void or scalar input gives void output or scalar*/
+ if (lA <= 1 )
+ {
+ AssignOutputVariable(_pvCtx, 1) = 1;
+ ReturnArguments(_pvCtx);
+ return 0;
+ }
+
+ /******************** get and check third argument (dim) ****************************************/
+ getVarAddressFromPosition(pvApiCtx, 3, &piAddr);
+ if (isVarMatrixType(pvApiCtx, piAddr) == 0)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d.\n"), fname, 3);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ sciErr = getVectorIntArg(pvApiCtx, 3, fname, &ndims, &Dim1);
+ if (sciErr.iErr)
+ {
+ Scierror(sciErr.iErr, getErrorMessage(sciErr));
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ /* check values of Dim1[i] */
+ pd = 1;
+ for (i = 0; i < ndims; i++)
+ {
+ if (Dim1[i] <= 1)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Elements must be greater than %d.\n"), fname, 3, 1);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ pd *= Dim1[i];
+ }
+ if ( pd > lA)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Must be less than %d.\n"), fname, 3, lA);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if (lA % pd)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Must be a divisor of %d.\n"), fname, 3, lA);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ /******************** get and check fourth argument (incr) ****************************************/
+ sciErr = getVectorIntArg(pvApiCtx, 4, fname, &nincr, &Incr);
+ if (sciErr.iErr)
+ {
+ Scierror(sciErr.iErr, getErrorMessage(sciErr));
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if (nincr != ndims)
+ {
+ Scierror(999, _("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"), fname, 3, 4);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ /* check values of Incr[i] */
+ if (Incr[0] <= 0)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Positive integers expected.\n"), fname, 4);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ for (i = 0; i < ndims; i++)
+ {
+ if (lA % Incr[i])
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Elements must be divisors of %d.\n"), fname, 3, lA);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if (i > 0 && (Incr[i] <= Incr[i - 1]))
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Elements must be in increasing ""order.\n"), fname, 4);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ }
+ if ((Dim = (int *)MALLOC((2 * ndims + 1) * sizeof(int))) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if ((Sel = (int *)MALLOC((ndims) * sizeof(int))) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+
+ /*Transform Dim1 and Incr into Dim and Sel and check validity*/
+
+ nd = 0;
+ pd = 1;
+ if (Incr[0] != 1)
+ {
+ Dim[nd++] = Incr[0];
+ pd *= Incr[0];
+ }
+ Dim[nd++] = Dim1[0];
+ pd *= Dim1[0];
+ Sel[0] = nd;
+
+ for (k = 1; k < ndims; k++)
+ {
+ if (Incr[k] % pd != 0)
+ {
+ Scierror(999, _("%s: Incompatible input arguments #%d and #%d.\n"), fname, 3, 4);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if (Incr[k] != pd)
+ {
+ Dim[nd++] = (int)(Incr[k] / pd);
+ pd = Incr[k];
+ }
+ Dim[nd++] = Dim1[k];
+ pd *= Dim1[k];
+ Sel[k] = nd;
+ }
+ if (pd < lA)
+ {
+ if (lA % pd != 0)
+ {
+ Scierror(999, _("%s: Incompatible input arguments #%d and #%d.\n"), fname, 3, 4);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ Dim[nd++] = (int)(lA / pd);
+ }
+
+ rank = ndims;
+ ndims = nd;
+ /* now same algorithm than sci_dst_3args applies */
+ /* Create gdim struct */
+ gdim.rank = rank;
+ if ((gdim.dims = (fftw_iodim *)MALLOC(sizeof(fftw_iodim) * gdim.rank)) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ pd = 1; /* used to store prod(Dims(1:sel(k-1)))*/
+ pds = 1; /* used to store prod(Dims(sel(k-1):sel(k)))*/
+ j = 0;
+ for (i = 0; i < ndims; i++)
+ {
+ if (j >= gdim.rank)
+ {
+ break;
+ }
+ if (Sel[j] == i + 1)
+ {
+ gdim.dims[j].n = Dim[i];
+ gdim.dims[j].is = pd;
+ gdim.dims[j].os = pd;
+ j++;
+ }
+ pd *= Dim[i];
+ }
+ /* Compute howmany_rank based on jumps in the Sel sequence */
+ gdim.howmany_rank = 0;
+ if ((Sel[0] != 1) && (Sel[0] != ndims))
+ {
+ gdim.howmany_rank++;
+ }
+
+ for (i = 1; i <= rank - 1; i++)
+ {
+ if (Sel[i] != Sel[i - 1] + 1)
+ {
+ /*check if all dimensions between Sel[i-1]+1 and Sel[i]-1 are
+ equal to one, in this case they can be ignored and there is
+ no jump*/
+ for (j = Sel[i - 1] + 1; j <= Sel[i] - 1; j++)
+ {
+ if (Dim[j - 1] != 1)
+ {
+ gdim.howmany_rank++;
+ break;
+ }
+ }
+ }
+ }
+ if ((Sel[rank - 1] != ndims) || (rank == 1))
+ {
+ gdim.howmany_rank++;
+ }
+ /* Fill the howmany_dims struct */
+ if (gdim.howmany_rank > 0)
+ {
+ /* it must be the case */
+ int ih = 0;
+
+ if ((gdim.howmany_dims = (fftw_iodim *)MALLOC(gdim.howmany_rank * sizeof(fftw_iodim))) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ pd = 1;
+ for (j = 1; j <= (Sel[0] - 1); j++)
+ {
+ pd *= Dim[j - 1]; /*prod(Dims(1:(sel(1)-1)))*/
+ }
+ ih = 0;
+ if ((Sel[0] != 1) && (Sel[0] != ndims))
+ {
+ /* First seleted dimension */
+ gdim.howmany_dims[ih].is = 1;
+ gdim.howmany_dims[ih].os = 1;
+ gdim.howmany_dims[ih].n = pd;
+ ih++;
+ }
+ pd *= Dim[Sel[0] - 1]; /*prod(Dims(1:sel(1)))*/
+
+ for (i = 1; i <= rank - 1; i++)
+ {
+ /* intermediate selected dimensions */
+ if (Sel[i] != Sel[i - 1] + 1)
+ {
+ pds = 1;
+ for (j = (Sel[i - 1] + 1); j <= (Sel[i] - 1); j++)
+ {
+ pds *= Dim[j - 1]; /*prod(Dims(sel(i-1)+1:(sel(i)-1)))*/
+ }
+ /*check again if all dimensions between Sel[i-1]+1 and
+ Sel[i]-1 are equal to one, in this case they can be
+ ignored and there is no jump*/
+ for (j = (Sel[i - 1] + 1); j <= (Sel[i] - 1); j++)
+ {
+ if (Dim[j - 1] != 1)
+ {
+ gdim.howmany_dims[ih].is = pd;
+ gdim.howmany_dims[ih].os = pd;
+ gdim.howmany_dims[ih].n = pds;
+ ih++;
+ break;
+ }
+ }
+ }
+
+ pd *= pds * Dim[Sel[i] - 1]; /*prod(Dims(1:sel(i)))*/
+ }
+
+ if (Sel[rank - 1] != ndims)
+ {
+ /* last selected dimension*/
+ pds = 1;
+ for (j = (Sel[rank - 1] + 1); j <= ndims; j++)
+ {
+ pds *= Dim[j - 1]; /*prod(Dims(sel(i-1)+1:(sel(i)-1)))*/
+ }
+ gdim.howmany_dims[ih].is = pd;
+ gdim.howmany_dims[ih].os = pd;
+ gdim.howmany_dims[ih].n = pds;
+ ih++;
+ }
+ else if (rank == 1) /* the only selected dimension is the last one */
+ {
+ gdim.howmany_dims[ih].is = 1;
+ gdim.howmany_dims[ih].os = 1;
+ gdim.howmany_dims[ih].n = pd / Dim[Sel[0] - 1];
+ ih++;
+ }
+ }
+ if (!sci_dst_gen(_pvCtx, fname, ndimsA, dimsA, Ar, Ai, isn, gdim, iopt))
+ {
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ /***********************************
+ * Return results in lhs argument *
+ ***********************************/
+
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+
+ ReturnArguments(_pvCtx);
+
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
+int sci_dst_gen(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, guru_dim_struct gdim, int iopt)
+{
+
+ /* Input array variables */
+ int isrealA = (Ai == NULL), lA = 1;
+ double half = 0.5;
+
+ /*FFTW specific library variable */
+ enum Plan_Type type;
+ fftw_r2r_kind *kind = NULL;
+ fftw_plan p = NULL;
+
+ /* for MKL special cases */
+ int * dims1 = NULL;
+ int * incr1 = NULL;
+
+ /* local variable */
+ int one = 1;
+ int i = 0;
+ int errflag = 0;
+
+ for (i = 0; i < ndimsA; i++)
+ {
+ lA *= dimsA[i];
+ }
+
+
+ AssignOutputVariable(_pvCtx, 1) = 1;/* assume inplace transform*/
+ /* Set pointers on real and imaginary part of the input */
+
+ /* use inplace transform*/
+ type = R2R_PLAN;
+ if ((kind = (fftw_r2r_kind *)MALLOC(sizeof(fftw_r2r_kind) * gdim.rank)) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+
+
+ if (isn == -1)
+ {
+ if (iopt == 0 || iopt == 1)
+ for (i = 0; i < gdim.rank; i++)
+ {
+ kind[i] = FFTW_RODFT00;
+ }
+ else if (iopt == 2)
+ for (i = 0; i < gdim.rank; i++)
+ {
+ kind[i] = FFTW_RODFT10;
+ }
+ else if (iopt == 4)
+ for (i = 0; i < gdim.rank; i++)
+ {
+ kind[i] = FFTW_RODFT11;
+ }
+ }
+ else
+ {
+ if (iopt == 0 || iopt == 1)
+ for (i = 0; i < gdim.rank; i++)
+ {
+ kind[i] = FFTW_RODFT00;
+ }
+ else if (iopt == 3)
+ for (i = 0; i < gdim.rank; i++)
+ {
+ kind[i] = FFTW_RODFT01;
+ }
+ else if (iopt == 4)
+ for (i = 0; i < gdim.rank; i++)
+ {
+ kind[i] = FFTW_RODFT11;
+ }
+ }
+
+ if (!WITHMKL || gdim.howmany_rank <= 1)
+ {
+ /* Set Plan */
+ p = GetFFTWPlan(type, &gdim, Ar, NULL, Ar, NULL, getCurrentFftwFlags(), isn , kind, &errflag);
+
+ if (errflag == 1)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ else if (errflag == 2)
+ {
+ Scierror(999, _("%s: Creation of requested fftw plan failed.\n"), fname);
+ return 0;
+ }
+ /* execute FFTW plan */
+ ExecuteFFTWPlan(type, p, Ar, NULL, Ar, NULL);
+ if (!isrealA)
+ {
+ ExecuteFFTWPlan(type, p, Ai, NULL, Ai, NULL);
+ }
+
+ }
+ else
+ {
+ /*FFTW MKL does not implement yet guru plan with howmany_rank>1 */
+ /* associated loops described in gdim.howmany_rank and gdim.howmany_dims */
+ /* are implemented here by a set of call with howmany_rank==1 */
+ fftw_iodim *howmany_dims = gdim.howmany_dims;
+ int howmany_rank = gdim.howmany_rank;
+ int i1 = 0, i2 = 0;
+ int nloop = 0;
+ int t = 0;
+
+
+ gdim.howmany_rank = 0;
+ gdim.howmany_dims = NULL;
+
+ p = GetFFTWPlan(type, &gdim, Ar, NULL, Ar, NULL, getCurrentFftwFlags(), isn , kind, &errflag);
+ if (errflag == 1)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(dims1);
+ FREE(incr1);
+ return 0;
+ }
+ else if (errflag == 2)
+ {
+ Scierror(999, _("%s: Creation of requested fftw plan failed.\n"), fname);
+ FREE(dims1);
+ FREE(incr1);
+ return 0;
+ }
+
+ /* flatten nested loops: replace howmany_rank nested loops by a single one*/
+ /* Build temporary arrays used by flatened loop */
+ if ((dims1 = (int *)MALLOC(sizeof(int) * howmany_rank)) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(dims1);
+ FREE(incr1);
+ return 0;
+ }
+ dims1[0] = howmany_dims[0].n;
+ for (i = 1; i < howmany_rank; i++)
+ {
+ dims1[i] = dims1[i - 1] * howmany_dims[i].n;
+ }
+ nloop = dims1[howmany_rank - 1];
+
+ if ((incr1 = (int *)MALLOC(sizeof(int) * howmany_rank)) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(dims1);
+ FREE(incr1);
+ return 0;
+ }
+ t = 1;
+ for (i = 0; i < howmany_rank; i++)
+ {
+ t += (howmany_dims[i].n - 1) * howmany_dims[i].is;
+ incr1[i] = t;
+ }
+ /*loop on each "plan" */
+ i = 0; /*index on the first plan entry */
+ for (i1 = 1; i1 <= nloop; i1++)
+ {
+ /* the input and output are assumed to be complex because
+ within MKL real cases are transformed to complex ones in
+ previous steps of sci_dst_gen*/
+ ExecuteFFTWPlan(type, p, &Ar[i], NULL, &Ar[i], NULL);
+ if (!isrealA)
+ {
+ ExecuteFFTWPlan(type, p, &Ai[i], NULL, &Ai[i], NULL);
+ }
+
+ i += howmany_dims[0].is;
+ /* check if a loop ends*/
+ for (i2 = howmany_rank - 2; i2 >= 0; i2--)
+ {
+ if ((i1 % dims1[i2]) == 0)
+ {
+ /*loop on dimension i2 ends, compute jump on the first plan entry index*/
+ i += howmany_dims[i2 + 1].is - incr1[i2];
+ break;
+ }
+ }
+ }
+ /* free temporary arrays */
+ FREE(dims1);
+ FREE(incr1);
+ /* reset initial value of gdim for post treatment*/
+ gdim.howmany_rank = howmany_rank;
+ gdim.howmany_dims = howmany_dims;
+
+ }
+
+ /* normalization */
+ if (iopt == 0)
+ {
+ if (isn == -1)
+ {
+ C2F(dscal)(&lA, &half, Ar, &one);
+ if (!isrealA)
+ {
+ C2F(dscal)(&lA, &half, Ai, &one);
+ }
+ }
+ else
+ {
+ if (dst_scale_array(Ar, Ai, gdim, isn) == -1)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ }
+ }
+ return 1;
+}
diff --git a/modules/fftw/sci_gateway/c/sci_fftw.c b/modules/fftw/sci_gateway/c/sci_fftw.c
new file mode 100755
index 000000000..dff5f1590
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/sci_fftw.c
@@ -0,0 +1,1314 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2006/2007 - INRIA - Alan LAYEC
+* Copyright (C) 2007 - INRIA - Allan CORNET
+* Copyright (C) 2012 - DIGITEO - Allan CORNET
+* Copyright (C) 2012 - INRIA - Serge STEER
+* Copyright (C) 2012 - Scilab Enterprises - Cedric Delamarre
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+/*--------------------------------------------------------------------------*/
+#include "stack-c.h"
+#include "fftw_utilities.h"
+#include "sci_data_utilities.h"
+#include "callfftw.h"
+#include "MALLOC.h"
+#include "gw_fftw.h"
+#include "api_scilab.h"
+#include "localization.h"
+#include "Scierror.h"
+#include "BOOL.h"
+/*--------------------------------------------------------------------------*/
+enum Scaling
+{
+ Divide = -1,
+ None = 0,
+ Multiply = 1,
+};
+/*--------------------------------------------------------------------------*/
+extern void C2F(dscal)(int *n, double *da, double *dx, int *incx); /* blas routine */
+extern void C2F(dset)(int *n, double *da, double *dx, int *incx); /* blas routine */
+/*--------------------------------------------------------------------------*/
+static int sci_fft_gen(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt, guru_dim_struct gdim);
+static int sci_fft_2args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt);
+static int sci_fft_3args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt);
+static int sci_fft_4args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt);
+/*--------------------------------------------------------------------------*/
+
+int WITHMKL = 0;
+/* fftw function.
+*
+* Scilab Calling sequence :
+* fftw(A [,option])
+* fftw(A,sign [,option])
+* fftw(A,sel,sign [,option])
+* fftw(A,sign,dim,incr [,option])
+*
+* Input : A : a scilab double complex or real vector, matrix or hypermatrix
+*
+* sign : a scilab double or integer scalar (-1 or 1): the sign
+* in the exponential component
+*
+* sel : a scilab double or integer vector, the selection of dimensions
+
+* dim : a scilab double or integer vector: the dimensions
+* of the Fast Fourier Transform to perform
+*
+* incr : a scilab double or integer vector: the increments
+* of the Fast Fourier Transform to perform
+*
+* Output : a scilab double complex or real array with same shape as A that
+* gives the result of the transform.
+*
+*/
+int sci_fftw(char *fname, unsigned long fname_len)
+{
+ SciErr sciErr;
+ int *piAddr = NULL;
+ char *option = NULL;
+ int iopt = 0; /* automatic r2c or c2r transform use decision */
+ int rhs = Rhs;
+ int iTypeOne = 0;
+
+ int ndimsA = 0;
+ int *dimsA = NULL;
+ double *Ar = NULL, *Ai = NULL;
+
+ int isn = FFTW_FORWARD;
+ WITHMKL = withMKL();
+ /****************************************
+ * Basic constraints on rhs arguments *
+ ****************************************/
+
+ /* check min/max lhs/rhs arguments of scilab function */
+ CheckInputArgument(pvApiCtx, 1, 5);
+ CheckOutputArgument(pvApiCtx, 1, 1);
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
+ return 1;
+ }
+
+ sciErr = getVarType(pvApiCtx, piAddr, &iTypeOne);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
+ return 1;
+ }
+
+ if ((iTypeOne == sci_list) || (iTypeOne == sci_tlist))
+ {
+ OverLoad(1);
+ return 1;
+ }
+
+ if (iTypeOne == sci_mlist)
+ {
+ /* We allow overload for not hypermatrix type */
+ if (!isHyperMatrixMlist(pvApiCtx, piAddr))
+ {
+ OverLoad(1);
+ return 1;
+ }
+ }
+
+ /* checking if last argument is a potential option argument (character string) */
+ sciErr = getVarAddressFromPosition(pvApiCtx, Rhs, &piAddr);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, Rhs);
+ return 1;
+ }
+
+ if (isStringType(pvApiCtx, piAddr)) /* fftw(...,option); */
+ {
+ if (isScalar(pvApiCtx, piAddr))
+ {
+ if (getAllocatedSingleString(pvApiCtx, piAddr, &option) == 0)
+ {
+ if (strcmp("symmetric", option) == 0)
+ {
+ iopt = 1; /*user assumes symmetry */
+ }
+ else if (strcmp("nonsymmetric", option) == 0)
+ {
+ iopt = 2; /*user claims full transform */
+ }
+ else
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"), fname, Rhs, "\"symmetric\"", "\"nonsymmetric\"");
+ freeAllocatedSingleString(option);
+ option = NULL;
+ return 1;
+ }
+ freeAllocatedSingleString(option);
+ option = NULL;
+ rhs = Rhs - 1;
+ }
+ else
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: '%s' or '%s' expected.\n"), fname, Rhs, "\"symmetric\"", "\"nonsymmetric\"");
+ return 1;
+ }
+ }
+ }
+
+
+ /******************** Checking if isn is given ************************************************/
+ if (rhs == 1) /*only one rhs argument: forward fft*/
+ {
+ isn = FFTW_FORWARD; /* default value */
+ }
+ else /*get isn out of second argument*/
+ {
+ sciErr = getScalarIntArg(pvApiCtx, 2, fname, &isn);
+ if (sciErr.iErr)
+ {
+ Scierror(sciErr.iErr, getErrorMessage(sciErr));
+ return 1;
+ }
+ /* check value of second rhs argument */
+ if ((isn != FFTW_FORWARD) && (isn != FFTW_BACKWARD))
+ {
+ Scierror(53, _("%s: Wrong value for input argument #%d: %d or %d expected.\n"), fname, 2, FFTW_FORWARD, FFTW_BACKWARD);
+ return 1;
+ }
+ }
+
+ /******************** getting the array A ************************************************/
+ getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
+ if (!getArrayOfDouble(pvApiCtx, piAddr, &ndimsA, &dimsA, &Ar, &Ai))
+ {
+ Scierror(999, _("%s: Wrong type for argument #%d: Array of floating point numbers expected.\n"), fname, 1);
+ return 1;
+ }
+
+
+ /******************** Select proper method ************************************************/
+ if (rhs < 3)
+ {
+ /* fftw(A ,sign [,option])*/
+ sci_fft_2args(pvApiCtx, fname, ndimsA, dimsA, Ar, Ai, isn, iopt);
+ }
+ else if (rhs == 3)
+ {
+ /* fftw(A ,sign ,sel [,option])*/
+ sci_fft_3args(pvApiCtx, fname, ndimsA, dimsA, Ar, Ai, isn, iopt);
+ }
+ else if (rhs == 4)
+ {
+ /* fftw(A ,sign ,dim,incr [option])*/
+ sci_fft_4args(pvApiCtx, fname, ndimsA, dimsA, Ar, Ai, isn, iopt);
+ }
+
+ return 0;
+}
+
+int sci_fft_2args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt)
+{
+ /*FFTW specific library variable */
+ guru_dim_struct gdim = {0, NULL, 0, NULL};
+
+ /* local variable */
+ int ndims = 0; /* number of non singleton dimensions */
+ int first_nonsingleton = -1;
+ int i = 0, j = 0;
+ int prd = 1;
+
+ /* ignore singleton dimensions */
+ first_nonsingleton = -1;
+ ndims = 0;
+ for (i = 0; i < ndimsA; i++)
+ {
+ if (dimsA[i] > 1)
+ {
+ ndims++;
+ if (first_nonsingleton < 0)
+ {
+ first_nonsingleton = i;
+ }
+ }
+ }
+
+ /* void or scalar input gives void output or scalar*/
+ if (ndims == 0 )
+ {
+ AssignOutputVariable(_pvCtx, 1) = 1;
+ ReturnArguments(_pvCtx);
+ return 0;
+ }
+
+ gdim.rank = ndims;
+ if ((gdim.dims = (fftw_iodim *)MALLOC(sizeof(fftw_iodim) * gdim.rank)) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ j = 0;
+ prd = 1;
+ for (i = (first_nonsingleton); i < ndimsA; i++)
+ {
+ if (dimsA[i] > 1)
+ {
+ gdim.dims[j].n = dimsA[i];
+ gdim.dims[j].is = prd;
+ gdim.dims[j].os = prd;
+ prd *= dimsA[i];
+ j++;
+ }
+ }
+ gdim.howmany_rank = 0;
+ gdim.howmany_dims = NULL;
+
+
+ if (!sci_fft_gen(_pvCtx, fname, ndimsA, dimsA, Ar, Ai, isn, iopt, gdim))
+ {
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ /***********************************
+ * Return results in lhs argument *
+ ***********************************/
+
+ ReturnArguments(_pvCtx);
+
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+}
+
+
+int sci_fft_3args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt)
+{
+ /* API variables */
+ SciErr sciErr;
+ int *piAddr = NULL;
+
+ int *Sel = NULL;
+ int rank = 0;
+
+ /*FFTW specific library variable */
+ guru_dim_struct gdim = {0, NULL, 0, NULL};
+ /* local variable */
+ int ndims = 0;
+ int first_nonsingleton = -1;
+ int ih = 0;
+ int pd = 1; /* used to store prod(Dims(1:sel(k-1)))*/
+ int pds = 1; /* used to store prod(Dims(sel(k-1):sel(k)))*/
+ int i = 0, j = 0;
+
+ /* ignore singleton dimensions */
+ first_nonsingleton = -1;
+ ndims = 0;
+ for (i = 0; i < ndimsA; i++)
+ {
+ if (dimsA[i] > 1)
+ {
+ ndims++;
+ if (first_nonsingleton < 0)
+ {
+ first_nonsingleton = i;
+ }
+ }
+ }
+
+ /* void or scalar input gives void output or scalar*/
+ if (ndims == 0 )
+ {
+ AssignOutputVariable(_pvCtx, 1) = 1;
+ ReturnArguments(_pvCtx);
+ return 0;
+ }
+
+
+ /******************** get and check third argument (sel) ****************************************/
+ getVarAddressFromPosition(pvApiCtx, 3, &piAddr);
+ if (isVarMatrixType(pvApiCtx, piAddr) == 0)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d.\n"), fname, 3);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ sciErr = getVectorIntArg(pvApiCtx, 3, fname, &rank, &Sel);
+ if (sciErr.iErr)
+ {
+ Scierror(sciErr.iErr, getErrorMessage(sciErr));
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ /* size of Sel must be less than ndimsA */
+ if (rank <= 0 || rank >= ndimsA)
+ {
+ Scierror(999, _("%s: Wrong size for input argument #%d: Must be between %d and %d.\n"), fname, 3, 1, ndimsA - 1);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ /* check values of Sel[i] */
+ for (i = 0; i < rank; i++)
+ {
+ if (Sel[i] <= 0)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Positive integers expected.\n"), fname, 3);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if (Sel[i] > ndimsA)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Elements must be less than %d.\n"), fname, 3, ndimsA);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if (i > 0 && Sel[i] <= Sel[i - 1])
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Elements must be in increasing order.\n"), fname, 3);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ }
+
+ /* Create gdim struct */
+ gdim.rank = rank;
+ if ((gdim.dims = (fftw_iodim *)MALLOC(sizeof(fftw_iodim) * gdim.rank)) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ pd = 1; /* used to store prod(Dims(1:sel(k-1)))*/
+ pds = 1; /* used to store prod(Dims(sel(k-1):sel(k)))*/
+ j = 0;
+ for (i = 0; i < ndimsA; i++)
+ {
+ if (j >= gdim.rank)
+ {
+ break;
+ }
+ if (Sel[j] == i + 1)
+ {
+ gdim.dims[j].n = dimsA[i];
+ gdim.dims[j].is = pd;
+ gdim.dims[j].os = pd;
+ j++;
+ }
+ pd *= dimsA[i];
+ }
+ /* Compute howmany_rank based on jumps in the Sel sequence */
+ gdim.howmany_rank = 0;
+ if ((Sel[0] != 1) && (Sel[0] != ndimsA))
+ {
+ gdim.howmany_rank++;
+ }
+
+ for (i = 1; i <= rank - 1; i++)
+ {
+ if (Sel[i] != Sel[i - 1] + 1)
+ {
+ /*check if all dimensions between Sel[i-1]+1 and Sel[i]-1 are
+ equal to one, in this case they can be ignored and there is
+ no jump*/
+ for (j = Sel[i - 1] + 1; j <= Sel[i] - 1; j++)
+ {
+ if (dimsA[j - 1] != 1)
+ {
+ gdim.howmany_rank++;
+ break;
+ }
+ }
+ }
+ }
+
+ if ((Sel[rank - 1] != ndimsA) || (rank == 1))
+ {
+ gdim.howmany_rank++;
+ }
+
+ /* Fill the howmany_dims struct */
+ if (gdim.howmany_rank > 0)
+ {
+ /* it must be the case */
+ if ((gdim.howmany_dims = (fftw_iodim *)MALLOC(gdim.howmany_rank * sizeof(fftw_iodim))) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ pd = 1;
+ for (j = 1; j <= (Sel[0] - 1); j++)
+ {
+ pd *= dimsA[j - 1]; /*prod(Dims(1:(sel(1)-1)))*/
+ }
+ ih = 0;
+ if ((Sel[0] != 1) && (Sel[0] != ndimsA))
+ {
+ /* First seleted dimension */
+ gdim.howmany_dims[ih].is = 1;
+ gdim.howmany_dims[ih].os = 1;
+ gdim.howmany_dims[ih].n = pd;
+ ih++;
+ }
+ pd *= dimsA[Sel[0] - 1]; /*prod(Dims(1:sel(1)))*/
+ for (i = 1; i <= rank - 1; i++)
+ {
+ /* intermediate selected dimensions */
+ if (Sel[i] != Sel[i - 1] + 1)
+ {
+ pds = 1;
+ for (j = (Sel[i - 1] + 1); j <= (Sel[i] - 1); j++)
+ {
+ pds *= dimsA[j - 1]; /*prod(Dims(sel(i-1)+1:(sel(i)-1)))*/
+ }
+ /*check again if all dimensions between Sel[i-1]+1 and
+ Sel[i]-1 are equal to one, in this case they can be
+ ignored and there is no jump*/
+ for (j = (Sel[i - 1] + 1); j <= (Sel[i] - 1); j++)
+ {
+ if (dimsA[j - 1] != 1)
+ {
+ gdim.howmany_dims[ih].is = pd;
+ gdim.howmany_dims[ih].os = pd;
+ gdim.howmany_dims[ih].n = pds;
+ ih++;
+ break;
+ }
+ }
+ }
+ pd *= pds * dimsA[Sel[i] - 1]; /*prod(Dims(1:sel(i)))*/
+ }
+
+ if (Sel[rank - 1] != ndimsA)
+ {
+ /* last selected dimension*/
+ pds = 1;
+ for (j = (Sel[rank - 1] + 1); j <= ndimsA; j++)
+ {
+ pds *= dimsA[j - 1]; /*prod(Dims(sel(i-1)+1:(sel(i)-1)))*/
+ }
+ gdim.howmany_dims[ih].is = pd;
+ gdim.howmany_dims[ih].os = pd;
+ gdim.howmany_dims[ih].n = pds;
+ ih++;
+ }
+ else if (rank == 1)
+ {
+ /* the only selected dimension is the last one */
+ gdim.howmany_dims[ih].is = 1;
+ gdim.howmany_dims[ih].os = 1;
+ gdim.howmany_dims[ih].n = pd / dimsA[Sel[0] - 1];
+ ih++;
+ }
+ }
+
+ if (!sci_fft_gen(_pvCtx, fname, ndimsA, dimsA, Ar, Ai, isn, iopt, gdim))
+ {
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ /***********************************
+ * Return results in lhs argument *
+ ***********************************/
+
+ ReturnArguments(_pvCtx);
+
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+}
+
+int sci_fft_4args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt)
+{
+ /* API variables */
+ SciErr sciErr;
+ int *piAddr = NULL;
+
+ /* Input array variables */
+ int *Dim1 = NULL;
+ int ndims = 0;
+ int *Incr = NULL;
+ int nincr = 0;
+
+ /*FFTW specific library variable */
+ guru_dim_struct gdim = {0, NULL, 0, NULL};
+ /* input/output address for transform variables */
+
+ /* local variable */
+ int *Dim = NULL, *Sel = NULL;
+ int pd = 1;
+ int pds = 1;
+ int nd = 0;
+ int rank = 0;
+ int i = 0, j = 0, k = 0, lA = 1;
+
+ for (i = 0; i < ndimsA; i++)
+ {
+ lA *= dimsA[i];
+ }
+
+ /* void or scalar input gives void output or scalar*/
+ if (lA <= 1 )
+ {
+ AssignOutputVariable(_pvCtx, 1) = 1;
+ ReturnArguments(_pvCtx);
+ return 0;
+ }
+
+ /******************** get and check third argument (dim) ****************************************/
+ getVarAddressFromPosition(pvApiCtx, 3, &piAddr);
+ if (isVarMatrixType(pvApiCtx, piAddr) == 0)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d.\n"), fname, 3);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ sciErr = getVectorIntArg(pvApiCtx, 3, fname, &ndims, &Dim1);
+ if (sciErr.iErr)
+ {
+ Scierror(sciErr.iErr, getErrorMessage(sciErr));
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ /* check values of Dim1[i] */
+ pd = 1;
+ for (i = 0; i < ndims; i++)
+ {
+ if (Dim1[i] <= 1)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Elements must be greater than %d.\n"), fname, 3, 1);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ pd *= Dim1[i];
+ }
+ if ( pd > lA)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Must be less than %d.\n"), fname, 3, lA);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if (lA % pd)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Must be a divisor of %d.\n"), fname, 3, lA);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ /******************** get and check fourth argument (incr) ****************************************/
+ sciErr = getVectorIntArg(pvApiCtx, 4, fname, &nincr, &Incr);
+ if (sciErr.iErr)
+ {
+ Scierror(sciErr.iErr, getErrorMessage(sciErr));
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if (nincr != ndims)
+ {
+ Scierror(999, _("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"), fname, 3, 4);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ /* check values of Incr[i] */
+ if (Incr[0] <= 0)
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Positive integers expected.\n"), fname, 4);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ for (i = 0; i < ndims; i++)
+ {
+ if (lA % Incr[i])
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Elements must be divisors of %d.\n"), fname, 3, lA);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if (i > 0 && (Incr[i] <= Incr[i - 1]))
+ {
+ Scierror(999, _("%s: Wrong values for input argument #%d: Elements must be in increasing ""order.\n"), fname, 4);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ }
+ if ((Dim = (int *)MALLOC((2 * ndims + 1) * sizeof(int))) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if ((Sel = (int *)MALLOC((ndims) * sizeof(int))) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+
+ /*Transform Dim1 and Incr into Dim and Sel and check validity*/
+
+ nd = 0;
+ pd = 1;
+ if (Incr[0] != 1)
+ {
+ Dim[nd++] = Incr[0];
+ pd *= Incr[0];
+ }
+ Dim[nd++] = Dim1[0];
+ pd *= Dim1[0];
+ Sel[0] = nd;
+
+ for (k = 1; k < ndims; k++)
+ {
+ if (Incr[k] % pd != 0)
+ {
+ Scierror(999, _("%s: Incompatible input arguments #%d and #%d.\n"), fname, 3, 4);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ if (Incr[k] != pd)
+ {
+ Dim[nd++] = (int)(Incr[k] / pd);
+ pd = Incr[k];
+ }
+ Dim[nd++] = Dim1[k];
+ pd *= Dim1[k];
+ Sel[k] = nd;
+ }
+ if (pd < lA)
+ {
+ if (lA % pd != 0)
+ {
+ Scierror(999, _("%s: Incompatible input arguments #%d and #%d.\n"), fname, 3, 4);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ Dim[nd++] = (int)(lA / pd);
+ }
+
+ rank = ndims;
+ ndims = nd;
+
+ /* now one same algorithm than sci_fft_3args applies */
+ /* Create gdim struct */
+ gdim.rank = rank;
+ if ((gdim.dims = (fftw_iodim *)MALLOC(sizeof(fftw_iodim) * gdim.rank)) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ pd = 1; /* used to store prod(Dims(1:sel(k-1)))*/
+ pds = 1; /* used to store prod(Dims(sel(k-1):sel(k)))*/
+ j = 0;
+ for (i = 0; i < ndims; i++)
+ {
+ if (j >= gdim.rank)
+ {
+ break;
+ }
+ if (Sel[j] == i + 1)
+ {
+ gdim.dims[j].n = Dim[i];
+ gdim.dims[j].is = pd;
+ gdim.dims[j].os = pd;
+ j++;
+ }
+ pd *= Dim[i];
+ }
+ /* Compute howmany_rank based on jumps in the Sel sequence */
+ gdim.howmany_rank = 0;
+ if ((Sel[0] != 1) && (Sel[0] != ndims))
+ {
+ gdim.howmany_rank++;
+ }
+
+ for (i = 1; i <= rank - 1; i++)
+ {
+ if (Sel[i] != Sel[i - 1] + 1)
+ {
+ gdim.howmany_rank++;
+ }
+ }
+ if ((Sel[rank - 1] != ndims) || (rank == 1))
+ {
+ gdim.howmany_rank++;
+ }
+ /* Fill the howmany_dims struct */
+ if (gdim.howmany_rank > 0)
+ {
+ /* it must be the case */
+ int ih = 0;
+
+ if ((gdim.howmany_dims = (fftw_iodim *)MALLOC(gdim.howmany_rank * sizeof(fftw_iodim))) == NULL)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+ pd = 1;
+ for (j = 1; j <= (Sel[0] - 1); j++)
+ {
+ pd *= Dim[j - 1]; /*prod(Dims(1:(sel(1)-1)))*/
+ }
+ ih = 0;
+ if ((Sel[0] != 1) && (Sel[0] != ndims))
+ {
+ /* First seleted dimension */
+ gdim.howmany_dims[ih].is = 1;
+ gdim.howmany_dims[ih].os = 1;
+ gdim.howmany_dims[ih].n = pd;
+ ih++;
+ }
+ pd *= Dim[Sel[0] - 1]; /*prod(Dims(1:sel(1)))*/
+ for (i = 2; i <= rank; i++)
+ {
+ /* intermediate selected dimensions */
+ if (Sel[i - 1] != Sel[i - 2] + 1)
+ {
+ pds = 1;
+ for (j = (Sel[i - 2] + 1); j <= (Sel[i - 1] - 1); j++)
+ {
+ pds *= Dim[j - 1]; /*prod(Dims(sel(i-1)+1:(sel(i)-1)))*/
+ }
+ gdim.howmany_dims[ih].is = pd;
+ gdim.howmany_dims[ih].os = pd;
+ gdim.howmany_dims[ih].n = pds;
+ ih++;
+ }
+ pd *= pds * Dim[Sel[i - 1] - 1]; /*prod(Dims(1:sel(i)))*/
+ }
+
+ if (Sel[rank - 1] != ndims)
+ {
+ /* last selected dimension*/
+ pds = 1;
+ for (j = (Sel[rank - 1] + 1); j <= ndims; j++)
+ {
+ pds *= Dim[j - 1]; /*prod(Dims(sel(i-1)+1:(sel(i)-1)))*/
+ }
+ gdim.howmany_dims[ih].is = pd;
+ gdim.howmany_dims[ih].os = pd;
+ gdim.howmany_dims[ih].n = pds;
+ ih++;
+ }
+ else if (rank == 1) /* the only selected dimension is the last one */
+ {
+ gdim.howmany_dims[ih].is = 1;
+ gdim.howmany_dims[ih].os = 1;
+ gdim.howmany_dims[ih].n = pd / Dim[Sel[0] - 1];
+ ih++;
+ }
+ }
+ if (!sci_fft_gen(_pvCtx, fname, ndimsA, dimsA, Ar, Ai, isn, iopt, gdim))
+ {
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+ return 0;
+ }
+
+ /***********************************
+ * Return results in lhs argument *
+ ***********************************/
+
+ FREE(Dim1);
+ FREE(Incr);
+ FREE(Dim);
+ FREE(Sel);
+ FREE(gdim.dims);
+ FREE(gdim.howmany_dims);
+
+ ReturnArguments(_pvCtx);
+
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
+/*--------------------------------------------------------------------------*/
+int sci_fft_gen(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar, double *Ai, int isn, int iopt, guru_dim_struct gdim)
+{
+ /* API variables */
+ SciErr sciErr;
+
+ /* Input array variables */
+ int isrealA = (Ai == NULL), issymA = 1, lA = 1;
+ /*for MKL*/
+ int isrealA_save = isrealA ;
+
+ /*FFTW specific library variable */
+ enum Scaling scale = None;
+ enum Plan_Type type;
+ fftw_plan p;
+
+ /* input/output address for transform variables */
+ double *ri = NULL, *ii = NULL, *ro = NULL, *io = NULL;
+
+ /* for MKL special cases */
+ int * dims1 = NULL;
+ int * incr1 = NULL;
+
+ /* local variable */
+ int one = 1;
+ int i = 0;
+ int errflag = 0;
+
+
+ for (i = 0; i < ndimsA; i++)
+ {
+ lA *= dimsA[i];
+ }
+
+
+ if (iopt == 0)
+ {
+ /* automatically selected algorithm*/
+ issymA = check_array_symmetry(Ar, Ai, gdim);
+ if (issymA < 0 )
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ }
+
+ else if (iopt == 1)
+ {
+ issymA = 1; /* user forces symmetry */
+ }
+ else
+ {
+ issymA = 0;
+ }
+
+ AssignOutputVariable(_pvCtx, 1) = 1;/* assume inplace transform*/
+
+ if (WITHMKL)
+ {
+ double dzero = 0.0;
+ if (isrealA)
+ {
+ /*MKL does not implement the r2c nor r2r guru split methods, make A complex */
+ if (issymA)
+ {
+ /* result will be real, the imaginary part of A can be allocated alone */
+ sciErr = allocMatrixOfDouble(pvApiCtx, *getNbInputArgument(_pvCtx) + 1, 1, lA, &Ai);
+ if (sciErr.iErr)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ C2F(dset)(&lA, &dzero, Ai, &one);
+ }
+ else
+ {
+ /* result will be complex, realloc A for inplace computation */
+ sciErr = allocComplexArrayOfDouble(pvApiCtx, *getNbInputArgument(_pvCtx) + 1, ndimsA, dimsA, &ri, &Ai);
+ if (sciErr.iErr)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ C2F(dcopy)(&lA, Ar, &one, ri, &one);
+ Ar = ri;
+ C2F(dset)(&lA, &dzero, Ai, &one);
+ AssignOutputVariable(_pvCtx, 1) = nbInputArgument(_pvCtx) + 1;
+ isrealA = 0;
+ }
+ }
+ }
+
+ if (!isrealA && issymA) /* A is complex but result is real */
+ {
+ /* result will be complex, realloc real part of A for real part inplace computation */
+ sciErr = allocArrayOfDouble(pvApiCtx, *getNbInputArgument(_pvCtx) + 1, ndimsA, dimsA, &ri);
+ if (sciErr.iErr)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ C2F(dcopy)(&lA, Ar, &one, ri, &one);
+ Ar = ri;
+ AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(_pvCtx) + 1;
+ }
+
+ /* Set pointers on real and imaginary part of the input */
+ ri = Ar;
+ ii = Ai;
+
+ scale = None; /*no scaling needed */
+ if (isn == FFTW_BACKWARD)
+ {
+ scale = Divide;
+ }
+ if (isrealA & !WITHMKL) /* To have type = C2C_PLAN*/
+ {
+ /*A is real */
+ if (issymA)
+ {
+ /*r2r = isrealA && issymA*/
+ /* there is no general plan able to compute r2r transform so it is tranformed into
+ a R2c plan. The computed imaginary part will be zero*/
+ sciErr = allocMatrixOfDouble(pvApiCtx, *getNbInputArgument(_pvCtx) + 1, 1, lA, &io);
+ if (sciErr.iErr)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ type = R2C_PLAN;
+ ro = Ar;
+ }
+ else
+ {
+ /*r2c = isrealA && ~issymA;*/
+ /* transform cannot be done in place */
+ sciErr = allocComplexArrayOfDouble(pvApiCtx, *getNbInputArgument(_pvCtx) + 1, ndimsA, dimsA, &ro, &io);
+ if (sciErr.iErr)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(_pvCtx) + 1;
+ type = R2C_PLAN; /* fftw_plan_guru_split_dft_r2c plans for an FFTW_FORWARD transform*/
+ if (isn == FFTW_BACKWARD)
+ {
+ /*transform problem into a FORWARD fft*/
+ /*ifft(A)=conj(fft(A/N)) cas vect*/
+ /* pre traitement A must be divided by N cas vect*/
+ /* post treatment result must conjugated */
+ }
+ }
+ }
+ else
+ {
+ /* A is complex */
+ if (!WITHMKL && issymA) /*result is real*/
+ {
+ /*c2r = ~isrealA && issymA*/
+ ro = ri;
+ io = NULL;
+
+ type = C2R_PLAN; /*fftw_plan_guru_split_dft_c2r plans for an FFTW_BACKWARD transform*/
+ if (isn == FFTW_FORWARD)
+ {
+ /*transform problem into a BACKWARD fft : fft(A)=ifft(conj(A))*/
+ double minusone = -1.0;
+ C2F(dscal)(&lA, &minusone, ii, &one);
+ }
+ }
+ else
+ {
+ /*c2c = ~isrealA && ~issymA;*/
+ /* use inplace transform*/
+ isrealA = 0;
+ type = C2C_PLAN; /* fftw_plan_guru_split_dft plans for an FFTW_FORWARD transform*/
+ if (isn == FFTW_BACKWARD)
+ {
+ /*transform problem into a FORWARD fft*/
+ /* ifft(A) = %i*conj(fft(%i*conj(A)/N) */
+ /* reverse input */
+ ri = Ai;
+ ii = Ar;
+ /* reverse output */
+ ro = Ai;
+ io = Ar;
+ }
+ else
+ {
+ ro = ri;
+ io = ii;
+ }
+ }
+ }
+
+ /* pre-treatment */
+ if (scale != None)
+ {
+ double ak = 1.0;
+ for (i = 0; i < gdim.rank; i++)
+ {
+ ak = ak * ((double)(gdim.dims[i].n));
+ }
+ if (scale == Divide)
+ {
+ ak = 1.0 / ak;
+ }
+ C2F(dscal)(&lA, &ak, ri, &one);
+ if (isrealA == 0)
+ {
+ C2F(dscal)(&lA, &ak, ii, &one);
+ }
+ }
+
+ if (!WITHMKL || gdim.howmany_rank <= 1)
+ {
+ /* Set Plan */
+ p = GetFFTWPlan(type, &gdim, ri, ii, ro, io, getCurrentFftwFlags(), isn , (fftw_r2r_kind *)NULL, &errflag);
+ if (errflag == 1)
+ {
+ Scierror(999, _("%s: No more memory.\n"), fname);
+ return 0;
+ }
+ else if (errflag == 2)
+ {
+ Scierror(999, _("%s: Creation of requested fftw plan failed.\n"), fname);
+ return 0;
+ }
+ /* execute FFTW plan */
+ ExecuteFFTWPlan(type, p, ri, ii, ro, io);
+ }
+ else
+ {
+ /*FFTW MKL does not implement yet guru plan with howmany_rank>1 */
+ /* associated loops described in gdim.howmany_rank and gdim.howmany_dims */
+ /* are implemented here by a set of call with howmany_rank==1 */
+ fftw_iodim *howmany_dims = gdim.howmany_dims;
+ int howmany_rank = gdim.howmany_rank;
+ int i1 = 0, i2 = 0;
+ int nloop = 0;
+ int t = 0;
+
+
+ gdim.howmany_rank = 0;
+ gdim.howmany_dims = NULL;
+
+ p = GetFFTWPlan(type, &gdim, ri, ii, ro, io, getCurrentFftwFlags(), isn , (fftw_r2r_kind *)NULL, &errflag);
+ if (errflag == 1)
+ {
+ Scierror(999, _("%s: No more memory.\n"), fname);
+ FREE(dims1);
+ FREE(incr1);
+ return 0;
+ }
+ else if (errflag == 2)
+ {
+ Scierror(999, _("%s: Creation of requested fftw plan failed.\n"), fname);
+ FREE(dims1);
+ FREE(incr1);
+ return 0;
+ }
+
+ /* flatten nested loops: replace howmany_rank nested loops by a single one*/
+ /* Build temporary arrays used by flatened loop */
+ if ((dims1 = (int *)MALLOC(sizeof(int) * howmany_rank)) == NULL)
+ {
+ Scierror(999, _("%s: No more memory.\n"), fname);
+ FREE(dims1);
+ FREE(incr1);
+ return 0;
+ }
+ dims1[0] = howmany_dims[0].n;
+ for (i = 1; i < howmany_rank; i++)
+ {
+ dims1[i] = dims1[i - 1] * howmany_dims[i].n;
+ }
+ nloop = dims1[howmany_rank - 1];
+
+ if ((incr1 = (int *)MALLOC(sizeof(int) * howmany_rank)) == NULL)
+ {
+ Scierror(999, _("%s: No more memory.\n"), fname);
+ FREE(dims1);
+ FREE(incr1);
+ return 0;
+ }
+ t = 1;
+ for (i = 0; i < howmany_rank; i++)
+ {
+ t += (howmany_dims[i].n - 1) * howmany_dims[i].is;
+ incr1[i] = t;
+ }
+ /*loop on each "plan" */
+ i = 0; /*index on the first plan entry */
+ for (i1 = 1; i1 <= nloop; i1++)
+ {
+ /* the input and output are assumed to be complex because
+ within MKL real cases are transformed to complex ones in
+ previous steps of sci_fft_gen*/
+ ExecuteFFTWPlan(type, p, &ri[i], &ii[i], &ro[i], &io[i]);
+ i += howmany_dims[0].is;
+ /* check if a loop ends*/
+ for (i2 = howmany_rank - 2; i2 >= 0; i2--)
+ {
+ if ((i1 % dims1[i2]) == 0)
+ {
+ /*loop on dimension i2 ends, compute jump on the first plan entry index*/
+ i += howmany_dims[i2 + 1].is - incr1[i2];
+ break;
+ }
+ }
+ }
+ /* free temporary arrays */
+ FREE(dims1);
+ FREE(incr1);
+ /* reset initial value of gdim for post treatment*/
+ gdim.howmany_rank = howmany_rank;
+ gdim.howmany_dims = howmany_dims;
+
+ }
+ /* Post treatment */
+ switch (type)
+ {
+ case R2R_PLAN:
+ if (complete_array(ro, NULL, gdim) == -1)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ break;
+ case C2R_PLAN:
+ break;
+ case R2C_PLAN:
+ if (issymA)
+ {
+ /*R2C has been used to solve an r2r problem*/
+ if (complete_array(ro, NULL, gdim) == -1)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ }
+ else
+ {
+ if (complete_array(ro, io, gdim) == -1)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ if (isn == FFTW_BACKWARD)
+ {
+ /*conjugate result */
+ double ak = -1.0;
+ C2F(dscal)(&lA, &ak, io, &one);
+ }
+ }
+ break;
+ case C2C_PLAN:
+ if (WITHMKL && isrealA_save)
+ {
+ if (isn == FFTW_FORWARD)
+ {
+ if (complete_array(ro, io, gdim) == -1)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ }
+ else
+ {
+ if (complete_array(io, ro, gdim) == -1)
+ {
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 0;
+ }
+ }
+ }
+ break;
+ }
+
+ return 1;
+}
diff --git a/modules/fftw/sci_gateway/c/sci_fftw_flags.c b/modules/fftw/sci_gateway/c/sci_fftw_flags.c
new file mode 100755
index 000000000..b839067fe
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/sci_fftw_flags.c
@@ -0,0 +1,346 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2006/2007 - INRIA - Alan LAYEC
+* Copyright (C) 2007 - INRIA - Allan CORNET
+* Copyright (C) 2012 - DIGITEO - Allan CORNET
+* Copyright (C) 2012 - Scilab Enterprises - Cedric Delamarre
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+/*--------------------------------------------------------------------------*/
+#include <string.h>
+#include "api_scilab.h"
+#include "fftw_utilities.h"
+#include "MALLOC.h"
+#include "gw_fftw.h"
+#include "localization.h"
+#include "freeArrayOfString.h"
+#include "Scierror.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#endif
+/*--------------------------------------------------------------------------*/
+/* fftw_flags function.
+*
+* Scilab Calling sequence :
+* -->[a,b]=fftw_flags();
+* or
+* -->[a,b]=fftw_flags(S);
+*
+* a is an int scalar. (the int value of
+* the flag parameter of fftw)
+* b is a string matrix.(the string values of
+* the flag parameter of fftw)
+* S is a string matrix or an int or a double scalar
+* given the value(s) of the fftw flag parameter.
+*
+* This function gives and set the flag parameter of fftw
+* when creating a new plan.
+* This should be done before calling fftw function.
+* (default is FFTW_ESTIMATE)
+*/
+/*--------------------------------------------------------------------------*/
+int sci_fftw_flags(char *fname, unsigned long fname_len)
+{
+ /* declaration of variables to store scilab parameters address */
+ static int m1 = 0, n1 = 0;
+
+ char **Str1 = NULL;
+ char **Str3 = NULL;
+
+ unsigned int uiVar1 = 0;
+ int* piDataOut = NULL;
+ int* piAddr1 = NULL;
+ int* piLen = NULL;
+ int iType = 0;
+
+ /* please update me ! */
+ static int nb_flag = 22;
+ static char *Str[] =
+ {
+ /* documented flags */
+ "FFTW_MEASURE",
+ "FFTW_DESTROY_INPUT",
+ "FFTW_UNALIGNED",
+ "FFTW_CONSERVE_MEMORY",
+ "FFTW_EXHAUSTIVE",
+ "FFTW_PRESERVE_INPUT",
+ "FFTW_PATIENT",
+ "FFTW_ESTIMATE",
+
+ /* undocumented beyond-guru flags */
+ "FFTW_ESTIMATE_PATIENT",
+ "FFTW_BELIEVE_PCOST",
+ "FFTW_NO_DFT_R2HC",
+ "FFTW_NO_NONTHREADED",
+ "FFTW_NO_BUFFERING",
+ "FFTW_NO_INDIRECT_OP",
+ "FFTW_ALLOW_LARGE_GENERIC",
+ "FFTW_NO_RANK_SPLITS",
+ "FFTW_NO_VRANK_SPLITS",
+ "FFTW_NO_VRECURSE",
+ "FFTW_NO_SIMD",
+ "FFTW_NO_SLOW",
+ "FFTW_NO_FIXED_RADIX_LARGE_N",
+ "FFTW_ALLOW_PRUNING"
+ };
+
+ static unsigned flagt[] =
+ {
+ /* documented flags */
+ FFTW_MEASURE,
+ FFTW_DESTROY_INPUT,
+ FFTW_UNALIGNED,
+ FFTW_CONSERVE_MEMORY,
+ FFTW_EXHAUSTIVE,
+ FFTW_PRESERVE_INPUT,
+ FFTW_PATIENT,
+ FFTW_ESTIMATE,
+
+ /* undocumented beyond-guru flags */
+ FFTW_ESTIMATE_PATIENT,
+ FFTW_BELIEVE_PCOST,
+ FFTW_NO_DFT_R2HC,
+ FFTW_NO_NONTHREADED,
+ FFTW_NO_BUFFERING,
+ FFTW_NO_INDIRECT_OP,
+ FFTW_ALLOW_LARGE_GENERIC,
+ FFTW_NO_RANK_SPLITS,
+ FFTW_NO_VRANK_SPLITS,
+ FFTW_NO_VRECURSE,
+ FFTW_NO_SIMD,
+ FFTW_NO_SLOW,
+ FFTW_NO_FIXED_RADIX_LARGE_N,
+ FFTW_ALLOW_PRUNING
+ };
+
+ unsigned flagv = 0;
+
+ int i = 0, j = 0;
+
+ SciErr sciErr;
+ CheckInputArgument(pvApiCtx, 0, 1);
+
+ if (nbInputArgument(pvApiCtx) == 0)
+ {
+ // nothing
+ }
+ else
+ {
+ //get variable address of the input argument
+ sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr1);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ getVarType(pvApiCtx, piAddr1, &iType);
+ switch (iType)
+ {
+ case sci_ints:
+ {
+ /* int */
+ int iPrecision = 0;
+ int* pi32Data = NULL;
+ unsigned int* pui32Data = NULL;
+
+ getMatrixOfIntegerPrecision(pvApiCtx, piAddr1, &iPrecision);
+ if (iPrecision != SCI_INT32 && iPrecision != SCI_UINT32)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: A int32 expected.\n"), fname, 1);
+ return 1;
+ }
+
+ if (iPrecision == SCI_INT32)
+ {
+ sciErr = getMatrixOfInteger32(pvApiCtx, piAddr1, &m1, &n1, pi32Data);
+ uiVar1 = (unsigned int)pi32Data[0];
+ }
+ else
+ {
+ sciErr = getMatrixOfUnsignedInteger32(pvApiCtx, piAddr1, &m1, &n1, pui32Data);
+ uiVar1 = pui32Data[0];
+ }
+
+ if (sciErr.iErr)
+ {
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
+ printError(&sciErr, 0);
+ return 1;
+ }
+ break;
+ }
+ case sci_matrix:
+ {
+ /* double */
+ double* pdblData = NULL;
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddr1, &m1, &n1, &pdblData);
+ if (sciErr.iErr)
+ {
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ uiVar1 = (unsigned int)pdblData[0];
+ break;
+ }
+ case sci_strings:
+ {
+ /* string */
+ //fisrt call to retrieve dimensions
+ sciErr = getMatrixOfString(pvApiCtx, piAddr1, &m1, &n1, NULL, NULL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ piLen = (int*)malloc(sizeof(int) * m1 * n1);
+
+ //second call to retrieve length of each string
+ sciErr = getMatrixOfString(pvApiCtx, piAddr1, &m1, &n1, piLen, NULL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ Str1 = (char**)malloc(sizeof(char*) * m1 * n1);
+ for (i = 0 ; i < m1 * n1 ; i++)
+ {
+ Str1[i] = (char*)malloc(sizeof(char) * (piLen[i] + 1));//+ 1 for null termination
+ }
+
+ //third call to retrieve data
+ sciErr = getMatrixOfString(pvApiCtx, piAddr1, &m1, &n1, piLen, Str1);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ 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)
+ {
+ freeArrayOfString(Str1, m1 * n1);
+ Scierror(999, _("%s: Wrong values for input argument #%d: FFTW flag expected.\n"), fname, 1);
+ return 0;
+ }
+ else
+ {
+ if (i > 0)
+ {
+ flagv = ( flagv | (1U << (i - 1)) );
+ }
+ }
+ }
+
+ uiVar1 = (unsigned int)flagv;
+ freeArrayOfString(Str1, m1 * n1);
+ m1 = 1;
+ n1 = 1;
+ break;
+ }
+ default:
+ Scierror(53, _("%s: Wrong type for input argument #%d.\n"), fname, 1);
+ return 1;
+ }
+
+ CheckDims(1, m1, n1, 1, 1);
+ setCurrentFftwFlags(uiVar1);
+ }
+
+ /* return value of Sci_Plan.flags in position 2 */
+ sciErr = allocMatrixOfInteger32(pvApiCtx, nbInputArgument(pvApiCtx) + 2, 1, 1, &piDataOut);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: No more memory.\n"), fname);
+ return 1;
+ }
+
+ piDataOut[0] = (int) getCurrentFftwFlags();
+
+ /*Test for only FFTW_MEASURE*/
+ if (getCurrentFftwFlags() == 0)
+ {
+ j = 1;
+ if ((Str3 = (char **)MALLOC(sizeof(char *))) == NULL)
+ {
+ Scierror(999, _("%s: No more memory.\n"), fname);
+ return 1;
+ }
+
+ Str3[0] = strdup(Str[0]);
+ if (Str3[0] == NULL)
+ {
+ Scierror(999, _("%s: No more memory.\n"), fname);
+ return 1;
+ }
+ }
+ else
+ {
+ j = 0;
+ for (i = 1; i < nb_flag; i++)
+ {
+ if ((getCurrentFftwFlags() & flagt[i]) == flagt[i])
+ {
+ j++;
+ if (Str3)
+ {
+ Str3 = (char **)REALLOC(Str3, sizeof(char *) * j);
+ }
+ else
+ {
+ Str3 = (char **)MALLOC(sizeof(char *) * j);
+ }
+
+ if ( Str3 == NULL)
+ {
+ Scierror(999, _("%s: No more memory.\n"), fname);
+ return 1;
+ }
+
+ Str3[j - 1] = strdup(Str[i]);
+ if (Str3[j - 1] == NULL)
+ {
+ freeArrayOfString(Str3, j);
+ Scierror(999, _("%s: No more memory.\n"), fname);
+ return 1;
+ }
+ }
+ }
+ }
+
+ /* Create the string matrix as return of the function */
+ sciErr = createMatrixOfString(pvApiCtx, nbInputArgument(pvApiCtx) + 3, j, 1, Str3);
+ freeArrayOfString(Str3, j); // Data have been copied into Scilab memory
+
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 2;
+ AssignOutputVariable(pvApiCtx, 2) = nbInputArgument(pvApiCtx) + 3;
+ ReturnArguments(pvApiCtx);
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/sci_gateway/c/sci_fftw_forget_wisdom.c b/modules/fftw/sci_gateway/c/sci_fftw_forget_wisdom.c
new file mode 100755
index 000000000..f514bfb99
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/sci_fftw_forget_wisdom.c
@@ -0,0 +1,45 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2007 - INRIA - Alan LAYEC
+* Copyright (C) 2007 - INRIA - Allan CORNET
+* Copyright (C) 2012 - Scilab Enterprises - Cedric Delamarre
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+
+#include "fftw_utilities.h"
+#include "callfftw.h"
+#include "gw_fftw.h"
+#include "api_scilab.h"
+/*--------------------------------------------------------------------------*/
+/* Reset fftw wisdom
+*
+* Scilab Calling sequence :
+* -->fftw_forget_wisdom();
+*
+* Input : Nothing
+*
+* Output : Nothing
+*
+*/
+/*--------------------------------------------------------------------------*/
+int sci_fftw_forget_wisdom(char *fname, unsigned long fname_len)
+{
+ CheckInputArgument(pvApiCtx, 0, 0);
+
+ FreeFFTWPlan(getSci_Backward_Plan());
+ FreeFFTWPlan(getSci_Forward_Plan());
+
+ call_fftw_forget_wisdom();
+
+ AssignOutputVariable(pvApiCtx, 1) = 0;
+ ReturnArguments(pvApiCtx);
+
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/sci_gateway/c/sci_fftwlibraryisloaded.c b/modules/fftw/sci_gateway/c/sci_fftwlibraryisloaded.c
new file mode 100755
index 000000000..77c97cc01
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/sci_fftwlibraryisloaded.c
@@ -0,0 +1,44 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2006 - INRIA - Allan CORNET
+* Copyright (C) 2012 - Scilab Enterprises - Cedric Delamarre
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+#include "callfftw.h"
+#include "gw_fftw.h"
+#include "api_scilab.h"
+#include "localization.h"
+#include "Scierror.h"
+
+/*--------------------------------------------------------------------------*/
+int sci_fftwlibraryisloaded(char *fname, unsigned long fname_len)
+{
+ int iErr;
+
+ if ( IsLoadedFFTW() )
+ {
+ iErr = createScalarBoolean(pvApiCtx, nbInputArgument(pvApiCtx) + 1, 1); // true
+ }
+ else
+ {
+ iErr = createScalarBoolean(pvApiCtx, nbInputArgument(pvApiCtx) + 1, 0); // false
+ }
+
+ if (iErr)
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ return iErr;
+ }
+
+ AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1;
+ ReturnArguments(pvApiCtx);
+
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/sci_gateway/c/sci_get_fftw_wisdom.c b/modules/fftw/sci_gateway/c/sci_get_fftw_wisdom.c
new file mode 100755
index 000000000..f10ea2af8
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/sci_get_fftw_wisdom.c
@@ -0,0 +1,161 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2006 - INRIA - Alan LAYEC
+* Copyright (C) 2007 - INRIA - Allan CORNET
+* Copyright (C) 2012 - Scilab Enterprises - Cedric Delamarre
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+/*--------------------------------------------------------------------------*/
+#include <stdlib.h>
+#include "callfftw.h"
+#include "api_scilab.h"
+#include "MALLOC.h"
+#include "gw_fftw.h"
+#include "localization.h"
+#include "freeArrayOfString.h"
+#include "Scierror.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(char *fname, unsigned long fname_len)
+{
+ int n1 = 0, i = 0, j = 0;
+ char *Str = NULL;
+ char **Str1 = NULL;
+
+ CheckInputArgument(pvApiCtx, 0, 0);
+ CheckOutputArgument(pvApiCtx, 0, 1);
+
+ if ((Str = call_fftw_export_wisdom_to_string()) == NULL)
+ {
+ Scierror(999, _("%s: MKL fftw library does not implement wisdom functions yet.\n"), fname);
+ return 1;
+ }
+
+ n1 = 0;
+ j = 0;
+ if (Str)
+ {
+ int lenStr = (int)strlen(Str);
+ for (i = 0; i < lenStr; i++)
+ {
+ if (Str[i] == '\n')
+ {
+ int len = 0;
+ int k = 0;
+
+ n1++;
+
+ if (Str1)
+ {
+ Str1 = (char **)REALLOC(Str1, sizeof(char *) * n1);
+ }
+ else
+ {
+ Str1 = (char **)MALLOC(sizeof(char *) * n1);
+ }
+
+ if (Str1 == NULL)
+ {
+ Scierror(999, _("%s: No more memory.\n"), fname);
+ if (Str)
+ {
+ // According to the FFTW documentation we should free Str
+ // string but doing makes Scilab crash!?
+ //free(Str);
+ }
+ return 1;
+ }
+
+ len = i - j;
+
+ if ((Str1[n1 - 1] = (char *)MALLOC(sizeof(char) * (len + 1))) == NULL)
+ {
+ freeArrayOfString(Str1, n1 - 1);
+ if (Str)
+ {
+ // According to the FFTW documentation we should free Str
+ // string but doing makes Scilab crash!?
+ //free(Str);
+ }
+ Scierror(999, _("%s: No more memory.\n"), fname);
+ return 1;
+ }
+
+ for (k = 0; k < len; k++)
+ {
+ Str1[n1 - 1][k] = Str[k + j];
+ }
+ Str1[n1 - 1][len] = '\0';
+ j = i + 1;
+ }
+ }
+ }
+
+ n1++;
+
+ if (Str1)
+ {
+ Str1 = (char **)REALLOC(Str1, sizeof(char *) * n1);
+ }
+ else
+ {
+ Str1 = (char **)MALLOC(sizeof(char *) * n1);
+ }
+
+ if (Str1 == NULL)
+ {
+ Scierror(999, _("%s: No more memory.\n"), fname);
+ if (Str)
+ {
+ // According to the FFTW documentation we should free Str
+ // string but doing makes Scilab crash!?
+ //free(Str);
+ }
+ return 1;
+ }
+
+ if ((Str1[n1 - 1] = (char *)MALLOC(sizeof(char))) == NULL)
+ {
+ freeArrayOfString(Str1, n1 - 1);
+ if (Str)
+ {
+ // According to the FFTW documentation we should free Str
+ // string but doing makes Scilab crash!?
+ //free(Str);
+ }
+ Scierror(999, _("%s: No more memory.\n"), fname);
+ return 1;
+ }
+ Str1[n1 - 1][0] = '\0';
+
+ createMatrixOfString(pvApiCtx, nbInputArgument(pvApiCtx) + 1, n1, 1, Str1);
+
+ freeArrayOfString(Str1, n1);
+ if (Str)
+ {
+ // According to the FFTW documentation we should free Str
+ // string but doing makes Scilab crash!?
+ //free(Str);
+ }
+
+ AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1;
+ ReturnArguments(pvApiCtx);
+
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/sci_gateway/c/sci_loadfftwlibrary.c b/modules/fftw/sci_gateway/c/sci_loadfftwlibrary.c
new file mode 100755
index 000000000..bfa95a046
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/sci_loadfftwlibrary.c
@@ -0,0 +1,78 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2006 - INRIA - Allan CORNET
+* Copyright (C) 2012 - Scilab Enterprises - Cedric Delamarre
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+
+#include "api_scilab.h"
+#include "callfftw.h"
+#include "Scierror.h"
+#include "fftwlibname.h"
+#include "gw_fftw.h"
+#include "localization.h"
+/*--------------------------------------------------------------------------*/
+int sci_loadfftwlibrary(char *fname, unsigned long fname_len)
+{
+ static int l1, n1, m1;
+ char* FFTWLibname = NULL;
+ char* l1char = NULL;
+ int* piAddr1 = NULL;
+ SciErr sciErr;
+ int iErr = 0;
+
+ CheckInputArgument(pvApiCtx, 1, 1);
+
+ //get variable address
+ sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr1);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ if (isStringType(pvApiCtx, piAddr1) == 0)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), fname, 1);
+ return 1;
+ }
+
+ // Retrieve a single string at position 1
+ iErr = getAllocatedSingleString(pvApiCtx, piAddr1, &l1char);
+ if (iErr)
+ {
+ freeAllocatedSingleString(l1char);
+ return iErr;
+ }
+ FFTWLibname = l1char;
+ setfftwlibname(FFTWLibname);
+
+ n1 = 1;
+ if ( LoadFFTWLibrary(FFTWLibname) )
+ {
+ iErr = createScalarBoolean(pvApiCtx, nbInputArgument(pvApiCtx) + 1, 1); // true
+ }
+ else
+ {
+ iErr = createScalarBoolean(pvApiCtx, nbInputArgument(pvApiCtx) + 1, 0); // false
+ }
+ freeAllocatedSingleString(l1char);
+
+ if (iErr)
+ {
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ return iErr;
+ }
+
+ AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1;
+ ReturnArguments(pvApiCtx);
+
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/sci_gateway/c/sci_set_fftw_wisdom.c b/modules/fftw/sci_gateway/c/sci_set_fftw_wisdom.c
new file mode 100755
index 000000000..f435590e9
--- /dev/null
+++ b/modules/fftw/sci_gateway/c/sci_set_fftw_wisdom.c
@@ -0,0 +1,147 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2006/2007 - INRIA - Alan LAYEC
+* Copyright (C) 2007 - INRIA - Allan CORNET
+* Copyright (C) 2012 - Scilab Enterprises - Cedric Delamarre
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+
+
+#include "api_scilab.h"
+#include "callfftw.h"
+#include "MALLOC.h"
+#include "gw_fftw.h"
+#include "localization.h"
+#include "freeArrayOfString.h"
+#include "Scierror.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(char *fname, unsigned long fname_len)
+{
+ SciErr sciErr;
+ char **Str1 = NULL;
+ char *Str = NULL;
+ int m1 = 0, n1 = 0;
+ int len = 0, k = 0;
+ int j = 0;
+ int i = 0;
+ int* piAddr1 = NULL;
+ int* piLen = NULL;
+
+ if (withMKL())
+ {
+ Scierror(999, _("%s: MKL fftw library does not implement wisdom functions yet.\n"), fname);
+ return 0;
+ }
+
+ CheckInputArgument(pvApiCtx, 1, 1);
+
+ //get variable address
+ sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr1);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ if (isStringType(pvApiCtx, piAddr1) == 0)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), fname, 1);
+ return 1;
+ }
+
+ //fisrt call to retrieve dimensions
+ sciErr = getMatrixOfString(pvApiCtx, piAddr1, &m1, &n1, NULL, NULL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ piLen = (int*)malloc(sizeof(int) * m1 * n1);
+
+ //second call to retrieve length of each string
+ sciErr = getMatrixOfString(pvApiCtx, piAddr1, &m1, &n1, piLen, NULL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ Str1 = (char**)malloc(sizeof(char*) * m1 * n1);
+ for (i = 0 ; i < m1 * n1 ; i++)
+ {
+ Str1[i] = (char*)malloc(sizeof(char) * (piLen[i] + 1));//+ 1 for null termination
+ }
+
+ //third call to retrieve data
+ sciErr = getMatrixOfString(pvApiCtx, piAddr1, &m1, &n1, piLen, Str1);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ for (j = 0; j < m1 * n1; j++)
+ {
+ len += (int)strlen(Str1[j]) + 1;
+
+ if (Str)
+ {
+ Str = (char *)REALLOC(Str, sizeof(char) * (len));
+ }
+ else
+ {
+ Str = (char *)MALLOC(sizeof(char) * (len));
+ }
+
+ if (Str == NULL)
+ {
+ freeArrayOfString(Str1, m1 * n1);
+ Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+ return 1;
+ }
+
+ for (i = 0; i < (int)strlen(Str1[j]); i++)
+ {
+ Str[k + i] = Str1[j][i];
+ }
+ Str[k + strlen(Str1[j])] = '\n';
+ k += (int)strlen(Str1[j]) + 1;
+ }
+ Str[k - 1] = '\0';
+
+ freeArrayOfString(Str1, m1 * n1);
+
+ if (!(call_fftw_import_wisdom_from_string(Str)))
+ {
+ FREE(Str);
+ Str = NULL;
+ Scierror(999, _("%s: Wrong value for input argument #%d: a valid wisdom expected.\n"), fname, 1);
+ return 1;
+ }
+ FREE(Str);
+ Str = NULL;
+
+ AssignOutputVariable(pvApiCtx, 1) = 0;
+ ReturnArguments(pvApiCtx);
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/sci_gateway/fftw_gateway.xml b/modules/fftw/sci_gateway/fftw_gateway.xml
new file mode 100755
index 000000000..63c49a915
--- /dev/null
+++ b/modules/fftw/sci_gateway/fftw_gateway.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - INRIA - Allan CORNET
+ * Copyright (C) 2007 - INRIA - Sylvestre LEDRU
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<!DOCTYPE GATEWAY SYSTEM "../../functions/xml/gateway.dtd">
+<GATEWAY name="fftw">
+
+ <!--
+ Scilab
+ Interface description. In this file, we define the list of the function which
+ will be available into Scilab and the link to the "native" function.
+
+ gatewayId is the position in the hashtable 'Interfaces' defined in the
+ file SCI/modules/core/src/c/callinterf.h
+
+ primitiveId is the position in the hashtable '<module>Table Tab[]' defined
+ in the file modules/<module>/sci_gateway/c/gw_<module>.c
+
+ primitiveName is the name of the Scilab function
+
+ Don't touch if you do not know what you are doing
+-->
+
+ <PRIMITIVE gatewayId="51" primitiveId="1" primitiveName="loadfftwlibrary" />
+ <PRIMITIVE gatewayId="51" primitiveId="2" primitiveName="disposefftwlibrary" />
+ <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="get_fftw_wisdom" />
+ <PRIMITIVE gatewayId="51" primitiveId="7" primitiveName="set_fftw_wisdom" />
+ <PRIMITIVE gatewayId="51" primitiveId="8" primitiveName="fftw_forget_wisdom" />
+ <PRIMITIVE gatewayId="51" primitiveId="9" primitiveName="dct" />
+ <PRIMITIVE gatewayId="51" primitiveId="10" primitiveName="dst" />
+</GATEWAY>
diff --git a/modules/fftw/scilab_windows_Import.def b/modules/fftw/scilab_windows_Import.def
new file mode 100755
index 000000000..05c63be9f
--- /dev/null
+++ b/modules/fftw/scilab_windows_Import.def
@@ -0,0 +1,8 @@
+LIBRARY scilab_windows.dll
+
+
+EXPORTS
+; ---------------------------------------
+; scilab_windows
+; ---------------------------------------
+ strdup_windows
diff --git a/modules/fftw/src/c/.deps/.dirstamp b/modules/fftw/src/c/.deps/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/fftw/src/c/.deps/.dirstamp
diff --git a/modules/fftw/src/c/.deps/libscifftw_algo_la-callfftw.Plo b/modules/fftw/src/c/.deps/libscifftw_algo_la-callfftw.Plo
new file mode 100755
index 000000000..a2be5dbf2
--- /dev/null
+++ b/modules/fftw/src/c/.deps/libscifftw_algo_la-callfftw.Plo
@@ -0,0 +1,157 @@
+src/c/libscifftw_algo_la-callfftw.lo: src/c/callfftw.c \
+ /usr/include/stdc-predef.h src/c/callfftw.h \
+ ../../modules/core/includes/BOOL.h src/c/fftw3.h /usr/include/stdio.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ ../../modules/dynamic_link/includes/dynamiclibrary.h \
+ ../../modules/dynamic_link/includes/dynamiclibrary_others.h \
+ /usr/include/dlfcn.h /usr/include/x86_64-linux-gnu/bits/dlfcn.h \
+ ../../modules/fileio/includes/getshortpathname.h \
+ ../../modules/fileio/includes/dynlib_fileio.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/localization/includes/charEncoding.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/x86_64-linux-gnu/sys/stat.h \
+ /usr/include/x86_64-linux-gnu/bits/stat.h
+
+/usr/include/stdc-predef.h:
+
+src/c/callfftw.h:
+
+../../modules/core/includes/BOOL.h:
+
+src/c/fftw3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+../../modules/dynamic_link/includes/dynamiclibrary.h:
+
+../../modules/dynamic_link/includes/dynamiclibrary_others.h:
+
+/usr/include/dlfcn.h:
+
+/usr/include/x86_64-linux-gnu/bits/dlfcn.h:
+
+../../modules/fileio/includes/getshortpathname.h:
+
+../../modules/fileio/includes/dynlib_fileio.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/localization/includes/charEncoding.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/x86_64-linux-gnu/sys/stat.h:
+
+/usr/include/x86_64-linux-gnu/bits/stat.h:
diff --git a/modules/fftw/src/c/.deps/libscifftw_algo_la-fftw_utilities.Plo b/modules/fftw/src/c/.deps/libscifftw_algo_la-fftw_utilities.Plo
new file mode 100755
index 000000000..edc5f00fb
--- /dev/null
+++ b/modules/fftw/src/c/.deps/libscifftw_algo_la-fftw_utilities.Plo
@@ -0,0 +1,167 @@
+src/c/libscifftw_algo_la-fftw_utilities.lo: src/c/fftw_utilities.c \
+ /usr/include/stdc-predef.h src/c/fftw_utilities.h /usr/include/string.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h src/c/fftw3.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h src/c/callfftw.h \
+ ../../modules/core/includes/BOOL.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h
+
+/usr/include/stdc-predef.h:
+
+src/c/fftw_utilities.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+src/c/fftw3.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+src/c/callfftw.h:
+
+../../modules/core/includes/BOOL.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
diff --git a/modules/fftw/src/c/.deps/libscifftw_algo_la-fftwlibname.Plo b/modules/fftw/src/c/.deps/libscifftw_algo_la-fftwlibname.Plo
new file mode 100755
index 000000000..76010d3d5
--- /dev/null
+++ b/modules/fftw/src/c/.deps/libscifftw_algo_la-fftwlibname.Plo
@@ -0,0 +1,104 @@
+src/c/libscifftw_algo_la-fftwlibname.lo: src/c/fftwlibname.c \
+ /usr/include/stdc-predef.h /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h src/c/fftwlibname.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+src/c/fftwlibname.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
diff --git a/modules/fftw/src/c/.deps/libscifftw_algo_la-sci_data_utilities.Plo b/modules/fftw/src/c/.deps/libscifftw_algo_la-sci_data_utilities.Plo
new file mode 100755
index 000000000..2d062f540
--- /dev/null
+++ b/modules/fftw/src/c/.deps/libscifftw_algo_la-sci_data_utilities.Plo
@@ -0,0 +1,285 @@
+src/c/libscifftw_algo_la-sci_data_utilities.lo: \
+ src/c/sci_data_utilities.c /usr/include/stdc-predef.h \
+ ../../modules/core/includes/stack-c.h /usr/include/string.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_common.h \
+ ../../modules/api_scilab/includes/api_scilab.h \
+ ../../modules/api_scilab/includes/api_double.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/api_scilab/includes/api_string.h /usr/include/wchar.h \
+ /usr/include/stdio.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ ../../modules/api_scilab/includes/api_int.h \
+ ../../modules/api_scilab/includes/api_poly.h \
+ ../../modules/api_scilab/includes/api_sparse.h \
+ ../../modules/api_scilab/includes/api_boolean.h \
+ ../../modules/api_scilab/includes/api_boolean_sparse.h \
+ ../../modules/api_scilab/includes/api_pointer.h \
+ ../../modules/api_scilab/includes/api_list.h \
+ ../../modules/api_scilab/includes/api_error.h \
+ ../../modules/api_scilab/includes/api_handle.h \
+ ../../modules/api_scilab/includes/api_optional.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/api_scilab/includes/api_hypermat.h \
+ ../../modules/core/includes/core_math.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/localization/includes/localization.h \
+ ../../modules/core/includes/machine.h /usr/include/libintl.h \
+ /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ ../../modules/output_stream/includes/do_error_number.h
+
+/usr/include/stdc-predef.h:
+
+../../modules/core/includes/stack-c.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_common.h:
+
+../../modules/api_scilab/includes/api_scilab.h:
+
+../../modules/api_scilab/includes/api_double.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/api_scilab/includes/api_string.h:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+../../modules/api_scilab/includes/api_int.h:
+
+../../modules/api_scilab/includes/api_poly.h:
+
+../../modules/api_scilab/includes/api_sparse.h:
+
+../../modules/api_scilab/includes/api_boolean.h:
+
+../../modules/api_scilab/includes/api_boolean_sparse.h:
+
+../../modules/api_scilab/includes/api_pointer.h:
+
+../../modules/api_scilab/includes/api_list.h:
+
+../../modules/api_scilab/includes/api_error.h:
+
+../../modules/api_scilab/includes/api_handle.h:
+
+../../modules/api_scilab/includes/api_optional.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/api_scilab/includes/api_hypermat.h:
+
+../../modules/core/includes/core_math.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/localization/includes/localization.h:
+
+../../modules/core/includes/machine.h:
+
+/usr/include/libintl.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+../../modules/output_stream/includes/do_error_number.h:
diff --git a/modules/fftw/src/c/.deps/libscifftw_algo_la-with_fftw.Plo b/modules/fftw/src/c/.deps/libscifftw_algo_la-with_fftw.Plo
new file mode 100755
index 000000000..88266ada8
--- /dev/null
+++ b/modules/fftw/src/c/.deps/libscifftw_algo_la-with_fftw.Plo
@@ -0,0 +1,14 @@
+src/c/libscifftw_algo_la-with_fftw.lo: src/c/with_fftw.c \
+ /usr/include/stdc-predef.h includes/with_fftw.h \
+ ../../modules/core/includes/machine.h ../../modules/core/includes/BOOL.h \
+ includes/dynlib_fftw.h
+
+/usr/include/stdc-predef.h:
+
+includes/with_fftw.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/dynlib_fftw.h:
diff --git a/modules/fftw/src/c/.deps/libscifftw_la-callfftw.Plo b/modules/fftw/src/c/.deps/libscifftw_la-callfftw.Plo
new file mode 100755
index 000000000..9ce06a81e
--- /dev/null
+++ b/modules/fftw/src/c/.deps/libscifftw_la-callfftw.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/modules/fftw/src/c/.deps/libscifftw_la-fftw_utilities.Plo b/modules/fftw/src/c/.deps/libscifftw_la-fftw_utilities.Plo
new file mode 100755
index 000000000..9ce06a81e
--- /dev/null
+++ b/modules/fftw/src/c/.deps/libscifftw_la-fftw_utilities.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/modules/fftw/src/c/.deps/libscifftw_la-fftwlibname.Plo b/modules/fftw/src/c/.deps/libscifftw_la-fftwlibname.Plo
new file mode 100755
index 000000000..9ce06a81e
--- /dev/null
+++ b/modules/fftw/src/c/.deps/libscifftw_la-fftwlibname.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/modules/fftw/src/c/.deps/libscifftw_la-sci_data_utilities.Plo b/modules/fftw/src/c/.deps/libscifftw_la-sci_data_utilities.Plo
new file mode 100755
index 000000000..9ce06a81e
--- /dev/null
+++ b/modules/fftw/src/c/.deps/libscifftw_la-sci_data_utilities.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/modules/fftw/src/c/.deps/libscifftw_la-with_fftw.Plo b/modules/fftw/src/c/.deps/libscifftw_la-with_fftw.Plo
new file mode 100755
index 000000000..9ce06a81e
--- /dev/null
+++ b/modules/fftw/src/c/.deps/libscifftw_la-with_fftw.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/modules/fftw/src/c/.dirstamp b/modules/fftw/src/c/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/fftw/src/c/.dirstamp
diff --git a/modules/fftw/src/c/.libs/libscifftw_algo_la-callfftw.o b/modules/fftw/src/c/.libs/libscifftw_algo_la-callfftw.o
new file mode 100755
index 000000000..cdc877c9d
--- /dev/null
+++ b/modules/fftw/src/c/.libs/libscifftw_algo_la-callfftw.o
Binary files differ
diff --git a/modules/fftw/src/c/.libs/libscifftw_algo_la-fftw_utilities.o b/modules/fftw/src/c/.libs/libscifftw_algo_la-fftw_utilities.o
new file mode 100755
index 000000000..051aa000d
--- /dev/null
+++ b/modules/fftw/src/c/.libs/libscifftw_algo_la-fftw_utilities.o
Binary files differ
diff --git a/modules/fftw/src/c/.libs/libscifftw_algo_la-fftwlibname.o b/modules/fftw/src/c/.libs/libscifftw_algo_la-fftwlibname.o
new file mode 100755
index 000000000..d386e01db
--- /dev/null
+++ b/modules/fftw/src/c/.libs/libscifftw_algo_la-fftwlibname.o
Binary files differ
diff --git a/modules/fftw/src/c/.libs/libscifftw_algo_la-sci_data_utilities.o b/modules/fftw/src/c/.libs/libscifftw_algo_la-sci_data_utilities.o
new file mode 100755
index 000000000..c3bfbe6c3
--- /dev/null
+++ b/modules/fftw/src/c/.libs/libscifftw_algo_la-sci_data_utilities.o
Binary files differ
diff --git a/modules/fftw/src/c/.libs/libscifftw_algo_la-with_fftw.o b/modules/fftw/src/c/.libs/libscifftw_algo_la-with_fftw.o
new file mode 100755
index 000000000..83cee3b01
--- /dev/null
+++ b/modules/fftw/src/c/.libs/libscifftw_algo_la-with_fftw.o
Binary files differ
diff --git a/modules/fftw/src/c/DllmainFttw.c b/modules/fftw/src/c/DllmainFttw.c
new file mode 100755
index 000000000..06e524aa2
--- /dev/null
+++ b/modules/fftw/src/c/DllmainFttw.c
@@ -0,0 +1,32 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006 - INRIA - Allan CORNET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+#include <windows.h>
+/*--------------------------------------------------------------------------*/
+#pragma comment(lib,"../../bin/libintl.lib")
+/*--------------------------------------------------------------------------*/
+int WINAPI DllMain (HINSTANCE hInstance , DWORD reason, PVOID pvReserved)
+{
+ switch (reason)
+ {
+ case DLL_PROCESS_ATTACH:
+ break;
+ case DLL_PROCESS_DETACH:
+ break;
+ case DLL_THREAD_ATTACH:
+ break;
+ case DLL_THREAD_DETACH:
+ break;
+ }
+ return 1;
+}
+/*--------------------------------------------------------------------------*/
+
diff --git a/modules/fftw/src/c/callfftw.c b/modules/fftw/src/c/callfftw.c
new file mode 100755
index 000000000..ab8b6b401
--- /dev/null
+++ b/modules/fftw/src/c/callfftw.c
@@ -0,0 +1,307 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2006 - INRIA - Allan CORNET
+* Copyright (C) 2012 - INRIA - Serge STEER
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+#include "callfftw.h"
+/*--------------------------------------------------------------------------*/
+#include "dynamiclibrary.h"
+#include "getshortpathname.h"
+#include "MALLOC.h"
+#include "charEncoding.h"
+/*--------------------------------------------------------------------------*/
+typedef void (*PROC_FFTW_EXECUTE_SPLIT_DFT) (const fftw_plan p, double *ri, double *ii, double *ro, double *io);
+typedef void (*PROC_FFTW_EXECUTE_SPLIT_DFT_C2R) (const fftw_plan p, double *ri, double *ii, double *ro);
+typedef void (*PROC_FFTW_EXECUTE_SPLIT_DFT_R2C) (const fftw_plan p, double *ri, double *ro, double *io);
+typedef void (*PROC_FFTW_EXECUTE_SPLIT_DFT_R2R) (const fftw_plan p, double *ri, double *ro);
+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 fftw_plan (*PROC_FFTW_PLAN_GURU_SPLIT_DFT_C2R) (int rank, const fftw_iodim *dims, int howmany_rank, const fftw_iodim *howmany_dims, double *ri, double *ii, double *ro, unsigned flags);
+typedef fftw_plan (*PROC_FFTW_PLAN_GURU_SPLIT_DFT_R2C) (int rank, const fftw_iodim *dims, int howmany_rank, const fftw_iodim *howmany_dims, double *ri, double *ro, double *io, unsigned flags);
+typedef fftw_plan (*PROC_FFTW_PLAN_GURU_SPLIT_DFT_R2R) (int rank, const fftw_iodim *dims, int howmany_rank, const fftw_iodim *howmany_dims, double *ri, double *ro, fftw_r2r_kind *kind, unsigned flags);
+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 DynLibHandle hinstLib = NULL;
+static PROC_FFTW_EXECUTE_SPLIT_DFT MY_FFTW_EXECUTE_SPLIT_DFT = NULL;
+static PROC_FFTW_EXECUTE_SPLIT_DFT_C2R MY_FFTW_EXECUTE_SPLIT_DFT_C2R = NULL;
+static PROC_FFTW_EXECUTE_SPLIT_DFT_R2C MY_FFTW_EXECUTE_SPLIT_DFT_R2C = NULL;
+static PROC_FFTW_EXECUTE_SPLIT_DFT_R2R MY_FFTW_EXECUTE_SPLIT_DFT_R2R = NULL;
+static PROC_FFTW_PLAN_GURU_SPLIT_DFT MY_FFTW_PLAN_GURU_SPLIT_DFT = NULL;
+static PROC_FFTW_PLAN_GURU_SPLIT_DFT_C2R MY_FFTW_PLAN_GURU_SPLIT_DFT_C2R = NULL;
+static PROC_FFTW_PLAN_GURU_SPLIT_DFT_R2C MY_FFTW_PLAN_GURU_SPLIT_DFT_R2C = NULL;
+static PROC_FFTW_PLAN_GURU_SPLIT_DFT_R2R MY_FFTW_PLAN_GURU_SPLIT_DFT_R2R = 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)
+{
+ 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) )
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+/*--------------------------------------------------------------------------*/
+BOOL LoadFFTWLibrary(const char* libraryname)
+{
+
+ if (libraryname == NULL)
+ {
+ return FALSE;
+ }
+ if (hinstLib == NULL)
+ {
+#ifdef _MSC_VER
+ {
+ wchar_t * wclibraryname = to_wide_string(libraryname);
+ if (wclibraryname)
+ {
+ hinstLib = LoadDynLibraryW(wclibraryname);
+ FREE(wclibraryname);
+ wclibraryname = NULL;
+ }
+ }
+#else
+ hinstLib = LoadDynLibrary(libraryname);
+#endif
+ MY_FFTW_EXECUTE_SPLIT_DFT = NULL;
+ MY_FFTW_EXECUTE_SPLIT_DFT_C2R = NULL;
+ MY_FFTW_EXECUTE_SPLIT_DFT_R2C = NULL;
+ MY_FFTW_EXECUTE_SPLIT_DFT_R2R = NULL;
+
+ MY_FFTW_PLAN_GURU_SPLIT_DFT = NULL;
+ MY_FFTW_PLAN_GURU_SPLIT_DFT_C2R = NULL;
+ MY_FFTW_PLAN_GURU_SPLIT_DFT_R2C = NULL;
+ MY_FFTW_PLAN_GURU_SPLIT_DFT_R2R = 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) GetDynLibFuncPtr(hinstLib, "fftw_execute_split_dft");
+ MY_FFTW_EXECUTE_SPLIT_DFT_C2R = (PROC_FFTW_EXECUTE_SPLIT_DFT_C2R) GetDynLibFuncPtr(hinstLib, "fftw_execute_split_dft_c2r");
+ MY_FFTW_EXECUTE_SPLIT_DFT_R2C = (PROC_FFTW_EXECUTE_SPLIT_DFT_R2C) GetDynLibFuncPtr(hinstLib, "fftw_execute_split_dft_r2c");
+ MY_FFTW_EXECUTE_SPLIT_DFT_R2R = (PROC_FFTW_EXECUTE_SPLIT_DFT_R2R) GetDynLibFuncPtr(hinstLib, "fftw_execute_r2r");
+
+ MY_FFTW_PLAN_GURU_SPLIT_DFT = (PROC_FFTW_PLAN_GURU_SPLIT_DFT) GetDynLibFuncPtr(hinstLib, "fftw_plan_guru_split_dft");
+ MY_FFTW_PLAN_GURU_SPLIT_DFT_C2R = (PROC_FFTW_PLAN_GURU_SPLIT_DFT_C2R) GetDynLibFuncPtr(hinstLib, "fftw_plan_guru_split_dft_c2r");
+ MY_FFTW_PLAN_GURU_SPLIT_DFT_R2C = (PROC_FFTW_PLAN_GURU_SPLIT_DFT_R2C) GetDynLibFuncPtr(hinstLib, "fftw_plan_guru_split_dft_r2c");
+ MY_FFTW_PLAN_GURU_SPLIT_DFT_R2R = (PROC_FFTW_PLAN_GURU_SPLIT_DFT_R2R) GetDynLibFuncPtr(hinstLib, "fftw_plan_guru_r2r");
+
+
+ MY_FFTW_DESTROY_PLAN = (PROC_FFTW_DESTROY_PLAN) GetDynLibFuncPtr(hinstLib, "fftw_destroy_plan");
+
+ MY_FFTW_EXPORT_WISDOM_TO_STRING = (PROC_FFTW_EXPORT_WISDOM_TO_STRING) GetDynLibFuncPtr(hinstLib, "fftw_export_wisdom_to_string");
+ MY_FFTW_IMPORT_WISDOM_FROM_STRING = (PROC_FFTW_IMPORT_WISDOM_FROM_STRING) GetDynLibFuncPtr(hinstLib, "fftw_import_wisdom_from_string");
+ MY_FFTW_FORGET_WISDOM = (PROC_FFTW_FORGET_WISDOM) GetDynLibFuncPtr(hinstLib, "fftw_forget_wisdom");
+ }
+
+ return IsLoadedFFTW();
+}
+/*--------------------------------------------------------------------------*/
+BOOL DisposeFFTWLibrary(void)
+{
+ BOOL fFreeResult;
+
+ if (hinstLib)
+ {
+ fFreeResult = FreeDynLibrary(hinstLib);
+ hinstLib = NULL;
+ }
+
+ if (MY_FFTW_EXECUTE_SPLIT_DFT)
+ {
+ MY_FFTW_EXECUTE_SPLIT_DFT = NULL;
+ }
+ if (MY_FFTW_EXECUTE_SPLIT_DFT_C2R)
+ {
+ MY_FFTW_EXECUTE_SPLIT_DFT_C2R = NULL;
+ }
+ if (MY_FFTW_EXECUTE_SPLIT_DFT_R2C)
+ {
+ MY_FFTW_EXECUTE_SPLIT_DFT_R2C = NULL;
+ }
+ if (MY_FFTW_EXECUTE_SPLIT_DFT_R2R)
+ {
+ MY_FFTW_EXECUTE_SPLIT_DFT_R2R = NULL;
+ }
+
+ if (MY_FFTW_PLAN_GURU_SPLIT_DFT)
+ {
+ MY_FFTW_PLAN_GURU_SPLIT_DFT = NULL;
+ }
+ if (MY_FFTW_PLAN_GURU_SPLIT_DFT_C2R)
+ {
+ MY_FFTW_PLAN_GURU_SPLIT_DFT_C2R = NULL;
+ }
+ if (MY_FFTW_PLAN_GURU_SPLIT_DFT_R2C)
+ {
+ MY_FFTW_PLAN_GURU_SPLIT_DFT_R2C = NULL;
+ }
+ if (MY_FFTW_PLAN_GURU_SPLIT_DFT_R2R)
+ {
+ MY_FFTW_PLAN_GURU_SPLIT_DFT_R2R = NULL;
+ }
+
+ if (MY_FFTW_DESTROY_PLAN)
+ {
+ MY_FFTW_DESTROY_PLAN = NULL;
+ }
+
+ 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_EXECUTE_SPLIT_DFT_C2R &&
+ !MY_FFTW_EXECUTE_SPLIT_DFT_R2C && !MY_FFTW_EXECUTE_SPLIT_DFT_R2R &&
+ !MY_FFTW_PLAN_GURU_SPLIT_DFT && !MY_FFTW_PLAN_GURU_SPLIT_DFT_C2R &&
+ !MY_FFTW_PLAN_GURU_SPLIT_DFT_R2C && !MY_FFTW_PLAN_GURU_SPLIT_DFT_R2R &&
+ !MY_FFTW_DESTROY_PLAN &&
+ !MY_FFTW_EXPORT_WISDOM_TO_STRING && !MY_FFTW_IMPORT_WISDOM_FROM_STRING &&
+ !MY_FFTW_FORGET_WISDOM )
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+/*--------------------------------------------------------------------------*/
+void call_fftw_execute_split_dft (const fftw_plan p, double *ri, double *ii, double *ro, double *io)
+{
+ if (MY_FFTW_EXECUTE_SPLIT_DFT)
+ {
+ (MY_FFTW_EXECUTE_SPLIT_DFT)(p, ri, ii, ro, io);
+ }
+}
+/*--------------------------------------------------------------------------*/
+void call_fftw_execute_split_dft_c2r (const fftw_plan p, double *ri, double *ii, double *ro)
+{
+ if (MY_FFTW_EXECUTE_SPLIT_DFT_C2R)
+ {
+ (MY_FFTW_EXECUTE_SPLIT_DFT_C2R)(p, ri, ii, ro);
+ }
+}
+/*--------------------------------------------------------------------------*/
+void call_fftw_execute_split_dft_r2c (const fftw_plan p, double *ri, double *ro, double *io)
+{
+ if (MY_FFTW_EXECUTE_SPLIT_DFT_R2C)
+ {
+ (MY_FFTW_EXECUTE_SPLIT_DFT_R2C)(p, ri, ro, io);
+ }
+}
+/*--------------------------------------------------------------------------*/
+void call_fftw_execute_split_dft_r2r (const fftw_plan p, double *ri, double *ro)
+{
+ if (MY_FFTW_EXECUTE_SPLIT_DFT_R2R)
+ {
+ (MY_FFTW_EXECUTE_SPLIT_DFT_R2R)(p, ri, ro);
+ }
+}
+/*--------------------------------------------------------------------------*/
+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)
+{
+ if (MY_FFTW_PLAN_GURU_SPLIT_DFT)
+ {
+ return (fftw_plan)(MY_FFTW_PLAN_GURU_SPLIT_DFT)(rank, dims, howmany_rank, howmany_dims, ri, ii, ro, io, flags);
+ }
+ else
+ {
+ return NULL;
+ }
+}
+/*--------------------------------------------------------------------------*/
+fftw_plan call_fftw_plan_guru_split_dft_c2r (int rank, const fftw_iodim *dims, int howmany_rank, const fftw_iodim *howmany_dims, double *ri, double *ii, double *ro, unsigned flags)
+{
+ if (MY_FFTW_PLAN_GURU_SPLIT_DFT_C2R)
+ {
+ return (fftw_plan)(MY_FFTW_PLAN_GURU_SPLIT_DFT_C2R)(rank, dims, howmany_rank, howmany_dims, ri, ii, ro, flags);
+ }
+ else
+ {
+ return NULL;
+ }
+}
+/*--------------------------------------------------------------------------*/
+fftw_plan call_fftw_plan_guru_split_dft_r2c (int rank, const fftw_iodim *dims, int howmany_rank, const fftw_iodim *howmany_dims, double *ri, double *ro, double *io, unsigned flags)
+{
+ if (MY_FFTW_PLAN_GURU_SPLIT_DFT_R2C)
+ {
+ return (fftw_plan)(MY_FFTW_PLAN_GURU_SPLIT_DFT_R2C)(rank, dims, howmany_rank, howmany_dims, ri, ro, io, flags);
+ }
+ else
+ {
+ return NULL;
+ }
+}
+/*--------------------------------------------------------------------------*/
+fftw_plan call_fftw_plan_guru_split_dft_r2r (int rank, const fftw_iodim *dims, int howmany_rank, const fftw_iodim *howmany_dims, double *ri, double *ro, fftw_r2r_kind *kind, unsigned flags)
+{
+ if (MY_FFTW_PLAN_GURU_SPLIT_DFT_R2R)
+ {
+ return (fftw_plan)(MY_FFTW_PLAN_GURU_SPLIT_DFT_R2R)(rank, dims, howmany_rank, howmany_dims, ri, ro, kind, flags);
+ }
+ else
+ {
+ return NULL;
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+void call_fftw_destroy_plan (fftw_plan p)
+{
+ if (MY_FFTW_DESTROY_PLAN)
+ {
+ (MY_FFTW_DESTROY_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)();
+ }
+ return NULL;
+}
+/*--------------------------------------------------------------------------*/
+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);
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
+void call_fftw_forget_wisdom (void)
+{
+ if (MY_FFTW_FORGET_WISDOM)
+ {
+ (MY_FFTW_FORGET_WISDOM)();
+ }
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/src/c/callfftw.h b/modules/fftw/src/c/callfftw.h
new file mode 100755
index 000000000..87dab4910
--- /dev/null
+++ b/modules/fftw/src/c/callfftw.h
@@ -0,0 +1,54 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006 - INRIA - Allan CORNET
+ * Copyright (C) 2012 - INRIA - Serge STEER
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __CALLFFTW_H__
+#define __CALLFFTW_H__
+/*--------------------------------------------------------------------------*/
+#include "BOOL.h"
+#include "fftw3.h"
+/*--------------------------------------------------------------------------*/
+BOOL IsLoadedFFTW(void);
+/*--------------------------------------------------------------------------*/
+BOOL LoadFFTWLibrary(const 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_c2r (const fftw_plan p, double *ri, double *ii, double *ro);
+/*--------------------------------------------------------------------------*/
+void call_fftw_execute_split_dft_r2c (const fftw_plan p, double *ri, double *ro, double *io);
+/*--------------------------------------------------------------------------*/
+void call_fftw_execute_split_dft_r2r (const fftw_plan p, double *ri, double *ro);
+/*--------------------------------------------------------------------------*/
+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_c2r (int rank, const fftw_iodim *dims, int howmany_rank, const fftw_iodim *howmany_dims, double *ri, double *ii, double *ro, unsigned flags);
+/*--------------------------------------------------------------------------*/
+fftw_plan call_fftw_plan_guru_split_dft_r2c (int rank, const fftw_iodim *dims, int howmany_rank, const fftw_iodim *howmany_dims, double *ri, double *ro, double *io, unsigned flags);
+/*--------------------------------------------------------------------------*/
+fftw_plan call_fftw_plan_guru_split_dft_r2r (int rank, const fftw_iodim *dims, int howmany_rank, const fftw_iodim *howmany_dims, double *ri, double *ro, fftw_r2r_kind *kind, unsigned flags);
+/*--------------------------------------------------------------------------*/
+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);
+/*--------------------------------------------------------------------------*/
+int withMKL(void);
+/*--------------------------------------------------------------------------*/
+
+#endif /* __CALLFFTW_H__ */
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/src/c/fftw.rc b/modules/fftw/src/c/fftw.rc
new file mode 100755
index 000000000..664ea0a8b
--- /dev/null
+++ b/modules/fftw/src/c/fftw.rc
@@ -0,0 +1,97 @@
+// Microsoft Visual C++ generated resource script.
+//
+
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+//#include "afxres.h"
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include "windows.h"
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// French (France) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)
+#ifdef _WIN32
+LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 5,5,2,0
+ PRODUCTVERSION 5,5,2,0
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x0L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040c04b0"
+ BEGIN
+ VALUE "CompanyName", "Scilab"
+ VALUE "FileDescription", "fftw module"
+ VALUE "FileVersion", "5, 5, 2, 0"
+ VALUE "InternalName", "fftw"
+ VALUE "LegalCopyright", "Copyright (C) 2017"
+ VALUE "OriginalFilename", "fftw.rc"
+ VALUE "ProductName", " fftw"
+ VALUE "ProductVersion", "5, 5, 2, 0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x40c, 1200
+ END
+END
+
+#endif // French (France) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/modules/fftw/src/c/fftw3.h b/modules/fftw/src/c/fftw3.h
new file mode 100755
index 000000000..75a93a0cb
--- /dev/null
+++ b/modules/fftw/src/c/fftw3.h
@@ -0,0 +1,334 @@
+/*
+ * Copyright (c) 2003, 2006 Matteo Frigo
+ * Copyright (c) 2003, 2006 Massachusetts Institute of Technology
+ *
+ * The following statement of license applies *only* to this header file,
+ * and *not* to the other files distributed with FFTW or derived therefrom:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/***************************** NOTE TO USERS *********************************
+ *
+ * THIS IS A HEADER FILE, NOT A MANUAL
+ *
+ * If you want to know how to use FFTW, please read the manual,
+ * online at http://www.fftw.org/doc/ and also included with FFTW.
+ * For a quick start, see the manual's tutorial section.
+ *
+ * (Reading header files to learn how to use a library is a habit
+ * stemming from code lacking a proper manual. Arguably, it's a
+ * *bad* habit in most cases, because header files can contain
+ * interfaces that are not part of the public, stable API.)
+ *
+ ****************************************************************************/
+
+/* header file for fftw3 */
+/* (The following is the CVS ID for this file, *not* the version
+ number of FFTW:) */
+/* $Id: fftw3.h,v 1.90 2006-01-17 04:03:33 stevenj Exp $ */
+
+#ifndef FFTW3_H
+#define FFTW3_H
+
+#include <stdio.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+ /* If <complex.h> is included, use the C99 complex type. Otherwise
+ define a type bit-compatible with C99 complex */
+#if !defined(FFTW_NO_Complex) && defined(_Complex_I) && defined(complex) && defined(I)
+# define FFTW_DEFINE_COMPLEX(R, C) typedef R _Complex C
+#else
+# define FFTW_DEFINE_COMPLEX(R, C) typedef R C[2]
+#endif
+
+#define FFTW_CONCAT(prefix, name) prefix ## name
+#define FFTW_MANGLE_DOUBLE(name) FFTW_CONCAT(fftw_, name)
+#define FFTW_MANGLE_FLOAT(name) FFTW_CONCAT(fftwf_, name)
+#define FFTW_MANGLE_LONG_DOUBLE(name) FFTW_CONCAT(fftwl_, name)
+
+ /* IMPORTANT: for Windows compilers, you should add a line
+ */
+#define FFTW_DLL
+ /*
+ here and in kernel/ifftw.h if you are compiling/using FFTW as a
+ DLL, in order to do the proper importing/exporting, or
+ alternatively compile with -DFFTW_DLL or the equivalent
+ command-line flag. This is not necessary under MinGW/Cygwin, where
+ libtool does the imports/exports automatically. */
+#if defined(FFTW_DLL) && (defined(_WIN32) || defined(__WIN32__))
+ /* annoying Windows syntax for shared-library declarations */
+# if defined(COMPILING_FFTW) /* defined in api.h when compiling FFTW */
+# define FFTW_EXTERN extern __declspec(dllexport)
+# else /* user is calling FFTW; import symbol */
+# define FFTW_EXTERN extern __declspec(dllimport)
+# endif
+#else
+# define FFTW_EXTERN extern
+#endif
+
+ enum fftw_r2r_kind_do_not_use_me {
+ FFTW_R2HC = 0, FFTW_HC2R = 1, FFTW_DHT = 2,
+ FFTW_REDFT00 = 3, FFTW_REDFT01 = 4, FFTW_REDFT10 = 5, FFTW_REDFT11 = 6,
+ FFTW_RODFT00 = 7, FFTW_RODFT01 = 8, FFTW_RODFT10 = 9, FFTW_RODFT11 = 10
+ };
+
+ struct fftw_iodim_do_not_use_me
+ {
+ int n; /* dimension size */
+ int is; /* input stride */
+ int os; /* output stride */
+ };
+
+ /*
+ huge second-order macro that defines prototypes for all API
+ functions. We expand this macro for each supported precision
+
+ X: name-mangling macro
+ R: real data type
+ C: complex data type
+ */
+
+#define FFTW_DEFINE_API(X, R, C) \
+ \
+FFTW_DEFINE_COMPLEX(R, C); \
+ \
+typedef struct X(plan_s) *X(plan); \
+ \
+typedef struct fftw_iodim_do_not_use_me X(iodim); \
+ \
+typedef enum fftw_r2r_kind_do_not_use_me X(r2r_kind); \
+ \
+FFTW_EXTERN void X(execute)(const X(plan) p); \
+ \
+FFTW_EXTERN X(plan) X(plan_dft)(int rank, const int *n, \
+ C *in, C *out, int sign, unsigned flags); \
+ \
+FFTW_EXTERN X(plan) X(plan_dft_1d)(int n, C *in, C *out, int sign, \
+ unsigned flags); \
+FFTW_EXTERN X(plan) X(plan_dft_2d)(int nx, int ny, \
+ C *in, C *out, int sign, unsigned flags); \
+FFTW_EXTERN X(plan) X(plan_dft_3d)(int nx, int ny, int nz, \
+ C *in, C *out, int sign, unsigned flags); \
+ \
+FFTW_EXTERN X(plan) X(plan_many_dft)(int rank, const int *n, \
+ int howmany, \
+ C *in, const int *inembed, \
+ int istride, int idist, \
+ C *out, const int *onembed, \
+ int ostride, int odist, \
+ int sign, unsigned flags); \
+ \
+FFTW_EXTERN X(plan) X(plan_guru_dft)(int rank, const X(iodim) *dims, \
+ int howmany_rank, \
+ const X(iodim) *howmany_dims, \
+ C *in, C *out, \
+ int sign, unsigned flags); \
+FFTW_EXTERN X(plan) X(plan_guru_split_dft)(int rank, const X(iodim) *dims, \
+ int howmany_rank, \
+ const X(iodim) *howmany_dims, \
+ R *ri, R *ii, R *ro, R *io, \
+ unsigned flags); \
+ \
+FFTW_EXTERN void X(execute_dft)(const X(plan) p, C *in, C *out); \
+FFTW_EXTERN void X(execute_split_dft)(const X(plan) p, R *ri, R *ii, \
+ R *ro, R *io); \
+ \
+FFTW_EXTERN X(plan) X(plan_many_dft_r2c)(int rank, const int *n, \
+ int howmany, \
+ R *in, const int *inembed, \
+ int istride, int idist, \
+ C *out, const int *onembed, \
+ int ostride, int odist, \
+ unsigned flags); \
+ \
+FFTW_EXTERN X(plan) X(plan_dft_r2c)(int rank, const int *n, \
+ R *in, C *out, unsigned flags); \
+ \
+FFTW_EXTERN X(plan) X(plan_dft_r2c_1d)(int n,R *in,C *out,unsigned flags); \
+FFTW_EXTERN X(plan) X(plan_dft_r2c_2d)(int nx, int ny, \
+ R *in, C *out, unsigned flags); \
+FFTW_EXTERN X(plan) X(plan_dft_r2c_3d)(int nx, int ny, \
+ int nz, \
+ R *in, C *out, unsigned flags); \
+ \
+ \
+FFTW_EXTERN X(plan) X(plan_many_dft_c2r)(int rank, const int *n, \
+ int howmany, \
+ C *in, const int *inembed, \
+ int istride, int idist, \
+ R *out, const int *onembed, \
+ int ostride, int odist, \
+ unsigned flags); \
+ \
+FFTW_EXTERN X(plan) X(plan_dft_c2r)(int rank, const int *n, \
+ C *in, R *out, unsigned flags); \
+ \
+FFTW_EXTERN X(plan) X(plan_dft_c2r_1d)(int n,C *in,R *out,unsigned flags); \
+FFTW_EXTERN X(plan) X(plan_dft_c2r_2d)(int nx, int ny, \
+ C *in, R *out, unsigned flags); \
+FFTW_EXTERN X(plan) X(plan_dft_c2r_3d)(int nx, int ny, \
+ int nz, \
+ C *in, R *out, unsigned flags); \
+ \
+FFTW_EXTERN X(plan) X(plan_guru_dft_r2c)(int rank, const X(iodim) *dims, \
+ int howmany_rank, \
+ const X(iodim) *howmany_dims, \
+ R *in, C *out, \
+ unsigned flags); \
+FFTW_EXTERN X(plan) X(plan_guru_dft_c2r)(int rank, const X(iodim) *dims, \
+ int howmany_rank, \
+ const X(iodim) *howmany_dims, \
+ C *in, R *out, \
+ unsigned flags); \
+ \
+FFTW_EXTERN X(plan) X(plan_guru_split_dft_r2c)( \
+ int rank, const X(iodim) *dims, \
+ int howmany_rank, \
+ const X(iodim) *howmany_dims, \
+ R *in, R *ro, R *io, \
+ unsigned flags); \
+FFTW_EXTERN X(plan) X(plan_guru_split_dft_c2r)( \
+ int rank, const X(iodim) *dims, \
+ int howmany_rank, \
+ const X(iodim) *howmany_dims, \
+ R *ri, R *ii, R *out, \
+ unsigned flags); \
+ \
+FFTW_EXTERN void X(execute_dft_r2c)(const X(plan) p, R *in, C *out); \
+FFTW_EXTERN void X(execute_dft_c2r)(const X(plan) p, C *in, R *out); \
+ \
+FFTW_EXTERN void X(execute_split_dft_r2c)(const X(plan) p, \
+ R *in, R *ro, R *io); \
+FFTW_EXTERN void X(execute_split_dft_c2r)(const X(plan) p, \
+ R *ri, R *ii, R *out); \
+ \
+FFTW_EXTERN X(plan) X(plan_many_r2r)(int rank, const int *n, \
+ int howmany, \
+ R *in, const int *inembed, \
+ int istride, int idist, \
+ R *out, const int *onembed, \
+ int ostride, int odist, \
+ const X(r2r_kind) *kind, unsigned flags); \
+ \
+FFTW_EXTERN X(plan) X(plan_r2r)(int rank, const int *n, R *in, R *out, \
+ const X(r2r_kind) *kind, unsigned flags); \
+ \
+FFTW_EXTERN X(plan) X(plan_r2r_1d)(int n, R *in, R *out, \
+ X(r2r_kind) kind, unsigned flags); \
+FFTW_EXTERN X(plan) X(plan_r2r_2d)(int nx, int ny, R *in, R *out, \
+ X(r2r_kind) kindx, X(r2r_kind) kindy, \
+ unsigned flags); \
+FFTW_EXTERN X(plan) X(plan_r2r_3d)(int nx, int ny, int nz, \
+ R *in, R *out, X(r2r_kind) kindx, \
+ X(r2r_kind) kindy, X(r2r_kind) kindz, \
+ unsigned flags); \
+ \
+FFTW_EXTERN X(plan) X(plan_guru_r2r)(int rank, const X(iodim) *dims, \
+ int howmany_rank, \
+ const X(iodim) *howmany_dims, \
+ R *in, R *out, \
+ const X(r2r_kind) *kind, unsigned flags); \
+FFTW_EXTERN void X(execute_r2r)(const X(plan) p, R *in, R *out); \
+ \
+FFTW_EXTERN void X(destroy_plan)(X(plan) p); \
+FFTW_EXTERN void X(forget_wisdom)(void); \
+FFTW_EXTERN void X(cleanup)(void); \
+ \
+FFTW_EXTERN void X(set_timelimit)(double); \
+ \
+FFTW_EXTERN void X(plan_with_nthreads)(int nthreads); \
+FFTW_EXTERN int X(init_threads)(void); \
+FFTW_EXTERN void X(cleanup_threads)(void); \
+ \
+FFTW_EXTERN void X(export_wisdom_to_file)(FILE *output_file); \
+FFTW_EXTERN char *X(export_wisdom_to_string)(void); \
+FFTW_EXTERN void X(export_wisdom)(void (*write_char)(char c, void *), \
+ void *data); \
+FFTW_EXTERN int X(import_system_wisdom)(void); \
+FFTW_EXTERN int X(import_wisdom_from_file)(FILE *input_file); \
+FFTW_EXTERN int X(import_wisdom_from_string)(const char *input_string); \
+FFTW_EXTERN int X(import_wisdom)(int (*read_char)(void *), void *data); \
+ \
+FFTW_EXTERN void X(fprint_plan)(const X(plan) p, FILE *output_file); \
+FFTW_EXTERN void X(print_plan)(const X(plan) p); \
+ \
+FFTW_EXTERN void *X(malloc)(size_t n); \
+FFTW_EXTERN void X(free)(void *p); \
+ \
+FFTW_EXTERN void X(flops)(const X(plan) p, \
+ double *add, double *mul, double *fmas); \
+FFTW_EXTERN double X(estimate_cost)(const X(plan) p); \
+ \
+FFTW_EXTERN const char X(version)[]; \
+FFTW_EXTERN const char X(cc)[]; \
+FFTW_EXTERN const char X(codelet_optim)[];
+
+
+ /* end of FFTW_DEFINE_API macro */
+
+ FFTW_DEFINE_API(FFTW_MANGLE_DOUBLE, double, fftw_complex)
+ FFTW_DEFINE_API(FFTW_MANGLE_FLOAT, float, fftwf_complex)
+ FFTW_DEFINE_API(FFTW_MANGLE_LONG_DOUBLE, long double, fftwl_complex)
+
+#define FFTW_FORWARD (-1)
+#define FFTW_BACKWARD (+1)
+
+#define FFTW_NO_TIMELIMIT (-1.0)
+
+ /* documented flags */
+#define FFTW_MEASURE (0U)
+#define FFTW_DESTROY_INPUT (1U << 0)
+#define FFTW_UNALIGNED (1U << 1)
+#define FFTW_CONSERVE_MEMORY (1U << 2)
+#define FFTW_EXHAUSTIVE (1U << 3) /* NO_EXHAUSTIVE is default */
+#define FFTW_PRESERVE_INPUT (1U << 4) /* cancels FFTW_DESTROY_INPUT */
+#define FFTW_PATIENT (1U << 5) /* IMPATIENT is default */
+#define FFTW_ESTIMATE (1U << 6)
+
+ /* undocumented beyond-guru flags */
+#define FFTW_ESTIMATE_PATIENT (1U << 7)
+#define FFTW_BELIEVE_PCOST (1U << 8)
+#define FFTW_NO_DFT_R2HC (1U << 9)
+#define FFTW_NO_NONTHREADED (1U << 10)
+#define FFTW_NO_BUFFERING (1U << 11)
+#define FFTW_NO_INDIRECT_OP (1U << 12)
+#define FFTW_ALLOW_LARGE_GENERIC (1U << 13) /* NO_LARGE_GENERIC is default */
+#define FFTW_NO_RANK_SPLITS (1U << 14)
+#define FFTW_NO_VRANK_SPLITS (1U << 15)
+#define FFTW_NO_VRECURSE (1U << 16)
+#define FFTW_NO_SIMD (1U << 17)
+#define FFTW_NO_SLOW (1U << 18)
+#define FFTW_NO_FIXED_RADIX_LARGE_N (1U << 19)
+#define FFTW_ALLOW_PRUNING (1U << 20)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* __cplusplus */
+
+#endif /* FFTW3_H */
diff --git a/modules/fftw/src/c/fftw_utilities.c b/modules/fftw/src/c/fftw_utilities.c
new file mode 100755
index 000000000..2a9f5e020
--- /dev/null
+++ b/modules/fftw/src/c/fftw_utilities.c
@@ -0,0 +1,1933 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2007 - INRIA - Alan LAYEC
+ * Copyright (C) 2007 - INRIA - Allan CORNET
+ * Copyright (C) 2012 - INRIA - Serge STEER
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+#include "fftw_utilities.h"
+#include "MALLOC.h"
+#include "callfftw.h"
+#include <math.h>
+int check_1D_symmetry(double *Ar, double *Ai, int nA, int iA);
+int check_2D_symmetry(double *Ar, double *Ai, int mA, int iA, int nA, int jA);
+int check_ND_symmetry(double *Ar, double *Ai, int ndims, int *dims, int *incr);
+
+void complete_1D_array(double *Ar, double *Ai, int nA, int iA);
+void complete_2D_array(double *Ar, double *Ai, int mA, int iA, int nA, int jA);
+int complete_ND_array(double *Ar, double *Ai, int ndims, int *dims, int *incr);
+void dct_scale_1D_array(double *Ar, double *Ai, int nA, int iA, int isn, double fact);
+void dct_scale_2D_array(double *Ar, double *Ai, int mA, int iA, int nA, int jA, int isn, double fact);
+int dct_scale_ND_array(double *Ar, double *Ai, int ndims, int *dims, int *incr, int isn, double fact);
+
+void dst_scale_1D_array(double *Ar, double *Ai, int nA, int iA, int isn, double fact);
+void dst_scale_2D_array(double *Ar, double *Ai, int mA, int iA, int nA, int jA, int isn, double fact);
+int dst_scale_ND_array(double *Ar, double *Ai, int ndims, int *dims, int *incr, int isn, double fact);
+
+/*--------------------------------------------------------------------------*/
+/* definition of structures to store parameters
+ * of FFTW planners - set here default value -
+ */
+FFTW_Plan_struct Sci_Forward_Plan =
+{
+ 0, /* int plan_type */
+ NULL, /* fftw_plan p */
+ {0, NULL, 0, NULL}, /* guru_dim_struct gdim */
+ FFTW_ESTIMATE, /* unsigned flags */
+ NULL /* kind */
+};
+
+FFTW_Plan_struct Sci_Backward_Plan =
+{
+ 0, /* int plan_type */
+ NULL, /* fftw_plan p */
+ {0, NULL, 0, NULL}, /* guru_dim_struct gdim */
+ FFTW_ESTIMATE, /* unsigned flags */
+ NULL /* kind */
+};
+/*--------------------------------------------------------------------------*/
+FFTW_Plan_struct *getSci_Backward_Plan(void)
+{
+ return &Sci_Backward_Plan;
+}
+/*--------------------------------------------------------------------------*/
+FFTW_Plan_struct *getSci_Forward_Plan(void)
+{
+ return &Sci_Forward_Plan;
+}
+/*--------------------------------------------------------------------------*/
+unsigned cur_fftw_flags = FFTW_ESTIMATE;
+/*--------------------------------------------------------------------------*/
+unsigned int getCurrentFftwFlags(void)
+{
+ return cur_fftw_flags;
+}
+/*--------------------------------------------------------------------------*/
+void setCurrentFftwFlags(unsigned int newFftwFlags)
+{
+ cur_fftw_flags = newFftwFlags;
+}
+/*--------------------------------------------------------------------------*/
+/* Free a FFTW_Plan_struct
+ *
+ * Input : FFTW_Plan_struct *Sci_Plan
+ *
+ * Output : int, return 1.
+ *
+ */
+int FreeFFTWPlan(FFTW_Plan_struct *Sci_Plan)
+{
+ 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;
+ FREE(Sci_Plan->kind);
+ Sci_Plan->kind = 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 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(enum Plan_Type type, guru_dim_struct *gdim,
+ double *ri, double *ii,
+ double *ro, double *io,
+ unsigned flags, int isn, fftw_r2r_kind *kind, int *errflag)
+{
+ FFTW_Plan_struct *Sci_Plan;
+ int i = 0;
+
+ *errflag = 0;
+
+ if (isn == -1)
+ {
+ Sci_Plan = &Sci_Backward_Plan;
+ }
+ else
+ {
+ Sci_Plan = &Sci_Forward_Plan;
+ }
+
+ if ( (!(CheckGuruDims(&(Sci_Plan->gdim), gdim))) ||
+ (!CheckKindArray(Sci_Plan->kind, kind, gdim->rank)) ||
+ (Sci_Plan->flags != cur_fftw_flags) ||
+ (Sci_Plan->plan_type != type))
+ {
+ /* plan must be changed */
+ FreeFFTWPlan(Sci_Plan);
+
+ Sci_Plan->plan_type = type;
+ if (gdim->rank != 0)
+ {
+ Sci_Plan->gdim.rank = gdim->rank;
+ if ((Sci_Plan->gdim.dims = (fftw_iodim *) MALLOC(sizeof(fftw_iodim) * (gdim->rank))) == NULL)
+ {
+ *errflag = 1;
+ 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 (kind != NULL)
+ {
+ if ((Sci_Plan->kind = (fftw_r2r_kind *) MALLOC(sizeof(fftw_r2r_kind) * (gdim->rank))) == NULL)
+ {
+ *errflag = 1;
+ return(NULL);
+ }
+ for (i = 0; i < gdim->rank; i++)
+ {
+ Sci_Plan->kind[i] = kind[i];
+ }
+ }
+ }
+ 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);
+ *errflag = 1;
+ 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;
+
+ switch (type)
+ {
+ case C2C_PLAN:
+ 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);
+ break;
+ case C2R_PLAN:
+ Sci_Plan->p = call_fftw_plan_guru_split_dft_c2r(Sci_Plan->gdim.rank,
+ Sci_Plan->gdim.dims,
+ Sci_Plan->gdim.howmany_rank,
+ Sci_Plan->gdim.howmany_dims,
+ ri, ii, ro, flags);
+ break;
+ case R2C_PLAN:
+ Sci_Plan->p = call_fftw_plan_guru_split_dft_r2c(Sci_Plan->gdim.rank,
+ Sci_Plan->gdim.dims,
+ Sci_Plan->gdim.howmany_rank,
+ Sci_Plan->gdim.howmany_dims,
+ ri, ro, io, flags);
+
+ break;
+ case R2R_PLAN:
+ Sci_Plan->p = call_fftw_plan_guru_split_dft_r2r(Sci_Plan->gdim.rank,
+ Sci_Plan->gdim.dims,
+ Sci_Plan->gdim.howmany_rank,
+ Sci_Plan->gdim.howmany_dims,
+ ri, ro, kind, flags);
+ break;
+ }
+
+ }
+ if (Sci_Plan->p == NULL)
+ {
+ *errflag = 2;
+ }
+ 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);
+ }
+}
+/*--------------------------------------------------------------------------*/
+/* Check if kind array are equal
+ *
+ * Input : fftw_r2r_kind *kind1
+ * gfftw_r2r_kind *kind2
+ * int rank
+ *
+ * Output : int, return 0 if False, else 1.
+ *
+ */
+int CheckKindArray(fftw_r2r_kind *kind1, fftw_r2r_kind *kind2, int rank)
+{
+ int i;
+ if ((kind1 == NULL) && (kind2 == NULL))
+ {
+ return(1);
+ }
+
+ for (i = 0; i < rank; i++)
+ {
+ if (kind1[i] != kind2[i])
+ {
+ return(0);
+ }
+ }
+ return(1);
+}
+/*--------------------------------------------------------------------------*/
+/* call different fftw_execute_split_dft_xxx procedures according to type input
+ *
+ * Input : Plan_Type type
+ * fftw_plan p
+ * double *ri
+ * double *ii
+ * Output : double *ro
+ * double *io
+ */
+void ExecuteFFTWPlan(enum Plan_Type type, const fftw_plan p, double *ri, double *ii, double *ro, double *io)
+{
+ switch (type)
+ {
+ case C2C_PLAN:
+ call_fftw_execute_split_dft(p, ri, ii, ro, io);
+ break;
+ case C2R_PLAN:
+ call_fftw_execute_split_dft_c2r(p, ri, ii, ro);
+ break;
+ case R2C_PLAN:
+ call_fftw_execute_split_dft_r2c(p, ri, ro, io);
+ break;
+ case R2R_PLAN:
+ call_fftw_execute_split_dft_r2r(p, ri, ro);
+ break;
+ }
+}
+/*--------------------------------------------------------------------------*/
+int is_real(double *Ar, double *Ai, int ndims, int *dims)
+{
+ double zero = 0.0;
+ int t = 1;
+ int i = 0;
+ int lA = 1;
+
+
+ for (i = 0; i < ndims; i++)
+ {
+ lA = lA * dims[i];
+ }
+
+ /*Check if A is real*/
+ if (Ai != NULL)
+ {
+ for (i = 0; i < lA; i++)
+ {
+ if (Ai[i] != zero)
+ {
+ t = 0;
+ break;
+ }
+ }
+ }
+ return t;
+}
+
+/*--------------------------------------------------------------------------
+ * Check if a 1D array A is "symmetric" or hermitian symmetric for fft.
+ * A==conj(A([1 $:-1:2]))
+ * Ar : pointer on real part array
+ * Ai : pointer on imaginary part array or NULL
+ * nA : number of elements
+ * iA : increment between 2 consecutive element of the array
+ */
+
+int check_1D_symmetry(double *Ar, double *Ai, int nA, int iA)
+{
+ int i = 0;
+ int nas2 = (int)(nA / 2);
+ double zero = 0.0;
+ //Checking real part
+ if ( nA % 2 == 0)
+ {
+ /* A length is even */
+ for (i = 1; i < nas2; i++)
+ {
+ if (Ar[iA * i] != Ar[iA * (nA - i)])
+ {
+ return 0;
+ }
+ }
+ }
+ else
+ {
+ /* A length is odd */
+ for (i = 1; i <= nas2; i++)
+ {
+ if (Ar[iA * i] != Ar[iA * (nA - i)])
+ {
+ return 0;
+ }
+ }
+ }
+ if (Ai == NULL)
+ {
+ return 1;
+ }
+ //Checking imaginary part
+ if ( nA % 2 == 0)
+ {
+ /* A length is even */
+ if (Ai[0] != zero || Ai[iA * (nA / 2)] != zero)
+ {
+ return 0;
+ }
+ for (i = 1; i < nas2; i++)
+ {
+ if (Ai[iA * i] != -Ai[iA * (nA - i)])
+ {
+ return 0;
+ }
+ }
+ }
+ else
+ {
+ /* A length is odd */
+ if (Ai[0] != zero)
+ {
+ return 0;
+ }
+ for (i = 1; i <= nas2; i++)
+ {
+ if (Ai[iA * i] != -Ai[iA * (nA - i)])
+ {
+ return 0;
+ }
+ }
+ }
+ return 1;
+}
+/*--------------------------------------------------------------------------
+ * Check if a 2D array A is "symmetric" or hermitian symmetric for fft.
+ * A==conj(A([1 $:-1:2],[1 $:-1:2])
+ * Ar : pointer on real part array
+ * Ai : pointer on imaginary part array or NULL
+ * mA : number of rows
+ * nA : number of columns
+ * iA : increment between 2 consecutive element of a row
+ * jA : increment between 2 consecutive element of a column
+ */
+
+int check_2D_symmetry(double *Ar, double *Ai, int mA, int iA, int nA, int jA)
+{
+ int l1 = 0;
+ int l2 = 0;
+ int k = 0;
+ int l = 0;
+ int nAs2 = (int)(nA / 2) + 1; /* A VERIFIER */
+
+ /* Check first column */
+ if (!check_1D_symmetry(Ar, Ai, mA, iA))
+ {
+ return 0;
+ }
+ /* Check first row */
+ if (!check_1D_symmetry(Ar, Ai, nA, jA))
+ {
+ return 0;
+ }
+
+ /* Check A(2:$,2:$) block */
+ if (Ai == NULL)
+ {
+ for (k = 1; k < nAs2; k++)
+ {
+ l1 = jA * k + iA ;
+ l2 = jA * (nA - k) + iA * (mA - 1);
+ for (l = 1; l < mA; l++)
+ {
+ if (Ar[l1] != Ar[l2])
+ {
+ return 0;
+ }
+ l1 += iA;
+ l2 -= iA;
+ }
+ }
+ }
+ else
+ {
+ for (k = 1; k < nAs2; k++)
+ {
+ l1 = jA * k + iA ;
+ l2 = jA * (nA - k) + iA * (mA - 1);
+ for (l = 1; l < mA; l++)
+ {
+ if ((Ar[l1] != Ar[l2]) || (Ai[l1] != -Ai[l2]))
+ {
+ return 0;
+ }
+ l1 += iA;
+ l2 -= iA;
+ }
+ }
+ }
+ return 1;
+}
+
+/*--------------------------------------------------------------------------
+ * Check if a N-D array A is "symmetric" or hermitian symmetric for fft
+ * A==conj(A([1 $:-1:2],...,[1 $:-1:2])
+ * Ar : pointer on real part array
+ * Ai : pointer on imaginary part array or NULL
+ * mA : number of rows
+ * nA : number of columns
+ * iA : increment between 2 consecutive element of a row
+ * jA : increment between 2 consecutive element of a column
+ */
+
+int check_ND_symmetry(double *Ar, double *Ai, int ndims, int *dims, int *incr)
+{
+ int i = 0, j = 0, l = 0;
+ int r = 0;
+ int l1 = 0;/* current 1-D index in array*/
+ int l2 = 0;/* associated symmetric value 1-D index */
+ int *temp = NULL;
+ int *dims1 = NULL;
+ int *incr1 = NULL;
+ int nSub = 0, nSubs2 = 0;
+ int k = 0, step = 0;
+
+ if (ndims == 2)
+ {
+ r = check_2D_symmetry(Ar, Ai, dims[0], incr[0], dims[1], incr[1]);
+ return r;
+ }
+ else if (ndims == 1)
+ {
+ r = check_1D_symmetry(Ar, Ai, dims[0], incr[0]);
+ return r;
+ }
+
+ if ((temp = (int *)MALLOC(sizeof(int) * (2 * ndims))) == NULL)
+ {
+ return -1;
+ }
+ dims1 = temp;
+ incr1 = temp + ndims;
+
+ for (i = 0; i < ndims; i++)
+ {
+ /* remove current dimension and increment out of dims ans incr */
+ l = 0;
+ for (j = 0; j < ndims; j++)
+ {
+ if (j != i)
+ {
+ dims1[l] = dims[j];
+ incr1[l] = incr[j];
+ l++;
+ }
+ }
+ r = check_ND_symmetry(Ar, Ai, ndims - 1, dims1, incr1);
+ if (r != 1)
+ {
+ dims1 = NULL;
+ incr1 = NULL;
+ FREE(temp);
+ return r;
+ }
+ }
+
+ /* check bloc A(2:$,....,2:$)*/
+ /*A(2,...,2) index*/
+ l1 = 0;
+ for (i = 0; i < ndims; i++)
+ {
+ l1 += incr[i];
+ }
+ /*A($,...,$) index*/
+ l2 = 0;
+ for (i = 0; i < ndims; i++)
+ {
+ l2 += (dims[i] - 1) * incr[i];
+ }
+
+
+ /* cumprod(size(A(2:$,....,2:$)))*/
+ incr1[0] = dims[0] - 1;
+ for (i = 1; i < (ndims - 1); i++)
+ {
+ incr1[i] = incr1[i - 1] * (dims[i] - 1) ;
+ }
+ /* steps*/
+ dims1[0] = (dims[0] - 2) * incr[0];
+ for (i = 1; i < (ndims - 1); i++)
+ {
+ dims1[i] = dims1[i - 1] + (dims[i] - 2) * incr[i];
+ }
+
+ /* A(2:$,....,2:$) block number of elements*/
+ nSub = 1;
+ for (i = 0; i < ndims; i++)
+ {
+ nSub *= (dims[i] - 1);
+ }
+
+ nSubs2 = (int)(nSub / 2);
+
+
+ if (Ai == NULL)
+ {
+ /* Real case */
+ for (i = 0; i < nSubs2; i++)
+ {
+
+ if (Ar[l1] != Ar[l2])
+ {
+ return 0;
+ }
+ step = incr[0];
+ for (j = ndims - 2; j >= 0; j--)
+ {
+ if ((i + 1) % incr1[j] == 0)
+ {
+ step = -dims1[j] + incr[j + 1] ;
+ break;
+ }
+ }
+ l1 += step;
+ l2 -= step;
+ }
+ }
+ else /* Complex case */
+ {
+ for (i = 0; i < nSubs2; i++)
+ {
+ if (Ar[l1] != Ar[l2] || Ai[l1] != -Ai[l2])
+ {
+ return 0;
+ }
+ step = incr[0];
+ for (j = ndims - 2; j >= 0; j--)
+ {
+ if ((i + 1) % incr1[j] == 0)
+ {
+ step = -dims1[j] + incr[j + 1] ;
+ break;
+ }
+ }
+ l1 += step;
+ l2 -= step;
+ }
+ }
+ dims1 = NULL;
+ incr1 = NULL;
+ FREE(temp);
+ return 1;
+}
+
+
+
+int check_array_symmetry(double *Ar, double *Ai, guru_dim_struct gdim)
+{
+ int ndims = gdim.rank;
+ int * dims = NULL;
+ int * incr = NULL;
+ int r = -1;
+ int i = 0, j = 0, k = 0;
+
+ if (gdim.howmany_rank == 0)
+ {
+ switch (gdim.rank)
+ {
+ case 1:
+ return check_1D_symmetry(Ar, Ai, gdim.dims[0].n, gdim.dims[0].is);
+ case 2:
+ return check_2D_symmetry(Ar, Ai, gdim.dims[0].n, gdim.dims[0].is, gdim.dims[1].n, gdim.dims[1].is);
+ default: /*general N-D case*/
+ if ((dims = (int *)MALLOC(sizeof(int) * gdim.rank)) == NULL)
+ {
+ return -1;
+ }
+ if ((incr = (int *)MALLOC(sizeof(int) * gdim.rank)) == NULL)
+ {
+ FREE(dims);
+ return -1;
+ }
+ for (i = 0; i < ndims; i++)
+ {
+ dims[i] = gdim.dims[i].n;
+ incr[i] = gdim.dims[i].is;
+ }
+ r = check_ND_symmetry(Ar, Ai, ndims, dims, incr);
+ FREE(dims);
+ FREE(incr);
+ return r;
+ }
+ }
+ else
+ {
+ int m = 0;
+ int p = 1;
+ int *dims1 = NULL;
+ int *incr1 = NULL;
+ int ir = 0;
+
+ if ((dims1 = (int *)MALLOC(sizeof(int) * gdim.howmany_rank)) == NULL)
+ {
+ return -1;
+ }
+ dims1[0] = gdim.howmany_dims[0].n;
+ for (i = 1; i < gdim.howmany_rank; i++)
+ {
+ dims1[i] = dims1[i - 1] * gdim.howmany_dims[i].n;
+ }
+ m = dims1[gdim.howmany_rank - 1];
+
+ if ((incr1 = (int *)MALLOC(sizeof(int) * gdim.howmany_rank)) == NULL)
+ {
+ FREE(dims1);
+ return -1;
+ }
+ p = 1;
+ for (i = 0; i < gdim.howmany_rank; i++)
+ {
+ p += (gdim.howmany_dims[i].n - 1) * gdim.howmany_dims[i].is;
+ incr1[i] = p;
+ }
+ switch (gdim.rank)
+ {
+ case 1:
+ if (Ai == NULL)
+ {
+ /* multiple 1D fft */
+ for (ir = 0; ir < gdim.howmany_rank; ir++)
+ {
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ if ((r = check_1D_symmetry(Ar + j, NULL, gdim.dims[0].n, gdim.dims[0].is)) != 1 )
+ {
+ return r;
+ }
+ j += gdim.howmany_dims[0].is;
+ for (k = gdim.howmany_rank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ for (ir = 0; ir < gdim.howmany_rank; ir++)
+ {
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ if ((r = check_1D_symmetry(Ar + j, Ai + j, gdim.dims[0].n, gdim.dims[0].is)) != 1 )
+ {
+ return r;
+ }
+ j += gdim.howmany_dims[0].is;
+ for (k = gdim.howmany_rank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+ }
+ FREE(dims1);
+ return 1;
+ case 2: /* multiple 2D fft */
+ if (Ai == NULL)
+ {
+ for (ir = 0; ir < gdim.howmany_rank; ir++)
+ {
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ if ((r = check_2D_symmetry(Ar + j, NULL, gdim.dims[0].n, gdim.dims[0].is,
+ gdim.dims[1].n, gdim.dims[1].is)) != 1 )
+ {
+ return r;
+ }
+ j += gdim.howmany_dims[0].is;
+
+ for (k = gdim.howmany_rank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ for (ir = 0; ir < gdim.howmany_rank; ir++)
+ {
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ if ((r = check_2D_symmetry(Ar + j, Ai + j, gdim.dims[0].n, gdim.dims[0].is,
+ gdim.dims[1].n, gdim.dims[1].is)) != 1 )
+ {
+ return r;
+ }
+ j += gdim.howmany_dims[0].is;
+ for (k = gdim.howmany_rank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+ }
+ FREE(dims1);
+ FREE(incr1);
+ return 1;
+ default: /*general N-D case*/
+ if ((dims = (int *)MALLOC(sizeof(int) * gdim.rank)) == NULL)
+ {
+ return -1;
+ }
+ if ((incr = (int *)MALLOC(sizeof(int) * gdim.rank)) == NULL)
+ {
+ FREE(dims);
+ return -1;
+ }
+ for (i = 0; i < ndims; i++)
+ {
+ dims[i] = gdim.dims[i].n;
+ incr[i] = gdim.dims[i].is;
+ }
+ for (ir = 0; ir < gdim.howmany_rank; ir++)
+ {
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ if (Ai == NULL)
+ {
+ r = check_ND_symmetry(Ar + j, NULL, ndims, dims, incr);
+ }
+ else
+ {
+ r = check_ND_symmetry(Ar + j, Ai + j, ndims, dims, incr);
+ }
+ if (r <= 0)
+ {
+ FREE(dims);
+ FREE(incr);
+ FREE(dims1);
+ return r;
+ }
+ j += gdim.howmany_dims[0].is;
+ for (k = gdim.howmany_rank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+ FREE(dims);
+ FREE(incr);
+ FREE(dims1);
+ return 1;
+ }
+ }
+ return 1;
+}
+/*--------------------------------------------------------------------------
+ * "symmetrizing" a vector A of length nA modifying the second half part of the vector
+ * nA even: A=[a0 A1 conj(A1($:-1:1))]
+ * nA odd : A=[a0 A1 am conj(A1($:-1:1))]
+ */
+
+void complete_1D_array(double *Ar, double *Ai, int nA, int iA)
+{
+
+ if (nA > 2)
+ {
+ int nAs2 = (int)(nA / 2);
+ int n = (nA % 2 == 0) ? nAs2 - 1 : nAs2;
+ int l1 = iA; /* ignore first element */
+ int l2 = (nA - 1) * iA;
+ int i = 0;
+ if (Ai == NULL)
+ {
+ for (i = 0; i < n; i++)
+ {
+ Ar[l2] = Ar[l1];
+ l1 += iA;
+ l2 -= iA;
+ }
+ }
+ else
+ {
+ for (i = 0; i < n; i++)
+ {
+ Ar[l2] = Ar[l1];
+ Ai[l2] = -Ai[l1];
+ l1 += iA;
+ l2 -= iA;
+ }
+ }
+ }
+}
+
+/*--------------------------------------------------------------------------
+ * "symmetrizing" a mA x nA array modifying the second half part of the columns
+ * nA even: A=[a11 A12 conj(A12($:-1:1))
+ * A21 A22 conj(A22($:-1:1,$:-1:1))]
+ *
+ * nA odd : A=[a11 A12 am conj(A12($:-1:1))
+ A21 A22 A2m conj(A22($:-1:1,$:-1:1))]]
+*/
+
+void complete_2D_array(double *Ar, double *Ai, int mA, int iA, int nA, int jA)
+{
+ if (nA > 2)
+ {
+ int n = (nA % 2 == 0) ? (int)(nA / 2) - 1 : (int)(nA / 2);
+ int i = 0, j = 0; /* loop variables */
+ int l1 = jA + iA; /* the index of the first element of the A22 block A(2,2)*/
+ int l2 = (mA - 1) * iA + (nA - 1) * jA; /* the index of the last element of the A22 block A(mA,nA)*/
+ int step = 0;
+ /* first column */
+ /*could not be useful because fftw only skip half of the rightmost dimension but it may be not exactly symmetric */
+
+ complete_1D_array(Ar, Ai, mA, iA);
+
+ /* first row */
+ complete_1D_array(Ar, Ai, nA, jA);
+
+ /* A22 block */
+ if (Ai == NULL)
+ {
+ for (j = 0; j < n; j++)
+ {
+ for (i = 1; i < mA; i++)
+ {
+ Ar[l2] = Ar[l1];
+ l1 += iA;
+ l2 -= iA;
+ }
+ step = -(mA - 1) * iA + jA;
+ l1 += step;
+ l2 -= step;
+ }
+ }
+ else
+ {
+ for (j = 0; j < n; j++)
+ {
+ for (i = 1; i < mA; i++)
+ {
+ Ar[l2] = Ar[l1];
+ Ai[l2] = -Ai[l1];
+ l1 += iA;
+ l2 -= iA;
+ }
+ step = -(mA - 1) * iA + jA;
+ l1 += step;
+ l2 -= step;
+ }
+ }
+ }
+}
+
+int complete_ND_array(double *Ar, double *Ai, int ndims, int *dims, int *incr)
+{
+ int i = 0, j = 0, l = 0;
+ int r = 0;
+ int l1 = 0;/* current 1-D index in array*/
+ int l2 = 0;/* associated symmetric value 1-D index */
+
+ int *temp = NULL;
+ int *dims1 = NULL;
+ int *incr1 = NULL;
+ int nSub = 0, nSubs2 = 0, step = 0, k = 0;
+
+ if (ndims == 2)
+ {
+ complete_2D_array(Ar, Ai, dims[0], incr[0], dims[1], incr[1]);
+ return 0;
+ }
+ else if (ndims == 1)
+ {
+ complete_1D_array(Ar, Ai, dims[0], incr[0]);
+ return 0;
+ }
+ if ((temp = (int *)MALLOC(sizeof(int) * (2 * ndims))) == NULL)
+ {
+ return -1;
+ }
+ dims1 = temp;
+ incr1 = temp + ndims;
+
+ for (i = 0; i < ndims; i++)
+ {
+ /* remove current dimension and increment out of dims ans incr */
+ l = 0;
+ for (j = 0; j < ndims; j++)
+ {
+ if (j != i)
+ {
+ dims1[l] = dims[j];
+ incr1[l] = incr[j];
+ l++;
+ }
+ }
+ r = complete_ND_array(Ar, Ai, ndims - 1, dims1, incr1);
+ if (r < 0)
+ {
+ dims1 = NULL;
+ incr1 = NULL;
+ FREE(temp);
+ return r;
+ }
+ }
+
+ /* check bloc A(2:$,....,2:$)*/
+ l1 = 0;
+ for (i = 0; i < ndims; i++)
+ {
+ l1 += incr[i];
+ }
+ /*A($,...,$) index*/
+ l2 = 0;
+ for (i = 0; i < ndims; i++)
+ {
+ l2 += (dims[i] - 1) * incr[i];
+ }
+
+
+ /* cumprod(size(A(2:$,....,2:$)))*/
+ incr1[0] = dims[0] - 1;
+ for (i = 1; i < (ndims - 1); i++)
+ {
+ incr1[i] = incr1[i - 1] * (dims[i] - 1) ;
+ }
+ /* steps*/
+ dims1[0] = (dims[0] - 2) * incr[0];
+ for (i = 1; i < (ndims - 1); i++)
+ {
+ dims1[i] = dims1[i - 1] + (dims[i] - 2) * incr[i];
+ }
+
+ /* A(2:$,....,2:$) block number of elements*/
+ nSub = 1;
+ for (i = 0; i < ndims; i++)
+ {
+ nSub *= (dims[i] - 1);
+ }
+
+ nSubs2 = (int)(nSub / 2);
+
+ if (Ai == 0)
+ {
+ /* Real case */
+ for (i = 0; i < nSubs2; i++)
+ {
+ Ar[l2] = Ar[l1];
+ step = incr[0];
+ for (j = ndims - 2; j >= 0; j--)
+ {
+ if ((i + 1) % incr1[j] == 0)
+ {
+ step = -dims1[j] + incr[j + 1] ;
+ break;
+ }
+ }
+ l1 += step;
+ l2 -= step;
+ }
+ }
+ else /* Complex case */
+ {
+ for (i = 0; i < nSubs2; i++)
+ {
+ Ar[l2] = Ar[l1];
+ Ai[l2] = -Ai[l1];
+ step = incr[0];
+ for (j = ndims - 2; j >= 0; j--)
+ {
+ if ((i + 1) % incr1[j] == 0)
+ {
+ step = -dims1[j] + incr[j + 1] ;
+ break;
+ }
+ }
+ l1 += step;
+ l2 -= step;
+ }
+ }
+ dims1 = NULL;
+ incr1 = NULL;
+ FREE(temp);
+ return 1;
+}
+
+int complete_array(double *Ar, double *Ai, guru_dim_struct gdim)
+{
+ int ndims = gdim.rank;
+ int * dims = NULL;
+ int * incr = NULL;
+ int r = -1;
+ int i = 0, j = 0, k = 0;
+ if (gdim.howmany_rank == 0)
+ {
+ switch (gdim.rank)
+ {
+ case 1:
+ complete_1D_array(Ar, Ai, gdim.dims[0].n, gdim.dims[0].is);
+ return 0;
+ case 2:
+ complete_2D_array(Ar, Ai, gdim.dims[0].n, gdim.dims[0].is, gdim.dims[1].n, gdim.dims[1].is);
+ return 0;
+ default: /*general N-D case*/
+ if ((dims = (int *)MALLOC(sizeof(int) * gdim.rank)) == NULL)
+ {
+ return -1;
+ }
+ if ((incr = (int *)MALLOC(sizeof(int) * gdim.rank)) == NULL)
+ {
+ FREE(dims);
+ return -1;
+ }
+ for (i = 0; i < ndims; i++)
+ {
+ dims[i] = gdim.dims[i].n;
+ incr[i] = gdim.dims[i].is;
+ }
+ r = complete_ND_array(Ar, Ai, ndims, dims, incr);
+ FREE(dims);
+ FREE(incr);
+ return r;
+ }
+ }
+ else
+ {
+ int m = 0;
+ int *dims1 = NULL;
+ int *incr1 = NULL;
+ int hrank = gdim.howmany_rank;
+
+ if ((dims1 = (int *)MALLOC(sizeof(int) * hrank)) == NULL)
+ {
+ return -1;
+ }
+ dims1[0] = gdim.howmany_dims[0].n;
+ for (i = 1; i < hrank; i++)
+ {
+ dims1[i] = dims1[i - 1] * gdim.howmany_dims[i].n;
+ }
+ m = dims1[gdim.howmany_rank - 1];
+
+ if ((incr1 = (int *)MALLOC(sizeof(int) * hrank)) == NULL)
+ {
+ FREE(dims1);
+ return -1;
+ }
+ incr1[0] = gdim.howmany_dims[0].n * gdim.howmany_dims[0].is;
+ for (i = 1; i < hrank; i++)
+ {
+ incr1[i] = incr1[i - 1] + (gdim.howmany_dims[i].n - 1) * gdim.howmany_dims[i].is;;
+ }
+ switch (gdim.rank)
+ {
+ case 1: /* multiple 1D fft */
+ if (Ai == NULL)
+ {
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ complete_1D_array(Ar + j, NULL, gdim.dims[0].n, gdim.dims[0].is);
+ j += gdim.howmany_dims[0].is;
+ for (k = hrank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ complete_1D_array(Ar + j, Ai + j, gdim.dims[0].n, gdim.dims[0].is);
+ j += gdim.howmany_dims[0].is;
+ for (k = hrank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+ FREE(dims1);
+ return 0;
+ case 2: /* multiple 2D fft */
+ if (Ai == NULL)
+ {
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ complete_2D_array(Ar + j, NULL, gdim.dims[0].n, gdim.dims[0].is, gdim.dims[1].n, gdim.dims[1].is);
+ j += gdim.howmany_dims[0].is;
+ for (k = hrank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ complete_2D_array(Ar + j, Ai + j, gdim.dims[0].n, gdim.dims[0].is, gdim.dims[1].n, gdim.dims[1].is);
+
+ j += gdim.howmany_dims[0].is;
+ for (k = hrank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+ FREE(dims1);
+ return 0;
+ default: /* multiple ND fft */
+ if ((dims = (int *)MALLOC(sizeof(int) * gdim.rank)) == NULL)
+ {
+ return -1;
+ }
+ if ((incr = (int *)MALLOC(sizeof(int) * gdim.rank)) == NULL)
+ {
+ FREE(dims);
+ FREE(dims1);
+ return -1;
+ }
+ for (i = 0; i < ndims; i++)
+ {
+ dims[i] = gdim.dims[i].n;
+ incr[i] = gdim.dims[i].is;
+ }
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ if (Ai == NULL)
+ {
+ r = complete_ND_array(Ar + j, NULL, ndims, dims, incr);
+ }
+ else
+ {
+ r = complete_ND_array(Ar + j, Ai + j, ndims, dims, incr);
+ }
+ if (r < 0)
+ {
+ FREE(dims);
+ FREE(incr);
+ FREE(dims1);
+ return r;
+ }
+ j += gdim.howmany_dims[0].is;
+ for (k = hrank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+
+ FREE(dims);
+ FREE(incr);
+ FREE(dims1);
+ FREE(incr1);
+ }
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------
+ * Check if Scilab is linked with MKL library * Some fftw functions
+ * are not yet implemented in MKL in particular wisdom; guru_split real case
+ * functions and guru_split complex with homany_rank>1
+ */
+
+int withMKL(void)
+{
+ return (call_fftw_export_wisdom_to_string() == NULL);
+}
+/*--------------------------------------------------------------------------*/
+
+
+
+
+void dct_scale_1D_array(double *Ar, double *Ai, int nA, int iA, int isn, double fact)
+{
+ /* fact: multiplication factor for all terms but the first one*/
+ double s, s0;
+ int i = 0;
+
+ if (isn == -1)
+ {
+ s0 = fact * 0.5 / sqrt(nA);
+ }
+ else
+ {
+ s0 = fact / sqrt(nA); /* 2.0*sqrt(nA)/(2*nA) */
+ }
+ s = fact / sqrt(2.0 * nA); /* sqrt(2.0*nA)/(2*nA) */
+ if (Ai == NULL)
+ {
+ Ar[0] *= s0;
+ for (i = 1; i < nA; i++)
+ {
+ Ar[i * iA] *= s;
+ }
+ }
+ else
+ {
+ Ar[0] *= s0;
+ Ai[0] *= s0;
+ for (i = 1; i < nA; i++)
+ {
+ Ar[i * iA] *= s;
+ Ai[i * iA] *= s;
+ }
+
+ }
+}
+
+
+
+void dct_scale_2D_array(double *Ar, double *Ai, int mA, int iA, int nA, int jA, int isn, double fact)
+{
+ int j = 0; /* loop variables */
+ double s, s0;
+ s = fact / sqrt(2 * nA);
+ s0 = fact / sqrt(nA);
+ if (isn == -1)
+ {
+ s0 *= 0.5;
+ }
+
+ /* first column */
+ dct_scale_1D_array(Ar, Ai, mA, iA, isn, s0);
+ /* other columns */
+ if (Ai == NULL)
+ {
+ for (j = 1; j < nA; j++)
+ {
+ dct_scale_1D_array(&Ar[j * jA], NULL, mA, iA, isn, s);
+ }
+ }
+ else
+ {
+ for (j = 1; j < nA; j++)
+ {
+ dct_scale_1D_array(&Ar[j * jA], &Ai[j * jA], mA, iA, isn, s);
+ }
+ }
+}
+
+int dct_scale_ND_array(double *Ar, double *Ai, int ndims, int *dims, int *incr, int isn, double fact)
+{
+ int i = 0;
+ double s = 1.0, s0 = 1.0;
+
+ if (ndims == 2)
+ {
+ dct_scale_2D_array(Ar, Ai, dims[0], incr[0], dims[1], incr[1], isn, fact);
+ }
+ else if (ndims == 1)
+ {
+ dct_scale_1D_array(Ar, Ai, dims[0], incr[0], isn, fact);
+ }
+ else
+ {
+ /* Decompose recursively along the first array dimension
+ A_scaled(i,:,...,:)=s1(i)*scale(A(i,:,...,:))
+ with
+ s1(1) = 1/(2*sqrt(n1) and s1(i>1) = 1/(sqrt(2*n1)
+ */
+ s = fact / sqrt(2.0 * dims[0]);
+ s0 = fact / sqrt(dims[0]);
+ if (isn == -1)
+ {
+ s0 *= 0.5;
+ }
+
+ if (Ai == NULL)
+ {
+ /* first index: s1(1)*/
+ dct_scale_ND_array(Ar, Ai, ndims - 1, dims + 1, incr + 1, isn, s0);
+ /* next indexes: s1(i>1)*/
+ for (i = 1; i < dims[0]; i++)
+ {
+ dct_scale_ND_array(&Ar[i * incr[0]], NULL, ndims - 1, dims + 1, incr + 1, isn, s);
+ }
+ }
+ else
+ {
+ dct_scale_ND_array(Ar, Ai, ndims - 1, dims + 1, incr + 1, isn, s0);
+
+ for (i = 1; i < dims[0]; i++)
+ {
+ dct_scale_ND_array(&Ar[i * incr[0]], &Ai[i * incr[0]], ndims - 1, dims + 1, incr + 1, isn, s);
+ }
+ }
+ }
+ return 0;
+
+}
+
+
+int dct_scale_array(double *Ar, double *Ai, guru_dim_struct gdim, int isn)
+{
+ int * dims = NULL;
+ int * incr = NULL;
+ int *dims1 = NULL;
+ int *incr1 = NULL;
+
+ int i = 0, j = 0, k = 0;
+ if (gdim.howmany_rank == 0)
+ {
+ switch (gdim.rank)
+ {
+ case 1:
+ dct_scale_1D_array(Ar, Ai, gdim.dims[0].n, gdim.dims[0].is, isn, (double)1.0);
+ return 0;
+ case 2:
+ dct_scale_2D_array(Ar, Ai, gdim.dims[0].n, gdim.dims[0].is, gdim.dims[1].n, gdim.dims[1].is, isn, (double)1.0);
+ return 0;
+ default: /*general N-D case*/
+ if ((dims = (int *)MALLOC(sizeof(int) * gdim.rank)) == NULL)
+ {
+ goto ERR;
+ }
+ if ((incr = (int *)MALLOC(sizeof(int) * gdim.rank)) == NULL)
+ {
+ goto ERR;
+ }
+ for (i = 0; i < gdim.rank; i++)
+ {
+ dims[i] = gdim.dims[i].n;
+ incr[i] = gdim.dims[i].is;
+ }
+ dct_scale_ND_array(Ar, Ai, gdim.rank, dims, incr, isn, (double)1.0);
+ }
+ }
+ else
+ {
+ int m = 0;
+ int hrank = gdim.howmany_rank;
+ if ((dims1 = (int *)MALLOC(sizeof(int) * hrank)) == NULL)
+ {
+ goto ERR;
+ }
+ dims1[0] = gdim.howmany_dims[0].n;
+ for (i = 1; i < hrank; i++)
+ {
+ dims1[i] = dims1[i - 1] * gdim.howmany_dims[i].n;
+ }
+ m = dims1[gdim.howmany_rank - 1];
+
+ if ((incr1 = (int *)MALLOC(sizeof(int) * hrank)) == NULL)
+ {
+ goto ERR;
+ }
+
+ incr1[0] = gdim.howmany_dims[0].n * gdim.howmany_dims[0].is;
+ for (i = 1; i < hrank; i++)
+ {
+ incr1[i] = incr1[i - 1] + (gdim.howmany_dims[i].n - 1) * gdim.howmany_dims[i].is;;
+ }
+ switch (gdim.rank)
+ {
+ case 1: /* multiple 1D dct */
+ if (Ai == NULL)
+ {
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ dct_scale_1D_array(Ar + j, NULL, gdim.dims[0].n, gdim.dims[0].is, isn, (double)1.0);
+ j += gdim.howmany_dims[0].is;
+ for (k = hrank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ dct_scale_1D_array(Ar + j, Ai + j, gdim.dims[0].n, gdim.dims[0].is, isn, (double)1.0);
+ j += gdim.howmany_dims[0].is;
+ for (k = hrank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+ break;
+ case 2: /* multiple 2D dct */
+ if (Ai == NULL)
+ {
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ dct_scale_2D_array(&Ar[j], NULL, gdim.dims[0].n, gdim.dims[0].is, gdim.dims[1].n, gdim.dims[1].is, isn, (double)1.0);
+ j += gdim.howmany_dims[0].is;
+ for (k = hrank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+
+ else
+ {
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ dct_scale_2D_array(&Ar[j], &Ai[j], gdim.dims[0].n, gdim.dims[0].is, gdim.dims[1].n, gdim.dims[1].is, isn, (double)1.0);
+
+ j += gdim.howmany_dims[0].is;
+ for (k = hrank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+ break;
+ default: /* multiple ND dct */
+ if ((dims = (int *)MALLOC(sizeof(int) * gdim.rank)) == NULL)
+ {
+ goto ERR;
+ }
+ if ((incr = (int *)MALLOC(sizeof(int) * gdim.rank)) == NULL)
+ {
+ goto ERR;
+ }
+
+ for (i = 0; i < gdim.rank; i++)
+ {
+ dims[i] = gdim.dims[i].n;
+ incr[i] = gdim.dims[i].is;
+ }
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ if (Ai == NULL)
+ {
+ dct_scale_ND_array(Ar + j, NULL, gdim.rank, dims, incr, isn, (double)1.0);
+ }
+ else
+ {
+ dct_scale_ND_array(Ar + j, Ai + j, gdim.rank, dims, incr, isn, (double)1.0);
+ }
+
+ j += gdim.howmany_dims[0].is;
+ for (k = hrank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+
+ }
+ FREE(dims);
+ FREE(incr);
+ FREE(dims1);
+ FREE(incr1);
+ return 0;
+
+ERR:
+ FREE(dims);
+ FREE(incr);
+ FREE(dims1);
+ FREE(incr1);
+ return -1;
+}
+
+void dst_scale_1D_array(double *Ar, double *Ai, int nA, int iA, int isn, double fact)
+{
+ /* fact: multiplication factor for all terms but the first one*/
+ double s = fact / (1.0 + nA);
+ int i = 0;
+
+ if (Ai == NULL)
+ {
+ for (i = 0; i < nA; i++)
+ {
+ Ar[i * iA] *= s;
+ }
+ }
+ else
+ {
+ for (i = 0; i < nA; i++)
+ {
+ Ar[i * iA] *= s;
+ Ai[i * iA] *= s;
+ }
+
+ }
+}
+
+
+void dst_scale_2D_array(double *Ar, double *Ai, int mA, int iA, int nA, int jA, int isn, double fact)
+{
+ int j = 0; /* loop variables */
+ double s = fact / (1.0 + nA);
+
+ if (Ai == NULL)
+ {
+ for (j = 0; j < nA; j++)
+ {
+ dst_scale_1D_array(&Ar[j * jA], NULL, mA, iA, isn, s);
+ }
+ }
+ else
+ {
+ for (j = 0; j < nA; j++)
+ {
+ dst_scale_1D_array(&Ar[j * jA], &Ai[j * jA], mA, iA, isn, s);
+ }
+ }
+}
+
+int dst_scale_ND_array(double *Ar, double *Ai, int ndims, int *dims, int *incr, int isn, double fact)
+{
+ int i = 0;
+ double s = 1.0;
+
+ if (ndims == 2)
+ {
+ dst_scale_2D_array(Ar, Ai, dims[0], incr[0], dims[1], incr[1], isn, fact);
+ }
+ else if (ndims == 1)
+ {
+ dst_scale_1D_array(Ar, Ai, dims[0], incr[0], isn, fact);
+ }
+ else
+ {
+ /* Decompose recursively along the first array dimension
+ A_scaled(i,:,...,:)=s1*scale(A(i,:,...,:))
+ with
+ s1 = 1/(n+1)
+ */
+
+ s = fact / (1.0 + dims[0]);
+
+ if (Ai == NULL)
+ {
+ /* next indexes: s1(i>1)*/
+ for (i = 0; i < dims[0]; i++)
+ {
+ dst_scale_ND_array(&Ar[i * incr[0]], NULL, ndims - 1, dims + 1, incr + 1, isn, s);
+ }
+ }
+ else
+ {
+ for (i = 0; i < dims[0]; i++)
+ {
+ dst_scale_ND_array(&Ar[i * incr[0]], &Ai[i * incr[0]], ndims - 1, dims + 1, incr + 1, isn, s);
+ }
+ }
+ }
+ return 0;
+}
+
+
+int dst_scale_array(double *Ar, double *Ai, guru_dim_struct gdim, int isn)
+{
+ int * dims = NULL;
+ int * incr = NULL;
+ int *dims1 = NULL;
+ int *incr1 = NULL;
+
+ int i = 0, j = 0, k = 0;
+ if (gdim.howmany_rank == 0)
+ {
+ switch (gdim.rank)
+ {
+ case 1:
+ dst_scale_1D_array(Ar, Ai, gdim.dims[0].n, gdim.dims[0].is, isn, (double)1.0);
+ return 0;
+ case 2:
+ dst_scale_2D_array(Ar, Ai, gdim.dims[0].n, gdim.dims[0].is, gdim.dims[1].n, gdim.dims[1].is, isn, (double)1.0);
+ return 0;
+ default: /*general N-D case*/
+ if ((dims = (int *)MALLOC(sizeof(int) * gdim.rank)) == NULL)
+ {
+ goto ERR;
+ }
+ if ((incr = (int *)MALLOC(sizeof(int) * gdim.rank)) == NULL)
+ {
+ goto ERR;
+ }
+ for (i = 0; i < gdim.rank; i++)
+ {
+ dims[i] = gdim.dims[i].n;
+ incr[i] = gdim.dims[i].is;
+ }
+ dst_scale_ND_array(Ar, Ai, gdim.rank, dims, incr, isn, (double)1.0);
+ }
+ }
+ else
+ {
+ int m = 0;
+ int hrank = gdim.howmany_rank;
+
+ if ((dims1 = (int *)MALLOC(sizeof(int) * hrank)) == NULL)
+ {
+ goto ERR;
+ }
+ dims1[0] = gdim.howmany_dims[0].n;
+ for (i = 1; i < hrank; i++)
+ {
+ dims1[i] = dims1[i - 1] * gdim.howmany_dims[i].n;
+ }
+ m = dims1[gdim.howmany_rank - 1];
+
+ if ((incr1 = (int *)MALLOC(sizeof(int) * hrank)) == NULL)
+ {
+ goto ERR;
+ }
+
+ incr1[0] = gdim.howmany_dims[0].n * gdim.howmany_dims[0].is;
+ for (i = 1; i < hrank; i++)
+ {
+ incr1[i] = incr1[i - 1] + (gdim.howmany_dims[i].n - 1) * gdim.howmany_dims[i].is;;
+ }
+
+ switch (gdim.rank)
+ {
+ case 1: /* multiple 1D dst */
+ if (Ai == NULL)
+ {
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ dst_scale_1D_array(Ar + j, NULL, gdim.dims[0].n, gdim.dims[0].is, isn, (double)1.0);
+ j += gdim.howmany_dims[0].is;
+ for (k = hrank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ dst_scale_1D_array(Ar + j, Ai + j, gdim.dims[0].n, gdim.dims[0].is, isn, (double)1.0);
+ j += gdim.howmany_dims[0].is;
+ for (k = hrank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+ break;
+ case 2: /* multiple 2D dst */
+ if (Ai == NULL)
+ {
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ dst_scale_2D_array(&Ar[j], NULL, gdim.dims[0].n, gdim.dims[0].is, gdim.dims[1].n, gdim.dims[1].is, isn, (double)1.0);
+ j += gdim.howmany_dims[0].is;
+ for (k = hrank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+
+ else
+ {
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ dst_scale_2D_array(&Ar[j], &Ai[j], gdim.dims[0].n, gdim.dims[0].is, gdim.dims[1].n, gdim.dims[1].is, isn, (double)1.0);
+
+ j += gdim.howmany_dims[0].is;
+ for (k = hrank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+ break;
+ default: /* multiple ND dst */
+ if ((dims = (int *)MALLOC(sizeof(int) * gdim.rank)) == NULL)
+ {
+ goto ERR;
+ }
+ if ((incr = (int *)MALLOC(sizeof(int) * gdim.rank)) == NULL)
+ {
+ goto ERR;
+ }
+
+ for (i = 0; i < gdim.rank; i++)
+ {
+ dims[i] = gdim.dims[i].n;
+ incr[i] = gdim.dims[i].is;
+ }
+ j = 0;
+ for (i = 1; i <= m; i++)
+ {
+ if (Ai == NULL)
+ {
+ dst_scale_ND_array(Ar + j, NULL, gdim.rank, dims, incr, isn, (double)1.0);
+ }
+ else
+ {
+ dst_scale_ND_array(Ar + j, Ai + j, gdim.rank, dims, incr, isn, (double)1.0);
+ }
+
+ j += gdim.howmany_dims[0].is;
+ for (k = hrank - 2; k >= 0; k--)
+ {
+ if (i % dims1[k] == 0)
+ {
+ j += -incr1[k] + gdim.howmany_dims[k + 1].is;
+ break;
+ }
+ }
+ }
+ }
+
+ }
+ FREE(dims);
+ FREE(incr);
+ FREE(dims1);
+ FREE(incr1);
+ return 0;
+
+ERR:
+ FREE(dims);
+ FREE(incr);
+ FREE(dims1);
+ FREE(incr1);
+ return -1;
+}
diff --git a/modules/fftw/src/c/fftw_utilities.h b/modules/fftw/src/c/fftw_utilities.h
new file mode 100755
index 000000000..70e6027a0
--- /dev/null
+++ b/modules/fftw/src/c/fftw_utilities.h
@@ -0,0 +1,78 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2006/2007 - INRIA - Alan Layec
+* Copyright (C) 2008 - INRIA - Allan CORNET
+* Copyright (C) 2012 - INRIA - Serge STEER
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+#ifndef __FFTW_UTILITIES__
+#define __FFTW_UTILITIES__
+
+#include <string.h>
+#include <stdio.h>
+#include "fftw3.h"
+
+
+/* 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;
+
+enum Plan_Type
+{
+ C2C_PLAN = 0,
+ R2C_PLAN = 1,
+ C2R_PLAN = 2,
+ R2R_PLAN = 3
+};
+
+/* definition of a FFTW_Plan structure type */
+typedef struct fftw_plan_st
+{
+ /* stored parameters of fftw_plan_guru_split_dft function */
+ enum Plan_Type plan_type;
+ fftw_plan p;
+ guru_dim_struct gdim;
+ unsigned flags;
+ fftw_r2r_kind *kind;
+} FFTW_Plan_struct;
+
+
+
+/* prototypes of utilities functions */
+fftw_plan GetFFTWPlan(enum Plan_Type type, guru_dim_struct *gdim,
+ double *ri, double *ii,
+ double *ro, double *io,
+ unsigned flags, int isn, fftw_r2r_kind *kind, int *errflag);
+
+int FreeFFTWPlan(FFTW_Plan_struct *Sci_Plan);
+
+int CheckGuruDims(guru_dim_struct *gdim1, guru_dim_struct *gdim2);
+int CheckKindArray(fftw_r2r_kind *kind1, fftw_r2r_kind *kind2, int rank);
+
+void ExecuteFFTWPlan(enum Plan_Type type, const fftw_plan p, double *ri, double *ii, double *ro, double *io);
+
+int is_real(double *Ar, double *Ai, int ndims, int *dims);
+int check_array_symmetry(double *Ar, double *Ai, guru_dim_struct gdim);
+int complete_array(double *Ar, double *Ai, guru_dim_struct gdim);
+int dct_scale_array(double *Ar, double *Ai, guru_dim_struct gdim, int isn);
+int dst_scale_array(double *Ar, double *Ai, guru_dim_struct gdim, int isn);
+
+unsigned int getCurrentFftwFlags(void);
+void setCurrentFftwFlags(unsigned int newFftwFlags);
+
+FFTW_Plan_struct *getSci_Backward_Plan(void);
+FFTW_Plan_struct *getSci_Forward_Plan(void);
+
+#endif /* __FFTW_UTILITIES__ */
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/src/c/fftwlibname.c b/modules/fftw/src/c/fftwlibname.c
new file mode 100755
index 000000000..cb20a9697
--- /dev/null
+++ b/modules/fftw/src/c/fftwlibname.c
@@ -0,0 +1,55 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - INRIA - Allan CORNET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+#include <string.h>
+#include "stdlib.h"
+#include "fftwlibname.h"
+#include "MALLOC.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#endif
+/*--------------------------------------------------------------------------*/
+static char *fftwlibname = NULL;
+/*--------------------------------------------------------------------------*/
+void setfftwlibname(char *libname)
+{
+ if (libname)
+ {
+ if (fftwlibname)
+ {
+ FREE(fftwlibname);
+ fftwlibname = NULL;
+ }
+ fftwlibname = strdup(libname);
+ }
+}
+/*--------------------------------------------------------------------------*/
+char *getfftwlibname(void)
+{
+ char *name = NULL;
+
+ if (fftwlibname)
+ {
+ name = strdup(fftwlibname);
+ }
+
+ return name;
+}
+/*--------------------------------------------------------------------------*/
+void freefftwlibname(void)
+{
+ if (fftwlibname)
+ {
+ FREE(fftwlibname);
+ fftwlibname = NULL;
+ }
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/src/c/fftwlibname.h b/modules/fftw/src/c/fftwlibname.h
new file mode 100755
index 000000000..060f481b1
--- /dev/null
+++ b/modules/fftw/src/c/fftwlibname.h
@@ -0,0 +1,21 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007 - INRIA - Allan CORNET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+#ifndef __FFTWLIBNAME_H__
+#define __FFTWLIBNAME_H__
+/*--------------------------------------------------------------------------*/
+
+void setfftwlibname(char *libname);
+char *getfftwlibname(void);
+void freefftwlibname(void);
+
+#endif /*__FFTWLIBNAME_H__ */
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/src/c/libscifftw_algo_la-callfftw.lo b/modules/fftw/src/c/libscifftw_algo_la-callfftw.lo
new file mode 100755
index 000000000..bbae15089
--- /dev/null
+++ b/modules/fftw/src/c/libscifftw_algo_la-callfftw.lo
@@ -0,0 +1,12 @@
+# src/c/libscifftw_algo_la-callfftw.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscifftw_algo_la-callfftw.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/fftw/src/c/libscifftw_algo_la-fftw_utilities.lo b/modules/fftw/src/c/libscifftw_algo_la-fftw_utilities.lo
new file mode 100755
index 000000000..5b0472ac2
--- /dev/null
+++ b/modules/fftw/src/c/libscifftw_algo_la-fftw_utilities.lo
@@ -0,0 +1,12 @@
+# src/c/libscifftw_algo_la-fftw_utilities.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscifftw_algo_la-fftw_utilities.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/fftw/src/c/libscifftw_algo_la-fftwlibname.lo b/modules/fftw/src/c/libscifftw_algo_la-fftwlibname.lo
new file mode 100755
index 000000000..c7dc028ce
--- /dev/null
+++ b/modules/fftw/src/c/libscifftw_algo_la-fftwlibname.lo
@@ -0,0 +1,12 @@
+# src/c/libscifftw_algo_la-fftwlibname.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscifftw_algo_la-fftwlibname.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/fftw/src/c/libscifftw_algo_la-sci_data_utilities.lo b/modules/fftw/src/c/libscifftw_algo_la-sci_data_utilities.lo
new file mode 100755
index 000000000..db64b48f1
--- /dev/null
+++ b/modules/fftw/src/c/libscifftw_algo_la-sci_data_utilities.lo
@@ -0,0 +1,12 @@
+# src/c/libscifftw_algo_la-sci_data_utilities.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscifftw_algo_la-sci_data_utilities.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/fftw/src/c/libscifftw_algo_la-with_fftw.lo b/modules/fftw/src/c/libscifftw_algo_la-with_fftw.lo
new file mode 100755
index 000000000..94fb5ecf7
--- /dev/null
+++ b/modules/fftw/src/c/libscifftw_algo_la-with_fftw.lo
@@ -0,0 +1,12 @@
+# src/c/libscifftw_algo_la-with_fftw.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscifftw_algo_la-with_fftw.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/fftw/src/c/sci_data_utilities.c b/modules/fftw/src/c/sci_data_utilities.c
new file mode 100755
index 000000000..9463546b2
--- /dev/null
+++ b/modules/fftw/src/c/sci_data_utilities.c
@@ -0,0 +1,484 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2012 - INRIA - Serge STEER
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+#include "stack-c.h"
+#include "MALLOC.h"
+#include "api_scilab.h"
+#include "localization.h"
+#include "Scierror.h"
+/*--------------------------------------------------------------------------*/
+int getArrayOfDouble(void* _pvCtx, int *piAddr, int *ndims, int **dims, double **Ar, double **Ai)
+{
+ SciErr sciErr;
+ int *piAddrChild = NULL;
+ int *piOffset = NULL;
+ int *piData = NULL;
+ int nItems = 0;
+ int iRows = 0;
+ int iCols = 0;
+ int iType = 0;
+
+ sciErr = getVarType(_pvCtx, piAddr, &iType);
+ if (iType == sci_matrix)
+ {
+ *ndims = 2;
+ *dims = &(piAddr[1]);
+ if (isVarComplex(_pvCtx, piAddr))
+ {
+ getComplexMatrixOfDouble(_pvCtx, piAddr, &iRows, &iCols, Ar, Ai);
+ }
+ else
+ {
+ getMatrixOfDouble(_pvCtx, piAddr, &iRows, &iCols, Ar);
+ *Ai = NULL;
+ }
+ return 1;
+ }
+ else if (iType == sci_mlist)
+ {
+ sciErr = getListItemNumber(_pvCtx, piAddr, &nItems);
+ if (nItems != 3)
+ {
+ return 0;
+ }
+ /*Check if first item is ["hm","dims","entries"] */
+ sciErr = getListItemAddress(_pvCtx, piAddr, 1, &piAddrChild);
+ sciErr = getVarType(_pvCtx, piAddrChild, &iType);
+ if (iType != sci_strings)
+ {
+ return 0;
+ }
+ sciErr = getVarDimension(_pvCtx, piAddrChild, &iRows, &iCols);
+ if (iRows*iCols != 3)
+ {
+ return 0;
+ }
+ /* Check if first entry of the first item is "hm" */
+ piOffset = piAddrChild + 4;
+ if (piOffset[1] - piOffset[0] != 2)
+ {
+ return 0;
+ }
+ piData = piOffset + iRows * iCols + 1;
+ if (piData[0] != 17 || piData[1] != 22)
+ {
+ return 0; /* check "hm" */
+ }
+ /* Get second item dims */
+ sciErr = getListItemAddress(_pvCtx, piAddr, 2, &piAddrChild);
+ sciErr = getVarType(_pvCtx, piAddrChild, &iType);
+ if (iType != sci_ints)
+ {
+ return 0;
+ }
+ sciErr = getMatrixOfInteger32(_pvCtx, piAddrChild, &iRows, &iCols, dims);
+ if (sciErr.iErr)
+ {
+ return 0;
+ }
+ *ndims = iRows * iCols;
+ /* Get thirds item entries */
+ sciErr = getListItemAddress(_pvCtx, piAddr, 3, &piAddrChild);
+ sciErr = getVarType(_pvCtx, piAddrChild, &iType);
+ if (iType != sci_matrix)
+ {
+ return 0;
+ }
+ if (isVarComplex(_pvCtx, piAddrChild))
+ {
+ getComplexMatrixOfDouble(_pvCtx, piAddrChild, &iRows, &iCols, Ar, Ai);
+ }
+ else
+ {
+ getMatrixOfDouble(_pvCtx, piAddrChild, &iRows, &iCols, Ar);
+ *Ai = NULL;
+ }
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+SciErr allocComplexArrayOfDouble(void* _pvCtx, int _iVar, int ndims, int *dims, double **Ar, double **Ai)
+{
+ SciErr sciErr;
+ int *piAddr = NULL;
+
+ if (ndims == 2)
+ {
+ sciErr = allocComplexMatrixOfDouble( _pvCtx, _iVar, dims[0], dims[1], Ar, Ai);
+ if (sciErr.iErr)
+ {
+ return sciErr;
+ }
+ }
+ else
+ {
+ int i = 0;
+ int n = 1;
+ const char * hmType[] = {"hm", "dims", "entries"};
+
+ for (i = 0; i < ndims; i++)
+ {
+ n *= dims[i];
+ }
+
+ sciErr = createMList(_pvCtx, _iVar, 3, &piAddr);
+ if (sciErr.iErr)
+ {
+ return sciErr;
+ }
+
+ sciErr = createMatrixOfStringInList(_pvCtx, _iVar, piAddr, 1, 1, 3, hmType);
+ if (sciErr.iErr)
+ {
+ return sciErr;
+ }
+ sciErr = createMatrixOfInteger32InList(_pvCtx, _iVar, piAddr, 2, 1, ndims, dims);
+ if (sciErr.iErr)
+ {
+ return sciErr;
+ }
+
+ sciErr = allocComplexMatrixOfDoubleInList(_pvCtx, _iVar, piAddr, 3, n, 1, Ar, Ai);
+ if (sciErr.iErr)
+ {
+ return sciErr;
+ }
+ }
+ return sciErr;
+}
+
+SciErr allocArrayOfDouble(void* _pvCtx, int _iVar, int ndims, int *dims, double **Ar)
+{
+ SciErr sciErr;
+ int *piAddr = NULL;
+
+
+ if (ndims == 2)
+ {
+ sciErr = allocMatrixOfDouble( _pvCtx, _iVar, dims[0], dims[1], Ar);
+ if (sciErr.iErr)
+ {
+ return sciErr;
+ }
+ }
+ else
+ {
+ int i = 0;
+ int n = 1;
+ const char * hmType[] = {"hm", "dims", "entries"};
+
+ for (i = 0; i < ndims; i++)
+ {
+ n *= dims[i];
+ }
+
+ sciErr = createMList(_pvCtx, _iVar, 3, &piAddr);
+ if (sciErr.iErr)
+ {
+ return sciErr;
+ }
+ sciErr = createMatrixOfStringInList(_pvCtx, _iVar, piAddr, 1, 1, 3, hmType);
+ if (sciErr.iErr)
+ {
+ return sciErr;
+ }
+ sciErr = createMatrixOfInteger32InList(_pvCtx, _iVar, piAddr, 2, 1, ndims, dims);
+ if (sciErr.iErr)
+ {
+ return sciErr;
+ }
+
+ sciErr = allocMatrixOfDoubleInList(_pvCtx, _iVar, piAddr, 3, n, 1, Ar);
+ if (sciErr.iErr)
+ {
+ return sciErr;
+ }
+ }
+ return sciErr;
+}
+
+SciErr getScalarIntArg(void* _pvCtx, int _iVar, char *fname, int *value)
+{
+ SciErr sciErr;
+ int *piAddr = NULL;
+ int iType = 0;
+ int iPrec = 0;
+ double t_d = 0.0;
+ char t_c = 0;
+ unsigned char t_uc = 0;
+ short t_s = 0;
+ unsigned short t_us = 0;
+ int t_i = 0;
+ unsigned int t_ui = 0;
+ sciErr.iErr = 0;
+ sciErr.iMsgCount = 0;
+
+ sciErr = getVarAddressFromPosition(_pvCtx, _iVar, &piAddr);
+ if (sciErr.iErr)
+ {
+ addErrorMessage(&sciErr, API_ERROR_GET_STRING, _("%s: Can not read input argument #%d.\n"), fname, _iVar);
+ return sciErr;
+ }
+
+ //check type
+ sciErr = getVarType(_pvCtx, piAddr, &iType);
+ if (sciErr.iErr)
+ {
+ addErrorMessage(&sciErr, API_ERROR_GET_INT, _("%s: Can not read input argument #%d.\n"), fname, _iVar);
+ return sciErr;
+ }
+
+ if (!isScalar(_pvCtx, piAddr))
+ {
+ addErrorMessage(&sciErr, API_ERROR_GET_INT, _("%s: Wrong size for input argument #%d: A scalar expected.\n"), fname, _iVar);
+ return sciErr;
+ }
+
+ if (iType == sci_matrix)
+ {
+ getScalarDouble(_pvCtx, piAddr, &t_d);
+ *value = (int)t_d;
+ }
+ else if (iType == sci_ints)
+ {
+ sciErr = getMatrixOfIntegerPrecision(_pvCtx, piAddr, &iPrec);
+ if (sciErr.iErr)
+ {
+ addErrorMessage(&sciErr, API_ERROR_GET_INT, _("%s: Can not read input argument #%d.\n"), fname, _iVar);
+ return sciErr;
+ }
+
+ switch (iPrec)
+ {
+ case SCI_INT8 :
+ {
+ getScalarInteger8(_pvCtx, piAddr, &t_c);
+ *value = (int)t_c;
+ }
+ case SCI_INT16 :
+ {
+ getScalarInteger16(_pvCtx, piAddr, &t_s);
+ *value = (int)t_s;
+ }
+ case SCI_INT32 :
+ {
+ getScalarInteger32(_pvCtx, piAddr, &t_i);
+ *value = (int)t_i;
+ }
+ case SCI_UINT8 :
+ {
+ getScalarUnsignedInteger8(_pvCtx, piAddr, &t_uc);
+ *value = (int)t_uc;
+ }
+ case SCI_UINT16 :
+ {
+ getScalarUnsignedInteger16(_pvCtx, piAddr, &t_us);
+ *value = (int)t_us;
+ }
+ case SCI_UINT32 :
+ {
+ getScalarUnsignedInteger32(_pvCtx, piAddr, &t_ui);
+ *value = (int)t_ui;
+ }
+ }
+ }
+ else
+ {
+ addErrorMessage(&sciErr, API_ERROR_GET_INT,
+ _("%s: Wrong type for argument #%d: An integer or a floating point number expected.\n"),
+ fname, _iVar);
+ return sciErr;
+ }
+ return sciErr;
+}
+
+SciErr getVectorIntArg(void* _pvCtx, int _iVar, char *fname, int *pndims, int **pDim)
+{
+ SciErr sciErr;
+ int *piAddr = NULL;
+ int iType = 0;
+ int iPrec = 0;
+ int mDim = 0;
+ int nDim = 0;
+ int *Dim = NULL;
+ int ndims = 0;
+
+ double* p_d = NULL;
+ char* p_c = NULL;
+ unsigned char* p_uc = NULL;
+ short* p_s = NULL;
+ unsigned short* p_us = NULL;
+ int* p_i = NULL;
+ unsigned int* p_ui = NULL;
+ int i = 0;
+
+ sciErr.iErr = 0;
+ sciErr.iMsgCount = 0;
+
+ getVarAddressFromPosition(_pvCtx, _iVar, &piAddr);
+
+ //check type
+ getVarType(_pvCtx, piAddr, &iType);
+
+ if (isVarMatrixType(_pvCtx, piAddr) == 0)
+ {
+ addErrorMessage(&sciErr, API_ERROR_GET_INT, _("%s: Wrong type for input argument #%d.\n"), fname, _iVar);
+ return sciErr;
+ }
+
+ getVarDimension(_pvCtx, piAddr, &mDim, &nDim);
+
+ ndims = mDim * nDim;
+ *pndims = ndims;
+ if (ndims <= 0)
+ {
+ addErrorMessage(&sciErr, API_ERROR_GET_INT,
+ _("%s: Wrong size for input argument #%d.\n"), fname, _iVar);
+ return sciErr;
+ }
+ if ((Dim = (int *)MALLOC(ndims * sizeof(int))) == NULL)
+ {
+ addErrorMessage(&sciErr, API_ERROR_GET_INT,
+ _("%s: Cannot allocate more memory.\n"), fname);
+ return sciErr;
+ }
+ *pDim = Dim;
+ if (iType == sci_matrix)
+ {
+ sciErr = getMatrixOfDouble(_pvCtx, piAddr, &mDim, &nDim, &p_d);
+ for (i = 0; i < ndims; i++)
+ {
+ Dim[i] = (int)(p_d[i]);
+ }
+ }
+ else if (iType == sci_ints)
+ {
+ getMatrixOfIntegerPrecision(_pvCtx, piAddr, &iPrec);
+ switch (iPrec)
+ {
+ case SCI_INT8 :
+ getMatrixOfInteger8(_pvCtx, piAddr, &mDim, &nDim, &p_c);
+ for (i = 0; i < ndims; i++)
+ {
+ Dim[i] = (int)(p_c[i]);
+ }
+ break;
+ case SCI_INT16 :
+ getMatrixOfInteger16(_pvCtx, piAddr, &mDim, &nDim, &p_s);
+ for (i = 0; i < ndims; i++)
+ {
+ Dim[i] = (int)(p_s[i]);
+ }
+ break;
+ case SCI_INT32 :
+ getMatrixOfInteger32(_pvCtx, piAddr, &mDim, &nDim, &p_i);
+ for (i = 0; i < ndims; i++)
+ {
+ Dim[i] = (int)(p_i[i]);
+ }
+ break;
+ case SCI_UINT8 :
+ getMatrixOfUnsignedInteger8(_pvCtx, piAddr, &mDim, &nDim, &p_uc);
+ for (i = 0; i < ndims; i++)
+ {
+ Dim[i] = (int)(p_uc[i]);
+ }
+ break;
+ case SCI_UINT16 :
+ getMatrixOfUnsignedInteger16(_pvCtx, piAddr, &mDim, &nDim, &p_us);
+ for (i = 0; i < ndims; i++)
+ {
+ Dim[i] = (int) p_us[i];
+ }
+ break;
+ case SCI_UINT32 :
+ getMatrixOfUnsignedInteger32(_pvCtx, piAddr, &mDim, &nDim, &p_ui);
+ for (i = 0; i < ndims; i++)
+ {
+ Dim[i] = (int)(p_ui[i]);
+ }
+ break;
+ }
+ }
+ else
+ {
+ FREE(Dim);
+ Dim = NULL;
+ addErrorMessage(&sciErr, API_ERROR_GET_INT,
+ _("%s: Wrong type for argument #%d: An array of floating point or integer numbers expected.\n"), fname, _iVar);
+ return sciErr;
+ }
+ return sciErr;
+}
+
+BOOL isHyperMatrixMlist(void* _pvCtx, int *piAddressVar)
+{
+ char **fields = NULL;
+ SciErr sciErr;
+ int iType = 0;
+ int m = 0, n = 0;
+
+ if (piAddressVar == NULL)
+ {
+ return FALSE;
+ }
+
+ sciErr = getVarType(_pvCtx, piAddressVar, &iType);
+ if (sciErr.iErr)
+ {
+ return FALSE;
+ }
+
+ if (iType == sci_mlist)
+ {
+ int* piAddrChild = NULL;
+ int iItem = 0;
+
+ sciErr = getListItemNumber(pvApiCtx, piAddressVar, &iItem);
+ if (sciErr.iErr)
+ {
+ return FALSE;
+ }
+
+ sciErr = getListItemAddress(pvApiCtx, piAddressVar, 1, &piAddrChild);
+ if (sciErr.iErr)
+ {
+ return FALSE;
+ }
+
+ if (!isStringType(_pvCtx, piAddrChild))
+ {
+ return FALSE;
+ }
+
+ if (getAllocatedMatrixOfString(_pvCtx, piAddrChild, &m, &n , &fields) == 0)
+ {
+ if (strcmp(fields[0], "hm") != 0)
+ {
+ freeAllocatedMatrixOfString(m, n, fields);
+ fields = NULL;
+ return FALSE;
+ }
+ freeAllocatedMatrixOfString(m, n, fields);
+ fields = NULL;
+ }
+ else
+ {
+ return FALSE;
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
diff --git a/modules/fftw/src/c/sci_data_utilities.h b/modules/fftw/src/c/sci_data_utilities.h
new file mode 100755
index 000000000..92d0e6465
--- /dev/null
+++ b/modules/fftw/src/c/sci_data_utilities.h
@@ -0,0 +1,27 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2012 - INRIA - Serge STEER
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+#include "api_scilab.h"
+#ifndef __SCI_DATA_UTILITIES__
+#define __SCI_DATA_UTILITIES__
+int getArrayOfDouble(void* pvApiCtx, int *piAddr, int *ndims, int **dims, double **Ar, double **Ai);
+
+SciErr allocArrayOfDouble(void* _pvCtx, int _iVar, int ndims, int *dims, double **Ar);
+
+SciErr allocComplexArrayOfDouble(void* _pvCtx, int _iVar, int ndims, int *dims, double **Ar, double **Ai);
+
+SciErr getScalarIntArg(void* _pvCtx, int _iVar, char *fname, int *value);
+
+SciErr getVectorIntArg(void* _pvCtx, int _iVar, char *fname, int *pndims, int **pDim);
+
+BOOL isHyperMatrixMlist(void* _pvCtx, int *piAddressVar);
+#endif /* __SCI_DATA_UTILITIES__ */
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/src/c/with_fftw.c b/modules/fftw/src/c/with_fftw.c
new file mode 100755
index 000000000..51bbadde5
--- /dev/null
+++ b/modules/fftw/src/c/with_fftw.c
@@ -0,0 +1,25 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2007 - INRIA - Allan CORNET
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+
+#include "with_fftw.h"
+/*--------------------------------------------------------------------------*/
+int C2F(withfftw)(int *rep)
+{
+ *rep = 1;
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
+BOOL withfftw(void)
+{
+ return TRUE;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/src/nofftw/.deps/libscifftw_algo_la-nofftw.Plo b/modules/fftw/src/nofftw/.deps/libscifftw_algo_la-nofftw.Plo
new file mode 100755
index 000000000..9ce06a81e
--- /dev/null
+++ b/modules/fftw/src/nofftw/.deps/libscifftw_algo_la-nofftw.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/modules/fftw/src/nofftw/.deps/libscifftw_la-nofftw.Plo b/modules/fftw/src/nofftw/.deps/libscifftw_la-nofftw.Plo
new file mode 100755
index 000000000..9ce06a81e
--- /dev/null
+++ b/modules/fftw/src/nofftw/.deps/libscifftw_la-nofftw.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/modules/fftw/src/nofftw/nofftw.c b/modules/fftw/src/nofftw/nofftw.c
new file mode 100755
index 000000000..92482d952
--- /dev/null
+++ b/modules/fftw/src/nofftw/nofftw.c
@@ -0,0 +1,35 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006 - INRIA - Allan CORNET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+#include "machine.h" /* C2F */
+#include "BOOL.h"
+#include "Scierror.h"
+#include "localization.h"
+#include "gw_fftw.h"
+#include "with_fftw.h"
+/*--------------------------------------------------------------------------*/
+int gw_fftw(void)
+{
+ Scierror(999, _("Scilab FFTW module not installed.\n"));
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
+BOOL withfftw(void)
+{
+ return FALSE;
+}
+/*--------------------------------------------------------------------------*/
+int C2F(withfftw)(int *rep)
+{
+ *rep = 0;
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/fftw/src/nofftw/nofftw.rc b/modules/fftw/src/nofftw/nofftw.rc
new file mode 100755
index 000000000..9d8515efe
--- /dev/null
+++ b/modules/fftw/src/nofftw/nofftw.rc
@@ -0,0 +1,97 @@
+// Microsoft Visual C++ generated resource script.
+//
+
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+//#include "afxres.h"
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include "windows.h"
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// French (France) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)
+#ifdef _WIN32
+LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 5,5,2,0
+ PRODUCTVERSION 5,5,2,0
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x0L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040c04b0"
+ BEGIN
+ VALUE "FileDescription", "nofftw module"
+ VALUE "FileVersion", "5, 5, 2, 0"
+ VALUE "InternalName", "nofftw module"
+ VALUE "LegalCopyright", "Copyright (C) 2017"
+ VALUE "OriginalFilename", "nofftw.dll"
+ VALUE "ProductName", " nofftw"
+ VALUE "ProductVersion", "5, 5, 2, 0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x40c, 1200
+ END
+END
+
+#endif // French (France) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/modules/fftw/src/nofftw/nofftw.vcxproj b/modules/fftw/src/nofftw/nofftw.vcxproj
new file mode 100755
index 000000000..8e5c51ca2
--- /dev/null
+++ b/modules/fftw/src/nofftw/nofftw.vcxproj
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{7D4C4BE5-62F7-4886-9E59-645017329A22}</ProjectGuid>
+ <RootNamespace>nofftw</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../core/includes;../../../output_stream/includes;../../../localization/includes;../../../../libs/intl;../../../api_scilab/includes;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;_DEBUG;_WINDOWS;_USRDLL;FFTW_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>../../../../bin/libintl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../../core/includes;../../../output_stream/includes;../../../localization/includes;../../../../libs/intl;../../../api_scilab/includes;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;_DEBUG;_WINDOWS;_USRDLL;FFTW_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>../../../../bin/libintl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>../../../core/includes;../../../output_stream/includes;../../../localization/includes;../../../../libs/intl;../../../api_scilab/includes;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;NDEBUG;_WINDOWS;_USRDLL;FFTW_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>../../../../bin/libintl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>../../../core/includes;../../../output_stream/includes;../../../localization/includes;../../../../libs/intl;../../../api_scilab/includes;../../includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;NDEBUG;_WINDOWS;_USRDLL;FFTW_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <WarningLevel>Level3</WarningLevel>
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>../../../../bin/libintl.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(SolutionDir)bin\$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="nofftw.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="nofftw.rc" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\..\tools\Dumpexts\Dumpexts.vcxproj">
+ <Project>{3170e4c2-1173-4264-a222-7ee8ccb3ddf7}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\localization\src\localization.vcxproj">
+ <Project>{ecffeb0c-1eda-45ee-9a10-b18143852e17}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\output_stream\src\c\output_stream.vcxproj">
+ <Project>{a5911cd7-f8e8-440c-a23e-4843a0636f3a}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/modules/fftw/src/nofftw/nofftw.vcxproj.filters b/modules/fftw/src/nofftw/nofftw.vcxproj.filters
new file mode 100755
index 000000000..02506883e
--- /dev/null
+++ b/modules/fftw/src/nofftw/nofftw.vcxproj.filters
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ <Filter Include="Libraries Dependencies">
+ <UniqueIdentifier>{7fd5a762-9543-4248-b628-38b21c807518}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="nofftw.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="nofftw.rc">
+ <Filter>Resource Files</Filter>
+ </ResourceCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/modules/fftw/tests/benchmarks/bench_fft.tst b/modules/fftw/tests/benchmarks/bench_fft.tst
new file mode 100755
index 000000000..4bc004833
--- /dev/null
+++ b/modules/fftw/tests/benchmarks/bench_fft.tst
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+//==============================================================================
+// Benchmark for fft function
+//==============================================================================
+
+a = 0; b = 0;
+stacksize(30000000);
+a = rand(800000, 1, 'n');
+
+// <-- BENCH START -->
+ b = fft(a, -1);
+// <-- BENCH END -->
+
diff --git a/modules/fftw/tests/nonreg_tests/bug_10807.dia.ref b/modules/fftw/tests/nonreg_tests/bug_10807.dia.ref
new file mode 100755
index 000000000..faf19f4a4
--- /dev/null
+++ b/modules/fftw/tests/nonreg_tests/bug_10807.dia.ref
@@ -0,0 +1,41 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 10807 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10807
+//
+// <-- Short Description -->
+// It was not possible to overload fft and fftw for list, tlist, mlist type
+//
+M = mlist(['V', 'name', 'value'], ['a', 'b';'c' 'd'], [1 2; 3 4]);
+if %fftw then
+ fname = "fftw";
+ msgerr = [msprintf(gettext("Function not defined for given argument type(s),\n"));
+ msprintf(gettext(" check arguments or define function %s for overloading.\n"), "%V_" + fname)];
+ assert_checkerror ("fft(M)", msgerr);
+ msgerr = [msprintf(gettext("Function not defined for given argument type(s),\n"));
+ msprintf(gettext(" check arguments or define function %s for overloading.\n"), "%V_" + fname)];
+ assert_checkerror ("fftw(M)", msgerr);
+ function bOK = %V_fftw(X)
+ bOK = %T;
+ endfunction
+ assert_checktrue(fft(M));
+ assert_checktrue(fftw(M));
+else
+ fname = "fft";
+ msgerr = [msprintf(gettext("Function not defined for given argument type(s),\n"));
+ msprintf(gettext(" check arguments or define function %s for overloading.\n"), "%V_" + fname)];
+ assert_checkerror ("fft(M)", msgerr);
+ function bOK = %V_fft(X)
+ bOK = %T;
+ endfunction
+ assert_checktrue(fft(M));
+end
diff --git a/modules/fftw/tests/nonreg_tests/bug_10807.tst b/modules/fftw/tests/nonreg_tests/bug_10807.tst
new file mode 100755
index 000000000..f1e210ca5
--- /dev/null
+++ b/modules/fftw/tests/nonreg_tests/bug_10807.tst
@@ -0,0 +1,47 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 10807 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=10807
+//
+// <-- Short Description -->
+// It was not possible to overload fft and fftw for list, tlist, mlist type
+//
+
+M = mlist(['V', 'name', 'value'], ['a', 'b';'c' 'd'], [1 2; 3 4]);
+
+if %fftw then
+ fname = "fftw";
+ msgerr = [msprintf(gettext("Function not defined for given argument type(s),\n"));
+ msprintf(gettext(" check arguments or define function %s for overloading.\n"), "%V_" + fname)];
+ assert_checkerror ("fft(M)", msgerr);
+
+ msgerr = [msprintf(gettext("Function not defined for given argument type(s),\n"));
+ msprintf(gettext(" check arguments or define function %s for overloading.\n"), "%V_" + fname)];
+ assert_checkerror ("fftw(M)", msgerr);
+
+ function bOK = %V_fftw(X)
+ bOK = %T;
+ endfunction
+
+ assert_checktrue(fft(M));
+ assert_checktrue(fftw(M));
+else
+ fname = "fft";
+ msgerr = [msprintf(gettext("Function not defined for given argument type(s),\n"));
+ msprintf(gettext(" check arguments or define function %s for overloading.\n"), "%V_" + fname)];
+ assert_checkerror ("fft(M)", msgerr);
+
+ function bOK = %V_fft(X)
+ bOK = %T;
+ endfunction
+ assert_checktrue(fft(M));
+end
diff --git a/modules/fftw/tests/nonreg_tests/bug_5081.dia.ref b/modules/fftw/tests/nonreg_tests/bug_5081.dia.ref
new file mode 100755
index 000000000..e91d3e591
--- /dev/null
+++ b/modules/fftw/tests/nonreg_tests/bug_5081.dia.ref
@@ -0,0 +1,31 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 5081 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5081
+//
+// <-- Short Description -->
+//
+// demo "Signal Processing" --> "Spectral Estimation" fails (Windows)
+ rand('normal');
+ rand('seed',0);
+ x = rand(1:1024-33+1);
+ nf = 33;
+ bedge = [0 .1;.125 .5];
+ des = [1 0];
+ wate = [1 1];
+ h = eqfir(nf,bedge,des,wate);
+ h1 = [h 0*ones(1:max(size(x))-1)];
+ x1 = [x 0*ones(1:max(size(h))-1)];
+ hf = fft(h1,-1);
+ xf = fft(x1,-1);
+ yf = hf.*xf;
+ y = real(fft(yf,1));
+ ierr = execstr("[sm2] = cspect(100,200,''tr'',y);","errcatch");
+ if ierr <> 0 then bugmes();quit;end
diff --git a/modules/fftw/tests/nonreg_tests/bug_5081.tst b/modules/fftw/tests/nonreg_tests/bug_5081.tst
new file mode 100755
index 000000000..eed3aa93b
--- /dev/null
+++ b/modules/fftw/tests/nonreg_tests/bug_5081.tst
@@ -0,0 +1,34 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 5081 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=5081
+//
+// <-- Short Description -->
+//
+// demo "Signal Processing" --> "Spectral Estimation" fails (Windows)
+
+ rand('normal');
+ rand('seed',0);
+ x = rand(1:1024-33+1);
+ nf = 33;
+ bedge = [0 .1;.125 .5];
+ des = [1 0];
+ wate = [1 1];
+ h = eqfir(nf,bedge,des,wate);
+ h1 = [h 0*ones(1:max(size(x))-1)];
+ x1 = [x 0*ones(1:max(size(h))-1)];
+ hf = fft(h1,-1);
+ xf = fft(x1,-1);
+ yf = hf.*xf;
+ y = real(fft(yf,1));
+ ierr = execstr("[sm2] = cspect(100,200,''tr'',y);","errcatch");
+ if ierr <> 0 then pause,end
diff --git a/modules/fftw/tests/nonreg_tests/bug_8390.tst b/modules/fftw/tests/nonreg_tests/bug_8390.tst
new file mode 100755
index 000000000..ca6a74bed
--- /dev/null
+++ b/modules/fftw/tests/nonreg_tests/bug_8390.tst
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- INTERACTIVE TEST -->
+//
+// <-- Non-regression test for bug 8390 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8390
+//
+// <-- Short Description -->
+// a "Warning : redefining function: mputl" displayed if you did not install fftw on Windows.
+//
+//
+// install scilab without fftw module
+// check that you do not have this warning \ No newline at end of file
diff --git a/modules/fftw/tests/nonreg_tests/bug_9266.dia.ref b/modules/fftw/tests/nonreg_tests/bug_9266.dia.ref
new file mode 100755
index 000000000..0344d7626
--- /dev/null
+++ b/modules/fftw/tests/nonreg_tests/bug_9266.dia.ref
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 9266 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9266
+//
+// <-- Short Description -->
+//
+// fftw crashed on Windows with MKL wrapper
+// (install scilab on windows with fftw support and MKL wrapper)
+a = rand(3, 3);
+r = fftw(a);
+ref = [ 5.0053826 , -1.0513065 + 0.6838074*%i, -1.0513065 - 0.6838074*%i ; ..
+ -0.4155955 - 0.5198981*%i, -0.2145198-0.3890532*%i, 0.1296924-1.0547338*%i ; ..
+ - 0.4155955 + 0.5198981*%i, 0.1296924 + 1.0547338*%i, - 0.2145198 + 0.3890532*%i ];
+assert_checkalmostequal(r, ref, %eps * 10e8);
diff --git a/modules/fftw/tests/nonreg_tests/bug_9266.tst b/modules/fftw/tests/nonreg_tests/bug_9266.tst
new file mode 100755
index 000000000..8edacfac6
--- /dev/null
+++ b/modules/fftw/tests/nonreg_tests/bug_9266.tst
@@ -0,0 +1,27 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 9266 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9266
+//
+// <-- Short Description -->
+//
+// fftw crashed on Windows with MKL wrapper
+// (install scilab on windows with fftw support and MKL wrapper)
+
+a = rand(3, 3);
+r = fftw(a);
+
+ref = [ 5.0053826 , -1.0513065 + 0.6838074*%i, -1.0513065 - 0.6838074*%i ; ..
+ -0.4155955 - 0.5198981*%i, -0.2145198-0.3890532*%i, 0.1296924-1.0547338*%i ; ..
+ - 0.4155955 + 0.5198981*%i, 0.1296924 + 1.0547338*%i, - 0.2145198 + 0.3890532*%i ];
+
+assert_checkalmostequal(r, ref, %eps * 10e8);
diff --git a/modules/fftw/tests/nonreg_tests/bug_9647.dia.ref b/modules/fftw/tests/nonreg_tests/bug_9647.dia.ref
new file mode 100755
index 000000000..690669b8a
--- /dev/null
+++ b/modules/fftw/tests/nonreg_tests/bug_9647.dia.ref
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 9647 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9647
+//
+// <-- Short Description -->
+// On Scilab startup, the variable fft was declared by default while it should not.
+//
+if %fftw then
+ assert_checkequal(isdef("fft"), %T);
+ assert_checkequal(funptr("fft"), funptr("fftw"));
+else
+ assert_checkequal(isdef("fft"), %F);
+end
diff --git a/modules/fftw/tests/nonreg_tests/bug_9647.tst b/modules/fftw/tests/nonreg_tests/bug_9647.tst
new file mode 100755
index 000000000..a9842b1ab
--- /dev/null
+++ b/modules/fftw/tests/nonreg_tests/bug_9647.tst
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Allan CORNET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 9647 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=9647
+//
+// <-- Short Description -->
+// On Scilab startup, the variable fft was declared by default while it should not.
+//
+
+if %fftw then
+ assert_checkequal(isdef("fft"), %T);
+ assert_checkequal(funptr("fft"), funptr("fftw"));
+else
+ assert_checkequal(isdef("fft"), %F);
+end
diff --git a/modules/fftw/tests/unit_tests/dct_part1.dia.ref b/modules/fftw/tests/unit_tests/dct_part1.dia.ref
new file mode 100755
index 000000000..4b91d3c8c
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/dct_part1.dia.ref
@@ -0,0 +1,133 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+//============================================================================================
+//=================================dct(A [,isn ]) ============================================
+//============================================================================================
+//*****1-D transform *************************************************************************
+//Real case
+x=1:12;
+y=dct(x);
+y_ref=[22.516660498395403,-11.8786642686858634,0,-1.28774657627874833,0,-0.43698525004935185,0,..
+ -0.19742775076373928,0,-0.09151733141338797,0,-0.02710534350890513];
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+y=dct(x,-1);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1),x,0,100*%eps);
+x=[2;8;1;3;7;6;8;7;9;1;6;7;7;2;5;2;2;2;9;7;3];
+y_ref=[22.6946605845432074;1.10519574266518794;-2.3241759528540804;-4.85151174144696462;
+ 1.0125846934610252;-1.1922212636993892;1.59557416291812504;4.54344111251121419;
+ -2.5559634218592766;0.60407624058440501;-2.30214098713630388; 3.897143024186624;
+ -4.1080570985039806;-4.03538258536340688;-2.00594354950719467;-1.38969746761551849;
+ -1.83219922773155397;-2.95095934890382949;-1.53744081244562425;-1.30413301180655994;
+ 4.3041816147747296];
+y=dct(x);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+y=dct(x,-1);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1),x,0,100*%eps);
+//Complex case
+x=[9+%i*4,2+%i*3,3+%i*6,4+%i*4,3+%i*9,6+%i,5+%i*5,3+%i*3,6+%i*4,5+%i*3];
+y_ref=complex(dct(real(x)),dct(imag(x)));
+y=dct(x);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+y=dct(x,-1);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checkalmostequal(dct(y,1),x,0,100*%eps);
+//*****2-D transform *************************************************************************
+//Real case
+x=matrix([1 5 -3 7 0.3 -1 23 -0.5 -0.9 2 -7 23],3,4);
+y_ref=[14.1162140816863513,-8.0479004090282249,-1.9918584287042105,3.4272874122786048;
+ 5.26794551983977577,8.50616086908862101,-17.2887608000110866,12.1283851880283517;
+ 11.3288900603721974,-15.5570935550615044,-0.30618621784789912,-0.91342220197659429];
+//assert_checkalmostequal(DCTN(x,-1),y_ref);
+y=dct(x);
+assert_checkalmostequal(y,y_ref);
+assert_checktrue(isreal(y));
+y=dct(x,-1);
+assert_checkalmostequal(y,y_ref);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1),x);
+x = [5,0,8,8,6,4,3,2,4;
+ 4,5,2,4,6,9,5,6,8;
+ 3,3,1,4,7,9,3,8,6;
+ 6,4,7,9,9,3,5,0,5;
+ 4,3,2,1,5,4,5,7,2;
+ 9,1,7,2,3,7,1,2,8];
+y_ref = [34.5650219259403997,-1.78710447324021815,-2.48169728021161573,0.16666666666666699,..
+ 5.69563532864431199,-0.59272882615611178,2.21317603189356582,3.3056243529158942,..
+ 0.77159656358327178;
+ 1.97808522199214609,-1.62888466797664266,-3.52915941330826,-1.81698729810778037,..
+ -0.00057916618067070,0.72759134820032212,-0.49562009306186250,-1.52634899725477169,..
+ -1.64182890117946090;
+ -2,2.0255789396616728,2.39977639282567701,-1.02062072615965738,-0.21623417629893263,..
+ -0.33673269589600086,4.59619407771255872,3.58705650694926259,1.2017970067515158;
+ -1.632993161855452,4.54779009715027005,-3.28900566318474974,-2.5,-2.3230729643967232,..
+ 4.37582606600885970,0.28867513459481303,-2.32803596885859054,3.9415445893237928;
+ 0.7698003589195008,3.99972019170555404,-1.83426711715667090,-4.12478955692152738,..
+ 2.28878659482871472,0.71653818014654680,4.42268981335851574,1.16186166799936497,..
+ 1.59242235450869574;
+ -2.92089426357420923,-3.87026979368244106,0.33153838264147889,2.68301270189221830,..
+ -1.42188370601683456,1.21560492170039569,-3.67104657360480369,2.74425230353935490,..
+ -2.13332925728981504];
+//assert_checkalmostequal(DCTN(x,-1),y_ref);
+y=dct(x);
+assert_checkalmostequal(y,y_ref,1000*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1),x,0,100*%eps);
+//Complex case
+x=[1+%i*4, 8+%i*4; 2+%i*9, 1+%i; 7+%i*2, 2+%i*6; 7+%i*6, 8+%i*7];
+y_ref=complex(dct(real(x)),dct(imag(x)));
+y=dct(x);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checkalmostequal(dct(y,1),x,0,100*%eps);
+//*****N-D transform *************************************************************************
+function y=DCTN(y,flag)
+ for i=1:ndims(y),y=dct(y,flag,i),end
+endfunction
+//Real case
+x=matrix([2,8,1,3,7,6,8,7,9,1,6,7,7,2,5,2,2,2,9,7,3,9,2,3,..
+ 4,3,6,5,3,6,5,4,3,6,4,9,1,5,3,4,3,1,8,2,1,7,2,7],[3,4,4]);
+y_ref=DCTN(x,-1);
+y=dct(x);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+y=dct(x,-1);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1),x);
+x=matrix([5,1,10,2,0,8,1,10,7,2,5,8,8,1,8,3],[2 2 2 2]);
+y_ref=DCTN(x,-1);
+y=dct(x);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checkalmostequal(dct(y,1),x,0,100*%eps);
+x=matrix([5,1,10,2,0,8,1,10,7,2,5,8,8,1,8,3],[1 2 2 2 2]);
+y_ref=DCTN(x,-1);
+y=dct(x);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checkalmostequal(dct(y,1),x,0,100*%eps);
+x=matrix([2,8,1,3,7,6,8,7,9,1,6,7,7,2,5,2,2,2,9,7,3,9,2,3,...
+ 4,3,6,5,3,6,5,4,3,6,4,9,11,5,3,4,3,1,8,2,1,7,2,7,...
+ 8,4,4,9,1,2,6,6,7,9,5,3,4,9,9,3,4,7,3,5,3,5,5,1,...
+ 2,6,8,5,7,2,4,8,6,5,2,8,1,3,9,8,5,10,6,10,1,7,4,6],[3,4,2 4]);
+y_ref=DCTN(x,-1);
+y=dct(x);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checkalmostequal(dct(y,1),x,100*%eps);
+//Complex case
+x=matrix([3,3+%i*8,6+%i,1+%i*9,6,7+%i*2,3+%i*5,%i*7,5+%i*9,4+%i*2,2+%i*6,5+%i*3,4+%i*4,...
+ 3+%i*9,1+%i*8,6+%i*8,3+%i*3,7+%i*4,5+%i*4,3+%i*7,7+%i*8,1+%i*4,4+%i*8,7+%i*5,...
+ 9+%i,2+%i*10,4+%i*2,10,5+%i*8,5+%i,6+%i*10,6+%i*7,5+%i*2,8+%i*5,8+%i*8,10+%i*8,...
+ 8+%i,4+%i*8,2+%i*3,9+%i*3,1+%i*10,5+%i*9,4+%i*2,%i*9,5+%i*7,8+%i*9,6,2+%i*2],[3,4,1,4]);
+y_ref=dct(real(x))+%i*(dct(imag(x)));
+y=dct(x);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checkalmostequal(dct(y,1),x,0,100*%eps);
diff --git a/modules/fftw/tests/unit_tests/dct_part1.tst b/modules/fftw/tests/unit_tests/dct_part1.tst
new file mode 100755
index 000000000..3a2475e70
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/dct_part1.tst
@@ -0,0 +1,151 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+//============================================================================================
+//=================================dct(A [,isn ]) ============================================
+//============================================================================================
+//*****1-D transform *************************************************************************
+//Real case
+x=1:12;
+y=dct(x);
+y_ref=[22.516660498395403,-11.8786642686858634,0,-1.28774657627874833,0,-0.43698525004935185,0,..
+ -0.19742775076373928,0,-0.09151733141338797,0,-0.02710534350890513];
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+y=dct(x,-1);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1),x,0,100*%eps);
+
+x=[2;8;1;3;7;6;8;7;9;1;6;7;7;2;5;2;2;2;9;7;3];
+y_ref=[22.6946605845432074;1.10519574266518794;-2.3241759528540804;-4.85151174144696462;
+ 1.0125846934610252;-1.1922212636993892;1.59557416291812504;4.54344111251121419;
+ -2.5559634218592766;0.60407624058440501;-2.30214098713630388; 3.897143024186624;
+ -4.1080570985039806;-4.03538258536340688;-2.00594354950719467;-1.38969746761551849;
+ -1.83219922773155397;-2.95095934890382949;-1.53744081244562425;-1.30413301180655994;
+ 4.3041816147747296];
+y=dct(x);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+y=dct(x,-1);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1),x,0,100*%eps);
+
+//Complex case
+x=[9+%i*4,2+%i*3,3+%i*6,4+%i*4,3+%i*9,6+%i,5+%i*5,3+%i*3,6+%i*4,5+%i*3];
+
+y_ref=complex(dct(real(x)),dct(imag(x)));
+y=dct(x);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+y=dct(x,-1);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checkalmostequal(dct(y,1),x,0,100*%eps);
+//*****2-D transform *************************************************************************
+//Real case
+x=matrix([1 5 -3 7 0.3 -1 23 -0.5 -0.9 2 -7 23],3,4);
+y_ref=[14.1162140816863513,-8.0479004090282249,-1.9918584287042105,3.4272874122786048;
+ 5.26794551983977577,8.50616086908862101,-17.2887608000110866,12.1283851880283517;
+ 11.3288900603721974,-15.5570935550615044,-0.30618621784789912,-0.91342220197659429];
+
+//assert_checkalmostequal(DCTN(x,-1),y_ref);
+
+y=dct(x);
+assert_checkalmostequal(y,y_ref);
+assert_checktrue(isreal(y));
+y=dct(x,-1);
+assert_checkalmostequal(y,y_ref);
+assert_checktrue(isreal(y));
+
+assert_checkalmostequal(dct(y,1),x);
+
+
+x = [5,0,8,8,6,4,3,2,4;
+ 4,5,2,4,6,9,5,6,8;
+ 3,3,1,4,7,9,3,8,6;
+ 6,4,7,9,9,3,5,0,5;
+ 4,3,2,1,5,4,5,7,2;
+ 9,1,7,2,3,7,1,2,8];
+y_ref = [34.5650219259403997,-1.78710447324021815,-2.48169728021161573,0.16666666666666699,..
+ 5.69563532864431199,-0.59272882615611178,2.21317603189356582,3.3056243529158942,..
+ 0.77159656358327178;
+ 1.97808522199214609,-1.62888466797664266,-3.52915941330826,-1.81698729810778037,..
+ -0.00057916618067070,0.72759134820032212,-0.49562009306186250,-1.52634899725477169,..
+ -1.64182890117946090;
+ -2,2.0255789396616728,2.39977639282567701,-1.02062072615965738,-0.21623417629893263,..
+ -0.33673269589600086,4.59619407771255872,3.58705650694926259,1.2017970067515158;
+ -1.632993161855452,4.54779009715027005,-3.28900566318474974,-2.5,-2.3230729643967232,..
+ 4.37582606600885970,0.28867513459481303,-2.32803596885859054,3.9415445893237928;
+ 0.7698003589195008,3.99972019170555404,-1.83426711715667090,-4.12478955692152738,..
+ 2.28878659482871472,0.71653818014654680,4.42268981335851574,1.16186166799936497,..
+ 1.59242235450869574;
+ -2.92089426357420923,-3.87026979368244106,0.33153838264147889,2.68301270189221830,..
+ -1.42188370601683456,1.21560492170039569,-3.67104657360480369,2.74425230353935490,..
+ -2.13332925728981504];
+//assert_checkalmostequal(DCTN(x,-1),y_ref);
+y=dct(x);
+assert_checkalmostequal(y,y_ref,1000*%eps);
+assert_checktrue(isreal(y));
+
+assert_checkalmostequal(dct(y,1),x,0,100*%eps);
+
+//Complex case
+x=[1+%i*4, 8+%i*4; 2+%i*9, 1+%i; 7+%i*2, 2+%i*6; 7+%i*6, 8+%i*7];
+y_ref=complex(dct(real(x)),dct(imag(x)));
+y=dct(x);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checkalmostequal(dct(y,1),x,0,100*%eps);
+//*****N-D transform *************************************************************************
+function y=DCTN(y,flag)
+ for i=1:ndims(y),y=dct(y,flag,i),end
+endfunction
+
+//Real case
+x=matrix([2,8,1,3,7,6,8,7,9,1,6,7,7,2,5,2,2,2,9,7,3,9,2,3,..
+ 4,3,6,5,3,6,5,4,3,6,4,9,1,5,3,4,3,1,8,2,1,7,2,7],[3,4,4]);
+y_ref=DCTN(x,-1);
+y=dct(x);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+y=dct(x,-1);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1),x);
+
+x=matrix([5,1,10,2,0,8,1,10,7,2,5,8,8,1,8,3],[2 2 2 2]);
+y_ref=DCTN(x,-1);
+y=dct(x);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checkalmostequal(dct(y,1),x,0,100*%eps);
+
+x=matrix([5,1,10,2,0,8,1,10,7,2,5,8,8,1,8,3],[1 2 2 2 2]);
+y_ref=DCTN(x,-1);
+y=dct(x);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checkalmostequal(dct(y,1),x,0,100*%eps);
+
+
+x=matrix([2,8,1,3,7,6,8,7,9,1,6,7,7,2,5,2,2,2,9,7,3,9,2,3,...
+ 4,3,6,5,3,6,5,4,3,6,4,9,11,5,3,4,3,1,8,2,1,7,2,7,...
+ 8,4,4,9,1,2,6,6,7,9,5,3,4,9,9,3,4,7,3,5,3,5,5,1,...
+ 2,6,8,5,7,2,4,8,6,5,2,8,1,3,9,8,5,10,6,10,1,7,4,6],[3,4,2 4]);
+y_ref=DCTN(x,-1);
+y=dct(x);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checkalmostequal(dct(y,1),x,100*%eps);
+
+//Complex case
+x=matrix([3,3+%i*8,6+%i,1+%i*9,6,7+%i*2,3+%i*5,%i*7,5+%i*9,4+%i*2,2+%i*6,5+%i*3,4+%i*4,...
+ 3+%i*9,1+%i*8,6+%i*8,3+%i*3,7+%i*4,5+%i*4,3+%i*7,7+%i*8,1+%i*4,4+%i*8,7+%i*5,...
+ 9+%i,2+%i*10,4+%i*2,10,5+%i*8,5+%i,6+%i*10,6+%i*7,5+%i*2,8+%i*5,8+%i*8,10+%i*8,...
+ 8+%i,4+%i*8,2+%i*3,9+%i*3,1+%i*10,5+%i*9,4+%i*2,%i*9,5+%i*7,8+%i*9,6,2+%i*2],[3,4,1,4]);
+y_ref=dct(real(x))+%i*(dct(imag(x)));
+y=dct(x);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checkalmostequal(dct(y,1),x,0,100*%eps);
diff --git a/modules/fftw/tests/unit_tests/dct_part2.dia.ref b/modules/fftw/tests/unit_tests/dct_part2.dia.ref
new file mode 100755
index 000000000..b185f0a0f
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/dct_part2.dia.ref
@@ -0,0 +1,181 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+//============================================================================================
+//=================================dct(A ,isn, sel) ============================================
+//==============================================================================================
+function x=DCT(y,flag,sel)
+ x=y;
+ Dims=size(y)
+ ind=1:ndims(y)
+ ind(sel)=[];
+ I=list();
+ for k=1:ndims(y),I(k)=:;end
+ select size(ind,'*')
+ case 1 then
+ for i1=1:Dims(ind)
+ I(ind)=i1;
+ x(I(:))=dct(y(I(:)));
+ end
+ case 2 then
+ for i1=1:Dims(ind(1))
+ I(ind(1))=i1;
+ for i2=1:Dims(ind(2))
+ I(ind(2))=i2;
+ x(I(:))=dct(y(I(:)));
+ end
+ end
+ case 3 then
+ for i1=1:Dims(ind(1))
+ I(ind(1))=i1;
+ for i2=1:Dims(ind(2))
+ I(ind(2))=i2;
+ for i3=1:Dims(ind(3))
+ I(ind(3))=i3;
+ x(I(:))=dct(y(I(:)));
+ end
+ end
+ end
+ else
+ error('not handled')
+ end
+endfunction
+//*****multiple 1-D transform ******************************************************************
+//Real case
+x=matrix(1:12,3,4);
+y_ref=x;for i2=1:4,y_ref(:,i2)=dct(x(:,i2));end
+y=dct(x,-1,1);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,1),x,0,100*%eps);
+y_ref=x;for i1=1:3,y_ref(i1,:)=dct(x(i1,:));end
+y=dct(x,-1,2);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,2),x,0,100*%eps);
+x=matrix([7,1,8,3,5,6,2,8,6,3,10,9,3,1,9,7,9,4,6,7,7,4,1,5],[3,4,2]);
+y_ref=x;for i1=1:3,for i3=1:2,y_ref(i1,:,i3)=dct(x(i1,:,i3));end;end
+y=dct(x,-1,2);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,2),x,0,100*%eps);
+x=matrix([7,1,8,3,5,6,2,8,6,3,10,9,3,1,9,7,9,4,6,7,7,4,1,5],[3,1,4,2]);
+y_ref=x;for i1=1:3,for i4=1:2,y_ref(i1,1,:,i4)=dct(x(i1,1,:,i4));end;end
+y=dct(x,-1,3);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,3),x,0,100*%eps);
+x=matrix([7,1,8,3,5,6,2,8,6,3,10,9,3,1,9,7,9,4,6,7,7,4,1,5],[3,1,4,2]);
+y_ref=x;for i1=1:3,for i3=1:4,y_ref(i1,1,i3,:)=dct(x(i1,1,i3,:));end;end
+y=dct(x,-1,4);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,4),x,0,100*%eps);
+//Complex case
+x=matrix( [ 9+%i*9, 8+%i*4, 4+%i*6, 8+%i*8, 1+%i*8, 1+%i*6, 5+%i*4, 4+%i*7, ...
+ 6+%i*5, 9+%i*6, 1+%i*10, 4+%i*2, 9+%i*5,%i*2, 9+%i*6, 9+%i*4, 9, ...
+ 8+%i*6,%i*7,%i*9, 5+%i, 4+%i*3, 8, 5+%i*6],[3,1,4,2]);
+y_ref=x;for i1=1:3,for i3=1:4,y_ref(i1,1,i3,:)=dct(x(i1,1,i3,:));end;end
+y=dct(x,-1,4);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checkalmostequal(dct(y,1,4),x,0,100*%eps);
+//*****multiple 2-D transform ******************************************************************
+//Real case
+x=matrix([7,1,8,3,5,6,2,8,6,3,10,9,3,1,9,7,9,4,6,7,7,4,1,5],[3,4,2]);
+sel=[2 3];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+x=matrix([7,1,8,3,5,6,2,8,6,3,10,9,3,1,9,7,9,4,6,7,7,4,1,5],[3,1,4,2]);
+sel=[1 3];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+x=matrix([7,1,8,3,5,6,2,8,6,3,10,9,3,1,9,7,9,4,6,7,7,4,1,5],[1,3,4,2]);
+sel=[2 4];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+x=matrix([6,4,5,5,1,9,7,1,1,5,8,1,7,2,2,4,4,2,3,1,4,7,1,6,4,...
+ 2,2,6,9,7,3,2,2,7,6,9,6,8,1,7,6,8,8,1,2,3,5,7],[3,2,1,4,2]);
+sel=[2 4];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+//Complex case
+x=matrix([6+%i,4,5,5,1,9,7,1,1,5,8,1,7,2,2,4,4,2,3,1,4,7,1,6,4,...
+ 2,2,6,9,7,3,2,2,7,6,9,6,8,1,7,6,8,8-%i,1,2,3,5,7],[3,2,1,4,2]);
+sel=[2 4];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+//*****multiple N-D transform ******************************************************************
+//Real case
+x=matrix([2,8,1,3,7,6,8,7,9,1,6,7,7,2,5,2,2,2,9,7,3,9,2,3,...
+ 4,3,6,5,3,6,5,4,3,6,4,9,11,5,3,4,3,1,8,2,1,7,2,7,...
+ 8,4,4,9,1,2,6,6,7,9,5,3,4,9,9,3,4,7,3,5,3,5,5,1,...
+ 2,6,8,5,7,2,4,8,6,5,2,8,1,3,9,8,5,10,6,10,1,7,4,6],[3,4,2 4]);
+sel=[1 3 4];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+sel=[1 2 4];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+x=matrix([5,8,8,4,2,2,2,9,0,2,6,7,6,0,2,9,1,3,4,6,4,3,1,8,0,4,7,2,9,7,2,3,9,1,5,7,..
+ 8,6,4,7,1,2,9,3,7,0,2,10,9,1,9,5,9,9,2,0,0,7,5,1,5,8,4,4,8,0,10,10,7,10,...
+ 8,5,2,9,0,7,2,8,4,3,6,8,9,6,6,9,6,5,7,9,7,5,9,6,4,7,3,6,0,9,10,6,6,3,10,...
+ 8,9,5,1,7,9,0,8,6,1,8,5,2,8,8,7,4,3,6,0,9,3,2,5,1,10,7,8,5,7,5,7,1,7,3,9,...
+ 8,5,4,9,0,5,2,1,10,5,2,1,9,9,6,7,2,9,8,3,2,6,2,5,6,4,1,5,1,3,9,2,2,1,7,10,...
+ 9,7,8,8,10,2,5,7,4,5,8,3,9,2,9,9,10,1,8,9,7,6,8,1,5,0,10,8,6,8,4,8,4,6,9,3,...
+ 9,4,2,4,3,5,4,3,3,0,5,7,7,3,6,7,4,2,9,9,4,4,6,7,9,3,10,1,1,7,8,8,3,5,4,3,3,...
+ 9,10,1,6,2,0,6,0,3,1,2,2,4,1,3,1,8,6,3,4,5,1,10,7,9,10,3,6,2,6,6,5,2,1,8,6,...
+ 6,7,1,1,8,6,4,3,9,10,1,4,7,2,10,7,1,4,5,5,5,8,3,9,7,2,1,3,1,3,4,2,0,4,5,1,10,...
+ 7,1,9,8,5,9,5,3,6,4,9,0,8,3,1,6,9,4,3,4,8,2,5,1,5,3,0,2,3,1,10,3,1,9,9,8,2],[3 2 3 4 5]);
+sel=[2 3 4];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+x=matrix([5,8,8,4,2,2,2,9,0,2,6,7,6,0,2,9,1,3,4,6,4,3,1,8,0,4,7,2,9,7,2,3,9,1,5,7,..
+ 8,6,4,7,1,2,9,3,7,0,2,10,9,1,9,5,9,9,2,0,0,7,5,1,5,8,4,4,8,0,10,10,7,10,...
+ 8,5,2,9,0,7,2,8,4,3,6,8,9,6,6,9,6,5,7,9,7,5,9,6,4,7,3,6,0,9,10,6,6,3,10,...
+ 8,9,5,1,7,9,0,8,6,1,8,5,2,8,8,7,4,3,6,0,9,3,2,5,1,10,7,8,5,7,5,7,1,7,3,9,...
+ 8,5,4,9,0,5,2,1,10,5,2,1,9,9,6,7,2,9,8,3,2,6,2,5,6,4,1,5,1,3,9,2,2,1,7,10,...
+ 9,7,8,8,10,2,5,7,4,5,8,3,9,2,9,9,10,1,8,9,7,6,8,1,5,0,10,8,6,8,4,8,4,6,9,3,...
+ 9,4,2,4,3,5,4,3,3,0,5,7,7,3,6,7,4,2,9,9,4,4,6,7,9,3,10,1,1,7,8,8,3,5,4,3,3,...
+ 9,10,1,6,2,0,6,0,3,1,2,2,4,1,3,1,8,6,3,4,5,1,10,7,9,10,3,6,2,6,6,5,2,1,8,6,...
+ 6,7,1,1,8,6,4,3,9,10,1,4,7,2,10,7,1,4,5,5,5,8,3,9,7,2,1,3,1,3,4,2,0,4,5,1,10,...
+ 7,1,9,8,5,9,5,3,6,4,9,0,8,3,1,6,9,4,3,4,8,2,5,1,5,3,0,2,3,1,10,3,1,9,9,8,2],[3 2 1 3 4 5]);
+sel=[2 4 5];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+x=matrix([9,8,8,8,6,5,5,9,8,1,1,9,4,10,8,6,0,7,2,5,6,8,2,1,7,1,1,6,8,6,4,3],[2 2 2 2 2]);
+sel=[2 4];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
diff --git a/modules/fftw/tests/unit_tests/dct_part2.tst b/modules/fftw/tests/unit_tests/dct_part2.tst
new file mode 100755
index 000000000..06de11424
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/dct_part2.tst
@@ -0,0 +1,204 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+//============================================================================================
+//=================================dct(A ,isn, sel) ============================================
+//==============================================================================================
+function x=DCT(y,flag,sel)
+ x=y;
+ Dims=size(y)
+ ind=1:ndims(y)
+ ind(sel)=[];
+ I=list();
+ for k=1:ndims(y),I(k)=:;end
+ select size(ind,'*')
+ case 1 then
+ for i1=1:Dims(ind)
+ I(ind)=i1;
+ x(I(:))=dct(y(I(:)));
+ end
+ case 2 then
+ for i1=1:Dims(ind(1))
+ I(ind(1))=i1;
+ for i2=1:Dims(ind(2))
+ I(ind(2))=i2;
+ x(I(:))=dct(y(I(:)));
+ end
+ end
+ case 3 then
+ for i1=1:Dims(ind(1))
+ I(ind(1))=i1;
+ for i2=1:Dims(ind(2))
+ I(ind(2))=i2;
+ for i3=1:Dims(ind(3))
+ I(ind(3))=i3;
+ x(I(:))=dct(y(I(:)));
+ end
+ end
+ end
+
+ else
+ error('not handled')
+ end
+endfunction
+
+//*****multiple 1-D transform ******************************************************************
+//Real case
+x=matrix(1:12,3,4);
+y_ref=x;for i2=1:4,y_ref(:,i2)=dct(x(:,i2));end
+y=dct(x,-1,1);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,1),x,0,100*%eps);
+
+y_ref=x;for i1=1:3,y_ref(i1,:)=dct(x(i1,:));end
+y=dct(x,-1,2);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,2),x,0,100*%eps);
+
+x=matrix([7,1,8,3,5,6,2,8,6,3,10,9,3,1,9,7,9,4,6,7,7,4,1,5],[3,4,2]);
+y_ref=x;for i1=1:3,for i3=1:2,y_ref(i1,:,i3)=dct(x(i1,:,i3));end;end
+y=dct(x,-1,2);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,2),x,0,100*%eps);
+
+x=matrix([7,1,8,3,5,6,2,8,6,3,10,9,3,1,9,7,9,4,6,7,7,4,1,5],[3,1,4,2]);
+y_ref=x;for i1=1:3,for i4=1:2,y_ref(i1,1,:,i4)=dct(x(i1,1,:,i4));end;end
+y=dct(x,-1,3);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,3),x,0,100*%eps);
+
+x=matrix([7,1,8,3,5,6,2,8,6,3,10,9,3,1,9,7,9,4,6,7,7,4,1,5],[3,1,4,2]);
+y_ref=x;for i1=1:3,for i3=1:4,y_ref(i1,1,i3,:)=dct(x(i1,1,i3,:));end;end
+y=dct(x,-1,4);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,4),x,0,100*%eps);
+
+//Complex case
+x=matrix( [ 9+%i*9, 8+%i*4, 4+%i*6, 8+%i*8, 1+%i*8, 1+%i*6, 5+%i*4, 4+%i*7, ...
+ 6+%i*5, 9+%i*6, 1+%i*10, 4+%i*2, 9+%i*5,%i*2, 9+%i*6, 9+%i*4, 9, ...
+ 8+%i*6,%i*7,%i*9, 5+%i, 4+%i*3, 8, 5+%i*6],[3,1,4,2]);
+y_ref=x;for i1=1:3,for i3=1:4,y_ref(i1,1,i3,:)=dct(x(i1,1,i3,:));end;end
+y=dct(x,-1,4);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checkalmostequal(dct(y,1,4),x,0,100*%eps);
+
+//*****multiple 2-D transform ******************************************************************
+//Real case
+x=matrix([7,1,8,3,5,6,2,8,6,3,10,9,3,1,9,7,9,4,6,7,7,4,1,5],[3,4,2]);
+sel=[2 3];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+
+x=matrix([7,1,8,3,5,6,2,8,6,3,10,9,3,1,9,7,9,4,6,7,7,4,1,5],[3,1,4,2]);
+sel=[1 3];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+
+x=matrix([7,1,8,3,5,6,2,8,6,3,10,9,3,1,9,7,9,4,6,7,7,4,1,5],[1,3,4,2]);
+sel=[2 4];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+
+x=matrix([6,4,5,5,1,9,7,1,1,5,8,1,7,2,2,4,4,2,3,1,4,7,1,6,4,...
+ 2,2,6,9,7,3,2,2,7,6,9,6,8,1,7,6,8,8,1,2,3,5,7],[3,2,1,4,2]);
+sel=[2 4];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+
+//Complex case
+x=matrix([6+%i,4,5,5,1,9,7,1,1,5,8,1,7,2,2,4,4,2,3,1,4,7,1,6,4,...
+ 2,2,6,9,7,3,2,2,7,6,9,6,8,1,7,6,8,8-%i,1,2,3,5,7],[3,2,1,4,2]);
+sel=[2 4];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+
+//*****multiple N-D transform ******************************************************************
+//Real case
+
+
+x=matrix([2,8,1,3,7,6,8,7,9,1,6,7,7,2,5,2,2,2,9,7,3,9,2,3,...
+ 4,3,6,5,3,6,5,4,3,6,4,9,11,5,3,4,3,1,8,2,1,7,2,7,...
+ 8,4,4,9,1,2,6,6,7,9,5,3,4,9,9,3,4,7,3,5,3,5,5,1,...
+ 2,6,8,5,7,2,4,8,6,5,2,8,1,3,9,8,5,10,6,10,1,7,4,6],[3,4,2 4]);
+sel=[1 3 4];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+
+sel=[1 2 4];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+
+
+x=matrix([5,8,8,4,2,2,2,9,0,2,6,7,6,0,2,9,1,3,4,6,4,3,1,8,0,4,7,2,9,7,2,3,9,1,5,7,..
+ 8,6,4,7,1,2,9,3,7,0,2,10,9,1,9,5,9,9,2,0,0,7,5,1,5,8,4,4,8,0,10,10,7,10,...
+ 8,5,2,9,0,7,2,8,4,3,6,8,9,6,6,9,6,5,7,9,7,5,9,6,4,7,3,6,0,9,10,6,6,3,10,...
+ 8,9,5,1,7,9,0,8,6,1,8,5,2,8,8,7,4,3,6,0,9,3,2,5,1,10,7,8,5,7,5,7,1,7,3,9,...
+ 8,5,4,9,0,5,2,1,10,5,2,1,9,9,6,7,2,9,8,3,2,6,2,5,6,4,1,5,1,3,9,2,2,1,7,10,...
+ 9,7,8,8,10,2,5,7,4,5,8,3,9,2,9,9,10,1,8,9,7,6,8,1,5,0,10,8,6,8,4,8,4,6,9,3,...
+ 9,4,2,4,3,5,4,3,3,0,5,7,7,3,6,7,4,2,9,9,4,4,6,7,9,3,10,1,1,7,8,8,3,5,4,3,3,...
+ 9,10,1,6,2,0,6,0,3,1,2,2,4,1,3,1,8,6,3,4,5,1,10,7,9,10,3,6,2,6,6,5,2,1,8,6,...
+ 6,7,1,1,8,6,4,3,9,10,1,4,7,2,10,7,1,4,5,5,5,8,3,9,7,2,1,3,1,3,4,2,0,4,5,1,10,...
+ 7,1,9,8,5,9,5,3,6,4,9,0,8,3,1,6,9,4,3,4,8,2,5,1,5,3,0,2,3,1,10,3,1,9,9,8,2],[3 2 3 4 5]);
+sel=[2 3 4];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+
+x=matrix([5,8,8,4,2,2,2,9,0,2,6,7,6,0,2,9,1,3,4,6,4,3,1,8,0,4,7,2,9,7,2,3,9,1,5,7,..
+ 8,6,4,7,1,2,9,3,7,0,2,10,9,1,9,5,9,9,2,0,0,7,5,1,5,8,4,4,8,0,10,10,7,10,...
+ 8,5,2,9,0,7,2,8,4,3,6,8,9,6,6,9,6,5,7,9,7,5,9,6,4,7,3,6,0,9,10,6,6,3,10,...
+ 8,9,5,1,7,9,0,8,6,1,8,5,2,8,8,7,4,3,6,0,9,3,2,5,1,10,7,8,5,7,5,7,1,7,3,9,...
+ 8,5,4,9,0,5,2,1,10,5,2,1,9,9,6,7,2,9,8,3,2,6,2,5,6,4,1,5,1,3,9,2,2,1,7,10,...
+ 9,7,8,8,10,2,5,7,4,5,8,3,9,2,9,9,10,1,8,9,7,6,8,1,5,0,10,8,6,8,4,8,4,6,9,3,...
+ 9,4,2,4,3,5,4,3,3,0,5,7,7,3,6,7,4,2,9,9,4,4,6,7,9,3,10,1,1,7,8,8,3,5,4,3,3,...
+ 9,10,1,6,2,0,6,0,3,1,2,2,4,1,3,1,8,6,3,4,5,1,10,7,9,10,3,6,2,6,6,5,2,1,8,6,...
+ 6,7,1,1,8,6,4,3,9,10,1,4,7,2,10,7,1,4,5,5,5,8,3,9,7,2,1,3,1,3,4,2,0,4,5,1,10,...
+ 7,1,9,8,5,9,5,3,6,4,9,0,8,3,1,6,9,4,3,4,8,2,5,1,5,3,0,2,3,1,10,3,1,9,9,8,2],[3 2 1 3 4 5]);
+
+sel=[2 4 5];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
+
+x=matrix([9,8,8,8,6,5,5,9,8,1,1,9,4,10,8,6,0,7,2,5,6,8,2,1,7,1,1,6,8,6,4,3],[2 2 2 2 2]);
+sel=[2 4];
+y_ref=DCT(x,-1,sel);
+y=dct(x,-1,sel);
+assert_checkalmostequal(y,y_ref,0,100*%eps);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(dct(y,1,sel),x,0,100*%eps);
diff --git a/modules/fftw/tests/unit_tests/dct_part3.dia.ref b/modules/fftw/tests/unit_tests/dct_part3.dia.ref
new file mode 100755
index 000000000..ec6969825
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/dct_part3.dia.ref
@@ -0,0 +1,65 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+//============================================================================================
+//=================================dct(A ,isn, dim, incr) ============================================
+//==============================================================================================
+//*****multiple 1-D transform ******************************************************************
+//Real case
+A=[0 1 1
+ 2 -1 -1
+ 3 4 4
+ 5 1 -1];
+y=matrix(dct(A(:),-1,4,1),size(A));
+assert_checkalmostequal(y,dct(A,-1,1),0,100*%eps);
+y1=matrix(dct(y(:),1,4,1),size(A));
+assert_checkalmostequal(y1,dct(y,1,1),0,100*%eps);
+y=matrix(dct(A(:),-1,3,4),size(A));
+assert_checkalmostequal(y,dct(A,-1,2),0,100*%eps);
+y1=matrix(dct(y(:),1,3,4),size(A));
+assert_checkalmostequal(y1,dct(y,1,2),0,100*%eps);
+Dims=[5 4 9 5 6];
+A=rand(1,prod(Dims));
+y=matrix(dct(A,-1,20,1),[5*4 9 5 6]);
+assert_checkalmostequal(y,dct(matrix(A,[5*4 9 5 6]),-1,1),0,100*%eps);
+y=matrix(dct(A,-1,45,20),[5*4 9*5 6]);
+assert_checkalmostequal(y,dct(matrix(A,[5*4 9*5 6]),-1,2),0,100*%eps);
+y1=matrix(dct(y(:),1,45,20),size(A));
+assert_checktrue(isreal(y1));
+assert_checkalmostequal(y1,A,0,100*%eps);
+Dims=[5 4 9 5 6];
+A=rand(1,prod(Dims));
+y=matrix(dct(A(:),-1,[9 5],[20 180]),[5 4 9 5 6]);
+y1=dct(matrix(A,[5 4 9 5 6]),-1,[3 4]);
+assert_checkalmostequal(y,y1,0,100*%eps);
+y1=dct(y(:),1,[9 5],[20 180]);
+assert_checkalmostequal(A(:),y1,0,100*%eps);
+assert_checktrue(isreal(y1));
+Dims=[5 4 9 5 6];
+A=rand(1,prod(Dims));
+y1=dct(matrix(A,[5 4 9 5 6]),-1,[2 4]);
+y=matrix(dct(A(:),-1,[4 5],[5 180]),[5 4 9 5 6]);
+assert_checkalmostequal(y,y1,0,100*%eps);
+y1=dct(y(:),1,[4 5],[5 180]);
+assert_checkalmostequal(A(:),y1,10*%eps,100*%eps);
+assert_checktrue(isreal(y1));
+//complex case
+A=[%i 1 1
+ 2 -1+3*%i -1;
+ 3 4 4;
+ 5*%i 1 -1];
+y=matrix(dct(A(:),-1,4,1),size(A));
+assert_checkalmostequal(y,dct(A,-1,1),0,100*%eps);
+y1=matrix(dct(y(:),1,4,1),size(A));
+assert_checkalmostequal(y1,dct(y,1,1),0,100*%eps);
+Dims=[5 4 9 5 6];
+A=rand(1,prod(Dims))+%i*rand(1,prod(Dims));
+y1=dct(matrix(A,[5 4 9 5 6]),-1,[2 4]);
+y=matrix(dct(A(:),-1,[4 5],[5 180]),[5 4 9 5 6]);
+assert_checkalmostequal(y,y1,0,100*%eps);
+y1=dct(y(:),1,[4 5],[5 180]);
+assert_checkalmostequal(A(:),y1,10*%eps,100*%eps);
diff --git a/modules/fftw/tests/unit_tests/dct_part3.tst b/modules/fftw/tests/unit_tests/dct_part3.tst
new file mode 100755
index 000000000..9139f63af
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/dct_part3.tst
@@ -0,0 +1,83 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+//============================================================================================
+//=================================dct(A ,isn, dim, incr) ============================================
+//==============================================================================================
+//*****multiple 1-D transform ******************************************************************
+//Real case
+A=[0 1 1
+ 2 -1 -1
+ 3 4 4
+ 5 1 -1];
+y=matrix(dct(A(:),-1,4,1),size(A));
+assert_checkalmostequal(y,dct(A,-1,1),0,100*%eps);
+y1=matrix(dct(y(:),1,4,1),size(A));
+assert_checkalmostequal(y1,dct(y,1,1),0,100*%eps);
+
+y=matrix(dct(A(:),-1,3,4),size(A));
+assert_checkalmostequal(y,dct(A,-1,2),0,100*%eps);
+y1=matrix(dct(y(:),1,3,4),size(A));
+assert_checkalmostequal(y1,dct(y,1,2),0,100*%eps);
+
+Dims=[5 4 9 5 6];
+A=rand(1,prod(Dims));
+y=matrix(dct(A,-1,20,1),[5*4 9 5 6]);
+assert_checkalmostequal(y,dct(matrix(A,[5*4 9 5 6]),-1,1),0,100*%eps);
+
+y=matrix(dct(A,-1,45,20),[5*4 9*5 6]);
+assert_checkalmostequal(y,dct(matrix(A,[5*4 9*5 6]),-1,2),0,100*%eps);
+y1=matrix(dct(y(:),1,45,20),size(A));
+assert_checktrue(isreal(y1));
+assert_checkalmostequal(y1,A,0,100*%eps);
+
+Dims=[5 4 9 5 6];
+A=rand(1,prod(Dims));
+y=matrix(dct(A(:),-1,[9 5],[20 180]),[5 4 9 5 6]);
+y1=dct(matrix(A,[5 4 9 5 6]),-1,[3 4]);
+assert_checkalmostequal(y,y1,0,100*%eps);
+
+y1=dct(y(:),1,[9 5],[20 180]);
+assert_checkalmostequal(A(:),y1,0,100*%eps);
+assert_checktrue(isreal(y1));
+
+
+Dims=[5 4 9 5 6];
+A=rand(1,prod(Dims));
+y1=dct(matrix(A,[5 4 9 5 6]),-1,[2 4]);
+
+y=matrix(dct(A(:),-1,[4 5],[5 180]),[5 4 9 5 6]);
+
+assert_checkalmostequal(y,y1,0,100*%eps);
+
+y1=dct(y(:),1,[4 5],[5 180]);
+assert_checkalmostequal(A(:),y1,10*%eps,100*%eps);
+assert_checktrue(isreal(y1));
+
+//complex case
+A=[%i 1 1
+ 2 -1+3*%i -1;
+ 3 4 4;
+ 5*%i 1 -1];
+y=matrix(dct(A(:),-1,4,1),size(A));
+assert_checkalmostequal(y,dct(A,-1,1),0,100*%eps);
+y1=matrix(dct(y(:),1,4,1),size(A));
+assert_checkalmostequal(y1,dct(y,1,1),0,100*%eps);
+
+
+Dims=[5 4 9 5 6];
+A=rand(1,prod(Dims))+%i*rand(1,prod(Dims));
+y1=dct(matrix(A,[5 4 9 5 6]),-1,[2 4]);
+
+y=matrix(dct(A(:),-1,[4 5],[5 180]),[5 4 9 5 6]);
+
+assert_checkalmostequal(y,y1,0,100*%eps);
+
+y1=dct(y(:),1,[4 5],[5 180]);
+assert_checkalmostequal(A(:),y1,10*%eps,100*%eps);
diff --git a/modules/fftw/tests/unit_tests/dct_part4.dia.ref b/modules/fftw/tests/unit_tests/dct_part4.dia.ref
new file mode 100755
index 000000000..9e359a081
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/dct_part4.dia.ref
@@ -0,0 +1,33 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+// Here only option specific cases are checked because the other parts
+// are common with dct_part[1 2 3].tst
+//============================================================================================
+//=================================dct(A, ..., option) ============================================
+//==============================================================================================
+//DCT-II, DCT, IDCT, DCT-III
+A=[2,8,-1,3,7,6,8,7,9,1,6,7,7,2,5];
+n=15;
+assert_checkequal(dct(A),dct(A,"dct"));
+assert_checkequal(dct(A,1),dct(A,1,"idct"));
+assert_checkalmostequal(dct(A)./dct(A,"dct2"),[0.5 ones(1,n-1)/sqrt(2)]/sqrt(n));//unnormalized
+A=matrix([1 5 -3 7 0.3 -1 23 -0.5 -0.9 2 -7 23],3,4);
+assert_checkequal(dct(A),dct(A,"dct"));
+assert_checkequal(dct(A,1),dct(A,1,"idct"));
+[m,n]=size(A);
+y_ref=diag([0.5 ones(1,m-1)/sqrt(2)]/sqrt(m))*dct(A,"dct2")*diag([0.5 ones(1,n-1)/sqrt(2)]/sqrt(n));
+assert_checkalmostequal(dct(A),y_ref);
+//dct-I
+A=[2,8,-1,3,7,6,8,7,9,1,6,7,7,2,5];n=15;
+y_ref=A(1)+(-1).^(0:n-1)*A(n)+2*sum((A(2:n-1)'*ones(1,n)).*cos(%pi*(1:n-2)'*(0:n-1)/(n-1)),1);
+assert_checkalmostequal(dct(A,"dct1"),y_ref);
+//dct-IV
+A=[2,8,-1,3,7,6,8,7,9,1,6,7,7,2,5];n=15;
+y_ref=2*sum((A'*ones(1,n)).*cos(%pi*(0.5:n)'*(0.5:n)/n),1);
+assert_checkalmostequal(dct(A,-1,"dct4"),y_ref);
+assert_checkalmostequal(dct(dct(A,-1,"dct4"),1,"dct4"),2*n*A);
diff --git a/modules/fftw/tests/unit_tests/dct_part4.tst b/modules/fftw/tests/unit_tests/dct_part4.tst
new file mode 100755
index 000000000..2f3ae8412
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/dct_part4.tst
@@ -0,0 +1,40 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+// Here only option specific cases are checked because the other parts
+// are common with dct_part[1 2 3].tst
+//============================================================================================
+//=================================dct(A, ..., option) ============================================
+//==============================================================================================
+//DCT-II, DCT, IDCT, DCT-III
+A=[2,8,-1,3,7,6,8,7,9,1,6,7,7,2,5];
+n=15;
+assert_checkequal(dct(A),dct(A,"dct"));
+assert_checkequal(dct(A,1),dct(A,1,"idct"));
+
+assert_checkalmostequal(dct(A)./dct(A,"dct2"),[0.5 ones(1,n-1)/sqrt(2)]/sqrt(n));//unnormalized
+
+A=matrix([1 5 -3 7 0.3 -1 23 -0.5 -0.9 2 -7 23],3,4);
+assert_checkequal(dct(A),dct(A,"dct"));
+assert_checkequal(dct(A,1),dct(A,1,"idct"));
+
+[m,n]=size(A);
+y_ref=diag([0.5 ones(1,m-1)/sqrt(2)]/sqrt(m))*dct(A,"dct2")*diag([0.5 ones(1,n-1)/sqrt(2)]/sqrt(n));
+assert_checkalmostequal(dct(A),y_ref);
+
+//dct-I
+A=[2,8,-1,3,7,6,8,7,9,1,6,7,7,2,5];n=15;
+y_ref=A(1)+(-1).^(0:n-1)*A(n)+2*sum((A(2:n-1)'*ones(1,n)).*cos(%pi*(1:n-2)'*(0:n-1)/(n-1)),1);
+assert_checkalmostequal(dct(A,"dct1"),y_ref);
+
+
+//dct-IV
+A=[2,8,-1,3,7,6,8,7,9,1,6,7,7,2,5];n=15;
+y_ref=2*sum((A'*ones(1,n)).*cos(%pi*(0.5:n)'*(0.5:n)/n),1);
+assert_checkalmostequal(dct(A,-1,"dct4"),y_ref);
+assert_checkalmostequal(dct(dct(A,-1,"dct4"),1,"dct4"),2*n*A);
diff --git a/modules/fftw/tests/unit_tests/dst.dia.ref b/modules/fftw/tests/unit_tests/dst.dia.ref
new file mode 100755
index 000000000..f0a43935d
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/dst.dia.ref
@@ -0,0 +1,48 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+// Here only 1d dst computations are checked, because the dst gateway
+// is a clone of the dct one.
+//real cases
+A=[2,8,-1,3,7,6,8,7,9,1,6,7,7,2,5];
+n=15;
+//DST-I
+y_ref=2*sum((A'*ones(1,n)).*sin(%pi*(1:n)'*(1:n)/(n+1)),1);
+assert_checkalmostequal(dst(A,-1,"dst1"),y_ref);
+assert_checkalmostequal(dst(dst(A,-1,"dst1"),1,"dst1"),2*(n+1)*A);
+//DST-II
+y_ref=2*sum((A'*ones(1,n)).*sin(%pi*(0.5:n)'*(1:n)/(n)),1);
+assert_checkalmostequal(dst(A,-1,"dst2"),y_ref);
+assert_checkalmostequal(dst(dst(A,-1,"dst2"),1,"dst3"),2*n*A);
+//DST-III
+y_ref=((-1).^(0:n-1))*A(n)+ 2*sum((A(1:n-1)'*ones(1,n)).*sin(%pi*(1:n-1)'*(0.5:n)/(n)),1);
+assert_checkalmostequal(dst(A,1,"dst3"),y_ref);
+assert_checkalmostequal(dst(dst(A,1,"dst3"),-1,"dst2"),2*n*A);
+//DST-iV
+y_ref=2*sum((A'*ones(1,n)).*sin(%pi*(0.5:n)'*(0.5:n)/(n)),1);
+assert_checkalmostequal(dst(A,-1,"dst4"),y_ref);
+assert_checkalmostequal(dst(dst(A,-1,"dst4"),1,"dst4"),2*n*A);
+//complex cases
+A=[2,8,-1,3,7,6,8,7,9,1,6,7,7,2,5]+%i*[2 2 2 9 7 3 9 2 3 4 3 6 5 3 6];
+n=15;
+//DST-I
+y_ref=2*sum((A.'*ones(1,n)).*sin(%pi*(1:n)'*(1:n)/(n+1)),1);
+assert_checkalmostequal(dst(A,-1,"dst1"),y_ref);
+assert_checkalmostequal(dst(dst(A,-1,"dst1"),1,"dst1"),2*(n+1)*A);
+//DST-II
+y_ref=2*sum((A.'*ones(1,n)).*sin(%pi*(0.5:n)'*(1:n)/(n)),1);
+assert_checkalmostequal(dst(A,-1,"dst2"),y_ref);
+assert_checkalmostequal(dst(dst(A,-1,"dst2"),1,"dst3"),2*n*A);
+//DST-III
+y_ref=((-1).^(0:n-1))*A(n)+ 2*sum((A(1:n-1).'*ones(1,n)).*sin(%pi*(1:n-1)'*(0.5:n)/(n)),1);
+assert_checkalmostequal(dst(A,1,"dst3"),y_ref,100*%eps,104*%eps);
+assert_checkalmostequal(dst(dst(A,1,"dst3"),-1,"dst2"),2*n*A);
+//DST-iV
+y_ref=2*sum((A.'*ones(1,n)).*sin(%pi*(0.5:n)'*(0.5:n)/(n)),1);
+assert_checkalmostequal(dst(A,-1,"dst4"),y_ref);
+assert_checkalmostequal(dst(dst(A,-1,"dst4"),1,"dst4"),2*n*A);
+//complex cases
diff --git a/modules/fftw/tests/unit_tests/dst.tst b/modules/fftw/tests/unit_tests/dst.tst
new file mode 100755
index 000000000..9064d00c0
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/dst.tst
@@ -0,0 +1,60 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+// Here only 1d dst computations are checked, because the dst gateway
+// is a clone of the dct one.
+//real cases
+A=[2,8,-1,3,7,6,8,7,9,1,6,7,7,2,5];
+n=15;
+//DST-I
+y_ref=2*sum((A'*ones(1,n)).*sin(%pi*(1:n)'*(1:n)/(n+1)),1);
+assert_checkalmostequal(dst(A,-1,"dst1"),y_ref);
+assert_checkalmostequal(dst(dst(A,-1,"dst1"),1,"dst1"),2*(n+1)*A);
+
+//DST-II
+y_ref=2*sum((A'*ones(1,n)).*sin(%pi*(0.5:n)'*(1:n)/(n)),1);
+assert_checkalmostequal(dst(A,-1,"dst2"),y_ref);
+assert_checkalmostequal(dst(dst(A,-1,"dst2"),1,"dst3"),2*n*A);
+
+//DST-III
+y_ref=((-1).^(0:n-1))*A(n)+ 2*sum((A(1:n-1)'*ones(1,n)).*sin(%pi*(1:n-1)'*(0.5:n)/(n)),1);
+assert_checkalmostequal(dst(A,1,"dst3"),y_ref);
+assert_checkalmostequal(dst(dst(A,1,"dst3"),-1,"dst2"),2*n*A);
+
+
+//DST-iV
+y_ref=2*sum((A'*ones(1,n)).*sin(%pi*(0.5:n)'*(0.5:n)/(n)),1);
+assert_checkalmostequal(dst(A,-1,"dst4"),y_ref);
+assert_checkalmostequal(dst(dst(A,-1,"dst4"),1,"dst4"),2*n*A);
+//complex cases
+
+A=[2,8,-1,3,7,6,8,7,9,1,6,7,7,2,5]+%i*[2 2 2 9 7 3 9 2 3 4 3 6 5 3 6];
+n=15;
+//DST-I
+y_ref=2*sum((A.'*ones(1,n)).*sin(%pi*(1:n)'*(1:n)/(n+1)),1);
+assert_checkalmostequal(dst(A,-1,"dst1"),y_ref);
+assert_checkalmostequal(dst(dst(A,-1,"dst1"),1,"dst1"),2*(n+1)*A);
+
+//DST-II
+y_ref=2*sum((A.'*ones(1,n)).*sin(%pi*(0.5:n)'*(1:n)/(n)),1);
+assert_checkalmostequal(dst(A,-1,"dst2"),y_ref);
+assert_checkalmostequal(dst(dst(A,-1,"dst2"),1,"dst3"),2*n*A);
+
+//DST-III
+y_ref=((-1).^(0:n-1))*A(n)+ 2*sum((A(1:n-1).'*ones(1,n)).*sin(%pi*(1:n-1)'*(0.5:n)/(n)),1);
+assert_checkalmostequal(dst(A,1,"dst3"),y_ref,100*%eps,104*%eps);
+assert_checkalmostequal(dst(dst(A,1,"dst3"),-1,"dst2"),2*n*A);
+
+
+//DST-iV
+y_ref=2*sum((A.'*ones(1,n)).*sin(%pi*(0.5:n)'*(0.5:n)/(n)),1);
+assert_checkalmostequal(dst(A,-1,"dst4"),y_ref);
+assert_checkalmostequal(dst(dst(A,-1,"dst4"),1,"dst4"),2*n*A);
+//complex cases
+
diff --git a/modules/fftw/tests/unit_tests/fftw_flag.dia.ref b/modules/fftw/tests/unit_tests/fftw_flag.dia.ref
new file mode 100755
index 000000000..816865bf1
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/fftw_flag.dia.ref
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//=============================================
+ff = fftw_flags();
+assert_checkequal(double(ff),64);
+//=============================================
+//change flags
+r = fftw_flags(["FFTW_MEASURE";"FFTW_CONSERVE_MEMORY"]);
+assert_checkequal(double(r),4);
+//=============================================
+//change flags and display current value of fftw flags (both integer and strings)
+[a,S]=fftw_flags("FFTW_PATIENT");
+assert_checkequal(double(a),32);
+assert_checkequal(S,'FFTW_PATIENT');
+//=============================================
diff --git a/modules/fftw/tests/unit_tests/fftw_flag.tst b/modules/fftw/tests/unit_tests/fftw_flag.tst
new file mode 100755
index 000000000..818164883
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/fftw_flag.tst
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//=============================================
+ff = fftw_flags();
+assert_checkequal(double(ff),64);
+//=============================================
+//change flags
+r = fftw_flags(["FFTW_MEASURE";"FFTW_CONSERVE_MEMORY"]);
+assert_checkequal(double(r),4);
+//=============================================
+//change flags and display current value of fftw flags (both integer and strings)
+[a,S]=fftw_flags("FFTW_PATIENT");
+assert_checkequal(double(a),32);
+assert_checkequal(S,'FFTW_PATIENT');
+//=============================================
diff --git a/modules/fftw/tests/unit_tests/fftw_part1.dia.ref b/modules/fftw/tests/unit_tests/fftw_part1.dia.ref
new file mode 100755
index 000000000..ca8492ec5
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/fftw_part1.dia.ref
@@ -0,0 +1,272 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+//============================================================================================
+//=================================fft(A [,isn [,flag]]) =====================================
+//============================================================================================
+//1-D transform ******************************************************************************
+//R2C case ------------------------------------------------------------------------------------
+assert_checkequal(fft(1:4),[10,-2+%i*2,-2,-2-%i*2]);
+assert_checkequal(ifft(1:4),conj(fft(1:4)/4));
+assert_checkequal(fft(1:4,-1),[10,-2+%i*2,-2,-2-%i*2]);
+assert_checkequal(fft(1:4,1),conj(fft(1:4,-1)/4));
+//C2R case ------------------------------------------------------------------------------------
+// ODD case
+A=[1 0 %i -%i 0];
+y=fft(A);
+y_ref=[1, 2.17557050458494672, -0.902113032590307062, 2.90211303259030728, -0.17557050458494649];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y));
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,-1);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,fft(y,1));
+// EVEN case
+A=[1 0 %i 2 -%i 0];
+y=fft(A);
+y_ref=[3, 0.73205080756887719, 1.2679491924311228,-1, 4.7320508075688767,-2.73205080756887719];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,-1);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,fft(y,1),10*%eps,10*%eps);
+//R2R case ------------------------------------------------------------------------------------
+// ODD case
+y=fft(1);
+assert_checktrue(isreal(y));
+assert_checkequal(y,1);
+A=[0 1 2 2 1];
+y=fft(A);
+y_ref=[6,-2.61803398874989446, -0.381966011250104875, -0.381966011250104875, -2.61803398874989446];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),10*%eps,10*%eps);
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+// EVEN case
+A=1:2;
+y=fft(A);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,[3 -1]);
+assert_checkalmostequal(A,ifft(y),10*%eps,10*%eps);
+A=[0 1 2 5 2 1];
+y=fft(A);
+y_ref=[11,-6, 2,-3, 2,-6];
+assert_checktrue(isreal(y));
+assert_checkequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),10*%eps,10*%eps);
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+//C2C case ------------------------------------------------------------------------------------
+A=[1+%i 2 5*%i -8+5*%i];
+y=fft(A);
+y_ref=[-5+%i*11,-4-%i*14, 7+%i, 6+%i*6];
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y));
+//2-D transform *******************************************************************************
+//R2R case ------------------------------------------------------------------------------------
+// ODD X EVEN case
+A=[0 1 1
+ 2 -1 -1
+ 3 4 4
+ 2 -1 -1];
+y=fft(A);
+y_ref=[ 13, 4, 4;
+ -9, 0, 0;
+ 13,-8,-8;
+ -9, 0, 0];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+// EVEN X EVEN case
+A=[0 1 5 1
+ 2 -1 6 -1
+ 3 4 7 4
+ 2 -1 6 -1];
+y=fft(A);
+y_ref=[37, -17, 25,-17;
+ -11, -1, 1, -1;
+ 13, -1,-15, -1;
+ -11, -1, 1, -1];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+// ODD X ODD case
+A=[0 1 1
+ 2 -1 -1
+ 2 -1 -1];
+y=fft(A);
+y_ref=[ 2, 5, 5;
+ 2,-4,-4;
+ 2,-4,-4];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
+A=[0 1 5 1
+ 2 -1 6 -1
+ 3 4 7 4
+ 2 -1 6 -1];
+y=fft(A);
+y_ref=[37, -17, 25,-17;
+ -11, -1, 1, -1;
+ 13, -1,-15, -1;
+ -11, -1, 1, -1];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
+y=fft(A,-1,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,-1,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+A=[1 2 3 3 2;4 6 9 11 8;5 7 10 10 7;4 8 11 9 6];
+y=fft(A);
+y_ref=[ 126,-25.1803398874989490,-2.81966011250105097,-2.81966011250105097,-25.1803398874989490;
+ -28, 10.391435051850296,-1.68915303351051138, 1.21701707851093177,-1.91929909685071642;
+ -26, 6.2360679774997898, 1.76393202250021019, 1.76393202250021019, 6.2360679774997898;
+ -28,-1.91929909685071642, 1.21701707851093177,-1.68915303351051138, 10.391435051850296];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y));
+y=fft(A,-1,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,-1,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+//R2C case ------------------------------------------------------------------------------------
+A=[1 2 3;7 3 9;-1 5 4;0 8 -3];
+y=fft(A);
+y_ref=[38, -8.5-%i*4.33012701892219276, -8.5+%i*4.33012701892219276;
+ -2-%i*14, 18.722431864335455-%i*1.76794919243112281 -10.7224318643354568-%i*5.23205080756887675;
+ -10, -5.5+%i*4.33012701892219276, -5.5-%i*4.33012701892219276;
+ -2+%i*14,-10.7224318643354568+%i*5.23205080756887675, 18.722431864335455+%i*1.76794919243112281];
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
+y=fft(A,1);
+y_ref=[3.16666666666666607, -0.70833333333333326+%i*0.36084391824351614,-0.70833333333333326-%i*0.36084391824351614;
+ -0.16666666666666660+%i*1.16666666666666652, 1.56020265536128777+%i*0.14732909936926014,-0.89353598869462125+%i*0.43600423396407301;
+ -0.83333333333333337, -0.45833333333333320-%i*0.36084391824351603,-0.45833333333333320+%i*0.36084391824351603;
+ -0.16666666666666660-%i*1.16666666666666652,-0.89353598869462125-%i*0.43600423396407301,1.56020265536128777-%i*0.14732909936926014];
+assert_checkalmostequal(y,y_ref);
+//C2R case
+//------------------------------------------------------------------------------------
+// ODD X EVEN case
+A=[0 %i -%i
+ 2+%i -1 -1
+ 3 4 4
+ 2-%i -1 -1];
+y=fft(A);
+y_ref=[ 11, 6.7320508075688767, 3.2679491924311228;
+ -9, 4.7320508075688767, 1.2679491924311228;
+ 11,-5.26794919243112325, -8.7320508075688767;
+ -13, 0.73205080756887719, -2.73205080756887719];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
+A=[1 2 3 3 2;4 6 9 11 8;5 7 10 10 7;4 8 11 9 6];
+y=fft(A);
+y_ref=[ 126,-25.1803398874989490,-2.81966011250105097,-2.81966011250105097,-25.1803398874989490;
+ -28, 10.391435051850296,-1.68915303351051138, 1.21701707851093177,-1.91929909685071642;
+ -26, 6.2360679774997898, 1.76393202250021019, 1.76393202250021019, 6.2360679774997898;
+ -28,-1.91929909685071642, 1.21701707851093177,-1.68915303351051138, 10.391435051850296];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y));
+y=fft(A,-1,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,-1,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+// ODD X ODD case
+A=[0 %i -%i
+ 2+%i -1 -1
+ 2-%i -1 -1];
+y=fft(A);
+y_ref=[0, 7.7320508075688767, 4.26794919243112325;
+ 1.73205080756887719, 0.46410161513775439, -3;
+ -1.73205080756887719,-2.99999999999999956, -6.46410161513775350];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
+y=fft(A,-1,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,-1,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+A=[1440, 32-%i*28,-102-%i*188,-102+%i*188, 32+%i*28;
+ 140-%i*52,-21+%i*14,-33+%i*8, 31+%i*77, 8+%i*169;
+ 30,-179+%i*40,-32-%i*175, 97-%i*107,-191-%i*147;
+ 20,-83-%i*162,-127+%i*71,-127-%i*71,-83+%i*162;
+ 30,-191+%i*147, 97+%i*107,-32+%i*175,-179-%i*40;
+ 140+%i*52, 8-%i*169, 31-%i*77,-33-%i*8,-21-%i*14];
+y=fft(A);
+y_ref=[ 600, 1201.23812370118321, 2697.02967953848838, 2102.2365384314553, 2399.49565832887311;
+ 1800.35521029058418, 1800.85854102712074, 897.335302928384408, 598.365730980120588,2102.75200480588182;
+ 2097.89073857917083, 901.733860383104911, 600.566385143489583, 602.768240434540644,1796.70756549178577;
+ 900, 1503.68526108760511, 2698.74007483319838, 598.106629651731282, 299.468034427465;
+ 2.10926142082939805, 1797.22849022236483, 902.940272151356453, 1500.39858431578159,2697.65660185757633;
+ 2399.64478970941582, 898.55653188654594, 2102.57661444176256, 601.137293239859559,2098.41798069032438];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,1000*%eps);
+y=fft(A,-1,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,-1,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+//C2C case ------------------------------------------------------------------------------------
+A=[0 %i 3-%i
+ 2+%i -1 -1
+ 3 4 4
+ 2-3*%i -1 -1];
+y=fft(A);
+y_ref=[14-%i*2, 5.23205080756887675+%i*0.59807621135331601,1.76794919243112281-%i*4.598076211353316;
+ -4, 5.23205080756887675+%i*2.598076211353316, 1.76794919243112281-%i*2.598076211353316;
+ 14+%i*2,-6.7679491924311233+%i*4.598076211353316, -10.2320508075688767-%i*0.59807621135331601;
+ -12, -2.76794919243112281+%i*2.598076211353316, -6.23205080756887675-%i*2.598076211353316];
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
diff --git a/modules/fftw/tests/unit_tests/fftw_part1.tst b/modules/fftw/tests/unit_tests/fftw_part1.tst
new file mode 100755
index 000000000..bf81aae80
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/fftw_part1.tst
@@ -0,0 +1,333 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+//============================================================================================
+//=================================fft(A [,isn [,flag]]) =====================================
+//============================================================================================
+
+//1-D transform ******************************************************************************
+//R2C case ------------------------------------------------------------------------------------
+assert_checkequal(fft(1:4),[10,-2+%i*2,-2,-2-%i*2]);
+assert_checkequal(ifft(1:4),conj(fft(1:4)/4));
+assert_checkequal(fft(1:4,-1),[10,-2+%i*2,-2,-2-%i*2]);
+assert_checkequal(fft(1:4,1),conj(fft(1:4,-1)/4));
+//C2R case ------------------------------------------------------------------------------------
+// ODD case
+A=[1 0 %i -%i 0];
+y=fft(A);
+y_ref=[1, 2.17557050458494672, -0.902113032590307062, 2.90211303259030728, -0.17557050458494649];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y));
+
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+y=fft(A,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+
+y=fft(A,-1);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,fft(y,1));
+
+// EVEN case
+A=[1 0 %i 2 -%i 0];
+y=fft(A);
+y_ref=[3, 0.73205080756887719, 1.2679491924311228,-1, 4.7320508075688767,-2.73205080756887719];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
+
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+y=fft(A,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+y=fft(A,-1);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,fft(y,1),10*%eps,10*%eps);
+
+//R2R case ------------------------------------------------------------------------------------
+// ODD case
+y=fft(1);
+assert_checktrue(isreal(y));
+assert_checkequal(y,1);
+
+A=[0 1 2 2 1];
+y=fft(A);
+y_ref=[6,-2.61803398874989446, -0.381966011250104875, -0.381966011250104875, -2.61803398874989446];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),10*%eps,10*%eps);
+
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+y=fft(A,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+// EVEN case
+A=1:2;
+y=fft(A);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,[3 -1]);
+assert_checkalmostequal(A,ifft(y),10*%eps,10*%eps);
+
+A=[0 1 2 5 2 1];
+y=fft(A);
+y_ref=[11,-6, 2,-3, 2,-6];
+assert_checktrue(isreal(y));
+assert_checkequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),10*%eps,10*%eps);
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+y=fft(A,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+
+//C2C case ------------------------------------------------------------------------------------
+A=[1+%i 2 5*%i -8+5*%i];
+y=fft(A);
+y_ref=[-5+%i*11,-4-%i*14, 7+%i, 6+%i*6];
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y));
+
+//2-D transform *******************************************************************************
+
+//R2R case ------------------------------------------------------------------------------------
+// ODD X EVEN case
+A=[0 1 1
+ 2 -1 -1
+ 3 4 4
+ 2 -1 -1];
+y=fft(A);
+y_ref=[ 13, 4, 4;
+ -9, 0, 0;
+ 13,-8,-8;
+ -9, 0, 0];
+
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
+
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+y=fft(A,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+
+
+// EVEN X EVEN case
+A=[0 1 5 1
+ 2 -1 6 -1
+ 3 4 7 4
+ 2 -1 6 -1];
+y=fft(A);
+y_ref=[37, -17, 25,-17;
+ -11, -1, 1, -1;
+ 13, -1,-15, -1;
+ -11, -1, 1, -1];
+
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
+
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+y=fft(A,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+
+// ODD X ODD case
+A=[0 1 1
+ 2 -1 -1
+ 2 -1 -1];
+y=fft(A);
+y_ref=[ 2, 5, 5;
+ 2,-4,-4;
+ 2,-4,-4];
+
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
+
+A=[0 1 5 1
+ 2 -1 6 -1
+ 3 4 7 4
+ 2 -1 6 -1];
+y=fft(A);
+y_ref=[37, -17, 25,-17;
+ -11, -1, 1, -1;
+ 13, -1,-15, -1;
+ -11, -1, 1, -1];
+
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
+
+y=fft(A,-1,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+y=fft(A,-1,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+
+A=[1 2 3 3 2;4 6 9 11 8;5 7 10 10 7;4 8 11 9 6];
+y=fft(A);
+y_ref=[ 126,-25.1803398874989490,-2.81966011250105097,-2.81966011250105097,-25.1803398874989490;
+ -28, 10.391435051850296,-1.68915303351051138, 1.21701707851093177,-1.91929909685071642;
+ -26, 6.2360679774997898, 1.76393202250021019, 1.76393202250021019, 6.2360679774997898;
+ -28,-1.91929909685071642, 1.21701707851093177,-1.68915303351051138, 10.391435051850296];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y));
+
+y=fft(A,-1,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+y=fft(A,-1,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+
+//R2C case ------------------------------------------------------------------------------------
+A=[1 2 3;7 3 9;-1 5 4;0 8 -3];
+y=fft(A);
+y_ref=[38, -8.5-%i*4.33012701892219276, -8.5+%i*4.33012701892219276;
+ -2-%i*14, 18.722431864335455-%i*1.76794919243112281 -10.7224318643354568-%i*5.23205080756887675;
+ -10, -5.5+%i*4.33012701892219276, -5.5-%i*4.33012701892219276;
+ -2+%i*14,-10.7224318643354568+%i*5.23205080756887675, 18.722431864335455+%i*1.76794919243112281];
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
+
+y=fft(A,1);
+y_ref=[3.16666666666666607, -0.70833333333333326+%i*0.36084391824351614,-0.70833333333333326-%i*0.36084391824351614;
+ -0.16666666666666660+%i*1.16666666666666652, 1.56020265536128777+%i*0.14732909936926014,-0.89353598869462125+%i*0.43600423396407301;
+ -0.83333333333333337, -0.45833333333333320-%i*0.36084391824351603,-0.45833333333333320+%i*0.36084391824351603;
+ -0.16666666666666660-%i*1.16666666666666652,-0.89353598869462125-%i*0.43600423396407301,1.56020265536128777-%i*0.14732909936926014];
+assert_checkalmostequal(y,y_ref);
+//C2R case
+//------------------------------------------------------------------------------------
+// ODD X EVEN case
+A=[0 %i -%i
+ 2+%i -1 -1
+ 3 4 4
+ 2-%i -1 -1];
+y=fft(A);
+y_ref=[ 11, 6.7320508075688767, 3.2679491924311228;
+ -9, 4.7320508075688767, 1.2679491924311228;
+ 11,-5.26794919243112325, -8.7320508075688767;
+ -13, 0.73205080756887719, -2.73205080756887719];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
+A=[1 2 3 3 2;4 6 9 11 8;5 7 10 10 7;4 8 11 9 6];
+y=fft(A);
+y_ref=[ 126,-25.1803398874989490,-2.81966011250105097,-2.81966011250105097,-25.1803398874989490;
+ -28, 10.391435051850296,-1.68915303351051138, 1.21701707851093177,-1.91929909685071642;
+ -26, 6.2360679774997898, 1.76393202250021019, 1.76393202250021019, 6.2360679774997898;
+ -28,-1.91929909685071642, 1.21701707851093177,-1.68915303351051138, 10.391435051850296];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y));
+
+y=fft(A,-1,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+y=fft(A,-1,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+
+// ODD X ODD case
+A=[0 %i -%i
+ 2+%i -1 -1
+ 2-%i -1 -1];
+y=fft(A);
+y_ref=[0, 7.7320508075688767, 4.26794919243112325;
+ 1.73205080756887719, 0.46410161513775439, -3;
+ -1.73205080756887719,-2.99999999999999956, -6.46410161513775350];
+
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
+
+y=fft(A,-1,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+y=fft(A,-1,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+
+A=[1440, 32-%i*28,-102-%i*188,-102+%i*188, 32+%i*28;
+ 140-%i*52,-21+%i*14,-33+%i*8, 31+%i*77, 8+%i*169;
+ 30,-179+%i*40,-32-%i*175, 97-%i*107,-191-%i*147;
+ 20,-83-%i*162,-127+%i*71,-127-%i*71,-83+%i*162;
+ 30,-191+%i*147, 97+%i*107,-32+%i*175,-179-%i*40;
+ 140+%i*52, 8-%i*169, 31-%i*77,-33-%i*8,-21-%i*14];
+y=fft(A);
+y_ref=[ 600, 1201.23812370118321, 2697.02967953848838, 2102.2365384314553, 2399.49565832887311;
+ 1800.35521029058418, 1800.85854102712074, 897.335302928384408, 598.365730980120588,2102.75200480588182;
+ 2097.89073857917083, 901.733860383104911, 600.566385143489583, 602.768240434540644,1796.70756549178577;
+ 900, 1503.68526108760511, 2698.74007483319838, 598.106629651731282, 299.468034427465;
+ 2.10926142082939805, 1797.22849022236483, 902.940272151356453, 1500.39858431578159,2697.65660185757633;
+ 2399.64478970941582, 898.55653188654594, 2102.57661444176256, 601.137293239859559,2098.41798069032438];
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,1000*%eps);
+
+
+y=fft(A,-1,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+y=fft(A,-1,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+
+//C2C case ------------------------------------------------------------------------------------
+A=[0 %i 3-%i
+ 2+%i -1 -1
+ 3 4 4
+ 2-3*%i -1 -1];
+y=fft(A);
+y_ref=[14-%i*2, 5.23205080756887675+%i*0.59807621135331601,1.76794919243112281-%i*4.598076211353316;
+ -4, 5.23205080756887675+%i*2.598076211353316, 1.76794919243112281-%i*2.598076211353316;
+ 14+%i*2,-6.7679491924311233+%i*4.598076211353316, -10.2320508075688767-%i*0.59807621135331601;
+ -12, -2.76794919243112281+%i*2.598076211353316, -6.23205080756887675-%i*2.598076211353316];
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,ifft(y),0,10*%eps);
+
+
diff --git a/modules/fftw/tests/unit_tests/fftw_part2.dia.ref b/modules/fftw/tests/unit_tests/fftw_part2.dia.ref
new file mode 100755
index 000000000..8d75478d4
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/fftw_part2.dia.ref
@@ -0,0 +1,386 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+//3-D transform *******************************************************************************
+//R2R case ------------------------------------------------------------------------------------
+A=[0 1 1
+ 2 -1 -1
+ 3 4 4
+ 2 -1 -1];
+A(:,:,2)=A+1;
+A(:,:,3)=A(:,:,2);
+y_ref=matrix([63;-27;39;-27;12;0;-24;0;12;0;-24;0;-12;
+ 0;0;0;0;0;0;0;0;0;0;0;
+ -12;0;0;0;0;0;0;0;0;0;0;0],[4 3 3]);
+y=fft(A);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,fft(y,1),0,10*%eps);
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,fft(y,1,"symmetric"),0,10*%eps);
+y=fft(A,"nonsymmetric"); //use R2C
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,fft(y,1,"nonsymmetric"),0,10*%eps);
+A=matrix([4750;-163;138;138;-163;-100;-2;9;-148;42;10;-301;246;246;-301;-100;42;-148;9;-2;-12;157;
+ -110;224;37;-101;-94;260;258;345;-49;175;227;110;161;65;-40;-182;161;-390;412;101;168;
+ 138;35;21;-95;-81;236;1;219;-215;120;284;-232;-35;-23;215;-191;122;412;35;138;168;101;
+ -35;122;-191;215;-23;219;-232;284;120;-215;21;1;236;-81;-95;-12;37;224;-110;157;65;-390;
+ 161;-182;-40;-49;161;110;227;175;-101;345;258;260;-94],[5,4,5]);
+y_ref=matrix([ 9006; 1997.01835368650836; 7499.98164631349118; 7499.98164631349118;
+ 1997.01835368650836; 5500; 8003.03595972396761; 4499.30203473224719;
+ 3496.74144394796622; 4500.92056159581989; 7994; 4500.41996658886728;
+ 7002.58003341113272; 7002.58003341113272; 4500.41996658886728; 5500;
+ 4500.92056159581989; 3496.74144394796622; 4499.30203473224719; 8003.03595972396761;
+ 3003.23606797749972; 4503.21094298379558; 2498.80193260011856; 4500.56038652002371;
+ 3002.80933008143711; 1502.48409399493175; 4997.98726249178435; 6998.63971425121235;
+ 4503.41908441918713; 5499.99740938413652; 4000.79645449752343; 3004.49048964150825;
+ 3499; 4495.40709100495314; 4504.89210254386671; 5498.03152064027927;
+ 3999.73866895309675; 1500.9206722688125; 7001.49266501579041; 3003.15588613093223;
+ 2998.76393202250028; 5001.43961347997629; 5493.78905701620442; 6994.19066991856289;
+ 5003.19806739988144; 4499.2782026543191; 4996.34845842043978; 3004.96649100621744;
+ 7499.64517406068444; 5505.14335301404844; 4497.20354550247703; 3502.59290899504595;
+ 8498.50951035849175; 6998.10789745613329; 3499; 7000.20618271046988;
+ 5998.73979214458359; 3497.30757754890101; 2497.2015304242459; 3495.29626046592784;
+ 2998.76393202250028; 5003.19806739988144; 6994.19066991856289; 5493.78905701620442;
+ 5001.43961347997629; 7000.20618271046988; 3495.29626046592784; 2497.2015304242459;
+ 3497.30757754890101; 5998.73979214458359; 4497.20354550247703; 3499;
+ 6998.10789745613329; 8498.50951035849175; 3502.59290899504595; 4499.2782026543191;
+ 5505.14335301404844; 7499.64517406068444; 3004.96649100621744; 4996.34845842043978;
+ 3003.23606797749972; 3002.80933008143711; 4500.56038652002371; 2498.80193260011856;
+ 4503.21094298379558; 5498.03152064027927; 3003.15588613093223; 7001.49266501579041;
+ 1500.9206722688125; 3999.73866895309675; 4000.79645449752343; 4504.89210254386671;
+ 4495.40709100495314; 3499; 3004.49048964150825; 1502.48409399493175;
+ 5499.99740938413652; 4503.41908441918713; 6998.63971425121235; 4997.98726249178435],[5,4,5]);
+y=fft(A);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+//R2C case ------------------------------------------------------------------------------------
+A=matrix([5;4;3;6;4;9;0;5;3;4;3;1;8;2;1;7;2;7;8;4;4;9;
+ 1;2;6;6;7;9;5;3;4;9;9;3;4;7;3;5;3;5;5;1;2;6;
+ 8;0;7;2;4;8;6;5;2;8;1;3;9;8;5;10],[4,3,5]);
+y_ref=matrix([ 290; 22+%i*4;-26; 22-%i*4; 9.5+%i*9.52627944162882301;
+ -1.1339745962155614+%i*17.1602540378443891;-3.5+%i*25.1147367097487191;
+ -2.8660254037844384+%i*0.16025403784438552; 9.5-%i*9.52627944162882301;
+ -2.8660254037844384-%i*0.16025403784438552;-3.5-%i*25.1147367097487191;
+ -1.1339745962155614-%i*17.1602540378443891;-10.9549150281252636-%i*1.37984007917967944;
+ 5.35973404130009712-%i*26.1183685942109989;-23.4614928368734752-%i*1.14281435514402396;
+ -3.59580201879988692+%i*23.0406850570357449;-21.3658553026453930-%i*8.84359942677465227;
+ 20.7330326917071268-%i*8.81688081018132586; 3.64531223802112692-%i*9.52499614355328994;
+ 7.43941996380932657-%i*16.867370295570808; 17.5396173813961269+%i*3.3290181678526012;
+ 15.0849628274577707+%i*11.593028238175755; 25.597333548226878-%i*1.41840966171390725;
+ -18.8967357079763296-%i*30.6614339614318183;-16.5450849718747364+%i*32.005406439473461;
+ -2.0005198567285527+%i*10.4427980896260522; 8.9614928368734752-%i*15.1639036975864734;
+ 8.23658783422834162-%i*9.7162555616206916;-4.97109202629695890-%i*8.30757202395887973;
+ 0.92910806515476718-%i*30.3790246133370161;-5.43718181239582421+%i*23.1017112524799586;
+ -14.884673669748171-%i*11.3804574337330209; 16.7973299475462241+%i*19.3569789554980396;
+ -0.44355669881229343+%i*5.1399061460535682;-7.8054639738521807-%i*7.52153572775482537;
+ -5.96155747159219818-%i*1.55370934855336351;-16.5450849718747364-%i*32.005406439473461;
+ 8.23658783422834162+%i*9.7162555616206916; 8.9614928368734752+%i*15.1639036975864734;
+ -2.0005198567285527-%i*10.4427980896260522; 16.7973299475462241-%i*19.3569789554980396;
+ -5.96155747159219818+%i*1.55370934855336351;-7.8054639738521807+%i*7.52153572775482537;
+ -0.44355669881229343-%i*5.1399061460535682;-4.97109202629695890+%i*8.30757202395887973;
+ -14.884673669748171+%i*11.3804574337330209;-5.43718181239582421-%i*23.1017112524799586;
+ 0.92910806515476718+%i*30.3790246133370161;-10.9549150281252636+%i*1.37984007917967944;
+ -3.59580201879988692-%i*23.0406850570357449;-23.4614928368734752+%i*1.14281435514402396;
+ 5.35973404130009712+%i*26.1183685942109989; 17.5396173813961269-%i*3.3290181678526012;
+ -18.8967357079763296+%i*30.6614339614318183; 25.597333548226878+%i*1.41840966171390725;
+ 15.0849628274577707-%i*11.593028238175755;-21.3658553026453930+%i*8.84359942677465227;
+ 7.43941996380932657+%i*16.867370295570808; 3.64531223802112692+%i*9.52499614355328994;
+ 20.7330326917071268+%i*8.81688081018132586],[4,3,5]);
+y=fft(A);
+assert_checkalmostequal(y,y_ref);
+//C2R case ------------------------------------------------------------------------------------
+A=matrix([ 2900; 220+%i*40;-260; 220-%i*40; 95+%i*95;-11+%i*172;-35+%i*251;-29+%i*2; 95-%i*95;
+ -29-%i*2;-35-%i*251;-11-%i*172;-110-%i*14; 54-%i*261;-235-%i*11;-36+%i*230;-214-%i*88;
+ 207-%i*88; 36-%i*95; 74-%i*169; 175+%i*33; 151+%i*116; 256-%i*14;-189-%i*307;
+ -165+%i*320;-20+%i*104; 90-%i*152; 82-%i*97;-50-%i*83; 9-%i*304;-54+%i*231;-149-%i*114;
+ 168+%i*194;-4+%i*51;-78-%i*75;-60-%i*16;-165-%i*320; 82+%i*97; 90+%i*152;-20-%i*104;
+ 168-%i*194;-60+%i*16;-78+%i*75;-4-%i*51;-50+%i*83;-149+%i*114;-54-%i*231; 9+%i*304;
+ -110+%i*14;-36-%i*230;-235+%i*11; 54+%i*261; 175-%i*33;-189+%i*307; 256+%i*14;
+ 151-%i*116;-214+%i*88; 74+%i*169; 36+%i*95; 207+%i*88],[4,3,5]);
+y_ref=matrix([ 2996; 3600; 1800; 2396; 1804.08726109815325; 601.420841162336728; 1797.20231832067839;
+ 2402.0440006453523; 2399.91273890184675; 2998.57915883766327; 2.79768167932161305;
+ 5401.95599935464725; 2396.96074950014463; 2999.02579525054898; 3601.07865923712325;
+ 4800.47728151174852; 5402.68357811465103; 5996.71587420499782; 2994.98775825329631;
+ 4800.7569165971172; 1194.78718041472757; 1801.42138987713292; 597.945126438306488;
+ 4795.69787130615623; 1806.28063851446973; 2996.33933739403255; 1802.22357633135243;
+ 2999.61398771896711; 4800.14227629597099; 1194.58106615498582; 4200.9816123952096;
+ -1.643335439786938; 3000.6599157117771; 3602.13659702117502; 1207.26152998727684;
+ 601.910475422587638; 3601.29217048561441; 5398.45474462091079; 4205.6200225335615;
+ 3606.49125722100416; 5397.78905489267254; 4200.45827894945342; 2396.05617461713109;
+ 1802.27482470993255; 3000.2119789042963; 5400.98960279924631; 2403.91117288032501;
+ 1800.15817472797062; 4799.46644149977146; 4206.18012273450677; 591.077741897962369;
+ 1197.41747354827976; 2398.62992927763071; 1199.93973694330134; 600.335830922918376;
+ 5401.45253626486101; 1201.09608638827149; 2403.75745404970803; 4798.52079450553538;
+ 4195.39253641116193],[4,3,5]);
+y=fft(A);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+//C2C case
+//------------------------------------------------------------------------------------
+A=[0 %i 3-%i
+ 2+%i -1 -1
+ 3 4 4
+ 2-3*%i -1 -1];
+A(:,:,2)=A+1;
+A(:,:,3)=A(:,:,2).*A(:,:,2);
+y=fft(A);
+y_ref=matrix([ 130-%i*22;-34-%i*14; 102+%i*10;-98+%i*2; 11.624355652982139+%i*5.18653347947321031;
+ 45.6243556529821319+%i*13.1865334794732103;-28.375644347017861+%i*37.1865334794732121;
+ -18.375644347017861+%i*29.1865334794732121;-12.624355652982139-%i*31.1865334794732121;
+ 21.3756443470178574-%i*23.1865334794732121;-52.6243556529821319+%i*0.81346652052678969;
+ -42.624355652982139-%i*7.18653347947321031;-30.1435935394489825+%i*63.4256258422040702;
+ 23.124355652982139-%i*12.0525588832576496;-33.464101615137757+%i*49.9615242270663131;
+ 29.2679491924311215-%i*54.6935750346351952;-0.90192378864668221-%i*5.2224318643354568;
+ -19.633974596215559+%i*23.2224318643354550;-16.2224318643354550-%i*18.6865334794732121;
+ -13.4903810567665765-%i*19.4185842870420871; 24.026279441628823-%i*6.83012701892219098;
+ 5.29422863405994804+%i*21.6147367097487226; 8.7057713659400484-%i*20.2942286340599445;
+ 11.4378221735089287-%i*21.026279441628823;-57.8564064605510140-%i*47.4256258422040702;
+ -1.1243556529821408+%i*26.0525588832576496;-26.5358983848622465-%i*53.9615242270663131;
+ 32.732050807568875+%i*52.6935750346351952; 4.97372055837117344+%i*1.83012701892219409;
+ -10.2942286340599463-%i*28.614736709748719; 24.2942286340599480-%i*4.705771365940052;
+ 23.5621778264910695-%i*1.9737205583711752;-6.09807621135331601+%i*24.2224318643354550;
+ -21.3660254037844375-%i*6.2224318643354586; 13.2224318643354550+%i*17.6865334794732085;
+ 12.4903810567665818+%i*20.4185842870420871],[4,3,3]);
+assert_checkalmostequal(y,y_ref);
+//N-D transform *******************************************************************************
+//R2R case ------------------------------------------------------------------------------------
+A=matrix([7090;265;265;180;-42;-198;30;15;15;180;-198;-42;160;235;-245;-335;135;182;240;-75;75;
+ -265;465;148;160;-245;235;-265;148;465;240;75;-75;-335;182;135;-410;446;204;-280;-253;
+ 353;-450;-198;-372;140;351;229;-48;236;-312;456;181;-279;262;-540;-50;363;385;-99;368;
+ 242;-6;-236;-71;-321;158;20;-90;397;109;195;-110;265;265;-120;-370;-110;-650;55;55;-120;
+ -110;-370;-20;-125;-245;91;-153;34;-80;85;-5;-151;-447;416;-20;-245;-125;-151;416;-447;
+ -80;-5;85;91;34;-153;-410;204;446;140;229;351;-450;-372;-198;-280;353;-253;368;-6;242;
+ 397;195;109;158;-90;20;-236;-321;-71;-48;-312;236;363;-99;385;262;-50;-540;456;-279;181],[3,4,3,4]);
+y_ref=matrix([ 8640; 6480; 6480; 11520; 5760.26656797432588; 5039.73343202567412; 4320; 7200; 7200;
+ 11520; 5039.73343202567412; 5760.26656797432588; 4320; 2160; 2880; 9369.32603294810724;
+ 4323.73066958946401; 5040.79842187187296; 7200; 2160.00000000000045; 2880;
+ 12230.6739670518928; 3596.2693304105369; 12239.2015781281261; 4320; 2880; 2160;
+ 12230.6739670518928; 12239.2015781281261; 3596.2693304105369; 7200; 2880;
+ 2160.00000000000045; 9369.32603294810724; 5040.79842187187296; 4323.73066958946401;
+ 11520; 4318.1340241797152; 9361.8659758202848; 12240; 5046.12849930729499;
+ 7193.87150069270501; 7200; 10079.7334320256741; 10800.2665679743259; 2160;
+ 2164.52909146133834; 8635.47090853866212; 7923.73066958946401; 7196.80246635918866;
+ 8641.59812579485151; 7921.06627189730625; 6480.53313594865176; 10801.5994078459589;
+ 10079.2015781281261; 6482.39782971783188; 7198.66844217947437; 5759.73343202567321;
+ 9362.39911176893838; 5038.66716012836696; 7196.26933041053599; 13678.4018742051485;
+ 6483.19753364081134; 5038.93372810269375; 6478.40059215404108; 5039.46686405134824;
+ 2880.79842187187342; 1441.33155782052563; 9357.60217028216903; 6480.26656797432679;
+ 8641.33283987163304; 2877.60088823106116; 4320; 4320; 4320; 3600; 8639.20029607702054;
+ 10800.7997039229795; 12960; 8640; 8640; 3600; 10800.7997039229795; 8639.20029607702054;
+ 7920; 12960; 10800; 9365.06350946109706; 7196.00276243620829; 8637.60217028216721;
+ 10800; 720.000000000000455; 7920; 5034.93649053890294; 8643.99723756379171;
+ 5762.39782971783279; 7920; 10800; 12960; 5034.93649053890294; 5762.39782971783279;
+ 8643.99723756379171; 10800; 7920; 720.000000000000455; 9365.06350946109706;
+ 8637.60217028216721; 7196.00276243620829; 11520; 9361.8659758202848; 4318.1340241797152;
+ 2160; 8635.47090853866212; 2164.52909146133834; 7200; 10800.2665679743259;
+ 10079.7334320256741; 12240; 7193.87150069270501; 5046.12849930729499;
+ 7196.26933041053599; 6483.19753364081134; 13678.4018742051485; 6480.26656797432679;
+ 2877.60088823106116; 8641.33283987163304; 2880.79842187187342; 9357.60217028216903;
+ 1441.33155782052563; 5038.93372810269375; 5039.46686405134824; 6478.40059215404108;
+ 7923.73066958946401; 8641.59812579485151; 7196.80246635918866; 5759.73343202567321;
+ 5038.66716012836696; 9362.39911176893838; 10079.2015781281261; 7198.66844217947437;
+ 6482.39782971783188; 7921.06627189730625; 10801.5994078459589; 6480.53313594865176],[3,4,3,4]);
+y=fft(A);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+A=matrix([ 2900; 220+%i*40;-260; 220-%i*40; 95+%i*95;-11+%i*172;-35+%i*251;-29+%i*2; 95-%i*95;
+ -29-%i*2;-35-%i*251;-11-%i*172;-110-%i*14; 54-%i*261;-235-%i*11;-36+%i*230;-214-%i*88;
+ 207-%i*88; 36-%i*95; 74-%i*169; 175+%i*33; 151+%i*116; 256-%i*14;-189-%i*307;
+ -165+%i*320;-20+%i*104; 90-%i*152; 82-%i*97;-50-%i*83; 9-%i*304;-54+%i*231;-149-%i*114;
+ 168+%i*194;-4+%i*51;-78-%i*75;-60-%i*16;-165-%i*320; 82+%i*97; 90+%i*152;-20-%i*104;
+ 168-%i*194;-60+%i*16;-78+%i*75;-4-%i*51;-50+%i*83;-149+%i*114;-54-%i*231; 9+%i*304;
+ -110+%i*14;-36-%i*230;-235+%i*11; 54+%i*261; 175-%i*33;-189+%i*307; 256+%i*14;
+ 151-%i*116;-214+%i*88; 74+%i*169; 36+%i*95; 207+%i*88],[4,3,5]);
+y_ref=matrix([ 2996; 3600; 1800; 2396; 1804.08726109815325; 601.420841162336728; 1797.20231832067839;
+ 2402.0440006453523; 2399.91273890184675; 2998.57915883766327; 2.79768167932161305;
+ 5401.95599935464725; 2396.96074950014463; 2999.02579525054898; 3601.07865923712325;
+ 4800.47728151174852; 5402.68357811465103; 5996.71587420499782; 2994.98775825329631;
+ 4800.7569165971172; 1194.78718041472757; 1801.42138987713292; 597.945126438306488;
+ 4795.69787130615623; 1806.28063851446973; 2996.33933739403255; 1802.22357633135243;
+ 2999.61398771896711; 4800.14227629597099; 1194.58106615498582; 4200.9816123952096;
+ -1.643335439786938; 3000.6599157117771; 3602.13659702117502; 1207.26152998727684;
+ 601.910475422587638; 3601.29217048561441; 5398.45474462091079; 4205.6200225335615;
+ 3606.49125722100416; 5397.78905489267254; 4200.45827894945342; 2396.05617461713109;
+ 1802.27482470993255; 3000.2119789042963; 5400.98960279924631; 2403.91117288032501;
+ 1800.15817472797062; 4799.46644149977146; 4206.18012273450677; 591.077741897962369;
+ 1197.41747354827976; 2398.62992927763071; 1199.93973694330134; 600.335830922918376;
+ 5401.45253626486101; 1201.09608638827149; 2403.75745404970803; 4798.52079450553538;
+ 4195.39253641116193],[4,3,5]);
+y=fft(A);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+//============================================================================================
+//=================================fft(A ,isn, sel [,flag]) ==================================
+//============================================================================================
+//R2C and C2R case ---------------------------------------------------------------------------
+// Multiple 1D transforms
+A=[0 1 1
+ 2 -1 -1
+ 3 4 4
+ 5 1 -1];
+y_ref = [ 10, 5, 3;
+ -3+%i*3,-3+%i*2,-3;
+ -4, 5, 7;
+ -3-%i*3,-3-%i*2,-3];
+y=fft(A,-1,1);
+assert_checkalmostequal(y,y_ref);
+y=fft(y_ref,1,1);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(A,y);
+y_ref = [ 2.5, 1.25, 0.75;
+ -0.75-%i*0.75,-0.75-%i*0.5,-0.75;
+ -1, 1.25, 1.75;
+ -0.75+%i*0.75,-0.75+%i*0.5,-0.75];
+y=fft(A,1,1);
+assert_checkalmostequal(y,y_ref);
+y=fft(y_ref,-1,1);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(A,y);
+y_ref = [ 2,-1,-1;
+ 0, 3, 3;
+ 11,-1,-1;
+ 5, 5-%i*1.7320508, 5+%i*1.7320508];
+y=fft(A,-1,2);
+assert_checkalmostequal(y,y_ref);
+y=fft(y_ref,1,2);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(A,y);
+y_ref = [ 0.66666666666666663,-0.33333333333333331,-0.33333333333333331;
+ 0, 1, 1;
+ 3.66666666666666652,-0.33333333333333326,-0.33333333333333326;
+ 1.66666666666666652, 1.66666666666666652+%i*0.57735026918962573,..
+ 1.66666666666666652-%i*0.57735026918962573];
+y=fft(A,1,2);
+assert_checkalmostequal(y,y_ref);
+y=fft(y_ref,-1,2);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(A,y);
+// Multiple 1D and 2D transforms of ND arrays
+Dims=[5 3 4];
+A=matrix(1:60,Dims);
+Sel=2;
+y=fft(A,-1,Sel);
+for i=1:Dims(1)
+ for j=1:Dims(3)
+ ind=list(i,:,j);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for i=1:Dims(1)
+ for j=1:Dims(3)
+ ind=list(i,:,j);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)));
+ end
+end
+Sel=3;
+y=fft(A,-1,Sel);
+for i=1:Dims(1)
+ for j=1:Dims(2)
+ ind=list(i,j,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for i=1:Dims(1)
+ for j=1:Dims(2)
+ ind=list(i,j,:);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)));
+ end
+end
+Sel=[1 2];
+y=fft(A,-1,Sel);
+for j=1:Dims(3)
+ ind=list(:,:,j);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for j=1:Dims(3)
+ ind=list(:,:,j);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)));
+end
+Sel=[1 3];
+y=fft(A,-1,Sel);
+for j=1:Dims(2)
+ ind=list(:,j,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for j=1:Dims(2)
+ ind=list(:,j,:);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)));
+end
+Dims=[5 3 4 7];
+A=matrix(1:prod(Dims),Dims);
+Sel=[1 3 4];
+y=fft(A,-1,Sel);
+for j=1:Dims(2)
+ ind=list(:,j,:,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for j=1:Dims(2)
+ ind=list(:,j,:,:);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)));
+end
+Sel=[2 4];
+y=fft(A,-1,Sel);
+for i=1:Dims(1)
+ for j=1:Dims(3)
+ ind=list(i,:,j,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for i=1:Dims(1)
+ for j=1:Dims(3)
+ ind=list(i,:,j,:);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)));
+ end
+end
+Sel=3;
+y=fft(A,-1,Sel);
+for i=1:Dims(1)
+ for j=1:Dims(2)
+ for k=1:Dims(4)
+ ind=list(i,j,:,k);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+ end
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for i=1:Dims(1)
+ for j=1:Dims(2)
+ for k=1:Dims(4)
+ ind=list(i,j,:,k);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)));
+ end
+ end
+end
diff --git a/modules/fftw/tests/unit_tests/fftw_part2.tst b/modules/fftw/tests/unit_tests/fftw_part2.tst
new file mode 100755
index 000000000..afc9d67bd
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/fftw_part2.tst
@@ -0,0 +1,421 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+//3-D transform *******************************************************************************
+
+//R2R case ------------------------------------------------------------------------------------
+A=[0 1 1
+ 2 -1 -1
+ 3 4 4
+ 2 -1 -1];
+A(:,:,2)=A+1;
+A(:,:,3)=A(:,:,2);
+y_ref=matrix([63;-27;39;-27;12;0;-24;0;12;0;-24;0;-12;
+ 0;0;0;0;0;0;0;0;0;0;0;
+ -12;0;0;0;0;0;0;0;0;0;0;0],[4 3 3]);
+y=fft(A);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,fft(y,1),0,10*%eps);
+
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,fft(y,1,"symmetric"),0,10*%eps);
+
+y=fft(A,"nonsymmetric"); //use R2C
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+assert_checkalmostequal(A,fft(y,1,"nonsymmetric"),0,10*%eps);
+
+
+A=matrix([4750;-163;138;138;-163;-100;-2;9;-148;42;10;-301;246;246;-301;-100;42;-148;9;-2;-12;157;
+ -110;224;37;-101;-94;260;258;345;-49;175;227;110;161;65;-40;-182;161;-390;412;101;168;
+ 138;35;21;-95;-81;236;1;219;-215;120;284;-232;-35;-23;215;-191;122;412;35;138;168;101;
+ -35;122;-191;215;-23;219;-232;284;120;-215;21;1;236;-81;-95;-12;37;224;-110;157;65;-390;
+ 161;-182;-40;-49;161;110;227;175;-101;345;258;260;-94],[5,4,5]);
+y_ref=matrix([ 9006; 1997.01835368650836; 7499.98164631349118; 7499.98164631349118;
+ 1997.01835368650836; 5500; 8003.03595972396761; 4499.30203473224719;
+ 3496.74144394796622; 4500.92056159581989; 7994; 4500.41996658886728;
+ 7002.58003341113272; 7002.58003341113272; 4500.41996658886728; 5500;
+ 4500.92056159581989; 3496.74144394796622; 4499.30203473224719; 8003.03595972396761;
+ 3003.23606797749972; 4503.21094298379558; 2498.80193260011856; 4500.56038652002371;
+ 3002.80933008143711; 1502.48409399493175; 4997.98726249178435; 6998.63971425121235;
+ 4503.41908441918713; 5499.99740938413652; 4000.79645449752343; 3004.49048964150825;
+ 3499; 4495.40709100495314; 4504.89210254386671; 5498.03152064027927;
+ 3999.73866895309675; 1500.9206722688125; 7001.49266501579041; 3003.15588613093223;
+ 2998.76393202250028; 5001.43961347997629; 5493.78905701620442; 6994.19066991856289;
+ 5003.19806739988144; 4499.2782026543191; 4996.34845842043978; 3004.96649100621744;
+ 7499.64517406068444; 5505.14335301404844; 4497.20354550247703; 3502.59290899504595;
+ 8498.50951035849175; 6998.10789745613329; 3499; 7000.20618271046988;
+ 5998.73979214458359; 3497.30757754890101; 2497.2015304242459; 3495.29626046592784;
+ 2998.76393202250028; 5003.19806739988144; 6994.19066991856289; 5493.78905701620442;
+ 5001.43961347997629; 7000.20618271046988; 3495.29626046592784; 2497.2015304242459;
+ 3497.30757754890101; 5998.73979214458359; 4497.20354550247703; 3499;
+ 6998.10789745613329; 8498.50951035849175; 3502.59290899504595; 4499.2782026543191;
+ 5505.14335301404844; 7499.64517406068444; 3004.96649100621744; 4996.34845842043978;
+ 3003.23606797749972; 3002.80933008143711; 4500.56038652002371; 2498.80193260011856;
+ 4503.21094298379558; 5498.03152064027927; 3003.15588613093223; 7001.49266501579041;
+ 1500.9206722688125; 3999.73866895309675; 4000.79645449752343; 4504.89210254386671;
+ 4495.40709100495314; 3499; 3004.49048964150825; 1502.48409399493175;
+ 5499.99740938413652; 4503.41908441918713; 6998.63971425121235; 4997.98726249178435],[5,4,5]);
+
+y=fft(A);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+
+//R2C case ------------------------------------------------------------------------------------
+A=matrix([5;4;3;6;4;9;0;5;3;4;3;1;8;2;1;7;2;7;8;4;4;9;
+ 1;2;6;6;7;9;5;3;4;9;9;3;4;7;3;5;3;5;5;1;2;6;
+ 8;0;7;2;4;8;6;5;2;8;1;3;9;8;5;10],[4,3,5]);
+y_ref=matrix([ 290; 22+%i*4;-26; 22-%i*4; 9.5+%i*9.52627944162882301;
+ -1.1339745962155614+%i*17.1602540378443891;-3.5+%i*25.1147367097487191;
+ -2.8660254037844384+%i*0.16025403784438552; 9.5-%i*9.52627944162882301;
+ -2.8660254037844384-%i*0.16025403784438552;-3.5-%i*25.1147367097487191;
+ -1.1339745962155614-%i*17.1602540378443891;-10.9549150281252636-%i*1.37984007917967944;
+ 5.35973404130009712-%i*26.1183685942109989;-23.4614928368734752-%i*1.14281435514402396;
+ -3.59580201879988692+%i*23.0406850570357449;-21.3658553026453930-%i*8.84359942677465227;
+ 20.7330326917071268-%i*8.81688081018132586; 3.64531223802112692-%i*9.52499614355328994;
+ 7.43941996380932657-%i*16.867370295570808; 17.5396173813961269+%i*3.3290181678526012;
+ 15.0849628274577707+%i*11.593028238175755; 25.597333548226878-%i*1.41840966171390725;
+ -18.8967357079763296-%i*30.6614339614318183;-16.5450849718747364+%i*32.005406439473461;
+ -2.0005198567285527+%i*10.4427980896260522; 8.9614928368734752-%i*15.1639036975864734;
+ 8.23658783422834162-%i*9.7162555616206916;-4.97109202629695890-%i*8.30757202395887973;
+ 0.92910806515476718-%i*30.3790246133370161;-5.43718181239582421+%i*23.1017112524799586;
+ -14.884673669748171-%i*11.3804574337330209; 16.7973299475462241+%i*19.3569789554980396;
+ -0.44355669881229343+%i*5.1399061460535682;-7.8054639738521807-%i*7.52153572775482537;
+ -5.96155747159219818-%i*1.55370934855336351;-16.5450849718747364-%i*32.005406439473461;
+ 8.23658783422834162+%i*9.7162555616206916; 8.9614928368734752+%i*15.1639036975864734;
+ -2.0005198567285527-%i*10.4427980896260522; 16.7973299475462241-%i*19.3569789554980396;
+ -5.96155747159219818+%i*1.55370934855336351;-7.8054639738521807+%i*7.52153572775482537;
+ -0.44355669881229343-%i*5.1399061460535682;-4.97109202629695890+%i*8.30757202395887973;
+ -14.884673669748171+%i*11.3804574337330209;-5.43718181239582421-%i*23.1017112524799586;
+ 0.92910806515476718+%i*30.3790246133370161;-10.9549150281252636+%i*1.37984007917967944;
+ -3.59580201879988692-%i*23.0406850570357449;-23.4614928368734752+%i*1.14281435514402396;
+ 5.35973404130009712+%i*26.1183685942109989; 17.5396173813961269-%i*3.3290181678526012;
+ -18.8967357079763296+%i*30.6614339614318183; 25.597333548226878+%i*1.41840966171390725;
+ 15.0849628274577707-%i*11.593028238175755;-21.3658553026453930+%i*8.84359942677465227;
+ 7.43941996380932657+%i*16.867370295570808; 3.64531223802112692+%i*9.52499614355328994;
+ 20.7330326917071268+%i*8.81688081018132586],[4,3,5]);
+y=fft(A);
+assert_checkalmostequal(y,y_ref);
+
+//C2R case ------------------------------------------------------------------------------------
+A=matrix([ 2900; 220+%i*40;-260; 220-%i*40; 95+%i*95;-11+%i*172;-35+%i*251;-29+%i*2; 95-%i*95;
+ -29-%i*2;-35-%i*251;-11-%i*172;-110-%i*14; 54-%i*261;-235-%i*11;-36+%i*230;-214-%i*88;
+ 207-%i*88; 36-%i*95; 74-%i*169; 175+%i*33; 151+%i*116; 256-%i*14;-189-%i*307;
+ -165+%i*320;-20+%i*104; 90-%i*152; 82-%i*97;-50-%i*83; 9-%i*304;-54+%i*231;-149-%i*114;
+ 168+%i*194;-4+%i*51;-78-%i*75;-60-%i*16;-165-%i*320; 82+%i*97; 90+%i*152;-20-%i*104;
+ 168-%i*194;-60+%i*16;-78+%i*75;-4-%i*51;-50+%i*83;-149+%i*114;-54-%i*231; 9+%i*304;
+ -110+%i*14;-36-%i*230;-235+%i*11; 54+%i*261; 175-%i*33;-189+%i*307; 256+%i*14;
+ 151-%i*116;-214+%i*88; 74+%i*169; 36+%i*95; 207+%i*88],[4,3,5]);
+y_ref=matrix([ 2996; 3600; 1800; 2396; 1804.08726109815325; 601.420841162336728; 1797.20231832067839;
+ 2402.0440006453523; 2399.91273890184675; 2998.57915883766327; 2.79768167932161305;
+ 5401.95599935464725; 2396.96074950014463; 2999.02579525054898; 3601.07865923712325;
+ 4800.47728151174852; 5402.68357811465103; 5996.71587420499782; 2994.98775825329631;
+ 4800.7569165971172; 1194.78718041472757; 1801.42138987713292; 597.945126438306488;
+ 4795.69787130615623; 1806.28063851446973; 2996.33933739403255; 1802.22357633135243;
+ 2999.61398771896711; 4800.14227629597099; 1194.58106615498582; 4200.9816123952096;
+ -1.643335439786938; 3000.6599157117771; 3602.13659702117502; 1207.26152998727684;
+ 601.910475422587638; 3601.29217048561441; 5398.45474462091079; 4205.6200225335615;
+ 3606.49125722100416; 5397.78905489267254; 4200.45827894945342; 2396.05617461713109;
+ 1802.27482470993255; 3000.2119789042963; 5400.98960279924631; 2403.91117288032501;
+ 1800.15817472797062; 4799.46644149977146; 4206.18012273450677; 591.077741897962369;
+ 1197.41747354827976; 2398.62992927763071; 1199.93973694330134; 600.335830922918376;
+ 5401.45253626486101; 1201.09608638827149; 2403.75745404970803; 4798.52079450553538;
+ 4195.39253641116193],[4,3,5]);
+y=fft(A);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+y=fft(A,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+//C2C case
+//------------------------------------------------------------------------------------
+A=[0 %i 3-%i
+ 2+%i -1 -1
+ 3 4 4
+ 2-3*%i -1 -1];
+A(:,:,2)=A+1;
+A(:,:,3)=A(:,:,2).*A(:,:,2);
+y=fft(A);
+y_ref=matrix([ 130-%i*22;-34-%i*14; 102+%i*10;-98+%i*2; 11.624355652982139+%i*5.18653347947321031;
+ 45.6243556529821319+%i*13.1865334794732103;-28.375644347017861+%i*37.1865334794732121;
+ -18.375644347017861+%i*29.1865334794732121;-12.624355652982139-%i*31.1865334794732121;
+ 21.3756443470178574-%i*23.1865334794732121;-52.6243556529821319+%i*0.81346652052678969;
+ -42.624355652982139-%i*7.18653347947321031;-30.1435935394489825+%i*63.4256258422040702;
+ 23.124355652982139-%i*12.0525588832576496;-33.464101615137757+%i*49.9615242270663131;
+ 29.2679491924311215-%i*54.6935750346351952;-0.90192378864668221-%i*5.2224318643354568;
+ -19.633974596215559+%i*23.2224318643354550;-16.2224318643354550-%i*18.6865334794732121;
+ -13.4903810567665765-%i*19.4185842870420871; 24.026279441628823-%i*6.83012701892219098;
+ 5.29422863405994804+%i*21.6147367097487226; 8.7057713659400484-%i*20.2942286340599445;
+ 11.4378221735089287-%i*21.026279441628823;-57.8564064605510140-%i*47.4256258422040702;
+ -1.1243556529821408+%i*26.0525588832576496;-26.5358983848622465-%i*53.9615242270663131;
+ 32.732050807568875+%i*52.6935750346351952; 4.97372055837117344+%i*1.83012701892219409;
+ -10.2942286340599463-%i*28.614736709748719; 24.2942286340599480-%i*4.705771365940052;
+ 23.5621778264910695-%i*1.9737205583711752;-6.09807621135331601+%i*24.2224318643354550;
+ -21.3660254037844375-%i*6.2224318643354586; 13.2224318643354550+%i*17.6865334794732085;
+ 12.4903810567665818+%i*20.4185842870420871],[4,3,3]);
+assert_checkalmostequal(y,y_ref);
+
+//N-D transform *******************************************************************************
+//R2R case ------------------------------------------------------------------------------------
+
+A=matrix([7090;265;265;180;-42;-198;30;15;15;180;-198;-42;160;235;-245;-335;135;182;240;-75;75;
+ -265;465;148;160;-245;235;-265;148;465;240;75;-75;-335;182;135;-410;446;204;-280;-253;
+ 353;-450;-198;-372;140;351;229;-48;236;-312;456;181;-279;262;-540;-50;363;385;-99;368;
+ 242;-6;-236;-71;-321;158;20;-90;397;109;195;-110;265;265;-120;-370;-110;-650;55;55;-120;
+ -110;-370;-20;-125;-245;91;-153;34;-80;85;-5;-151;-447;416;-20;-245;-125;-151;416;-447;
+ -80;-5;85;91;34;-153;-410;204;446;140;229;351;-450;-372;-198;-280;353;-253;368;-6;242;
+ 397;195;109;158;-90;20;-236;-321;-71;-48;-312;236;363;-99;385;262;-50;-540;456;-279;181],[3,4,3,4]);
+
+y_ref=matrix([ 8640; 6480; 6480; 11520; 5760.26656797432588; 5039.73343202567412; 4320; 7200; 7200;
+ 11520; 5039.73343202567412; 5760.26656797432588; 4320; 2160; 2880; 9369.32603294810724;
+ 4323.73066958946401; 5040.79842187187296; 7200; 2160.00000000000045; 2880;
+ 12230.6739670518928; 3596.2693304105369; 12239.2015781281261; 4320; 2880; 2160;
+ 12230.6739670518928; 12239.2015781281261; 3596.2693304105369; 7200; 2880;
+ 2160.00000000000045; 9369.32603294810724; 5040.79842187187296; 4323.73066958946401;
+ 11520; 4318.1340241797152; 9361.8659758202848; 12240; 5046.12849930729499;
+ 7193.87150069270501; 7200; 10079.7334320256741; 10800.2665679743259; 2160;
+ 2164.52909146133834; 8635.47090853866212; 7923.73066958946401; 7196.80246635918866;
+ 8641.59812579485151; 7921.06627189730625; 6480.53313594865176; 10801.5994078459589;
+ 10079.2015781281261; 6482.39782971783188; 7198.66844217947437; 5759.73343202567321;
+ 9362.39911176893838; 5038.66716012836696; 7196.26933041053599; 13678.4018742051485;
+ 6483.19753364081134; 5038.93372810269375; 6478.40059215404108; 5039.46686405134824;
+ 2880.79842187187342; 1441.33155782052563; 9357.60217028216903; 6480.26656797432679;
+ 8641.33283987163304; 2877.60088823106116; 4320; 4320; 4320; 3600; 8639.20029607702054;
+ 10800.7997039229795; 12960; 8640; 8640; 3600; 10800.7997039229795; 8639.20029607702054;
+ 7920; 12960; 10800; 9365.06350946109706; 7196.00276243620829; 8637.60217028216721;
+ 10800; 720.000000000000455; 7920; 5034.93649053890294; 8643.99723756379171;
+ 5762.39782971783279; 7920; 10800; 12960; 5034.93649053890294; 5762.39782971783279;
+ 8643.99723756379171; 10800; 7920; 720.000000000000455; 9365.06350946109706;
+ 8637.60217028216721; 7196.00276243620829; 11520; 9361.8659758202848; 4318.1340241797152;
+ 2160; 8635.47090853866212; 2164.52909146133834; 7200; 10800.2665679743259;
+ 10079.7334320256741; 12240; 7193.87150069270501; 5046.12849930729499;
+ 7196.26933041053599; 6483.19753364081134; 13678.4018742051485; 6480.26656797432679;
+ 2877.60088823106116; 8641.33283987163304; 2880.79842187187342; 9357.60217028216903;
+ 1441.33155782052563; 5038.93372810269375; 5039.46686405134824; 6478.40059215404108;
+ 7923.73066958946401; 8641.59812579485151; 7196.80246635918866; 5759.73343202567321;
+ 5038.66716012836696; 9362.39911176893838; 10079.2015781281261; 7198.66844217947437;
+ 6482.39782971783188; 7921.06627189730625; 10801.5994078459589; 6480.53313594865176],[3,4,3,4]);
+y=fft(A);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+A=matrix([ 2900; 220+%i*40;-260; 220-%i*40; 95+%i*95;-11+%i*172;-35+%i*251;-29+%i*2; 95-%i*95;
+ -29-%i*2;-35-%i*251;-11-%i*172;-110-%i*14; 54-%i*261;-235-%i*11;-36+%i*230;-214-%i*88;
+ 207-%i*88; 36-%i*95; 74-%i*169; 175+%i*33; 151+%i*116; 256-%i*14;-189-%i*307;
+ -165+%i*320;-20+%i*104; 90-%i*152; 82-%i*97;-50-%i*83; 9-%i*304;-54+%i*231;-149-%i*114;
+ 168+%i*194;-4+%i*51;-78-%i*75;-60-%i*16;-165-%i*320; 82+%i*97; 90+%i*152;-20-%i*104;
+ 168-%i*194;-60+%i*16;-78+%i*75;-4-%i*51;-50+%i*83;-149+%i*114;-54-%i*231; 9+%i*304;
+ -110+%i*14;-36-%i*230;-235+%i*11; 54+%i*261; 175-%i*33;-189+%i*307; 256+%i*14;
+ 151-%i*116;-214+%i*88; 74+%i*169; 36+%i*95; 207+%i*88],[4,3,5]);
+y_ref=matrix([ 2996; 3600; 1800; 2396; 1804.08726109815325; 601.420841162336728; 1797.20231832067839;
+ 2402.0440006453523; 2399.91273890184675; 2998.57915883766327; 2.79768167932161305;
+ 5401.95599935464725; 2396.96074950014463; 2999.02579525054898; 3601.07865923712325;
+ 4800.47728151174852; 5402.68357811465103; 5996.71587420499782; 2994.98775825329631;
+ 4800.7569165971172; 1194.78718041472757; 1801.42138987713292; 597.945126438306488;
+ 4795.69787130615623; 1806.28063851446973; 2996.33933739403255; 1802.22357633135243;
+ 2999.61398771896711; 4800.14227629597099; 1194.58106615498582; 4200.9816123952096;
+ -1.643335439786938; 3000.6599157117771; 3602.13659702117502; 1207.26152998727684;
+ 601.910475422587638; 3601.29217048561441; 5398.45474462091079; 4205.6200225335615;
+ 3606.49125722100416; 5397.78905489267254; 4200.45827894945342; 2396.05617461713109;
+ 1802.27482470993255; 3000.2119789042963; 5400.98960279924631; 2403.91117288032501;
+ 1800.15817472797062; 4799.46644149977146; 4206.18012273450677; 591.077741897962369;
+ 1197.41747354827976; 2398.62992927763071; 1199.93973694330134; 600.335830922918376;
+ 5401.45253626486101; 1201.09608638827149; 2403.75745404970803; 4798.52079450553538;
+ 4195.39253641116193],[4,3,5]);
+y=fft(A);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+y=fft(A,"symmetric");
+assert_checktrue(isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+y=fft(A,"nonsymmetric");
+assert_checktrue(~isreal(y));
+assert_checkalmostequal(y,y_ref);
+
+//============================================================================================
+//=================================fft(A ,isn, sel [,flag]) ==================================
+//============================================================================================
+//R2C and C2R case ---------------------------------------------------------------------------
+// Multiple 1D transforms
+A=[0 1 1
+ 2 -1 -1
+ 3 4 4
+ 5 1 -1];
+
+y_ref = [ 10, 5, 3;
+ -3+%i*3,-3+%i*2,-3;
+ -4, 5, 7;
+ -3-%i*3,-3-%i*2,-3];
+y=fft(A,-1,1);
+assert_checkalmostequal(y,y_ref);
+y=fft(y_ref,1,1);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(A,y);
+
+y_ref = [ 2.5, 1.25, 0.75;
+ -0.75-%i*0.75,-0.75-%i*0.5,-0.75;
+ -1, 1.25, 1.75;
+ -0.75+%i*0.75,-0.75+%i*0.5,-0.75];
+y=fft(A,1,1);
+assert_checkalmostequal(y,y_ref);
+y=fft(y_ref,-1,1);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(A,y);
+
+y_ref = [ 2,-1,-1;
+ 0, 3, 3;
+ 11,-1,-1;
+ 5, 5-%i*1.7320508, 5+%i*1.7320508];
+
+y=fft(A,-1,2);
+assert_checkalmostequal(y,y_ref);
+y=fft(y_ref,1,2);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(A,y);
+
+y_ref = [ 0.66666666666666663,-0.33333333333333331,-0.33333333333333331;
+ 0, 1, 1;
+ 3.66666666666666652,-0.33333333333333326,-0.33333333333333326;
+ 1.66666666666666652, 1.66666666666666652+%i*0.57735026918962573,..
+ 1.66666666666666652-%i*0.57735026918962573];
+y=fft(A,1,2);
+assert_checkalmostequal(y,y_ref);
+y=fft(y_ref,-1,2);
+assert_checktrue(isreal(y));
+assert_checkalmostequal(A,y);
+
+// Multiple 1D and 2D transforms of ND arrays
+Dims=[5 3 4];
+A=matrix(1:60,Dims);
+Sel=2;
+y=fft(A,-1,Sel);
+for i=1:Dims(1)
+ for j=1:Dims(3)
+ ind=list(i,:,j);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+end
+
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for i=1:Dims(1)
+ for j=1:Dims(3)
+ ind=list(i,:,j);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)));
+ end
+end
+
+
+Sel=3;
+y=fft(A,-1,Sel);
+for i=1:Dims(1)
+ for j=1:Dims(2)
+ ind=list(i,j,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for i=1:Dims(1)
+ for j=1:Dims(2)
+ ind=list(i,j,:);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)));
+ end
+end
+
+Sel=[1 2];
+y=fft(A,-1,Sel);
+for j=1:Dims(3)
+ ind=list(:,:,j);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for j=1:Dims(3)
+ ind=list(:,:,j);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)));
+end
+
+Sel=[1 3];
+y=fft(A,-1,Sel);
+for j=1:Dims(2)
+ ind=list(:,j,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for j=1:Dims(2)
+ ind=list(:,j,:);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)));
+end
+
+Dims=[5 3 4 7];
+A=matrix(1:prod(Dims),Dims);
+Sel=[1 3 4];
+y=fft(A,-1,Sel);
+for j=1:Dims(2)
+ ind=list(:,j,:,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for j=1:Dims(2)
+ ind=list(:,j,:,:);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)));
+end
+
+Sel=[2 4];
+y=fft(A,-1,Sel);
+for i=1:Dims(1)
+ for j=1:Dims(3)
+ ind=list(i,:,j,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+end
+
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for i=1:Dims(1)
+ for j=1:Dims(3)
+ ind=list(i,:,j,:);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)));
+ end
+end
+
+Sel=3;
+y=fft(A,-1,Sel);
+for i=1:Dims(1)
+ for j=1:Dims(2)
+ for k=1:Dims(4)
+ ind=list(i,j,:,k);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+ end
+end
+
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for i=1:Dims(1)
+ for j=1:Dims(2)
+ for k=1:Dims(4)
+ ind=list(i,j,:,k);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)));
+ end
+ end
+end
diff --git a/modules/fftw/tests/unit_tests/fftw_part3.dia.ref b/modules/fftw/tests/unit_tests/fftw_part3.dia.ref
new file mode 100755
index 000000000..9ee0c4d35
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/fftw_part3.dia.ref
@@ -0,0 +1,53 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+//C2C case ------------------------------------------------------------------------------------
+Dims=[5 3 4];
+A=[10 %i 3-%i 5
+ 2+%i -1 -1 7-%i
+ 3 4 4 -11
+ 2-3*%i -1 -1 0.3+%i
+ -3 -2 -1 8];
+Sel=1;
+y=fft(A,-1,Sel);
+for j=1:Dims(2)
+ ind=list(:,j);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+y=fft(y,1,Sel);
+for j=1:Dims(2)
+ ind=list(:,j);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)),0,10*%eps);
+end
+Sel=2;
+y=fft(A,-1,Sel);
+for i=1:Dims(1)
+ ind=list(i,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+y=fft(y,1,Sel);
+for i=1:Dims(1)
+ ind=list(i,:);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)),0,10*%eps);
+end
+Dims=[5 3 4 7 5];
+A=matrix(rand(1,prod(Dims))+%i*rand(1,prod(Dims)),Dims);
+Sel= [2 3 5];
+y=fft(A,-1,Sel);
+for i=1:Dims(1)
+ for j=1:Dims(4)
+ ind=list(i,:,:,j,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+end
+y=fft(y,1,Sel);
+for i=1:Dims(1)
+ for j=1:Dims(4)
+ ind=list(i,:,:,j,:);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)));
+ end
+end
diff --git a/modules/fftw/tests/unit_tests/fftw_part3.tst b/modules/fftw/tests/unit_tests/fftw_part3.tst
new file mode 100755
index 000000000..72323cc43
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/fftw_part3.tst
@@ -0,0 +1,61 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+//C2C case ------------------------------------------------------------------------------------
+Dims=[5 3 4];
+A=[10 %i 3-%i 5
+ 2+%i -1 -1 7-%i
+ 3 4 4 -11
+ 2-3*%i -1 -1 0.3+%i
+ -3 -2 -1 8];
+
+Sel=1;
+y=fft(A,-1,Sel);
+for j=1:Dims(2)
+ ind=list(:,j);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+y=fft(y,1,Sel);
+for j=1:Dims(2)
+ ind=list(:,j);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)),0,10*%eps);
+end
+
+Sel=2;
+y=fft(A,-1,Sel);
+for i=1:Dims(1)
+ ind=list(i,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+y=fft(y,1,Sel);
+for i=1:Dims(1)
+ ind=list(i,:);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)),0,10*%eps);
+end
+
+
+Dims=[5 3 4 7 5];
+A=matrix(rand(1,prod(Dims))+%i*rand(1,prod(Dims)),Dims);
+Sel= [2 3 5];
+y=fft(A,-1,Sel);
+for i=1:Dims(1)
+ for j=1:Dims(4)
+ ind=list(i,:,:,j,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+end
+
+y=fft(y,1,Sel);
+for i=1:Dims(1)
+ for j=1:Dims(4)
+ ind=list(i,:,:,j,:);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)));
+ end
+end
+
diff --git a/modules/fftw/tests/unit_tests/fftw_part4.dia.ref b/modules/fftw/tests/unit_tests/fftw_part4.dia.ref
new file mode 100755
index 000000000..ddbd62de4
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/fftw_part4.dia.ref
@@ -0,0 +1,152 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+//R2R case ------------------------------------------------------------------------------------
+A=[0 1 2 2 1
+ 2 -1 3 3 -1
+ 3 4 5 5 4
+ 2 -1 3 3 -1];
+Dims=[4 5];
+Sel=1;
+y=fft(A,-1,Sel);
+assert_checktrue(isreal(y));
+for j=1:Dims(2)
+ ind=list(:,j);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for j=1:Dims(2)
+ ind=list(:,j);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)),0,10*%eps);
+end
+Sel=2;
+y=fft(A,-1,Sel);
+assert_checktrue(isreal(y));
+for i=1:Dims(1)
+ ind=list(i,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for i=1:Dims(1)
+ ind=list(i,:);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)),0,10*%eps);
+end
+//ND case
+A=[0 1 1
+ 2 -1 -1
+ 3 4 4
+ 2 -1 -1];
+A(:,:,2)=A+1;
+A(:,:,3)=A(:,:,2);
+Dims=size(A);
+Sel=1;
+y=fft(A,-1,Sel);
+assert_checktrue(isreal(y));
+for j=1:Dims(2)
+ for k=1:Dims(3)
+ ind=list(:,j,k);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for j=1:Dims(2)
+ for k=1:Dims(3)
+ ind=list(:,j,k);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)),0,10*%eps);
+ end
+end
+Sel=1:2;
+y=fft(A,-1,Sel);
+assert_checktrue(isreal(y));
+for k=1:Dims(3)
+ ind=list(:,:,k);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for k=1:Dims(3)
+ ind=list(:,:,k);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)),0,10*%eps);
+end
+Sel=2:3;
+y=fft(A,-1,Sel);
+assert_checktrue(isreal(y));
+for i=1:Dims(1)
+ ind=list(i,:,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for i=1:Dims(1)
+ ind=list(i,:,:);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)),0,10*%eps);
+end
+Dims=[5 4 9 5 6];
+A=matrix(rand(1,prod(Dims)),Dims);
+y=fft(A,-1,[2 4]);
+for i1=1:Dims(1)
+ for i3=1:Dims(3)
+ for i5=1:Dims(5)
+ ind=list(i1,:,i3,:,i5);;
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+ end
+end
+y1=fft(y,1,[2 4]);
+assert_checktrue(isreal(y1));
+assert_checkalmostequal(y1,A);
+y=fft(A,-1,[2 4 5]);
+for i1=1:Dims(1)
+ for i3=1:Dims(3)
+ ind=list(i1,:,i3,:,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+end
+y1=fft(y,1,[2 4 5]);
+assert_checktrue(isreal(y1));
+assert_checkalmostequal(y1,A);
+Dims=[5 4 7 5 6 3];
+A=matrix(rand(1,prod(Dims)),Dims);
+y=fft(A,-1,[2 5]);
+for i1=1:Dims(1)
+ for i3=1:Dims(3)
+ for i4=1:Dims(4)
+ for i6=1:Dims(6)
+ ind=list(i1,:,i3,i4,:,i6);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+ end
+ end
+end
+y1=fft(y,1,[2 5]);
+assert_checktrue(isreal(y1));
+assert_checkalmostequal(y1,A);
+y=fft(A,-1,[2 4 6]);
+for i1=1:Dims(1)
+ for i3=1:Dims(3)
+ for i5=1:Dims(5)
+ ind=list(i1,:,i3,:,i5,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+ end
+end
+y1=fft(y,1,[2 4 6]);
+assert_checktrue(isreal(y1));
+assert_checkalmostequal(y1,A);
+y=fft(A,-1,[2 4 5 6]);
+for i1=1:Dims(1)
+ for i3=1:Dims(3)
+ ind=list(i1,:,i3,:,:,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+end
+y1=fft(y,1,[2 4 5 6]);
+assert_checktrue(isreal(y1));
+assert_checkalmostequal(y1,A);
diff --git a/modules/fftw/tests/unit_tests/fftw_part4.tst b/modules/fftw/tests/unit_tests/fftw_part4.tst
new file mode 100755
index 000000000..fb81ce425
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/fftw_part4.tst
@@ -0,0 +1,171 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+//R2R case ------------------------------------------------------------------------------------
+A=[0 1 2 2 1
+ 2 -1 3 3 -1
+ 3 4 5 5 4
+ 2 -1 3 3 -1];
+
+Dims=[4 5];
+Sel=1;
+y=fft(A,-1,Sel);
+assert_checktrue(isreal(y));
+for j=1:Dims(2)
+ ind=list(:,j);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for j=1:Dims(2)
+ ind=list(:,j);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)),0,10*%eps);
+end
+
+Sel=2;
+y=fft(A,-1,Sel);
+assert_checktrue(isreal(y));
+for i=1:Dims(1)
+ ind=list(i,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for i=1:Dims(1)
+ ind=list(i,:);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)),0,10*%eps);
+end
+
+//ND case
+A=[0 1 1
+ 2 -1 -1
+ 3 4 4
+ 2 -1 -1];
+A(:,:,2)=A+1;
+A(:,:,3)=A(:,:,2);
+
+Dims=size(A);
+Sel=1;
+y=fft(A,-1,Sel);
+assert_checktrue(isreal(y));
+for j=1:Dims(2)
+ for k=1:Dims(3)
+ ind=list(:,j,k);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+end
+
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for j=1:Dims(2)
+ for k=1:Dims(3)
+ ind=list(:,j,k);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)),0,10*%eps);
+ end
+end
+
+Sel=1:2;
+y=fft(A,-1,Sel);
+assert_checktrue(isreal(y));
+for k=1:Dims(3)
+ ind=list(:,:,k);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for k=1:Dims(3)
+ ind=list(:,:,k);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)),0,10*%eps);
+end
+
+Sel=2:3;
+y=fft(A,-1,Sel);
+assert_checktrue(isreal(y));
+for i=1:Dims(1)
+ ind=list(i,:,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+end
+y=fft(y,1,Sel);
+assert_checktrue(isreal(y));
+for i=1:Dims(1)
+ ind=list(i,:,:);
+ assert_checkalmostequal(y(ind(:)),A(ind(:)),0,10*%eps);
+end
+
+Dims=[5 4 9 5 6];
+A=matrix(rand(1,prod(Dims)),Dims);
+y=fft(A,-1,[2 4]);
+for i1=1:Dims(1)
+ for i3=1:Dims(3)
+ for i5=1:Dims(5)
+ ind=list(i1,:,i3,:,i5);;
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+ end
+end
+y1=fft(y,1,[2 4]);
+assert_checktrue(isreal(y1));
+assert_checkalmostequal(y1,A);
+
+
+y=fft(A,-1,[2 4 5]);
+for i1=1:Dims(1)
+ for i3=1:Dims(3)
+ ind=list(i1,:,i3,:,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+end
+y1=fft(y,1,[2 4 5]);
+assert_checktrue(isreal(y1));
+assert_checkalmostequal(y1,A);
+
+
+Dims=[5 4 7 5 6 3];
+A=matrix(rand(1,prod(Dims)),Dims);
+y=fft(A,-1,[2 5]);
+for i1=1:Dims(1)
+ for i3=1:Dims(3)
+ for i4=1:Dims(4)
+ for i6=1:Dims(6)
+ ind=list(i1,:,i3,i4,:,i6);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+ end
+ end
+end
+
+y1=fft(y,1,[2 5]);
+assert_checktrue(isreal(y1));
+assert_checkalmostequal(y1,A);
+
+
+y=fft(A,-1,[2 4 6]);
+for i1=1:Dims(1)
+ for i3=1:Dims(3)
+ for i5=1:Dims(5)
+ ind=list(i1,:,i3,:,i5,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+ end
+end
+y1=fft(y,1,[2 4 6]);
+assert_checktrue(isreal(y1));
+assert_checkalmostequal(y1,A);
+
+y=fft(A,-1,[2 4 5 6]);
+for i1=1:Dims(1)
+ for i3=1:Dims(3)
+ ind=list(i1,:,i3,:,:,:);
+ assert_checkalmostequal(y(ind(:)),fft(A(ind(:)),-1));
+ end
+end
+y1=fft(y,1,[2 4 5 6]);
+assert_checktrue(isreal(y1));
+assert_checkalmostequal(y1,A);
diff --git a/modules/fftw/tests/unit_tests/fftw_part5.dia.ref b/modules/fftw/tests/unit_tests/fftw_part5.dia.ref
new file mode 100755
index 000000000..bdd805fc7
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/fftw_part5.dia.ref
@@ -0,0 +1,45 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+//=================================fft(A ,isn, dim, incr [,flag]) =============================
+A=[0 1 1
+ 2 -1 -1
+ 3 4 4
+ 5 1 -1];
+y=matrix(fft(A(:),-1,4,1),size(A));
+assert_checkalmostequal(y,fft(A,-1,1));
+y1=matrix(fft(y(:),1,4,1),size(A));
+assert_checkalmostequal(y1,fft(y,1,1));
+y=matrix(fft(A(:),-1,3,4),size(A));
+assert_checkalmostequal(y,fft(A,-1,2));
+y1=matrix(fft(y(:),1,3,4),size(A));
+assert_checkalmostequal(y1,fft(y,1,2));
+Dims=[5 4 9 5 6];
+A=rand(1,prod(Dims));
+y=matrix(fft(A,-1,20,1),[5*4 9 5 6]);
+assert_checkalmostequal(y,fft(matrix(A,[5*4 9 5 6]),-1,1));
+y=matrix(fft(A,-1,45,20),[5*4 9*5 6]);
+assert_checkalmostequal(y,fft(matrix(A,[5*4 9*5 6]),-1,2));
+y1=matrix(fft(y(:),1,45,20),size(A));
+assert_checktrue(isreal(y1));
+assert_checkalmostequal(y1,A);
+Dims=[5 4 9 5 6];
+A=rand(1,prod(Dims));
+y=matrix(fft(A(:),-1,[9 5],[20 180]),[5 4 9 5 6]);
+y1=fft(matrix(A,[5 4 9 5 6]),-1,[3 4]);
+assert_checkalmostequal(y,y1);
+y1=fft(y(:),1,[9 5],[20 180]);
+assert_checkalmostequal(A(:),y1);
+assert_checktrue(isreal(y1));
+Dims=[5 4 9 5 6];
+A=rand(1,prod(Dims));
+y1=fft(matrix(A,[5 4 9 5 6]),-1,[2 4]);
+y=matrix(fft(A(:),-1,[4 5],[5 180]),[5 4 9 5 6]);
+assert_checkalmostequal(y,y1);
+y1=fft(y(:),1,[4 5],[5 180]);
+assert_checkalmostequal(A(:),y1);
+assert_checktrue(isreal(y1));
diff --git a/modules/fftw/tests/unit_tests/fftw_part5.tst b/modules/fftw/tests/unit_tests/fftw_part5.tst
new file mode 100755
index 000000000..3a509cd30
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/fftw_part5.tst
@@ -0,0 +1,57 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - INRIA - Serge STEER
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+//=================================fft(A ,isn, dim, incr [,flag]) =============================
+A=[0 1 1
+ 2 -1 -1
+ 3 4 4
+ 5 1 -1];
+y=matrix(fft(A(:),-1,4,1),size(A));
+assert_checkalmostequal(y,fft(A,-1,1));
+y1=matrix(fft(y(:),1,4,1),size(A));
+assert_checkalmostequal(y1,fft(y,1,1));
+
+y=matrix(fft(A(:),-1,3,4),size(A));
+assert_checkalmostequal(y,fft(A,-1,2));
+y1=matrix(fft(y(:),1,3,4),size(A));
+assert_checkalmostequal(y1,fft(y,1,2));
+
+Dims=[5 4 9 5 6];
+A=rand(1,prod(Dims));
+y=matrix(fft(A,-1,20,1),[5*4 9 5 6]);
+assert_checkalmostequal(y,fft(matrix(A,[5*4 9 5 6]),-1,1));
+
+y=matrix(fft(A,-1,45,20),[5*4 9*5 6]);
+assert_checkalmostequal(y,fft(matrix(A,[5*4 9*5 6]),-1,2));
+y1=matrix(fft(y(:),1,45,20),size(A));
+assert_checktrue(isreal(y1));
+assert_checkalmostequal(y1,A);
+
+Dims=[5 4 9 5 6];
+A=rand(1,prod(Dims));
+y=matrix(fft(A(:),-1,[9 5],[20 180]),[5 4 9 5 6]);
+y1=fft(matrix(A,[5 4 9 5 6]),-1,[3 4]);
+assert_checkalmostequal(y,y1);
+
+y1=fft(y(:),1,[9 5],[20 180]);
+assert_checkalmostequal(A(:),y1);
+assert_checktrue(isreal(y1));
+
+
+Dims=[5 4 9 5 6];
+A=rand(1,prod(Dims));
+y1=fft(matrix(A,[5 4 9 5 6]),-1,[2 4]);
+
+y=matrix(fft(A(:),-1,[4 5],[5 180]),[5 4 9 5 6]);
+
+assert_checkalmostequal(y,y1);
+
+y1=fft(y(:),1,[4 5],[5 180]);
+assert_checkalmostequal(A(:),y1);
+assert_checktrue(isreal(y1));
diff --git a/modules/fftw/tests/unit_tests/setget_fftw_wisdom.dia.ref b/modules/fftw/tests/unit_tests/setget_fftw_wisdom.dia.ref
new file mode 100755
index 000000000..048cc3af3
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/setget_fftw_wisdom.dia.ref
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+//=================================
+//return fftw wisdom
+try
+ txt=get_fftw_wisdom();
+ assert_checkequal(size(txt),[3 1]);
+ //=================================
+ //set fftw wisdom
+ set_fftw_wisdom(txt);
+ //=================================
+ //reset fftw wisdom
+ fftw_forget_wisdom()
+ //=================================
+end
diff --git a/modules/fftw/tests/unit_tests/setget_fftw_wisdom.tst b/modules/fftw/tests/unit_tests/setget_fftw_wisdom.tst
new file mode 100755
index 000000000..2e5a1bc67
--- /dev/null
+++ b/modules/fftw/tests/unit_tests/setget_fftw_wisdom.tst
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+//=================================
+//return fftw wisdom
+try
+ txt=get_fftw_wisdom();
+ assert_checkequal(size(txt),[3 1]);
+ //=================================
+ //set fftw wisdom
+ set_fftw_wisdom(txt);
+ //=================================
+ //reset fftw wisdom
+ fftw_forget_wisdom()
+ //=================================
+end