summaryrefslogtreecommitdiff
path: root/modules/arnoldi
diff options
context:
space:
mode:
authorShashank2017-05-29 12:40:26 +0530
committerShashank2017-05-29 12:40:26 +0530
commit0345245e860375a32c9a437c4a9d9cae807134e9 (patch)
treead51ecbfa7bcd3cc5f09834f1bb8c08feaa526a4 /modules/arnoldi
downloadscilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.tar.gz
scilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.tar.bz2
scilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.zip
CMSCOPE changed
Diffstat (limited to 'modules/arnoldi')
l---------modules/arnoldi/.libs/libsciarnoldi.la1
-rwxr-xr-xmodules/arnoldi/.libs/libsciarnoldi.lai41
l---------modules/arnoldi/.libs/libsciarnoldi.so1
l---------modules/arnoldi/.libs/libsciarnoldi.so.51
-rwxr-xr-xmodules/arnoldi/.libs/libsciarnoldi.so.5.5.2bin0 -> 180752 bytes
-rwxr-xr-xmodules/arnoldi/Makefile1395
-rwxr-xr-xmodules/arnoldi/Makefile.am58
-rwxr-xr-xmodules/arnoldi/Makefile.in1395
-rwxr-xr-xmodules/arnoldi/arnoldi.iss48
-rwxr-xr-xmodules/arnoldi/arnoldi.vcxproj237
-rwxr-xr-xmodules/arnoldi/arnoldi.vcxproj.filters91
-rwxr-xr-xmodules/arnoldi/core_Import.def17
-rwxr-xr-xmodules/arnoldi/demos/dnsimp.sce225
-rwxr-xr-xmodules/arnoldi/demos/dssimp.sce223
-rwxr-xr-xmodules/arnoldi/demos/znsimp.sce225
-rwxr-xr-xmodules/arnoldi/etc/arnoldi.quit10
-rwxr-xr-xmodules/arnoldi/etc/arnoldi.start12
-rwxr-xr-xmodules/arnoldi/help/en_US/addchapter.sce11
-rwxr-xr-xmodules/arnoldi/help/en_US/dnaupd.xml882
-rwxr-xr-xmodules/arnoldi/help/en_US/dneupd.xml642
-rwxr-xr-xmodules/arnoldi/help/en_US/dsaupd.xml788
-rwxr-xr-xmodules/arnoldi/help/en_US/dseupd.xml463
-rwxr-xr-xmodules/arnoldi/help/en_US/eigs.xml525
-rwxr-xr-xmodules/arnoldi/help/en_US/znaupd.xml799
-rwxr-xr-xmodules/arnoldi/help/en_US/zneupd.xml525
-rwxr-xr-xmodules/arnoldi/help/fr_FR/addchapter.sce11
-rwxr-xr-xmodules/arnoldi/help/ja_JP/addchapter.sce11
-rwxr-xr-xmodules/arnoldi/help/ja_JP/dnaupd.xml861
-rwxr-xr-xmodules/arnoldi/help/ja_JP/dneupd.xml621
-rwxr-xr-xmodules/arnoldi/help/ja_JP/dsaupd.xml765
-rwxr-xr-xmodules/arnoldi/help/ja_JP/dseupd.xml440
-rwxr-xr-xmodules/arnoldi/help/ja_JP/eigs.xml526
-rwxr-xr-xmodules/arnoldi/help/ja_JP/znaupd.xml780
-rwxr-xr-xmodules/arnoldi/help/ja_JP/zneupd.xml506
-rwxr-xr-xmodules/arnoldi/help/pt_BR/addchapter.sce11
-rwxr-xr-xmodules/arnoldi/help/ru_RU/addchapter.sce11
-rwxr-xr-xmodules/arnoldi/includes/dynlib_arnoldi.h28
-rwxr-xr-xmodules/arnoldi/includes/eigs.h56
-rwxr-xr-xmodules/arnoldi/includes/eigs_dependencies.h44
-rwxr-xr-xmodules/arnoldi/includes/gw_arnoldi.h31
-rwxr-xr-xmodules/arnoldi/libsciarnoldi.la41
-rwxr-xr-xmodules/arnoldi/license.txt11
-rwxr-xr-xmodules/arnoldi/locales/arnoldi.pot674
-rwxr-xr-xmodules/arnoldi/locales/ca_ES.po350
-rwxr-xr-xmodules/arnoldi/locales/cs_CZ.po423
-rwxr-xr-xmodules/arnoldi/locales/de_DE.po349
-rwxr-xr-xmodules/arnoldi/locales/es_ES.po370
-rwxr-xr-xmodules/arnoldi/locales/fr_FR.po453
-rwxr-xr-xmodules/arnoldi/locales/it_IT.po461
-rwxr-xr-xmodules/arnoldi/locales/ja_JP.po364
-rwxr-xr-xmodules/arnoldi/locales/pl_PL.po351
-rwxr-xr-xmodules/arnoldi/locales/pt_BR.po350
-rwxr-xr-xmodules/arnoldi/locales/ru_RU.po440
-rwxr-xr-xmodules/arnoldi/locales/uk_UA.po450
-rwxr-xr-xmodules/arnoldi/locales/zh_CN.po346
-rwxr-xr-xmodules/arnoldi/locales/zh_TW.po348
-rwxr-xr-xmodules/arnoldi/macros/buildmacros.bat11
-rwxr-xr-xmodules/arnoldi/macros/buildmacros.sce17
-rwxr-xr-xmodules/arnoldi/macros/cleanmacros.bat13
-rwxr-xr-xmodules/arnoldi/macros/eigs.binbin0 -> 183828 bytes
-rwxr-xr-xmodules/arnoldi/macros/eigs.sci1123
-rwxr-xr-xmodules/arnoldi/macros/libbin0 -> 288 bytes
-rwxr-xr-xmodules/arnoldi/macros/names1
-rwxr-xr-xmodules/arnoldi/sci_gateway/arnoldi_gateway.xml43
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.deps/.dirstamp0
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-gw_arnoldi.Plo273
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_dnaupd.Plo284
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_dneupd.Plo284
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_dsaupd.Plo284
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_dseupd.Plo284
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_eigs.Plo316
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_znaupd.Plo284
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_zneupd.Plo284
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.dirstamp0
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-gw_arnoldi.obin0 -> 6840 bytes
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dnaupd.obin0 -> 24200 bytes
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dneupd.obin0 -> 31800 bytes
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dsaupd.obin0 -> 24096 bytes
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dseupd.obin0 -> 28736 bytes
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_eigs.obin0 -> 62672 bytes
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_znaupd.obin0 -> 25352 bytes
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_zneupd.obin0 -> 30936 bytes
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/gw_arnoldi.c48
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/libsciarnoldi_la-gw_arnoldi.lo12
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_dnaupd.lo12
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_dneupd.lo12
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_dsaupd.lo12
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_dseupd.lo12
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_eigs.lo12
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_znaupd.lo12
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_zneupd.lo12
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/sci_dnaupd.c395
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/sci_dneupd.c579
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/sci_dsaupd.c395
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/sci_dseupd.c514
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/sci_eigs.c841
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/sci_znaupd.c418
-rwxr-xr-xmodules/arnoldi/sci_gateway/c/sci_zneupd.c553
-rwxr-xr-xmodules/arnoldi/src/c/.deps/.dirstamp0
-rwxr-xr-xmodules/arnoldi/src/c/.deps/libsciarnoldi_la-eigs.Plo230
-rwxr-xr-xmodules/arnoldi/src/c/.deps/libsciarnoldi_la-eigs_dependencies.Plo228
-rwxr-xr-xmodules/arnoldi/src/c/.dirstamp0
-rwxr-xr-xmodules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs.obin0 -> 66592 bytes
-rwxr-xr-xmodules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs_dependencies.obin0 -> 12048 bytes
-rwxr-xr-xmodules/arnoldi/src/c/DllmainArnoldi.c36
-rwxr-xr-xmodules/arnoldi/src/c/arnoldi.rc101
-rwxr-xr-xmodules/arnoldi/src/c/eigs.c835
-rwxr-xr-xmodules/arnoldi/src/c/eigs_dependencies.c109
-rwxr-xr-xmodules/arnoldi/src/c/libsciarnoldi_la-eigs.lo12
-rwxr-xr-xmodules/arnoldi/src/c/libsciarnoldi_la-eigs_dependencies.lo12
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_11653.dia.ref108
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_11653.tst136
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_12120.dia.ref18
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_12120.tst22
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_12137.dia.ref34
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_12137.tst39
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_12138.dia.ref81
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_12138.tst90
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_12139.dia.ref17
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_12139.tst20
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_12238.dia.ref19
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_12238.tst23
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_12772.dia.ref23
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_12772.tst27
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_12992.dia.ref29
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_12992.tst29
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_13058.dia.ref26
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_13058.tst31
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_13381.dia.ref23
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_13381.tst26
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_dsaupd.dia.ref54
-rwxr-xr-xmodules/arnoldi/tests/nonreg_tests/bug_dsaupd.tst70
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/dnaupd.dia.ref71
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/dnaupd.tst92
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/dneupd.dia.ref72
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/dneupd.tst94
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/dsaupd.dia.ref61
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/dsaupd.tst82
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/dseupd.dia.ref57
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/dseupd.tst76
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/eigs.dia.ref835
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/eigs.tst1131
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/znaupd-win.dia.ref59
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/znaupd-win.tst74
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/znaupd.dia.ref60
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/znaupd.tst76
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/zneupd-win.dia.ref59
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/zneupd-win.tst74
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/zneupd.dia.ref60
-rwxr-xr-xmodules/arnoldi/tests/unit_tests/zneupd.tst76
150 files changed, 32055 insertions, 0 deletions
diff --git a/modules/arnoldi/.libs/libsciarnoldi.la b/modules/arnoldi/.libs/libsciarnoldi.la
new file mode 120000
index 000000000..1a2c0130f
--- /dev/null
+++ b/modules/arnoldi/.libs/libsciarnoldi.la
@@ -0,0 +1 @@
+../libsciarnoldi.la \ No newline at end of file
diff --git a/modules/arnoldi/.libs/libsciarnoldi.lai b/modules/arnoldi/.libs/libsciarnoldi.lai
new file mode 100755
index 000000000..24758c9ea
--- /dev/null
+++ b/modules/arnoldi/.libs/libsciarnoldi.lai
@@ -0,0 +1,41 @@
+# libsciarnoldi.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='libsciarnoldi.so.5'
+
+# Names of this library.
+library_names='libsciarnoldi.so.5.5.2 libsciarnoldi.so.5 libsciarnoldi.so'
+
+# The name of the static archive.
+old_library=''
+
+# 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 -lblas -llapack -larpack -lpthread -ldl -lcurses -lm'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libsciarnoldi.
+current=10
+age=5
+revision=2
+
+# Is this an already installed library?
+installed=yes
+
+# 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='/usr/local/lib/scilab'
diff --git a/modules/arnoldi/.libs/libsciarnoldi.so b/modules/arnoldi/.libs/libsciarnoldi.so
new file mode 120000
index 000000000..dac417d56
--- /dev/null
+++ b/modules/arnoldi/.libs/libsciarnoldi.so
@@ -0,0 +1 @@
+libsciarnoldi.so.5.5.2 \ No newline at end of file
diff --git a/modules/arnoldi/.libs/libsciarnoldi.so.5 b/modules/arnoldi/.libs/libsciarnoldi.so.5
new file mode 120000
index 000000000..dac417d56
--- /dev/null
+++ b/modules/arnoldi/.libs/libsciarnoldi.so.5
@@ -0,0 +1 @@
+libsciarnoldi.so.5.5.2 \ No newline at end of file
diff --git a/modules/arnoldi/.libs/libsciarnoldi.so.5.5.2 b/modules/arnoldi/.libs/libsciarnoldi.so.5.5.2
new file mode 100755
index 000000000..8fa14c69f
--- /dev/null
+++ b/modules/arnoldi/.libs/libsciarnoldi.so.5.5.2
Binary files differ
diff --git a/modules/arnoldi/Makefile b/modules/arnoldi/Makefile
new file mode 100755
index 000000000..1b0de30b9
--- /dev/null
+++ b/modules/arnoldi/Makefile
@@ -0,0 +1,1395 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# modules/arnoldi/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) 2006 - INRIA - Sylvestre LEDRU
+# Copyright (C) 2012 - Scilab Enterprises- Cedric Delamarre
+#
+# This file is distributed under the same license as the Scilab package.
+
+# 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
+DIST_COMMON = $(top_srcdir)/Makefile.incl.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/config/mkinstalldirs \
+ $(top_srcdir)/config/depcomp
+am__append_1 = java
+subdir = modules/arnoldi
+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)$(libsciarnoldi_la_etcdir)" \
+ "$(DESTDIR)$(libsciarnoldi_la_rootdir)" \
+ "$(DESTDIR)$(libsciarnoldi_la_sci_gatewaydir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libsciarnoldi_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 = src/c/libsciarnoldi_la-eigs.lo \
+ src/c/libsciarnoldi_la-eigs_dependencies.lo
+am__objects_2 = sci_gateway/c/libsciarnoldi_la-sci_dseupd.lo \
+ sci_gateway/c/libsciarnoldi_la-sci_zneupd.lo \
+ sci_gateway/c/libsciarnoldi_la-gw_arnoldi.lo \
+ sci_gateway/c/libsciarnoldi_la-sci_dnaupd.lo \
+ sci_gateway/c/libsciarnoldi_la-sci_dneupd.lo \
+ sci_gateway/c/libsciarnoldi_la-sci_dsaupd.lo \
+ sci_gateway/c/libsciarnoldi_la-sci_znaupd.lo \
+ sci_gateway/c/libsciarnoldi_la-sci_eigs.lo
+am_libsciarnoldi_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libsciarnoldi_la_OBJECTS = $(am_libsciarnoldi_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 =
+libsciarnoldi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libsciarnoldi_la_LDFLAGS) $(LDFLAGS) \
+ -o $@
+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 = $(libsciarnoldi_la_SOURCES)
+DIST_SOURCES = $(libsciarnoldi_la_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DATA = $(libsciarnoldi_la_etc_DATA) $(libsciarnoldi_la_root_DATA) \
+ $(libsciarnoldi_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/arnoldi
+abs_srcdir = /home/shashank/scilab-master_5.5.2/modules/arnoldi
+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 = ../..
+ARNOLDI_C_SOURCES = \
+ src/c/eigs.c \
+ src/c/eigs_dependencies.c
+
+GATEWAY_C_SOURCES = \
+ sci_gateway/c/sci_zneupd \
+ sci_gateway/c/sci_dseupd.c \
+ sci_gateway/c/sci_zneupd.c \
+ sci_gateway/c/gw_arnoldi.c \
+ sci_gateway/c/sci_dnaupd.c \
+ sci_gateway/c/sci_dneupd.c \
+ sci_gateway/c/sci_dsaupd.c \
+ sci_gateway/c/sci_znaupd.c \
+ sci_gateway/c/sci_eigs.c
+
+libsciarnoldi_la_CPPFLAGS = \
+ -I$(srcdir)/includes/ \
+ -I$(top_srcdir)/modules/api_scilab/includes/ \
+ -I$(top_srcdir)/modules/localization/includes/ \
+ -I$(top_srcdir)/modules/output_stream/includes/ \
+ -I$(top_srcdir)/modules/core/includes/ \
+ $(AM_CPPFLAGS)
+
+pkglib_LTLIBRARIES = libsciarnoldi.la
+libsciarnoldi_la_LDFLAGS = $(AM_LDFLAGS)
+libsciarnoldi_la_LIBADD = $(BLAS_LIBS) $(LAPACK_LIBS) $(ARPACK_LIBS)
+libsciarnoldi_la_SOURCES = $(ARNOLDI_C_SOURCES) $(GATEWAY_C_SOURCES)
+
+# For the code check (splint)
+CHECK_SRC = $(ARNOLDI_C_SOURCES) $(GATEWAY_C_SOURCES)
+INCLUDE_FLAGS = $(libsciarnoldi_la_CPPFLAGS)
+
+#### Target ######
+modulename = arnoldi
+
+#### arnoldi : Conf files ####
+libsciarnoldi_la_rootdir = $(mydatadir)
+libsciarnoldi_la_root_DATA = license.txt
+
+#### arnoldi : init scripts ####
+libsciarnoldi_la_etcdir = $(mydatadir)/etc
+libsciarnoldi_la_etc_DATA = etc/arnoldi.quit etc/arnoldi.start
+
+#### arnoldi : gateway declaration ####
+libsciarnoldi_la_sci_gatewaydir = $(mydatadir)/sci_gateway
+libsciarnoldi_la_sci_gateway_DATA = sci_gateway/arnoldi_gateway.xml
+
+# 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_1)
+
+################ 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/arnoldi/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign modules/arnoldi/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):
+
+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/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/libsciarnoldi_la-eigs.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libsciarnoldi_la-eigs_dependencies.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/libsciarnoldi_la-sci_dseupd.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libsciarnoldi_la-sci_zneupd.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libsciarnoldi_la-gw_arnoldi.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libsciarnoldi_la-sci_dnaupd.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libsciarnoldi_la-sci_dneupd.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libsciarnoldi_la-sci_dsaupd.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libsciarnoldi_la-sci_znaupd.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libsciarnoldi_la-sci_eigs.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+
+libsciarnoldi.la: $(libsciarnoldi_la_OBJECTS) $(libsciarnoldi_la_DEPENDENCIES) $(EXTRA_libsciarnoldi_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libsciarnoldi_la_LINK) -rpath $(pkglibdir) $(libsciarnoldi_la_OBJECTS) $(libsciarnoldi_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
+
+distclean-compile:
+ -rm -f *.tab.c
+
+include sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-gw_arnoldi.Plo
+include sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dnaupd.Plo
+include sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dneupd.Plo
+include sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dsaupd.Plo
+include sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dseupd.Plo
+include sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_eigs.Plo
+include sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_znaupd.Plo
+include sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_zneupd.Plo
+include src/c/$(DEPDIR)/libsciarnoldi_la-eigs.Plo
+include src/c/$(DEPDIR)/libsciarnoldi_la-eigs_dependencies.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/c/libsciarnoldi_la-eigs.lo: src/c/eigs.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libsciarnoldi_la-eigs.lo -MD -MP -MF src/c/$(DEPDIR)/libsciarnoldi_la-eigs.Tpo -c -o src/c/libsciarnoldi_la-eigs.lo `test -f 'src/c/eigs.c' || echo '$(srcdir)/'`src/c/eigs.c
+ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libsciarnoldi_la-eigs.Tpo src/c/$(DEPDIR)/libsciarnoldi_la-eigs.Plo
+# $(AM_V_CC)source='src/c/eigs.c' object='src/c/libsciarnoldi_la-eigs.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libsciarnoldi_la-eigs.lo `test -f 'src/c/eigs.c' || echo '$(srcdir)/'`src/c/eigs.c
+
+src/c/libsciarnoldi_la-eigs_dependencies.lo: src/c/eigs_dependencies.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libsciarnoldi_la-eigs_dependencies.lo -MD -MP -MF src/c/$(DEPDIR)/libsciarnoldi_la-eigs_dependencies.Tpo -c -o src/c/libsciarnoldi_la-eigs_dependencies.lo `test -f 'src/c/eigs_dependencies.c' || echo '$(srcdir)/'`src/c/eigs_dependencies.c
+ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libsciarnoldi_la-eigs_dependencies.Tpo src/c/$(DEPDIR)/libsciarnoldi_la-eigs_dependencies.Plo
+# $(AM_V_CC)source='src/c/eigs_dependencies.c' object='src/c/libsciarnoldi_la-eigs_dependencies.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libsciarnoldi_la-eigs_dependencies.lo `test -f 'src/c/eigs_dependencies.c' || echo '$(srcdir)/'`src/c/eigs_dependencies.c
+
+sci_gateway/c/libsciarnoldi_la-sci_dseupd.lo: sci_gateway/c/sci_dseupd.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libsciarnoldi_la-sci_dseupd.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dseupd.Tpo -c -o sci_gateway/c/libsciarnoldi_la-sci_dseupd.lo `test -f 'sci_gateway/c/sci_dseupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dseupd.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dseupd.Tpo sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dseupd.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_dseupd.c' object='sci_gateway/c/libsciarnoldi_la-sci_dseupd.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libsciarnoldi_la-sci_dseupd.lo `test -f 'sci_gateway/c/sci_dseupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dseupd.c
+
+sci_gateway/c/libsciarnoldi_la-sci_zneupd.lo: sci_gateway/c/sci_zneupd.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libsciarnoldi_la-sci_zneupd.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_zneupd.Tpo -c -o sci_gateway/c/libsciarnoldi_la-sci_zneupd.lo `test -f 'sci_gateway/c/sci_zneupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_zneupd.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_zneupd.Tpo sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_zneupd.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_zneupd.c' object='sci_gateway/c/libsciarnoldi_la-sci_zneupd.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libsciarnoldi_la-sci_zneupd.lo `test -f 'sci_gateway/c/sci_zneupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_zneupd.c
+
+sci_gateway/c/libsciarnoldi_la-gw_arnoldi.lo: sci_gateway/c/gw_arnoldi.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libsciarnoldi_la-gw_arnoldi.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-gw_arnoldi.Tpo -c -o sci_gateway/c/libsciarnoldi_la-gw_arnoldi.lo `test -f 'sci_gateway/c/gw_arnoldi.c' || echo '$(srcdir)/'`sci_gateway/c/gw_arnoldi.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-gw_arnoldi.Tpo sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-gw_arnoldi.Plo
+# $(AM_V_CC)source='sci_gateway/c/gw_arnoldi.c' object='sci_gateway/c/libsciarnoldi_la-gw_arnoldi.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libsciarnoldi_la-gw_arnoldi.lo `test -f 'sci_gateway/c/gw_arnoldi.c' || echo '$(srcdir)/'`sci_gateway/c/gw_arnoldi.c
+
+sci_gateway/c/libsciarnoldi_la-sci_dnaupd.lo: sci_gateway/c/sci_dnaupd.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libsciarnoldi_la-sci_dnaupd.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dnaupd.Tpo -c -o sci_gateway/c/libsciarnoldi_la-sci_dnaupd.lo `test -f 'sci_gateway/c/sci_dnaupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dnaupd.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dnaupd.Tpo sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dnaupd.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_dnaupd.c' object='sci_gateway/c/libsciarnoldi_la-sci_dnaupd.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libsciarnoldi_la-sci_dnaupd.lo `test -f 'sci_gateway/c/sci_dnaupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dnaupd.c
+
+sci_gateway/c/libsciarnoldi_la-sci_dneupd.lo: sci_gateway/c/sci_dneupd.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libsciarnoldi_la-sci_dneupd.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dneupd.Tpo -c -o sci_gateway/c/libsciarnoldi_la-sci_dneupd.lo `test -f 'sci_gateway/c/sci_dneupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dneupd.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dneupd.Tpo sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dneupd.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_dneupd.c' object='sci_gateway/c/libsciarnoldi_la-sci_dneupd.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libsciarnoldi_la-sci_dneupd.lo `test -f 'sci_gateway/c/sci_dneupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dneupd.c
+
+sci_gateway/c/libsciarnoldi_la-sci_dsaupd.lo: sci_gateway/c/sci_dsaupd.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libsciarnoldi_la-sci_dsaupd.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dsaupd.Tpo -c -o sci_gateway/c/libsciarnoldi_la-sci_dsaupd.lo `test -f 'sci_gateway/c/sci_dsaupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dsaupd.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dsaupd.Tpo sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dsaupd.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_dsaupd.c' object='sci_gateway/c/libsciarnoldi_la-sci_dsaupd.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libsciarnoldi_la-sci_dsaupd.lo `test -f 'sci_gateway/c/sci_dsaupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dsaupd.c
+
+sci_gateway/c/libsciarnoldi_la-sci_znaupd.lo: sci_gateway/c/sci_znaupd.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libsciarnoldi_la-sci_znaupd.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_znaupd.Tpo -c -o sci_gateway/c/libsciarnoldi_la-sci_znaupd.lo `test -f 'sci_gateway/c/sci_znaupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_znaupd.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_znaupd.Tpo sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_znaupd.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_znaupd.c' object='sci_gateway/c/libsciarnoldi_la-sci_znaupd.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libsciarnoldi_la-sci_znaupd.lo `test -f 'sci_gateway/c/sci_znaupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_znaupd.c
+
+sci_gateway/c/libsciarnoldi_la-sci_eigs.lo: sci_gateway/c/sci_eigs.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libsciarnoldi_la-sci_eigs.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_eigs.Tpo -c -o sci_gateway/c/libsciarnoldi_la-sci_eigs.lo `test -f 'sci_gateway/c/sci_eigs.c' || echo '$(srcdir)/'`sci_gateway/c/sci_eigs.c
+ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_eigs.Tpo sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_eigs.Plo
+# $(AM_V_CC)source='sci_gateway/c/sci_eigs.c' object='sci_gateway/c/libsciarnoldi_la-sci_eigs.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libsciarnoldi_la-sci_eigs.lo `test -f 'sci_gateway/c/sci_eigs.c' || echo '$(srcdir)/'`sci_gateway/c/sci_eigs.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
+install-libsciarnoldi_la_etcDATA: $(libsciarnoldi_la_etc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libsciarnoldi_la_etc_DATA)'; test -n "$(libsciarnoldi_la_etcdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libsciarnoldi_la_etcdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libsciarnoldi_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)$(libsciarnoldi_la_etcdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libsciarnoldi_la_etcdir)" || exit $$?; \
+ done
+
+uninstall-libsciarnoldi_la_etcDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libsciarnoldi_la_etc_DATA)'; test -n "$(libsciarnoldi_la_etcdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libsciarnoldi_la_etcdir)'; $(am__uninstall_files_from_dir)
+install-libsciarnoldi_la_rootDATA: $(libsciarnoldi_la_root_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libsciarnoldi_la_root_DATA)'; test -n "$(libsciarnoldi_la_rootdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libsciarnoldi_la_rootdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libsciarnoldi_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)$(libsciarnoldi_la_rootdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libsciarnoldi_la_rootdir)" || exit $$?; \
+ done
+
+uninstall-libsciarnoldi_la_rootDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libsciarnoldi_la_root_DATA)'; test -n "$(libsciarnoldi_la_rootdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libsciarnoldi_la_rootdir)'; $(am__uninstall_files_from_dir)
+install-libsciarnoldi_la_sci_gatewayDATA: $(libsciarnoldi_la_sci_gateway_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libsciarnoldi_la_sci_gateway_DATA)'; test -n "$(libsciarnoldi_la_sci_gatewaydir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libsciarnoldi_la_sci_gatewaydir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libsciarnoldi_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)$(libsciarnoldi_la_sci_gatewaydir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libsciarnoldi_la_sci_gatewaydir)" || exit $$?; \
+ done
+
+uninstall-libsciarnoldi_la_sci_gatewayDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libsciarnoldi_la_sci_gateway_DATA)'; test -n "$(libsciarnoldi_la_sci_gatewaydir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libsciarnoldi_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)$(libsciarnoldi_la_etcdir)" "$(DESTDIR)$(libsciarnoldi_la_rootdir)" "$(DESTDIR)$(libsciarnoldi_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)
+
+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-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf sci_gateway/c/$(DEPDIR) src/c/$(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-libsciarnoldi_la_etcDATA \
+ install-libsciarnoldi_la_rootDATA \
+ install-libsciarnoldi_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)
+ -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-libsciarnoldi_la_etcDATA \
+ uninstall-libsciarnoldi_la_rootDATA \
+ uninstall-libsciarnoldi_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-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-libsciarnoldi_la_etcDATA \
+ install-libsciarnoldi_la_rootDATA \
+ install-libsciarnoldi_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-libsciarnoldi_la_etcDATA \
+ uninstall-libsciarnoldi_la_rootDATA \
+ uninstall-libsciarnoldi_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/arnoldi/Makefile.am b/modules/arnoldi/Makefile.am
new file mode 100755
index 000000000..f62230bc8
--- /dev/null
+++ b/modules/arnoldi/Makefile.am
@@ -0,0 +1,58 @@
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) 2006 - INRIA - Sylvestre LEDRU
+# Copyright (C) 2012 - Scilab Enterprises- Cedric Delamarre
+#
+# This file is distributed under the same license as the Scilab package.
+
+ARNOLDI_C_SOURCES = \
+ src/c/eigs.c \
+ src/c/eigs_dependencies.c
+
+GATEWAY_C_SOURCES = \
+ sci_gateway/c/sci_zneupd \
+ sci_gateway/c/sci_dseupd.c \
+ sci_gateway/c/sci_zneupd.c \
+ sci_gateway/c/gw_arnoldi.c \
+ sci_gateway/c/sci_dnaupd.c \
+ sci_gateway/c/sci_dneupd.c \
+ sci_gateway/c/sci_dsaupd.c \
+ sci_gateway/c/sci_znaupd.c \
+ sci_gateway/c/sci_eigs.c
+
+libsciarnoldi_la_CPPFLAGS = \
+ -I$(srcdir)/includes/ \
+ -I$(top_srcdir)/modules/api_scilab/includes/ \
+ -I$(top_srcdir)/modules/localization/includes/ \
+ -I$(top_srcdir)/modules/output_stream/includes/ \
+ -I$(top_srcdir)/modules/core/includes/ \
+ $(AM_CPPFLAGS)
+
+pkglib_LTLIBRARIES = libsciarnoldi.la
+
+libsciarnoldi_la_LDFLAGS = $(AM_LDFLAGS)
+libsciarnoldi_la_LIBADD = $(BLAS_LIBS) $(LAPACK_LIBS) $(ARPACK_LIBS)
+
+libsciarnoldi_la_SOURCES = $(ARNOLDI_C_SOURCES) $(GATEWAY_C_SOURCES)
+
+# For the code check (splint)
+CHECK_SRC= $(ARNOLDI_C_SOURCES) $(GATEWAY_C_SOURCES)
+INCLUDE_FLAGS = $(libsciarnoldi_la_CPPFLAGS)
+
+#### Target ######
+modulename=arnoldi
+
+
+#### arnoldi : Conf files ####
+libsciarnoldi_la_rootdir = $(mydatadir)
+libsciarnoldi_la_root_DATA = license.txt
+
+
+#### arnoldi : init scripts ####
+libsciarnoldi_la_etcdir = $(mydatadir)/etc
+libsciarnoldi_la_etc_DATA = etc/arnoldi.quit etc/arnoldi.start
+
+#### arnoldi : gateway declaration ####
+libsciarnoldi_la_sci_gatewaydir = $(mydatadir)/sci_gateway
+libsciarnoldi_la_sci_gateway_DATA = sci_gateway/arnoldi_gateway.xml
+
+include $(top_srcdir)/Makefile.incl.am
diff --git a/modules/arnoldi/Makefile.in b/modules/arnoldi/Makefile.in
new file mode 100755
index 000000000..beef27c56
--- /dev/null
+++ b/modules/arnoldi/Makefile.in
@@ -0,0 +1,1395 @@
+# 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) 2006 - INRIA - Sylvestre LEDRU
+# Copyright (C) 2012 - Scilab Enterprises- Cedric Delamarre
+#
+# This file is distributed under the same license as the Scilab package.
+
+# 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@
+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_1 = java
+subdir = modules/arnoldi
+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)$(libsciarnoldi_la_etcdir)" \
+ "$(DESTDIR)$(libsciarnoldi_la_rootdir)" \
+ "$(DESTDIR)$(libsciarnoldi_la_sci_gatewaydir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libsciarnoldi_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 = src/c/libsciarnoldi_la-eigs.lo \
+ src/c/libsciarnoldi_la-eigs_dependencies.lo
+am__objects_2 = sci_gateway/c/libsciarnoldi_la-sci_dseupd.lo \
+ sci_gateway/c/libsciarnoldi_la-sci_zneupd.lo \
+ sci_gateway/c/libsciarnoldi_la-gw_arnoldi.lo \
+ sci_gateway/c/libsciarnoldi_la-sci_dnaupd.lo \
+ sci_gateway/c/libsciarnoldi_la-sci_dneupd.lo \
+ sci_gateway/c/libsciarnoldi_la-sci_dsaupd.lo \
+ sci_gateway/c/libsciarnoldi_la-sci_znaupd.lo \
+ sci_gateway/c/libsciarnoldi_la-sci_eigs.lo
+am_libsciarnoldi_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+libsciarnoldi_la_OBJECTS = $(am_libsciarnoldi_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 =
+libsciarnoldi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) $(libsciarnoldi_la_LDFLAGS) $(LDFLAGS) \
+ -o $@
+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 = $(libsciarnoldi_la_SOURCES)
+DIST_SOURCES = $(libsciarnoldi_la_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DATA = $(libsciarnoldi_la_etc_DATA) $(libsciarnoldi_la_root_DATA) \
+ $(libsciarnoldi_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@
+ARNOLDI_C_SOURCES = \
+ src/c/eigs.c \
+ src/c/eigs_dependencies.c
+
+GATEWAY_C_SOURCES = \
+ sci_gateway/c/sci_zneupd \
+ sci_gateway/c/sci_dseupd.c \
+ sci_gateway/c/sci_zneupd.c \
+ sci_gateway/c/gw_arnoldi.c \
+ sci_gateway/c/sci_dnaupd.c \
+ sci_gateway/c/sci_dneupd.c \
+ sci_gateway/c/sci_dsaupd.c \
+ sci_gateway/c/sci_znaupd.c \
+ sci_gateway/c/sci_eigs.c
+
+libsciarnoldi_la_CPPFLAGS = \
+ -I$(srcdir)/includes/ \
+ -I$(top_srcdir)/modules/api_scilab/includes/ \
+ -I$(top_srcdir)/modules/localization/includes/ \
+ -I$(top_srcdir)/modules/output_stream/includes/ \
+ -I$(top_srcdir)/modules/core/includes/ \
+ $(AM_CPPFLAGS)
+
+pkglib_LTLIBRARIES = libsciarnoldi.la
+libsciarnoldi_la_LDFLAGS = $(AM_LDFLAGS)
+libsciarnoldi_la_LIBADD = $(BLAS_LIBS) $(LAPACK_LIBS) $(ARPACK_LIBS)
+libsciarnoldi_la_SOURCES = $(ARNOLDI_C_SOURCES) $(GATEWAY_C_SOURCES)
+
+# For the code check (splint)
+CHECK_SRC = $(ARNOLDI_C_SOURCES) $(GATEWAY_C_SOURCES)
+INCLUDE_FLAGS = $(libsciarnoldi_la_CPPFLAGS)
+
+#### Target ######
+modulename = arnoldi
+
+#### arnoldi : Conf files ####
+libsciarnoldi_la_rootdir = $(mydatadir)
+libsciarnoldi_la_root_DATA = license.txt
+
+#### arnoldi : init scripts ####
+libsciarnoldi_la_etcdir = $(mydatadir)/etc
+libsciarnoldi_la_etc_DATA = etc/arnoldi.quit etc/arnoldi.start
+
+#### arnoldi : gateway declaration ####
+libsciarnoldi_la_sci_gatewaydir = $(mydatadir)/sci_gateway
+libsciarnoldi_la_sci_gateway_DATA = sci_gateway/arnoldi_gateway.xml
+
+# 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_1)
+
+################ 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/arnoldi/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign modules/arnoldi/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):
+
+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/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/libsciarnoldi_la-eigs.lo: src/c/$(am__dirstamp) \
+ src/c/$(DEPDIR)/$(am__dirstamp)
+src/c/libsciarnoldi_la-eigs_dependencies.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/libsciarnoldi_la-sci_dseupd.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libsciarnoldi_la-sci_zneupd.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libsciarnoldi_la-gw_arnoldi.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libsciarnoldi_la-sci_dnaupd.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libsciarnoldi_la-sci_dneupd.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libsciarnoldi_la-sci_dsaupd.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libsciarnoldi_la-sci_znaupd.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+sci_gateway/c/libsciarnoldi_la-sci_eigs.lo: \
+ sci_gateway/c/$(am__dirstamp) \
+ sci_gateway/c/$(DEPDIR)/$(am__dirstamp)
+
+libsciarnoldi.la: $(libsciarnoldi_la_OBJECTS) $(libsciarnoldi_la_DEPENDENCIES) $(EXTRA_libsciarnoldi_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libsciarnoldi_la_LINK) -rpath $(pkglibdir) $(libsciarnoldi_la_OBJECTS) $(libsciarnoldi_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
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-gw_arnoldi.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dnaupd.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dneupd.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dsaupd.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dseupd.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_eigs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_znaupd.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_zneupd.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libsciarnoldi_la-eigs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/c/$(DEPDIR)/libsciarnoldi_la-eigs_dependencies.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/c/libsciarnoldi_la-eigs.lo: src/c/eigs.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libsciarnoldi_la-eigs.lo -MD -MP -MF src/c/$(DEPDIR)/libsciarnoldi_la-eigs.Tpo -c -o src/c/libsciarnoldi_la-eigs.lo `test -f 'src/c/eigs.c' || echo '$(srcdir)/'`src/c/eigs.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libsciarnoldi_la-eigs.Tpo src/c/$(DEPDIR)/libsciarnoldi_la-eigs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/c/eigs.c' object='src/c/libsciarnoldi_la-eigs.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libsciarnoldi_la-eigs.lo `test -f 'src/c/eigs.c' || echo '$(srcdir)/'`src/c/eigs.c
+
+src/c/libsciarnoldi_la-eigs_dependencies.lo: src/c/eigs_dependencies.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/c/libsciarnoldi_la-eigs_dependencies.lo -MD -MP -MF src/c/$(DEPDIR)/libsciarnoldi_la-eigs_dependencies.Tpo -c -o src/c/libsciarnoldi_la-eigs_dependencies.lo `test -f 'src/c/eigs_dependencies.c' || echo '$(srcdir)/'`src/c/eigs_dependencies.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/c/$(DEPDIR)/libsciarnoldi_la-eigs_dependencies.Tpo src/c/$(DEPDIR)/libsciarnoldi_la-eigs_dependencies.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/c/eigs_dependencies.c' object='src/c/libsciarnoldi_la-eigs_dependencies.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/c/libsciarnoldi_la-eigs_dependencies.lo `test -f 'src/c/eigs_dependencies.c' || echo '$(srcdir)/'`src/c/eigs_dependencies.c
+
+sci_gateway/c/libsciarnoldi_la-sci_dseupd.lo: sci_gateway/c/sci_dseupd.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libsciarnoldi_la-sci_dseupd.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dseupd.Tpo -c -o sci_gateway/c/libsciarnoldi_la-sci_dseupd.lo `test -f 'sci_gateway/c/sci_dseupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dseupd.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dseupd.Tpo sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dseupd.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_dseupd.c' object='sci_gateway/c/libsciarnoldi_la-sci_dseupd.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libsciarnoldi_la-sci_dseupd.lo `test -f 'sci_gateway/c/sci_dseupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dseupd.c
+
+sci_gateway/c/libsciarnoldi_la-sci_zneupd.lo: sci_gateway/c/sci_zneupd.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libsciarnoldi_la-sci_zneupd.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_zneupd.Tpo -c -o sci_gateway/c/libsciarnoldi_la-sci_zneupd.lo `test -f 'sci_gateway/c/sci_zneupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_zneupd.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_zneupd.Tpo sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_zneupd.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_zneupd.c' object='sci_gateway/c/libsciarnoldi_la-sci_zneupd.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libsciarnoldi_la-sci_zneupd.lo `test -f 'sci_gateway/c/sci_zneupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_zneupd.c
+
+sci_gateway/c/libsciarnoldi_la-gw_arnoldi.lo: sci_gateway/c/gw_arnoldi.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libsciarnoldi_la-gw_arnoldi.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-gw_arnoldi.Tpo -c -o sci_gateway/c/libsciarnoldi_la-gw_arnoldi.lo `test -f 'sci_gateway/c/gw_arnoldi.c' || echo '$(srcdir)/'`sci_gateway/c/gw_arnoldi.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-gw_arnoldi.Tpo sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-gw_arnoldi.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/gw_arnoldi.c' object='sci_gateway/c/libsciarnoldi_la-gw_arnoldi.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libsciarnoldi_la-gw_arnoldi.lo `test -f 'sci_gateway/c/gw_arnoldi.c' || echo '$(srcdir)/'`sci_gateway/c/gw_arnoldi.c
+
+sci_gateway/c/libsciarnoldi_la-sci_dnaupd.lo: sci_gateway/c/sci_dnaupd.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libsciarnoldi_la-sci_dnaupd.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dnaupd.Tpo -c -o sci_gateway/c/libsciarnoldi_la-sci_dnaupd.lo `test -f 'sci_gateway/c/sci_dnaupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dnaupd.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dnaupd.Tpo sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dnaupd.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_dnaupd.c' object='sci_gateway/c/libsciarnoldi_la-sci_dnaupd.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libsciarnoldi_la-sci_dnaupd.lo `test -f 'sci_gateway/c/sci_dnaupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dnaupd.c
+
+sci_gateway/c/libsciarnoldi_la-sci_dneupd.lo: sci_gateway/c/sci_dneupd.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libsciarnoldi_la-sci_dneupd.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dneupd.Tpo -c -o sci_gateway/c/libsciarnoldi_la-sci_dneupd.lo `test -f 'sci_gateway/c/sci_dneupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dneupd.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dneupd.Tpo sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dneupd.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_dneupd.c' object='sci_gateway/c/libsciarnoldi_la-sci_dneupd.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libsciarnoldi_la-sci_dneupd.lo `test -f 'sci_gateway/c/sci_dneupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dneupd.c
+
+sci_gateway/c/libsciarnoldi_la-sci_dsaupd.lo: sci_gateway/c/sci_dsaupd.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libsciarnoldi_la-sci_dsaupd.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dsaupd.Tpo -c -o sci_gateway/c/libsciarnoldi_la-sci_dsaupd.lo `test -f 'sci_gateway/c/sci_dsaupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dsaupd.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dsaupd.Tpo sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_dsaupd.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_dsaupd.c' object='sci_gateway/c/libsciarnoldi_la-sci_dsaupd.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libsciarnoldi_la-sci_dsaupd.lo `test -f 'sci_gateway/c/sci_dsaupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_dsaupd.c
+
+sci_gateway/c/libsciarnoldi_la-sci_znaupd.lo: sci_gateway/c/sci_znaupd.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libsciarnoldi_la-sci_znaupd.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_znaupd.Tpo -c -o sci_gateway/c/libsciarnoldi_la-sci_znaupd.lo `test -f 'sci_gateway/c/sci_znaupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_znaupd.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_znaupd.Tpo sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_znaupd.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_znaupd.c' object='sci_gateway/c/libsciarnoldi_la-sci_znaupd.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libsciarnoldi_la-sci_znaupd.lo `test -f 'sci_gateway/c/sci_znaupd.c' || echo '$(srcdir)/'`sci_gateway/c/sci_znaupd.c
+
+sci_gateway/c/libsciarnoldi_la-sci_eigs.lo: sci_gateway/c/sci_eigs.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sci_gateway/c/libsciarnoldi_la-sci_eigs.lo -MD -MP -MF sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_eigs.Tpo -c -o sci_gateway/c/libsciarnoldi_la-sci_eigs.lo `test -f 'sci_gateway/c/sci_eigs.c' || echo '$(srcdir)/'`sci_gateway/c/sci_eigs.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_eigs.Tpo sci_gateway/c/$(DEPDIR)/libsciarnoldi_la-sci_eigs.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sci_gateway/c/sci_eigs.c' object='sci_gateway/c/libsciarnoldi_la-sci_eigs.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) $(libsciarnoldi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sci_gateway/c/libsciarnoldi_la-sci_eigs.lo `test -f 'sci_gateway/c/sci_eigs.c' || echo '$(srcdir)/'`sci_gateway/c/sci_eigs.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
+install-libsciarnoldi_la_etcDATA: $(libsciarnoldi_la_etc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libsciarnoldi_la_etc_DATA)'; test -n "$(libsciarnoldi_la_etcdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libsciarnoldi_la_etcdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libsciarnoldi_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)$(libsciarnoldi_la_etcdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libsciarnoldi_la_etcdir)" || exit $$?; \
+ done
+
+uninstall-libsciarnoldi_la_etcDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libsciarnoldi_la_etc_DATA)'; test -n "$(libsciarnoldi_la_etcdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libsciarnoldi_la_etcdir)'; $(am__uninstall_files_from_dir)
+install-libsciarnoldi_la_rootDATA: $(libsciarnoldi_la_root_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libsciarnoldi_la_root_DATA)'; test -n "$(libsciarnoldi_la_rootdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libsciarnoldi_la_rootdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libsciarnoldi_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)$(libsciarnoldi_la_rootdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libsciarnoldi_la_rootdir)" || exit $$?; \
+ done
+
+uninstall-libsciarnoldi_la_rootDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libsciarnoldi_la_root_DATA)'; test -n "$(libsciarnoldi_la_rootdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libsciarnoldi_la_rootdir)'; $(am__uninstall_files_from_dir)
+install-libsciarnoldi_la_sci_gatewayDATA: $(libsciarnoldi_la_sci_gateway_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libsciarnoldi_la_sci_gateway_DATA)'; test -n "$(libsciarnoldi_la_sci_gatewaydir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libsciarnoldi_la_sci_gatewaydir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libsciarnoldi_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)$(libsciarnoldi_la_sci_gatewaydir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libsciarnoldi_la_sci_gatewaydir)" || exit $$?; \
+ done
+
+uninstall-libsciarnoldi_la_sci_gatewayDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libsciarnoldi_la_sci_gateway_DATA)'; test -n "$(libsciarnoldi_la_sci_gatewaydir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libsciarnoldi_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)$(libsciarnoldi_la_etcdir)" "$(DESTDIR)$(libsciarnoldi_la_rootdir)" "$(DESTDIR)$(libsciarnoldi_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)
+
+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-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf sci_gateway/c/$(DEPDIR) src/c/$(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-libsciarnoldi_la_etcDATA \
+ install-libsciarnoldi_la_rootDATA \
+ install-libsciarnoldi_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)
+ -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-libsciarnoldi_la_etcDATA \
+ uninstall-libsciarnoldi_la_rootDATA \
+ uninstall-libsciarnoldi_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-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-libsciarnoldi_la_etcDATA \
+ install-libsciarnoldi_la_rootDATA \
+ install-libsciarnoldi_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-libsciarnoldi_la_etcDATA \
+ uninstall-libsciarnoldi_la_rootDATA \
+ uninstall-libsciarnoldi_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/arnoldi/arnoldi.iss b/modules/arnoldi/arnoldi.iss
new file mode 100755
index 000000000..51bc2d033
--- /dev/null
+++ b/modules/arnoldi/arnoldi.iss
@@ -0,0 +1,48 @@
+;
+; 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)
+;
+;--------------------------------------------------------------------------------------------------------------
+; arnoldi module
+;--------------------------------------------------------------------------------------------------------------
+;
+#define ARNOLDI "arnoldi"
+;
+Source: bin\{#ARNOLDI}.dll; DestDir: {app}\bin; Components: {#COMPN_SCILAB};
+;Source: bin\no{#ARNOLDI}.dll; DestDir: {app}\bin; DestName: arnoldi.dll; Components: not ({#COMPN_SCILAB})
+;
+Source: bin\Arpack.dll; DestDir: {app}\bin; Components: {#COMPN_SCILAB}
+;
+Source: modules\{#ARNOLDI}\license.txt; DestDir: {app}\modules\{#ARNOLDI}; Components: {#COMPN_SCILAB}
+;
+Source: modules\{#ARNOLDI}\sci_gateway\{#ARNOLDI}_gateway.xml; DestDir: {app}\modules\{#ARNOLDI}\sci_gateway; Components: {#COMPN_SCILAB}
+;
+Source: modules\{#ARNOLDI}\etc\{#ARNOLDI}.quit; DestDir: {app}\modules\{#ARNOLDI}\etc; Components: {#COMPN_SCILAB}
+Source: modules\{#ARNOLDI}\etc\{#ARNOLDI}.start; DestDir: {app}\modules\{#ARNOLDI}\etc; Components: {#COMPN_SCILAB}
+;
+;
+;Source: modules\{#ARNOLDI}\includes\*.h; DestDir: {app}\modules\{#ARNOLDI}\includes; Components: {#COMPN_SCILAB}
+;
+Source: modules\{#ARNOLDI}\macros\lib; DestDir: {app}\modules\{#ARNOLDI}\macros; Components: {#COMPN_SCILAB}
+Source: modules\{#ARNOLDI}\macros\names; DestDir: {app}\modules\{#ARNOLDI}\macros; Components: {#COMPN_SCILAB}
+Source: modules\{#ARNOLDI}\macros\*.bin; DestDir: {app}\modules\{#ARNOLDI}\macros; Components: {#COMPN_SCILAB}
+Source: modules\{#ARNOLDI}\macros\*.sci; DestDir: {app}\modules\{#ARNOLDI}\macros; Components: {#COMPN_SCILAB}
+Source: modules\{#ARNOLDI}\macros\buildmacros.sce; DestDir: {app}\modules\{#ARNOLDI}\macros; Components: {#COMPN_SCILAB}
+Source: modules\{#ARNOLDI}\macros\buildmacros.bat; DestDir: {app}\modules\{#ARNOLDI}\macros; Components: {#COMPN_SCILAB}
+Source: modules\{#ARNOLDI}\macros\cleanmacros.bat; DestDir: {app}\modules\{#ARNOLDI}\macros; Components: {#COMPN_SCILAB}
+;
+;Source: modules\{#ARNOLDI}\demos\*.*; DestDir: {app}\modules\{#ARNOLDI}\demos; Components: {#COMPN_SCILAB}
+;
+Source: modules\{#ARNOLDI}\tests\*.*; DestDir: {app}\modules\{#ARNOLDI}\tests; Flags: recursesubdirs; Components: {#COMPN_SCILAB} and {#COMPN_TESTS}
+;
+;--------------------------------------------------------------------------------------------------------------
diff --git a/modules/arnoldi/arnoldi.vcxproj b/modules/arnoldi/arnoldi.vcxproj
new file mode 100755
index 000000000..55faa77cc
--- /dev/null
+++ b/modules/arnoldi/arnoldi.vcxproj
@@ -0,0 +1,237 @@
+<?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>{D575A6BA-094A-45EC-8F8D-2DF7A2C37AA6}</ProjectGuid>
+ <RootNamespace>arnoldi</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;../core/includes;../output_stream/includes;../localization/includes;../../libs/intl;../api_scilab/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>FORDLL;_DEBUG;_WINDOWS;_USRDLL;ARNOLDI_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</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.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;../core/includes;../output_stream/includes;../localization/includes;../../libs/intl;../api_scilab/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>FORDLL;_DEBUG;_WINDOWS;_USRDLL;ARNOLDI_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</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.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;../core/includes;../output_stream/includes;../localization/includes;../../libs/intl;../api_scilab/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>FORDLL;NDEBUG;_WINDOWS;_USRDLL;ARNOLDI_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</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <ProgramDatabaseFile>../../bin/$(ProjectName).pdb</ProgramDatabaseFile>
+ <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;../core/includes;../output_stream/includes;../localization/includes;../../libs/intl;../api_scilab/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>FORDLL;NDEBUG;_WINDOWS;_USRDLL;ARNOLDI_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</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(SolutionDir)bin\$(ProjectName).dll</OutputFile>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <ProgramDatabaseFile>../../bin/$(ProjectName).pdb</ProgramDatabaseFile>
+ <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_eigs.c" />
+ <ClCompile Include="src\c\DllmainArnoldi.c" />
+ <ClCompile Include="sci_gateway\c\gw_arnoldi.c" />
+ <ClCompile Include="sci_gateway\c\sci_dnaupd.c" />
+ <ClCompile Include="sci_gateway\c\sci_dneupd.c" />
+ <ClCompile Include="sci_gateway\c\sci_dsaupd.c" />
+ <ClCompile Include="sci_gateway\c\sci_dseupd.c" />
+ <ClCompile Include="sci_gateway\c\sci_znaupd.c" />
+ <ClCompile Include="sci_gateway\c\sci_zneupd.c" />
+ <ClCompile Include="src\c\eigs.c" />
+ <ClCompile Include="src\c\eigs_dependencies.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="includes\dynlib_arnoldi.h" />
+ <ClInclude Include="includes\eigs.h" />
+ <ClInclude Include="includes\eigs_dependencies.h" />
+ <ClInclude Include="includes\gw_arnoldi.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="src\c\arnoldi.rc" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="locales\arnoldi.pot" />
+ <None Include="core_import.def" />
+ <None Include="arnoldi.iss" />
+ <None Include="sci_gateway\arnoldi_gateway.xml" />
+ <None Include="Makefile.am" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\tools\Dumpexts\Dumpexts.vcxproj">
+ <Project>{3170e4c2-1173-4264-a222-7ee8ccb3ddf7}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="..\api_scilab\api_scilab.vcxproj">
+ <Project>{43c5bab1-1dca-4743-a183-77e0d42fe7d0}</Project>
+ </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/arnoldi/arnoldi.vcxproj.filters b/modules/arnoldi/arnoldi.vcxproj.filters
new file mode 100755
index 000000000..4af16d7b5
--- /dev/null
+++ b/modules/arnoldi/arnoldi.vcxproj.filters
@@ -0,0 +1,91 @@
+<?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>{760d925c-bd4c-44a8-ad31-634e1b27aa4e}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Libraries Dependencies">
+ <UniqueIdentifier>{7c1989ba-dca2-4d24-9c25-35eee220f18b}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Libraries Dependencies\Imports">
+ <UniqueIdentifier>{64fd0c21-ceb7-497b-8a4f-1b5b2b55a65b}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="src\c\DllmainArnoldi.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\gw_arnoldi.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\sci_dnaupd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\sci_dneupd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\sci_dsaupd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\sci_dseupd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\sci_znaupd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\sci_zneupd.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\c\eigs.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="src\c\eigs_dependencies.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="sci_gateway\c\sci_eigs.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="includes\dynlib_arnoldi.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\gw_arnoldi.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\eigs.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="includes\eigs_dependencies.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="src\c\arnoldi.rc">
+ <Filter>Resource Files</Filter>
+ </ResourceCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="core_import.def">
+ <Filter>Libraries Dependencies\Imports</Filter>
+ </None>
+ <None Include="arnoldi.iss" />
+ <None Include="sci_gateway\arnoldi_gateway.xml" />
+ <None Include="Makefile.am" />
+ <None Include="locales\arnoldi.pot">
+ <Filter>localization</Filter>
+ </None>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/modules/arnoldi/core_Import.def b/modules/arnoldi/core_Import.def
new file mode 100755
index 000000000..c1d2ef0fc
--- /dev/null
+++ b/modules/arnoldi/core_Import.def
@@ -0,0 +1,17 @@
+LIBRARY core.dll
+
+
+EXPORTS
+;
+callFunctionFromGateway
+com_
+putlhsvar_
+intersci_
+errorinfo_
+stack_
+getrhsvar_
+checklhs_
+checkrhs_
+isanan_
+MyHeapAlloc
+MyHeapFree
diff --git a/modules/arnoldi/demos/dnsimp.sce b/modules/arnoldi/demos/dnsimp.sce
new file mode 100755
index 000000000..59f1c142a
--- /dev/null
+++ b/modules/arnoldi/demos/dnsimp.sce
@@ -0,0 +1,225 @@
+// Example converted from dnsimp.f from the EXAMPLE/SIMPLE ARPACK directory
+
+// This example program is intended to illustrate the simplest case of using the ARNOLDI module in considerable detail.
+//
+// This code shows how to use ARNOLDI to find a few eigenvalues (lambda) and corresponding eigenvectors (x) for the standard
+// eigenvalue problem:
+//
+// A*x = lambda*x
+//
+// where A is a n by n real nonsymmetric matrix.
+//
+// The main points illustrated here are
+//
+// 1) How to declare sufficient memory to find NEV eigenvalues of largest magnitude. Other options are available.
+//
+// 2) Illustration of the reverse communication interface needed to utilize the top level ARPACK routine DNAUPD
+// that computes the quantities needed to construct the desired eigenvalues and eigenvectors(if requested).
+//
+// 3) How to extract the desired eigenvalues and eigenvectors using the ARPACK routine DNEUPD.
+//
+// The only thing that must be supplied in order to use this routine on your problem is to change the array dimensions
+// appropriately, to specify WHICH eigenvalues you want to compute and to supply a matrix-vector product
+//
+// w <- Av
+//
+// in place of the call to AV( ) below.
+//
+// Once usage of this routine is understood, you may wish to explore the other available options to improve convergence, to solve generalized
+// problems, etc. Look at the file ex-nonsym.doc in DOCUMENTS directory.
+// Storage Declarations:
+//
+// The maximum dimensions for all arrays are set here to accommodate a problem size of N <= MAXN
+//
+// NEV is the number of eigenvalues requested. See specifications for ARPACK usage below.
+//
+// NCV is the largest number of basis vectors that will be used in the Implicitly Restarted Arnoldi
+// Process. Work per major iteration is proportional to N*NCV*NCV.
+// You must set:
+//
+// MAXN: Maximum dimension of the A allowed.
+// MAXNEV: Maximum NEV allowed.
+// MAXNCV: Maximum NCV allowed.
+
+maxn = 256;
+maxnev = 12;
+maxncv = 30;
+maxiter = 10;
+
+// The following sets dimensions for this problem.
+nx = 10;
+
+// Specifications for ARPACK usage are set below:
+// 1) NEV = 4 asks for 4 eigenvalues to be computed.
+// 2) NCV = 20 sets the length of the Arnoldi factorization.
+// 3) This is a standard problem. (indicated by bmat = 'I')
+// 4) Ask for the NEV eigenvalues of largest magnitude. (indicated by which = 'LM')
+// See documentation in DNAUPD for the other options SM, LR, SR, LI, SI.
+// Note: NEV and NCV must satisfy the following conditions:
+// NEV <= MAXNEV
+// NEV + 2 <= NCV <= MAXNCV
+
+nev = 3;
+ncv = 6;
+bmat = "I";
+which = "LM";
+
+// Local Arrays
+
+iparam = zeros(11,1);
+ipntr = zeros(14,1);
+_select = zeros(ncv,1);
+d = zeros(nev+1,1);
+resid = zeros(nx,1);
+v = zeros(nx,ncv);
+workd = zeros(3*nx+1,1);
+workev = zeros(3*ncv,1);
+workl = zeros(3*ncv*ncv+6*ncv,1);
+
+if (nx > maxn) then
+ printf("Error with DNSIMP: N is greater than MAXN.\n");
+ break;
+elseif (nev > maxnev) then
+ printf("Error with DNSIMP: NEV is greater than MAXNEV.\n");
+ break;
+elseif (ncv > maxncv) then
+ printf("Error with DNSIMP: NCV is greater than MAXNCV.\n");
+ break;
+end
+
+// Build the test matrix
+A = diag(10*ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(nx-1,1));
+
+// Specification of stopping rules and initial conditions before calling DNAUPD
+//
+// TOL determines the stopping criterion.
+//
+// Expect
+// abs(lambdaC - lambdaT) < TOL*abs(lambdaC)
+// computed true |
+//
+// If TOL <= 0, then TOL <- macheps (machine precision) is used.
+//
+// IDO is the REVERSE COMMUNICATION parameter used to specify actions to be taken on return
+// from DNAUPD. (see usage below)
+//
+// It MUST initially be set to 0 before the first call to DNAUPD.
+//
+// INFO on entry specifies starting vector information and on return indicates error codes
+//
+// Initially, setting INFO=0 indicates that a random starting vector is requested to
+// start the ARNOLDI iteration. Setting INFO to a nonzero value on the initial call is used
+// if you want to specify your own starting vector (This vector must be placed in RESID).
+//
+// The work array WORKL is used in DNAUPD as workspace.
+
+tol = 0;
+ido = 0;
+
+// Specification of Algorithm Mode:
+//
+// This program uses the exact shift strategy (indicated by setting IPARAM(1) = 1).
+// IPARAM(3) specifies the maximum number of Arnoldi iterations allowed. Mode 1 of DNAUPD is used
+// (IPARAM(7) = 1). All these options can be changed by the user. For details see the documentation in DNAUPD.
+
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+
+sigmar = 0; // the real part of the shift
+sigmai = 0; // the imaginary part of the shift
+
+// M A I N L O O P (Reverse communication)
+
+iter = 0;
+while(iter<maxiter)
+ info_dnaupd = 0;
+ iter = iter + 1;
+ // Repeatedly call the routine DNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+
+ [ido,resid,v,iparam,ipntr,workd,workl,info_dnaupd] = dnaupd(ido,bmat,nx,which,nev,tol,resid,ncv,v,iparam,ipntr,workd,workl,info_dnaupd);
+
+ if (ido==99) then
+ // BE CAREFUL: DON'T CALL dneupd IF ido == 99 !!
+ break;
+ end
+
+ if (ido==-1 | ido==1) then
+ // Perform matrix vector multiplication
+ // y <--- Op*x
+ // The user should supply his/her own matrix vector multiplication routine here
+ // that takes workd(ipntr(1)) as the input vector, and return the matrix vector
+ // product to workd(ipntr(2)).
+
+ workd(ipntr(2)+1:ipntr(2)+nx) = A*workd(ipntr(1)+1:ipntr(1)+nx);
+ // L O O P B A C K to call DNAUPD again.
+ continue
+ end
+
+ // Either we have convergence or there is an error.
+ if (info_dnaupd < 0) then
+ // Error message, check the documentation in DNAUPD.
+ printf("\nError with dnaupd, info = %d\n",info_dnaupd);
+ printf("Check the documentation of dnaupd\n\n");
+ else
+ // No fatal errors occurred.
+ // Post-Process using DNEUPD.
+ //
+ // Computed eigenvalues may be extracted.
+ //
+ // Eigenvectors may be also computed now if desired. (indicated by rvec = %T)
+ //
+ // The routine DNEUPD now called to do this post processing (Other modes may require
+ // more complicated post processing than mode1,)
+
+ rvec = 1;
+ howmany = "A";
+
+ info_dneupd = 0;
+
+ [d,d(1,2),v,resid,v,iparam,ipntr,workd,workl,info_dneupd] = dneupd(rvec,howmany,_select,d,d(1,2),v,sigmar,sigmai,workev, ...
+ bmat,nx,which,nev,tol,resid,ncv,v, ...
+ iparam,ipntr,workd,workl,info_dneupd);
+
+ // The real parts of the eigenvalues are returned in the first column of the two dimensional
+ // array D, and the IMAGINARY part are returned in the second column of D. The corresponding
+ // eigenvectors are returned in the first NCONV (= IPARAM(5)) columns of the two
+ // dimensional array V if requested. Otherwise, an orthogonal basis for the invariant subspace
+ // corresponding to the eigenvalues in D is returned in V.
+
+ if (info_dneupd~=0) then
+ // Error condition:
+ // Check the documentation of DNEUPD.
+ printf("\nError with dneupd, info = %d\n", info_dneupd);
+ printf("Check the documentation of dneupd.\n\n");
+ end
+
+ // Print additional convergence information.
+ if (info_dneupd==1) then
+ printf("\nMaximum number of iterations reached.\n\n");
+ elseif (info_dneupd==3) then
+ printf("\nNo shifts could be applied during implicit Arnoldi update, try increasing NCV.\n\n");
+ end
+ end
+end
+
+// Done with program dnsimp.
+printf("\nDNSIMP\n");
+printf("======\n");
+printf("\n");
+printf("Iterations is %d\n", iter);
+printf("Size of the matrix is %d\n", nx);
+printf("The number of Ritz values requested is %d\n", nev);
+printf("The number of Arnoldi vectors generated (NCV) is %d\n", ncv);
+printf("What portion of the spectrum: %s\n", which);
+printf("The number of Implicit Arnoldi update iterations taken is %d\n", iparam(3));
+printf("The number of OP*x is %d\n", iparam(9));
+printf("The convergence criterion is %d\n", tol);
+
diff --git a/modules/arnoldi/demos/dssimp.sce b/modules/arnoldi/demos/dssimp.sce
new file mode 100755
index 000000000..93bdeaaa3
--- /dev/null
+++ b/modules/arnoldi/demos/dssimp.sce
@@ -0,0 +1,223 @@
+// Example converted from dssimp.f from the EXAMPLE/SIMPLE ARPACK directory
+
+// This example program is intended to illustrate the simplest case of using the ARNOLDI module in considerable detail.
+//
+// This code shows how to use ARNOLDI to find a few eigenvalues (lambda) and corresponding eigenvectors (x) for the standard
+// eigenvalue problem:
+//
+// A*x = lambda*x
+//
+// where A is a n by n real symmetric matrix.
+//
+// The main points illustrated here are
+//
+// 1) How to declare sufficient memory to find NEV eigenvalues of largest magnitude. Other options are available.
+//
+// 2) Illustration of the reverse communication interface needed to utilize the top level ARPACK routine DSAUPD
+// that computes the quantities needed to construct the desired eigenvalues and eigenvectors(if requested).
+//
+// 3) How to extract the desired eigenvalues and eigenvectors using the ARPACK routine DSEUPD.
+//
+// The only thing that must be supplied in order to use this routine on your problem is to change the array dimensions
+// appropriately, to specify WHICH eigenvalues you want to compute and to supply a matrix-vector product
+//
+// w <- Av
+//
+// in place of the call to AV( ) below.
+//
+// Once usage of this routine is understood, you may wish to explore the other available options to improve convergence, to solve generalized
+// problems, etc. Look at the file ex-nonsym.doc in DOCUMENTS directory.
+// Storage Declarations:
+//
+// The maximum dimensions for all arrays are set here to accommodate a problem size of N <= MAXN
+//
+// NEV is the number of eigenvalues requested. See specifications for ARPACK usage below.
+//
+// NCV is the largest number of basis vectors that will be used in the Implicitly Restarted Arnoldi
+// Process. Work per major iteration is proportional to N*NCV*NCV.
+// You must set:
+//
+// MAXN: Maximum dimension of the A allowed.
+// MAXNEV: Maximum NEV allowed.
+// MAXNCV: Maximum NCV allowed.
+
+maxn = 256;
+maxnev = 12;
+maxncv = 30;
+maxiter = 10;
+
+// The following sets dimensions for this problem.
+nx = 10;
+
+// Specifications for ARPACK usage are set below:
+// 1) NEV = 4 asks for 4 eigenvalues to be computed.
+// 2) NCV = 20 sets the length of the Arnoldi factorization.
+// 3) This is a standard problem. (indicated by bmat = 'I')
+// 4) Ask for the NEV eigenvalues of largest magnitude. (indicated by which = 'LM')
+// See documentation in DSAUPD for the other options SM, LR, SR, LI, SI.
+// Note: NEV and NCV must satisfy the following conditions:
+// NEV <= MAXNEV
+// NEV + 2 <= NCV <= MAXNCV
+
+nev = 3;
+ncv = 6;
+bmat = "I";
+which = "LM";
+
+// Local Arrays
+
+iparam = zeros(11,1);
+ipntr = zeros(14,1);
+_select = zeros(ncv,1);
+d = zeros(nev+1,1);
+resid = zeros(nx,1);
+v = zeros(nx,ncv);
+workd = zeros(3*nx+1,1);
+workl = zeros(ncv*ncv+8*ncv,1);
+
+if (nx > maxn) then
+ printf("Error with DSSIMP: N is greater than MAXN.\n");
+ break;
+elseif (nev > maxnev) then
+ printf("Error with DSSIMP: NEV is greater than MAXNEV.\n");
+ break;
+elseif (ncv > maxncv) then
+ printf("Error with DSSIMP: NCV is greater than MAXNCV.\n");
+ break;
+end
+
+// Build the symmetric test matrix
+A = diag(10*ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6*ones(nx-1,1));
+
+// Specification of stopping rules and initial conditions before calling DSAUPD
+//
+// TOL determines the stopping criterion.
+//
+// Expect
+// abs(lambdaC - lambdaT) < TOL*abs(lambdaC)
+// computed true |
+//
+// If TOL <= 0, then TOL <- macheps (machine precision) is used.
+//
+// IDO is the REVERSE COMMUNICATION parameter used to specify actions to be taken on return
+// from DSAUPD. (see usage below)
+//
+// It MUST initially be set to 0 before the first call to DSAUPD.
+//
+// INFO on entry specifies starting vector information and on return indicates error codes
+//
+// Initially, setting INFO=0 indicates that a random starting vector is requested to
+// start the ARNOLDI iteration. Setting INFO to a nonzero value on the initial call is used
+// if you want to specify your own starting vector (This vector must be placed in RESID).
+//
+// The work array WORKL is used in DSAUPD as workspace.
+
+tol = 0;
+ido = 0;
+
+// Specification of Algorithm Mode:
+//
+// This program uses the exact shift strategy (indicated by setting IPARAM(1) = 1).
+// IPARAM(3) specifies the maximum number of Arnoldi iterations allowed. Mode 1 of DSAUPD is used
+// (IPARAM(7) = 1). All these options can be changed by the user. For details see the documentation in DSAUPD.
+
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+
+sigma = 0; // the real part of the shift
+
+// M A I N L O O P (Reverse communication)
+
+iter = 0;
+while(iter<maxiter)
+ info_dsaupd = 0;
+ iter = iter + 1;
+ // Repeatedly call the routine DSAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+
+ [ido,resid,v,iparam,ipntr,workd,workl,info_dsaupd] = dsaupd(ido,bmat,nx,which,nev,tol,resid,ncv,v,iparam,ipntr,workd,workl,info_dsaupd);
+
+ if (ido==99) then
+ // BE CAREFUL: DON'T CALL dseupd IF ido == 99 !!
+ break;
+ end
+
+ if (ido==-1 | ido==1) then
+ // Perform matrix vector multiplication
+ // y <--- Op*x
+ // The user should supply his/her own matrix vector multiplication routine here
+ // that takes workd(ipntr(1)) as the input vector, and return the matrix vector
+ // product to workd(ipntr(2)).
+
+ workd(ipntr(2)+1:ipntr(2)+nx) = A*workd(ipntr(1)+1:ipntr(1)+nx);
+ // L O O P B A C K to call DSAUPD again.
+ continue
+ end
+
+ // Either we have convergence or there is an error.
+ if (info_dsaupd < 0) then
+ // Error message, check the documentation in DSAUPD.
+ printf("\nError with dsaupd, info = %d\n",info_dsaupd);
+ printf("Check the documentation of dsaupd\n\n");
+ else
+ // No fatal errors occurred.
+ // Post-Process using DSEUPD.
+ //
+ // Computed eigenvalues may be extracted.
+ //
+ // Eigenvectors may be also computed now if desired. (indicated by rvec = %T)
+ //
+ // The routine DSEUPD now called to do this post processing (Other modes may require
+ // more complicated post processing than mode1,)
+
+ rvec = 1;
+ howmany = "A";
+
+ info_dseupd = 0;
+
+ [d,d(1,2),v,resid,v,iparam,ipntr,workd,workl,info_dseupd] = dseupd(rvec,howmany,_select,d,d(1,2),v,sigma, ...
+ bmat,nx,which,nev,tol,resid,ncv,v, ...
+ iparam,ipntr,workd,workl,info_dseupd);
+
+ // The real parts of the eigenvalues are returned in the first column of the two dimensional
+ // array D, and the IMAGINARY part are returned in the second column of D. The corresponding
+ // eigenvectors are returned in the first NCONV (= IPARAM(5)) columns of the two
+ // dimensional array V if requested. Otherwise, an orthogonal basis for the invariant subspace
+ // corresponding to the eigenvalues in D is returned in V.
+
+ if (info_dseupd~=0) then
+ // Error condition:
+ // Check the documentation of DSEUPD.
+ printf("\nError with dseupd, info = %d\n", info_dseupd);
+ printf("Check the documentation of dseupd.\n\n");
+ end
+
+ // Print additional convergence information.
+ if (info_dseupd==1) then
+ printf("\nMaximum number of iterations reached.\n\n");
+ elseif (info_dseupd==3) then
+ printf("\nNo shifts could be applied during implicit Arnoldi update, try increasing NCV.\n\n");
+ end
+ end
+end
+
+// Done with program dssimp.
+printf("\nDSSIMP\n");
+printf("======\n");
+printf("\n");
+printf("Iterations is %d\n", iter);
+printf("Size of the matrix is %d\n", nx);
+printf("The number of Ritz values requested is %d\n", nev);
+printf("The number of Arnoldi vectors generated (NCV) is %d\n", ncv);
+printf("What portion of the spectrum: %s\n", which);
+printf("The number of Implicit Arnoldi update iterations taken is %d\n", iparam(3));
+printf("The number of OP*x is %d\n", iparam(9));
+printf("The convergence criterion is %d\n", tol);
+
diff --git a/modules/arnoldi/demos/znsimp.sce b/modules/arnoldi/demos/znsimp.sce
new file mode 100755
index 000000000..d42eba838
--- /dev/null
+++ b/modules/arnoldi/demos/znsimp.sce
@@ -0,0 +1,225 @@
+// Example converted from znsimp.f from the EXAMPLE/SIMPLE ARPACK directory
+
+// This example program is intended to illustrate the simplest case of using the ARNOLDI module in considerable detail.
+//
+// This code shows how to use ARNOLDI to find a few eigenvalues (lambda) and corresponding eigenvectors (x) for the standard
+// eigenvalue problem:
+//
+// A*x = lambda*x
+//
+// where A is a n by n real nonsymmetric matrix.
+//
+// The main points illustrated here are
+//
+// 1) How to declare sufficient memory to find NEV eigenvalues of largest magnitude. Other options are available.
+//
+// 2) Illustration of the reverse communication interface needed to utilize the top level ARPACK routine ZNAUPD
+// that computes the quantities needed to construct the desired eigenvalues and eigenvectors(if requested).
+//
+// 3) How to extract the desired eigenvalues and eigenvectors using the ARPACK routine ZNEUPD.
+//
+// The only thing that must be supplied in order to use this routine on your problem is to change the array dimensions
+// appropriately, to specify WHICH eigenvalues you want to compute and to supply a matrix-vector product
+//
+// w <- Av
+//
+// in place of the call to AV( ) below.
+//
+// Once usage of this routine is understood, you may wish to explore the other available options to improve convergence, to solve generalized
+// problems, etc. Look at the file ex-nonsym.doc in DOCUMENTS directory.
+// Storage Declarations:
+//
+// The maximum dimensions for all arrays are set here to accommodate a problem size of N <= MAXN
+//
+// NEV is the number of eigenvalues requested. See specifications for ARPACK usage below.
+//
+// NCV is the largest number of basis vectors that will be used in the Implicitly Restarted Arnoldi
+// Process. Work per major iteration is proportional to N*NCV*NCV.
+// You must set:
+//
+// MAXN: Maximum dimension of the A allowed.
+// MAXNEV: Maximum NEV allowed.
+// MAXNCV: Maximum NCV allowed.
+
+maxn = 256;
+maxnev = 12;
+maxncv = 30;
+maxiter = 10;
+
+// The following sets dimensions for this problem.
+nx = 10;
+
+// Specifications for ARPACK usage are set below:
+// 1) NEV = 4 asks for 4 eigenvalues to be computed.
+// 2) NCV = 20 sets the length of the Arnoldi factorization.
+// 3) This is a standard problem. (indicated by bmat = 'I')
+// 4) Ask for the NEV eigenvalues of largest magnitude. (indicated by which = 'LM')
+// See documentation in ZNAUPD for the other options SM, LR, SR, LI, SI.
+// Note: NEV and NCV must satisfy the following conditions:
+// NEV <= MAXNEV
+// NEV + 2 <= NCV <= MAXNCV
+
+nev = 3;
+ncv = 6;
+bmat = "I";
+which = "LM";
+
+// Local Arrays
+
+iparam = zeros(11,1);
+ipntr = zeros(14,1);
+_select = zeros(ncv,1);
+d = zeros(nev+1,1);
+resid = zeros(nx,1) + 0*%i;
+v = zeros(nx,ncv) + 0*%i;
+workd = zeros(3*nx+1,1) + 0*%i;
+workev = zeros(3*ncv,1);
+rwork = zeros(ncv,1);
+workl = zeros(3*ncv*ncv+5*ncv,1) + 0*%i;
+
+if (nx > maxn) then
+ printf("Error with ZNSIMP: N is greater than MAXN.\n");
+ break;
+elseif (nev > maxnev) then
+ printf("Error with ZNSIMP: NEV is greater than MAXNEV.\n");
+ break;
+elseif (ncv > maxncv) then
+ printf("Error with ZNSIMP: NCV is greater than MAXNCV.\n");
+ break;
+end
+
+// Build the complex test matrix
+A = diag(10*ones(nx,1)+%i*ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(nx-1,1));
+
+// Specification of stopping rules and initial conditions before calling ZNAUPD
+//
+// TOL determines the stopping criterion.
+//
+// Expect
+// abs(lambdaC - lambdaT) < TOL*abs(lambdaC)
+// computed true |
+//
+// If TOL <= 0, then TOL <- macheps (machine precision) is used.
+//
+// IDO is the REVERSE COMMUNICATION parameter used to specify actions to be taken on return
+// from ZNAUPD. (see usage below)
+//
+// It MUST initially be set to 0 before the first call to ZNAUPD.
+//
+// INFO on entry specifies starting vector information and on return indicates error codes
+//
+// Initially, setting INFO=0 indicates that a random starting vector is requested to
+// start the ARNOLDI iteration. Setting INFO to a nonzero value on the initial call is used
+// if you want to specify your own starting vector (This vector must be placed in RESID).
+//
+// The work array WORKL is used in ZNAUPD as workspace.
+
+tol = 0;
+ido = 0;
+
+// Specification of Algorithm Mode:
+//
+// This program uses the exact shift strategy (indicated by setting IPARAM(1) = 1).
+// IPARAM(3) specifies the maximum number of Arnoldi iterations allowed. Mode 1 of ZNAUPD is used
+// (IPARAM(7) = 1). All these options can be changed by the user. For details see the documentation in ZNAUPD.
+
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+
+sigma = 0; // the real part of the shift
+
+// M A I N L O O P (Reverse communication)
+
+iter = 0;
+while(iter<maxiter)
+ info_znaupd = 0;
+ iter = iter + 1;
+ // Repeatedly call the routine ZNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+
+ [ido,resid,v,iparam,ipntr,workd,workl,info_znaupd] = znaupd(ido,bmat,nx,which,nev,tol,resid,ncv,v,iparam,ipntr,workd,workl,rwork,info_znaupd);
+
+ if (ido==99) then
+ // BE CAREFUL: DON'T CALL zneupd IF ido == 99 !!
+ break;
+ end
+
+ if (ido==-1 | ido==1) then
+ // Perform matrix vector multiplication
+ // y <--- Op*x
+ // The user should supply his/her own matrix vector multiplication routine here
+ // that takes workd(ipntr(1)) as the input vector, and return the matrix vector
+ // product to workd(ipntr(2)).
+
+ workd(ipntr(2)+1:ipntr(2)+nx) = A*workd(ipntr(1)+1:ipntr(1)+nx);
+ // L O O P B A C K to call ZNAUPD again.
+ continue
+ end
+
+ // Either we have convergence or there is an error.
+ if (info_znaupd < 0) then
+ // Error message, check the documentation in ZNAUPD.
+ printf("\nError with znaupd, info = %d\n",info_znaupd);
+ printf("Check the documentation of znaupd\n\n");
+ else
+ // No fatal errors occurred.
+ // Post-Process using ZNEUPD.
+ //
+ // Computed eigenvalues may be extracted.
+ //
+ // Eigenvectors may be also computed now if desired. (indicated by rvec = %T)
+ //
+ // The routine ZNEUPD now called to do this post processing (Other modes may require
+ // more complicated post processing than mode1,)
+
+ rvec = 1;
+ howmany = "A";
+
+ info_zneupd = 0;
+
+ [d,d(1,2),v,resid,v,iparam,ipntr,workd,workl,info_zneupd] = zneupd(rvec,howmany,_select,d,d(1,2),v,sigma,workev, ...
+ bmat,nx,which,nev,tol,resid,ncv,v, ...
+ iparam,ipntr,workd,workl,info_zneupd);
+
+ // The real parts of the eigenvalues are returned in the first column of the two dimensional
+ // array D, and the IMAGINARY part are returned in the second column of D. The corresponding
+ // eigenvectors are returned in the first NCONV (= IPARAM(5)) columns of the two
+ // dimensional array V if requested. Otherwise, an orthogonal basis for the invariant subspace
+ // corresponding to the eigenvalues in D is returned in V.
+
+ if (info_zneupd~=0) then
+ // Error condition:
+ // Check the documentation of ZNEUPD.
+ printf("\nError with zneupd, info = %d\n", info_zneupd);
+ printf("Check the documentation of zneupd.\n\n");
+ end
+
+ // Print additional convergence information.
+ if (info_zneupd==1) then
+ printf("\nMaximum number of iterations reached.\n\n");
+ elseif (info_zneupd==3) then
+ printf("\nNo shifts could be applied during implicit Arnoldi update, try increasing NCV.\n\n");
+ end
+ end
+end
+
+// Done with program znsimp.
+printf("\nZNSIMP\n");
+printf("======\n");
+printf("\n");
+printf("Iterations is %d\n", iter);
+printf("Size of the matrix is %d\n", nx);
+printf("The number of Ritz values requested is %d\n", nev);
+printf("The number of Arnoldi vectors generated (NCV) is %d\n", ncv);
+printf("What portion of the spectrum: %s\n", which);
+printf("The number of Implicit Arnoldi update iterations taken is %d\n", iparam(3));
+printf("The number of OP*x is %d\n", iparam(9));
+printf("The convergence criterion is %d\n", tol);
+
diff --git a/modules/arnoldi/etc/arnoldi.quit b/modules/arnoldi/etc/arnoldi.quit
new file mode 100755
index 000000000..ab83f0c89
--- /dev/null
+++ b/modules/arnoldi/etc/arnoldi.quit
@@ -0,0 +1,10 @@
+// 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
+
diff --git a/modules/arnoldi/etc/arnoldi.start b/modules/arnoldi/etc/arnoldi.start
new file mode 100755
index 000000000..bad477fe3
--- /dev/null
+++ b/modules/arnoldi/etc/arnoldi.start
@@ -0,0 +1,12 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2006-2008 - 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
+
+//Load functions libraries
+// =============================================================================
+load('SCI/modules/arnoldi/macros/lib'); \ No newline at end of file
diff --git a/modules/arnoldi/help/en_US/addchapter.sce b/modules/arnoldi/help/en_US/addchapter.sce
new file mode 100755
index 000000000..a4b9b9af5
--- /dev/null
+++ b/modules/arnoldi/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("ARnoldi PACKage (ARPACK binding)",SCI+"/modules/arnoldi/help/en_US",%T);
+
diff --git a/modules/arnoldi/help/en_US/dnaupd.xml b/modules/arnoldi/help/en_US/dnaupd.xml
new file mode 100755
index 000000000..da217d620
--- /dev/null
+++ b/modules/arnoldi/help/en_US/dnaupd.xml
@@ -0,0 +1,882 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="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="dnaupd" xml:lang="en">
+ <refnamediv>
+ <refname>dnaupd</refname>
+ <refpurpose>
+ Interface for the Implicitly Restarted Arnoldi Iteration, to
+ compute approximations to a few eigenpairs of a real linear
+ operator
+ <emphasis role="bold">
+ This function is obsolete. Please use <link linkend="eigs">eigs</link>
+ </emphasis>
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[IDO, RESID, V, IPARAM, IPNTR, WORKD, WORKL, INFO] = dnaupd(ID0, BMAT, N, WHICH, NEV, TOL, RESID, NCV, V, IPARAM, IPNTR, WORKD, WORKL, INFO)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>ID0</term>
+ <listitem>
+ <para>
+ Integer. (INPUT/OUTPUT)
+ </para>
+ <para>
+ Reverse communication flag. IDO must
+ be zero on the first call to dnaupd. IDO will be set internally to
+ indicate the type of operation to be performed. Control is then
+ given back to the calling routine which has the responsibility to
+ carry out the requested operation and call dnaupd with the result.
+ The operand is given in WORKD(IPNTR(1)), the result must be put in
+ WORKD(IPNTR(2)).
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IDO = 0: first call to the reverse communication
+ interface.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = -1: compute Y = OP * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for Y. This
+ is for the initialization phase to force the starting vector
+ into the range of OP.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 1: compute Y = OP * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for Y. In
+ mode 3 and 4, the vector B * X is already available in
+ WORKD(ipntr(3)). It does not need to be recomputed in forming OP
+ * X.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 2: compute Y = B * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for
+ Y.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 3: compute the IPARAM(8) real and imaginary parts of
+ the shifts where INPTR(14) is the pointer into WORKL for placing
+ the shifts. See Remark 5 below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IDO = 99: done.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>BMAT</term>
+ <listitem>
+ <para>
+ Character. (INPUT)
+ </para>
+ <para>
+ specifies the type of the matrix B that defines the
+ semi-inner product for the operator OP.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>'I' - standard eigenvalue problem A * x = lambda * x</para>
+ </listitem>
+ <listitem>
+ <para>
+ 'G' - generalized eigenvalue problem A * x =
+ lambda * B * x
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>N</term>
+ <listitem>
+ <para>Integer. (INPUT)</para>
+ <para>dimension of the eigenproblem.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WHICH</term>
+ <listitem>
+ <para>
+ string of length 2. (INPUT)
+ </para>
+ <para>
+ Specifies which of the Ritz values of OP to
+ compute.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ 'LM' - want the NEV eigenvalues of largest
+ magnitude.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'SM' - want the NEV eigenvalues of smallest
+ magnitude.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'LR' - want the NEV eigenvalues of largest real
+ part.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'SR' - want the NEV eigenvalues of smallest real
+ part.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'LI' - want the NEV eigenvalues of largest imaginary
+ part.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'SI' - want the NEV eigenvalues of smallest imaginary
+ part.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>NEV</term>
+ <listitem>
+ <para>
+ Integer. (INPUT)
+ </para>
+ <para>
+ number of eigenvalues of OP to be computed. 0 &lt;
+ NEV &lt; N-1.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>TOL</term>
+ <listitem>
+ <para>
+ scalar. (INPUT)
+ </para>
+ <para>
+ Stopping criterion: the relative accuracy of the Ritz
+ value is considered acceptable if BOUNDS(I) &lt;= TOL*ABS(RITZ(I)).
+ If TOL &lt;= 0. is passed the machine precision is set.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>RESID</term>
+ <listitem>
+ <para>array of length N. (INPUT/OUTPUT)</para>
+ <para>
+ On INPUT: If INFO = 0, a random initial residual vector is
+ used, else RESID contains the initial residual vector, possibly from
+ a previous run.
+ </para>
+ <para>On OUTPUT: RESID contains the final residual vector.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>NCV</term>
+ <listitem>
+ <para>
+ Integer. (INPUT)
+ </para>
+ <para>
+ number of columns of the matrix V. NCV must satisfy
+ the two inequalities 2 &lt;= NCV - NEV and NCV &lt;= N.
+ </para>
+ <para>
+ This will indicate how many Arnoldi vectors are generated at
+ each iteration.
+ </para>
+ <para>
+ After the startup phase in which NEV Arnoldi vectors are
+ generated, the algorithm generates approximately NCV - NEV Arnoldi
+ vectors at each subsequent update iteration. Most of the cost in
+ generating each Arnoldi vector is in the matrix-vector operation
+ OP * x.
+ </para>
+ <para>
+ NOTE: 2 &lt;= NCV - NEV in order that complex conjugate pairs of
+ Ritz values are kept together. (See remark 4 below)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>V</term>
+ <listitem>
+ <para>
+ N by NCV array. (OUTPUT)
+ </para>
+ <para>
+ Contains the final set of Arnoldi basis
+ vectors.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>IPARAM</term>
+ <listitem>
+ <para>array of length 11. (INPUT/OUTPUT)</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPARAM(1) = ISHIFT: method for selecting the implicit
+ shifts. The shifts selected at each iteration are used to
+ restart the Arnoldi iteration in an implicit fashion.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ISHIFT = 0: the shifts are provided by the user via
+ reverse communication. The real and imaginary parts of the
+ NCV eigenvalues of the Hessenberg matrix H are returned in
+ the part of the WORKL array corresponding to RITZR and
+ RITZI. See remark 5 below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ISHIFT = 1: exact shifts with respect to the current
+ Hessenberg matrix H. This is equivalent to restarting the
+ iteration with a starting vector that is a linear
+ combination of approximate Schur vectors associated with the
+ "wanted" Ritz values.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>IPARAM(2) = LEVEC. No longer referenced.</para>
+ </listitem>
+ <listitem>
+ <para>IPARAM(3) = MXITER </para>
+ <para>
+ On INPUT: maximum number of Arnoldi update iterations
+ allowed.
+ </para>
+ <para>
+ On OUTPUT: actual number of Arnoldi update iterations
+ taken.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(4) = NB: blocksize to be used in the recurrence.
+ The code currently works only for NB = 1.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(5) = NCONV: number of "converged" Ritz values. This
+ represents the number of Ritz values that satisfy the
+ convergence criterion.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(6) = IUPD No longer referenced. Implicit restarting
+ is ALWAYS used.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(7) = MODE On INPUT determines what type of
+ eigenproblem is being solved. Must be 1,2,3,4; See under
+ Description of dnaupd for the five modes available.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(8) = NP When ido = 3 and the user provides shifts
+ through reverse communication (IPARAM(1)=0), dnaupd returns NP,
+ the number of shifts the user is to provide.
+ </para>
+ <para>0 &lt; NP &lt;= NCV-NEV. See Remark 5 below.</para>
+ </listitem>
+ <listitem>
+ <para>IPARAM(9) = NUMOP, </para>
+ <para>IPARAM(10) = NUMOPB, </para>
+ <para>IPARAM(11) = NUMREO, </para>
+ <para>
+ On OUTPUT: NUMOP = total number of OP*x operations, NUMOPB
+ = total number of B*x operations if BMAT='G', NUMREO = total
+ number of steps of re-orthogonalization.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>IPNTR</term>
+ <listitem>
+ <para>
+ array of length 14. (OUTPUT)
+ </para>
+ <para>
+ Pointer to mark the starting locations in
+ the WORKD and WORKL arrays for matrices/vectors used by the Arnoldi
+ iteration.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(1): pointer to the current operand vector X in
+ WORKD.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(2): pointer to the current result vector Y in
+ WORKD.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(3): pointer to the vector B * X in WORKD when used
+ in the shift-and-invert mode.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(4): pointer to the next available location in WORKL
+ that is untouched by the program.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(5): pointer to the NCV by NCV upper Hessenberg
+ matrix H in WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(6): pointer to the real part of the ritz value array
+ RITZR in WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(7): pointer to the imaginary part of the ritz value
+ array RITZI in WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(8): pointer to the Ritz estimates in array WORKL
+ associated with the Ritz values located in RITZR and RITZI in
+ WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(14): pointer to the NP shifts in WORKL. See Remark 5
+ below.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Note: IPNTR(9:13) is only referenced by dneupd . See Remark
+ 2.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(9): pointer to the real part of the NCV RITZ values
+ of the original system.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(10): pointer to the imaginary part of the NCV RITZ
+ values of the original system.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(11): pointer to the NCV corresponding error
+ bounds.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(12):pointer to the NCV by NCV upper quasi-triangular
+ Schur matrix for H.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(13): pointer to the NCV by NCV matrix of
+ eigenvectors of the upper Hessenberg matrix H. Only referenced
+ by dneupd if RVEC = 1 See Remark 2 below.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKD</term>
+ <listitem>
+ <para>
+ Double precision work array of length 3 * N. (REVERSE
+ COMMUNICATION)
+ </para>
+ <para>
+ Distributed array to be used in the basic Arnoldi iteration
+ for reverse communication. The user should not use WORKD as
+ temporary workspace during the iteration. Upon termination
+ WORKD(1:N) contains B*RESID(1:N). If an invariant subspace
+ associated with the converged Ritz values is desired, see remark 2
+ below, subroutine dneupd uses this output. See Data Distribution
+ Note below.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKL</term>
+ <listitem>
+ <para>
+ work array of length at least 3 * NCV ** 2 + 6 * NCV.
+ (OUTPUT/WORKSPACE)
+ </para>
+ <para>
+ Private (replicated) array on each PE or array
+ allocated on the front end. See Data Distribution Note below.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>INFO</term>
+ <listitem>
+ <para>Integer. (INPUT/OUTPUT)</para>
+ <para>
+ If INFO == 0, a randomly initial residual vector is used, else
+ RESID contains the initial residual vector, possibly from a previous
+ run.
+ </para>
+ <para>Error flag on output.</para>
+ <itemizedlist>
+ <listitem>
+ <para>0: Normal exit.</para>
+ </listitem>
+ <listitem>
+ <para>
+ 1: Maximum number of iterations taken. All possible
+ eigenvalues of OP has been found. IPARAM(5) returns the number
+ of wanted converged Ritz values.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2: No longer an informational error. Deprecated starting
+ with release 2 of ARPACK.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3: No shifts could be applied during a cycle of the
+ Implicitly restarted Arnoldi iteration. One possibility is to
+ increase the size of NCV relative to NEV. See remark 4
+ below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-1: N must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-2: NEV must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-3: NCV-NEV &gt;= 2 and less than or equal to N.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -4: The maximum number of Arnoldi update iterations
+ allowed must be greater than zero.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -5: WHICH must be one of 'LM', 'SM', 'LR', 'SR', 'LI',
+ 'SI'.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-6: BMAT must be one of 'I' or 'G'.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -7: Length of private work array WORKL is not
+ sufficient.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -8: Error return from LAPACK eigenvalue
+ calculation.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-9: Starting vector is zero.</para>
+ </listitem>
+ <listitem>
+ <para>-10: IPARAM(7) must be 1, 2, 3, 4.</para>
+ </listitem>
+ <listitem>
+ <para>-11: IPARAM(7) = 1 and BMAT = 'G' are incompatable.</para>
+ </listitem>
+ <listitem>
+ <para>-12: IPARAM(1) must be equal to 0 or 1.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -9999: Could not build an Arnoldi factorization. IPARAM(5)
+ returns the size of the current Arnoldi factorization. The user
+ is advised to check that enough workspace and array storage has
+ been allocated.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Reverse communication interface for the Implicitly Restarted Arnoldi
+ iteration. This subroutine computes approximations to a few eigenpairs of
+ a linear operator "OP" with respect to a semi-inner product defined by a
+ symmetric positive semi-definite real matrix B. B may be the identity
+ matrix. NOTE: If the linear operator "OP" is real and symmetric with
+ respect to the real positive semi-definite symmetric matrix B, i.e. B*OP =
+ (OP`)*B, then subroutine dsaupd should be used instead.
+ </para>
+ <para>
+ The computed approximate eigenvalues are called Ritz values and the
+ corresponding approximate eigenvectors are called Ritz vectors.
+ </para>
+ <para>
+ dnaupd is usually called iteratively to solve one of the following
+ problems:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Mode 1: A*x = lambda*x. <literal>
+ OP = A , B =
+ I
+ </literal>
+ .
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Mode 2: A*x = lambda*M*x, M symmetric positive definite
+ <literal>OP = inv[M]*A, B = M</literal>. (If M can be factored see
+ remark 3 below)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Mode 3: A*x = lambda*M*x, M symmetric positive semi-definite.
+ <literal>OP = Real_Part{ inv[A - sigma*M]*M }, B = M</literal>.
+ shift-and-invert mode (in real arithmetic)
+ </para>
+ <para>
+ If <literal>OP*x = amu*x</literal>, then
+ </para>
+ <para>
+ <literal>
+ amu = 1/2 * [ 1/(lambda-sigma) +
+ 1/(lambda-conjg(sigma))]
+ </literal>
+ .
+ </para>
+ <para>
+ Note: If sigma is real, i.e. imaginary part of sigma is zero;
+ <literal>
+ Real_Part{ inv[A - sigma*M]*M } == inv[A -
+ sigma*M]*M
+ </literal>
+ <literal>
+ amu ==
+ 1/(lambda-sigma)
+ </literal>
+ .
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Mode 4: A*x = lambda*M*x, M symmetric semi-definite <literal>
+ OP
+ = Imaginary_Part{ inv[A - sigma*M]*M } , B = M
+ </literal>
+ .
+ shift-and-invert mode (in real arithmetic)
+ </para>
+ <para>
+ If <literal>OP*x = amu*x</literal>, then <literal>
+ amu = 1/2i * [
+ 1/(lambda-sigma) - 1/(lambda-conjg(sigma)) ]
+ </literal>
+ .
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Both mode 3 and 4 give the same enhancement to eigenvalues close to
+ the (complex) shift sigma. However, as lambda goes to infinity, the
+ operator OP in mode 4 dampens the eigenvalues more strongly than does OP
+ defined in mode 3.
+ </para>
+ <para>
+ NOTE: The action of w &lt;- inv[A - sigma * M] * v or w &lt;- inv[M] * v
+ should be accomplished either by a direct method using a sparse matrix
+ factorization and solving <literal>[A - sigma * M] * w = v</literal> or
+ <literal>M * w = v</literal>, or through an iterative method for solving
+ these systems. If an iterative method is used, the convergence test must
+ be more stringent than the accuracy requirements for the eigenvalue
+ approximations.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Example</title>
+ <programlisting role="example">
+ <![CDATA[
+// The following sets dimensions for this problem.
+
+nx = 10;
+
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+
+// Local Arrays
+
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+dr = zeros(nev + 1, 1);
+di = zeros(nev + 1, 1);
+z = zeros(nx, nev + 1);
+resid = zeros(nx, 1);
+v = zeros(nx, ncv);
+workd = zeros(3 * nx, 1);
+workev = zeros(3 * ncv, 1);
+workl = zeros(3 * ncv * ncv + 6 * ncv, 1);
+
+// Build the test matrix
+
+A = diag(10 * ones(nx, 1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx-1,1));
+
+tol = 0;
+ido = 0;
+
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+
+sigmar = 0; // the real part of the shift
+sigmai = 0; // the imaginary part of the shift
+info_dnaupd = 0;
+
+// M A I N L O O P (Reverse communication)
+
+while(ido <> 99)
+ // Repeatedly call the routine DNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+
+ [ido, resid, v, iparam, ipntr, workd, workl, info_dnaupd] = dnaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_dnaupd);
+
+ if(info_dnaupd < 0)
+ printf('\nError with dnaupd, info = %d\n',info_dnaupd);
+ printf('Check the documentation of dnaupd\n\n');
+ end
+
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx -1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+
+// Post-Process using DNEUPD.
+rvec = 1;
+howmany = 'A';
+info_dneupd = 0;
+
+[dr, di, z, resid, v, iparam, ipntr, workd, workl, info_dneupd] = dneupd(rvec, howmany, _select, dr, di, z, sigmar, sigmai, workev, ...
+ bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, info_dneupd);
+
+if(info_dneupd < 0)
+ printf('\nError with dneupd, info = %d\n', info_dneupd);
+ printf('Check the documentation of dneupd.\n\n');
+end
+
+printf('\nDNSIMP\n');
+printf('======\n');
+printf('\n');
+printf('Size of the matrix is %d\n', nx);
+printf('The number of Ritz values requested is %d\n', nev);
+printf('The number of Arnoldi vectors generated (NCV) is %d\n', ncv);
+printf('What portion of the spectrum: %s\n', which);
+printf('The number of Implicit Arnoldi update iterations taken is %d\n', iparam(3));
+printf('The number of OP*x is %d\n', iparam(9));
+printf('The convergence criterion is %d\n', tol);
+
+]]>
+ </programlisting>
+ </refsection>
+ <refsection>
+ <title>Remarks</title>
+ <para>
+ 1. The computed Ritz values are approximate eigenvalues of OP. The
+ selection of WHICH should be made with this in mind when Mode = 3 and 4.
+ After convergence, approximate eigenvalues of the original problem may be
+ obtained with the ARPACK subroutine dneupd.
+ </para>
+ <para>
+ 2. If a basis for the invariant subspace corresponding to the
+ converged Ritz values is needed, the user must call dneupd immediately
+ following completion of dnaupd. This is new starting with release 2 of
+ ARPACK.
+ </para>
+ <para>
+ 3. If M can be factored into a Cholesky factorization M = LL` then
+ Mode = 2 should not be selected. Instead one should use Mode = 1 with OP =
+ inv(L) * A * inv(L`). Appropriate triangular linear systems should be solved
+ with L and L` rather than computing inverses. After convergence, an
+ approximate eigenvector z of the original problem is recovered by solving
+ L`z = x where x is a Ritz vector of OP.
+ </para>
+ <para>
+ 4. At present there is no a-priori analysis to guide the selection
+ of NCV relative to NEV. The only formal requirement is that NCV &gt; NEV +
+ 2. However, it is recommended that NCV &gt;= 2 * NEV + 1. If many problems of
+ the same type are to be solved, one should experiment with increasing NCV
+ while keeping NEV fixed for a given test problem. This will usually
+ decrease the required number of OP*x operations but it also increases the
+ work and storage required to maintain the orthogonal basis vectors. The
+ optimal "cross-over" with respect to CPU time is problem dependent and
+ must be determined empirically. See Chapter 8 of Reference 2 for further
+ information.
+ </para>
+ <para>
+ 5. When IPARAM(1) = 0, and IDO = 3, the user needs to provide the NP
+ = IPARAM(8) real and imaginary parts of the shifts in locations
+ </para>
+ <programlisting>
+ real part imaginary part
+ ----------------------- --------------
+ 1 WORKL(IPNTR(14)) WORKL(IPNTR(14) + NP)
+ 2 WORKL(IPNTR(14) + 1) WORKL(IPNTR(14) + NP + 1)
+ . .
+ . .
+ . .
+ NP WORKL(IPNTR(14) + NP - 1) WORKL(IPNTR(14) + 2 * NP - 1).
+ </programlisting>
+ <para>
+ Only complex conjugate pairs of shifts may be applied and the pairs
+ must be placed in consecutive locations. The real part of the eigenvalues
+ of the current upper Hessenberg matrix are located in WORKL(IPNTR(6))
+ through WORKL(IPNTR(6) + NCV - 1) and the imaginary part in WORKL(IPNTR(7))
+ through WORKL(IPNTR(7) + NCV - 1). They are ordered according to the order
+ defined by WHICH. The complex conjugate pairs are kept together and the
+ associated Ritz estimates are located in WORKL(IPNTR(8)),
+ WORKL(IPNTR(8)+1), ... , WORKL(IPNTR(8) + NCV - 1).
+ </para>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="dsaupd">dsaupd</link>
+ </member>
+ <member>
+ <link linkend="dneupd">dneupd</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Bibliography</title>
+ <para>
+ 1. D.C. Sorensen, "Implicit Application of Polynomial Filters in a
+ k-Step Arnoldi Method", SIAM J. Matr. Anal. Apps., 13 (1992), pp
+ 357-385.
+ </para>
+ <para>
+ 2. R.B. Lehoucq, "Analysis and Implementation of an Implicitly
+ Restarted Arnoldi Iteration", Rice University Technical Report TR95-13,
+ Department of Computational and Applied Mathematics.
+ </para>
+ <para>
+ 3. B.N. Parlett, "The Symmetric Eigenvalue Problem". Prentice-Hall,
+ 1980.
+ </para>
+ <para>
+ 4. B.N. Parlett, B. Nour-Omid, "Towards a Black Box Lanczos
+ Program", Computer Physics Communications, 53 (1989), pp 169-179.
+ </para>
+ <para>
+ 5. B. Nour-Omid, B.N. Parlett, T. Ericson, P.S. Jensen, "How to
+ Implement the Spectral Transformation", Math. Comp., 48 (1987), pp
+ 663-673.
+ </para>
+ <para>
+ 6. R.G. Grimes, J.G. Lewis and H.D. Simon, "A Shifted Block Lanczos
+ Algorithm for Solving Sparse Symmetric Generalized Eigenproblems", SIAM J.
+ Matr. Anal. Apps., January (1993).
+ </para>
+ <para>
+ 7. L. Reichel, W.B. Gragg, "Algorithm 686: FORTRAN Subroutines for
+ Updating the QR decomposition", ACM TOMS, December 1990, Volume 16 Number
+ 4, pp 369-377.
+ </para>
+ <para>
+ 8. R.B. Lehoucq, D.C. Sorensen, "Implementation of Some Spectral
+ Transformations in a k-Step Arnoldi Method". In Preparation.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>Based on ARPACK routine dnaupd</para>
+ </refsection>
+ <refsection>
+ <title>History</title>
+ <revhistory>
+ <revision>
+ <revnumber>5.4.0</revnumber>
+ <revremark>
+ Function obsolete for <link linkend="eigs">eigs</link>.
+ </revremark>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
diff --git a/modules/arnoldi/help/en_US/dneupd.xml b/modules/arnoldi/help/en_US/dneupd.xml
new file mode 100755
index 000000000..de24bcbd5
--- /dev/null
+++ b/modules/arnoldi/help/en_US/dneupd.xml
@@ -0,0 +1,642 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="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="dneupd" xml:lang="en">
+ <refnamediv>
+ <refname>dneupd</refname>
+ <refpurpose>
+ Interface for the Implicitly Restarted Arnoldi Iteration, to
+ compute the converged approximations to eigenvalues of A * z = lambda * B * z
+ approximations to a few eigenpairs of a real linear operator
+ <emphasis role="bold">
+ This function is obsolete. Please use <link linkend="eigs">eigs</link>
+ </emphasis>
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>
+ [Dr, Di, Z, RESID, V, IPARAM, IPNTR, WORKD, WORKL, INFO] = dneupd(RVEC, HOWMANY, SELECT, Dr, Di, Z, SIGMAr, SIGMAi, WORKev,
+ BMAT, N, WHICH, NEV, TOL, RESID, NCV, V, IPARAM, IPNTR, WORKD, WORKL, INFO)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>RVEC</term>
+ <listitem>
+ <para>Integer. (INPUT)</para>
+ <para>
+ Specifies whether a basis for the invariant subspace
+ corresponding to the converged Ritz value approximations for the
+ eigenproblem A * z = lambda * B * z is computed.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>RVEC = 0 Compute Ritz values only.</para>
+ </listitem>
+ <listitem>
+ <para>RVEC = 1 Compute the Ritz vectors or Schur vectors.</para>
+ </listitem>
+ </itemizedlist>
+ <para>See Remarks below.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>HOWMANY</term>
+ <listitem>
+ <para>Character. (INPUT) </para>
+ <para>
+ Specifies the form of the basis for the invariant subspace
+ corresponding to the converged Ritz values that is to be
+ computed.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>'A': Compute NEV Ritz vectors;</para>
+ </listitem>
+ <listitem>
+ <para>'P': Compute NEV Schur vectors;</para>
+ </listitem>
+ <listitem>
+ <para>
+ 'S': compute some of the Ritz vectors, specified by the
+ integer array SELECT.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SELECT</term>
+ <listitem>
+ <para>Integer array of dimension NCV. (INPUT) </para>
+ <para>
+ If HOWMANY = 'S', SELECT specifies the Ritz vectors to be
+ computed. To select the Ritz vector corresponding to a Ritz value
+ (DR(j), DI(j)), SELECT(j) must be set to 1.
+ </para>
+ <para>
+ If HOWMANY = 'A' or 'P', SELECT is used as internal
+ workspace.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>DR</term>
+ <listitem>
+ <para>Double precision array of dimension NEV + 1. (OUTPUT)</para>
+ <para>
+ If IPARAM(7) = 1, 2 or 3 and SIGMAI = 0.0 then on exit: DR
+ contains the real part of the Ritz approximations to the eigenvalues
+ of A * z = lambda * B * z.
+ </para>
+ <para>
+ If IPARAM(7) = 3, 4 and SIGMAI is not equal to zero, then on
+ exit: DR contains the real part of the Ritz values of OP computed by
+ DNAUPD.
+ </para>
+ <para>
+ A further computation must be performed by the user to
+ transform the Ritz values computed for OP by DNAUPD to those of the
+ original system A * z = lambda * B * z. See remark 3 below.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>DI</term>
+ <listitem>
+ <para>Double precision array of dimension NEV + 1. (OUTPUT) </para>
+ <para>
+ On exit, DI contains the imaginary part of the Ritz value
+ approximations to the eigenvalues of A * z = lambda * B * z associated
+ with DR.
+ </para>
+ <para>
+ NOTE: When Ritz values are complex, they will come in complex
+ conjugate pairs. If eigenvectors are requested, the corresponding
+ Ritz vectors will also come in conjugate pairs and the real and
+ imaginary parts of these are represented in two consecutive columns
+ of the array Z (see below).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Z</term>
+ <listitem>
+ <para>Double precision N by NEV + 1 array </para>
+ <para>if RVEC = 1 and HOWMANY = 'A'. (OUTPUT) </para>
+ <para>
+ On exit, if RVEC = 1 and HOWMANY = 'A', then the columns of Z
+ represent approximate eigenvectors (Ritz vectors) corresponding to
+ the NCONV = IPARAM(5) Ritz values for eigensystem A * z = lambda * B * z.
+ The complex Ritz vector associated with the Ritz value with positive
+ imaginary part is stored in two consecutive columns. The first
+ column holds the real part of the Ritz vector and the second column
+ holds the imaginary part. The Ritz vector associated with the Ritz
+ value with negative imaginary part is simply the complex conjugate
+ of the Ritz vector associated with the positive imaginary part.
+ </para>
+ <para>
+ If RVEC = 0 or HOWMANY = 'P', then Z is not referenced.
+ </para>
+ <para>
+ NOTE: If if RVEC = 1 and a Schur basis is not required, the
+ array Z may be set equal to first NEV+1 columns of the Arnoldi basis
+ array V computed by DNAUPD . In this case the Arnoldi basis will be
+ destroyed and overwritten with the eigenvector basis.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SIGMAR</term>
+ <listitem>
+ <para>Double precision (INPUT) </para>
+ <para>
+ If IPARAM(7) = 3 or 4, represents the real part of the
+ shift.
+ </para>
+ <para>Not referenced if IPARAM(7) = 1 or 2.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SIGMAI</term>
+ <listitem>
+ <para>Double precision (INPUT) </para>
+ <para>
+ If IPARAM(7) = 3 or 4, represents the imaginary part of the
+ shift.
+ </para>
+ <para>
+ Not referenced if IPARAM(7) = 1 or 2. See remark 3
+ below.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKEV</term>
+ <listitem>
+ <para>
+ Double precision work array of dimension 3 * NCV.
+ (WORKSPACE)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ NOTE: The remaining arguments BMAT, N, WHICH, NEV, TOL, RESID, NCV,
+ V, IPARAM, IPNTR, WORKD, WORKL, LWORKL, INFO must be passed directly to
+ DNEUPD following the last call to DNAUPD .
+ </para>
+ <para>
+ These arguments MUST NOT BE MODIFIED between the last call to
+ DNAUPD and the call to DNEUPD .
+ </para>
+ <para>
+ Three of these parameters (V, WORKL, INFO) are also output
+ parameters.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>V</term>
+ <listitem>
+ <para>Double precision N by NCV array. (INPUT/OUTPUT) </para>
+ <para>
+ Upon INPUT: the NCV columns of V contain the Arnoldi basis
+ vectors for OP as constructed by DNAUPD.
+ </para>
+ <para>
+ Upon OUTPUT: If RVEC = 1 the first NCONV = IPARAM(5) columns
+ contain approximate Schur vectors that span the desired invariant
+ subspace. See Remark 2 below.
+ </para>
+ <para>
+ NOTE: If the array Z has been set equal to first NEV+1 columns
+ of the array V and RVEC = 1 and HOWMANY= 'A', then the Arnoldi basis
+ held by V has been overwritten by the desired Ritz vectors. If a
+ separate array Z has been passed then the first NCONV = IPARAM(5)
+ columns of V will contain approximate Schur vectors that span the
+ desired invariant subspace.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKL</term>
+ <listitem>
+ <para>
+ Double precision work array of length LWORKL.
+ (OUTPUT/WORKSPACE)
+ </para>
+ <para>
+ WORKL(1:ncv*ncv+3*ncv) contains information obtained in dnaupd
+ . They are not changed by dneupd .
+ </para>
+ <para>
+ WORKL(ncv*ncv+3*ncv+1:3*ncv*ncv+6*ncv) holds the real and
+ imaginary part of the untransformed Ritz values, the upper
+ quasi-triangular matrix for H, and the associated matrix
+ representation of the invariant subspace for H.
+ </para>
+ <para>
+ Note: IPNTR(9:13) contains the pointer into WORKL for
+ addresses of the above information computed by dneupd .
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(9): pointer to the real part of the NCV RITZ values
+ of the original system.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(10): pointer to the imaginary part of the NCV RITZ
+ values of the original system.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(11): pointer to the NCV corresponding error
+ bounds.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(12): pointer to the NCV by NCV upper
+ quasi-triangular Schur matrix for H.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(13): pointer to the NCV by NCV matrix of
+ eigenvectors of the upper Hessenberg matrix H. Only referenced
+ by dneupd if RVEC = 1 See Remark 2 below.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>INFO</term>
+ <listitem>
+ <para>Integer. (OUTPUT).</para>
+ <para>Error flag on output.</para>
+ <itemizedlist>
+ <listitem>
+ <para>0: Normal exit.</para>
+ </listitem>
+ <listitem>
+ <para>
+ 1: The Schur form computed by LAPACK routine dlahqr could
+ not be reordered by LAPACK routine dtrsen . Re-enter subroutine
+ dneupd with IPARAM(5)=NCV and increase the size of the arrays DR
+ and DI to have dimension at least dimension NCV and allocate at
+ least NCV columns for Z.
+ </para>
+ <para>
+ NOTE: Not necessary if Z and V share the same space.
+ Please notify the authors if this error occurs.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-1: N must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-2: NEV must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-3: NCV-NEV &gt;= 2 and less than or equal to N.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -5: WHICH must be one of 'LM', 'SM', 'LR', 'SR', 'LI',
+ 'SI'.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-6: BMAT must be one of 'I' or 'G'.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -7: Length of private work WORKL array is not
+ sufficient.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -8: Error return from calculation of a real Schur form.
+ Informational error from LAPACK routine dlahqr.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -9: Error return from calculation of eigenvectors.
+ Informational error from LAPACK routine dtrevc.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-10: IPARAM(7) must be 1, 2, 3, 4.</para>
+ </listitem>
+ <listitem>
+ <para>-11: IPARAM(7) = 1 and BMAT = 'G' are incompatible.</para>
+ </listitem>
+ <listitem>
+ <para>-12: HOWMANY = 'S' not yet implemented. </para>
+ </listitem>
+ <listitem>
+ <para>-13: HOWMANY must be one of 'A' or 'P' if RVEC = 1.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -14: DNAUPD did not find any eigenvalues to sufficient
+ accuracy.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -15: DNEUPD got a different count of the number of
+ converged Ritz values than DNAUPD got. This indicates the user
+ probably made an error in passing data from DNAUPD to DNEUPD or
+ that the data was modified before entering DNEUPD.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ This subroutine returns the converged approximations to eigenvalues
+ of A * z = lambda * B * z and (optionally):
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>The corresponding approximate eigenvectors;</para>
+ </listitem>
+ <listitem>
+ <para>
+ An orthonormal basis for the associated approximate invariant
+ subspace;
+ </para>
+ </listitem>
+ <listitem>
+ <para>Both.</para>
+ </listitem>
+ </orderedlist>
+ <para>
+ There is negligible additional cost to obtain eigenvectors. An
+ orthonormal basis is always computed.
+ </para>
+ <para>
+ There is an additional storage cost of n*nev if both are requested
+ (in this case a separate array Z must be supplied).
+ </para>
+ <para>
+ The approximate eigenvalues and eigenvectors of A * z = lambda * B * z are
+ derived from approximate eigenvalues and eigenvectors of of the linear
+ operator OP prescribed by the MODE selection in the call to DNAUPD. DNAUPD
+ must be called before this routine is called.
+ </para>
+ <para>
+ These approximate eigenvalues and vectors are commonly called Ritz
+ values and Ritz vectors respectively. They are referred to as such in the
+ comments that follow.
+ </para>
+ <para>
+ The computed orthonormal basis for the invariant subspace
+ corresponding to these Ritz values is referred to as a Schur basis.
+ </para>
+ <para>
+ See documentation in the header of the subroutine DNAUPD for
+ definition of OP as well as other terms and the relation of computed Ritz
+ values and Ritz vectors of OP with respect to the given problem A * z =
+ lambda * B * z.
+ </para>
+ <para>
+ For a brief description, see definitions of IPARAM(7), MODE and
+ WHICH in the documentation of DNAUPD .
+ </para>
+ </refsection>
+ <refsection>
+ <title>Remarks</title>
+ <orderedlist>
+ <listitem>
+ <para>Currently only HOWMNY = 'A' and 'P' are implemented. </para>
+ <para>Let trans(X) denote the transpose of X. </para>
+ </listitem>
+ <listitem>
+ <para>
+ Schur vectors are an orthogonal representation for the basis of
+ Ritz vectors. Thus, their numerical properties are often superior. If
+ RVEC = 1 then the relationship
+ </para>
+ <para>
+ A * V(:,1:IPARAM(5)) = V(:,1:IPARAM(5)) * T, and
+ trans(V(:,1:IPARAM(5))) * V(:,1:IPARAM(5)) = I
+ </para>
+ <para>are approximately satisfied. </para>
+ <para>
+ Here T is the leading submatrix of order IPARAM(5) of the real
+ upper quasi-triangular matrix stored workl(ipntr(12)). That is, T is
+ block upper triangular with 1-by-1 and 2-by-2 diagonal blocks; each
+ 2-by-2 diagonal block has its diagonal elements equal and its
+ off-diagonal elements of opposite sign. Corresponding to each 2-by-2
+ diagonal block is a complex conjugate pair of Ritz values. The real
+ Ritz values are stored on the diagonal of T.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If IPARAM(7) = 3 or 4 and SIGMAI is not equal zero, then the
+ user must form the IPARAM(5) Rayleigh quotients in order to transform
+ the Ritz values computed by DNAUPD for OP to those of A * z =
+ lambda * B * z. Set RVEC = 1 and HOWMNY = 'A', and compute
+ </para>
+ <para>trans(Z(:,I)) * A * Z(:,I) if DI(I) = 0. </para>
+ <para>
+ If DI(I) is not equal to zero and DI(I+1) = - D(I), then the
+ desired real and imaginary parts of the Ritz value are
+ </para>
+ <para>
+ trans(Z(:,I)) * A * Z(:,I) + trans(Z(:,I+1)) * A * Z(:,I+1),
+ </para>
+ <para>
+ trans(Z(:,I)) * A * Z(:,I+1) - trans(Z(:,I+1)) * A * Z(:,I),
+ </para>
+ <para>respectively. </para>
+ <para>
+ Another possibility is to set RVEC = 1 and HOWMANY = 'P' and
+ compute
+ </para>
+ <para>trans(V(:,1:IPARAM(5))) * A * V(:,1:IPARAM(5)) </para>
+ <para>
+ and then an upper quasi-triangular matrix of order IPARAM(5) is
+ computed. See remark 2 above.
+ </para>
+ </listitem>
+ </orderedlist>
+ </refsection>
+ <refsection>
+ <title>Example</title>
+ <programlisting role="example">
+ <![CDATA[
+
+// The following sets dimensions for this problem.
+
+nx = 10;
+
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+
+// Local Arrays
+
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+dr = zeros(nev + 1, 1);
+di = zeros(nev + 1, 1);
+z = zeros(nx, nev + 1);
+resid = zeros(nx, 1);
+v = zeros(nx, ncv);
+workd = zeros(3 * nx, 1);
+workev = zeros(3 * ncv, 1);
+workl = zeros(3 * ncv * ncv + 6 * ncv, 1);
+
+// Build the test matrix
+
+A = diag(10 * ones(nx, 1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx-1,1));
+
+tol = 0;
+ido = 0;
+
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+
+sigmar = 0; // the real part of the shift
+sigmai = 0; // the imaginary part of the shift
+info_dnaupd = 0;
+
+// M A I N L O O P (Reverse communication)
+
+while(ido <> 99)
+ // Repeatedly call the routine DNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+
+ [ido, resid, v, iparam, ipntr, workd, workl, info_dnaupd] = dnaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_dnaupd);
+
+ if(info_dnaupd < 0)
+ printf('\nError with dnaupd, info = %d\n',info_dnaupd);
+ printf('Check the documentation of dnaupd\n\n');
+ end
+
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx -1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+
+// Post-Process using DNEUPD.
+rvec = 1;
+howmany = 'A';
+info_dneupd = 0;
+
+[dr, di, z, resid, v, iparam, ipntr, workd, workl, info_dneupd] = dneupd(rvec, howmany, _select, dr, di, z, sigmar, sigmai, workev, ...
+ bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, info_dneupd);
+
+if(info_dneupd < 0)
+ printf('\nError with dneupd, info = %d\n', info_dneupd);
+ printf('Check the documentation of dneupd.\n\n');
+end
+
+printf('\nDNSIMP\n');
+printf('======\n');
+printf('\n');
+printf('Size of the matrix is %d\n', nx);
+printf('The number of Ritz values requested is %d\n', nev);
+printf('The number of Arnoldi vectors generated (NCV) is %d\n', ncv);
+printf('What portion of the spectrum: %s\n', which);
+printf('The number of Implicit Arnoldi update iterations taken is %d\n', iparam(3));
+printf('The number of OP*x is %d\n', iparam(9));
+printf('The convergence criterion is %d\n', tol);
+
+]]>
+ </programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="dsaupd">dsaupd</link>
+ </member>
+ <member>
+ <link linkend="dnaupd">dnaupd</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Bibliography</title>
+ <para>
+ 1. D.C. Sorensen, "Implicit Application of Polynomial Filters in a
+ k-Step Arnoldi Method", SIAM J. Matr. Anal. Apps., 13 (1992), pp
+ 357-385.
+ </para>
+ <para>
+ 2. R.B. Lehoucq, "Analysis and Implementation of an Implicitly
+ Restarted Arnoldi Iteration", Rice University Technical Report TR95-13,
+ Department of Computational and Applied Mathematics.
+ </para>
+ <para>
+ 3. B.N. Parlett, "The Symmetric Eigenvalue Problem". Prentice-Hall,
+ 1980.
+ </para>
+ <para>
+ 4. B.N. Parlett, B. Nour-Omid, "Towards a Black Box Lanczos
+ Program", Computer Physics Communications, 53 (1989), pp 169-179.
+ </para>
+ <para>
+ 5. B. Nour-Omid, B.N. Parlett, T. Ericson, P.S. Jensen, "How to
+ Implement the Spectral Transformation", Math. Comp., 48 (1987), pp
+ 663-673.
+ </para>
+ <para>
+ 6. R.G. Grimes, J.G. Lewis and H.D. Simon, "A Shifted Block Lanczos
+ Algorithm for Solving Sparse Symmetric Generalized Eigenproblems", SIAM J.
+ Matr. Anal. Apps., January (1993).
+ </para>
+ <para>
+ 7. L. Reichel, W.B. Gragg, "Algorithm 686: FORTRAN Subroutines for
+ Updating the QR decomposition", ACM TOMS, December 1990, Volume 16 Number
+ 4, pp 369-377.
+ </para>
+ <para>
+ 8. R.B. Lehoucq, D.C. Sorensen, "Implementation of Some Spectral
+ Transformations in a k-Step Arnoldi Method". In Preparation.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>Based on ARPACK routine dneupd</para>
+ </refsection>
+ <refsection>
+ <title>History</title>
+ <revhistory>
+ <revision>
+ <revnumber>5.4.0</revnumber>
+ <revremark>
+ Function obsolete for <link linkend="eigs">eigs</link>.
+ </revremark>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
diff --git a/modules/arnoldi/help/en_US/dsaupd.xml b/modules/arnoldi/help/en_US/dsaupd.xml
new file mode 100755
index 000000000..a0add0bd4
--- /dev/null
+++ b/modules/arnoldi/help/en_US/dsaupd.xml
@@ -0,0 +1,788 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="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="dsaupd" xml:lang="en">
+ <refnamediv>
+ <refname>dsaupd</refname>
+ <refpurpose>
+ Interface for the Implicitly Restarted Arnoldi Iteration, to
+ compute approximations to a few eigenpairs of a real and symmetric linear
+ operator
+ <emphasis role="bold">
+ This function is obsolete. Please use <link linkend="eigs">eigs</link>
+ </emphasis>
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[IDO, RESID, V, IPARAM, IPNTR, WORKD, WORKL, INFO] = dsaupd(ID0, BMAT, N, WHICH, NEV, TOL, RESID, NCV, V, IPARAM, IPNTR, WORKD, WORKL, INFO)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>ID0</term>
+ <listitem>
+ <para>Integer. (INPUT/OUTPUT) </para>
+ <para>
+ Reverse communication flag. IDO must be zero on the first call
+ to dsaupd . IDO will be set internally to indicate the type of
+ operation to be performed. Control is then given back to the calling
+ routine which has the responsibility to carry out the requested
+ operation and call dsaupd with the result.
+ </para>
+ <para>
+ The operand is given in WORKD(IPNTR(1)), the result must be put
+ in WORKD(IPNTR(2)). (If Mode = 2 see remark 5 below)
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IDO = 0: first call to the reverse communication
+ interface.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = -1: compute Y = OP * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for Y. This
+ is for the initialization phase to force the starting vector
+ into the range of OP.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 1: compute Y = OP * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for Y. In
+ mode 3, 4 and 5, the vector B * X is already available in
+ WORKD(ipntr(3)). It does not need to be recomputed in forming OP
+ * X.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 2: compute Y = B * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for
+ Y.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 3: compute the IPARAM(8) shifts where IPNTR(11) is
+ the pointer into WORKL for placing the shifts. See remark 6
+ below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IDO = 99: done</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>BMAT</term>
+ <listitem>
+ <para>Character. (INPUT)</para>
+ <para>
+ Specifies the type of the matrix B that defines the semi-inner
+ product for the operator OP.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>'I': standard eigenvalue problem A * x = lambda * x</para>
+ </listitem>
+ <listitem>
+ <para>
+ 'G': generalized eigenvalue problem A * x =
+ lambda * B * x
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>N</term>
+ <listitem>
+ <para>Integer. (INPUT)</para>
+ <para>Dimension of the eigenproblem.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WHICH</term>
+ <listitem>
+ <para>String of length 2. (INPUT)</para>
+ <para>Specifies which of the Ritz values of OP to compute.</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ 'LA' - compute the NEV largest (algebraic)
+ eigenvalues.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'SA' - compute the NEV smallest (algebraic)
+ eigenvalues.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'LM' - compute the NEV largest (in magnitude)
+ eigenvalues.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'SM' - compute the NEV smallest (in magnitude)
+ eigenvalues.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'BE' - compute NEV eigenvalues, half from each end of the
+ spectrum. When NEV is odd, compute one more from the high end
+ than from the low end. (see remark 1 below)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>NEV</term>
+ <listitem>
+ <para>Integer. (INPUT)</para>
+ <para>
+ Number of eigenvalues of OP to be computed. 0 &lt; NEV &lt;
+ N.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>TOL</term>
+ <listitem>
+ <para>scalar. (INPUT)</para>
+ <para>
+ Stopping criterion: the relative accuracy of the Ritz value is
+ considered acceptable if BOUNDS(I) &lt;= TOL * ABS(RITZ(I)). If TOL
+ &lt;= 0. is passed the machine precision is set.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>RESID</term>
+ <listitem>
+ <para>Array of length N. (INPUT/OUTPUT)</para>
+ <para>
+ On INPUT: If INFO = 0, a random initial residual vector is
+ used, else RESID contains the initial residual vector, possibly from
+ a previous run.
+ </para>
+ <para>On OUTPUT: RESID contains the final residual vector.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>NCV</term>
+ <listitem>
+ <para>Integer. (INPUT)</para>
+ <para>
+ Number of columns of the matrix V (less than or equal to N).
+ </para>
+ <para>
+ This will indicate how many Lanczos vectors are generated at
+ each iteration. After the startup phase in which NEV Lanczos vectors
+ are generated, the algorithm generates NCV - NEV Lanczos vectors at
+ each subsequent update iteration. Most of the cost in generating
+ each Lanczos vector is in the matrix-vector product OP * x. (See
+ remark 4 below).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>V</term>
+ <listitem>
+ <para>N by NCV array. (OUTPUT) </para>
+ <para>The NCV columns of V contain the Lanczos basis vectors.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>IPARAM</term>
+ <listitem>
+ <para>array of length 11. (INPUT/OUTPUT)</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPARAM(1) = ISHIFT: method for selecting the implicit
+ shifts. The shifts selected at each iteration are used to
+ restart the Arnoldi iteration in an implicit fashion.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ISHIFT = 0: the shifts are provided by the user via
+ reverse communication. The NCV eigenvalues of the current
+ tridiagonal matrix T are returned in the part of WORKL array
+ corresponding to RITZ. See remark 6 below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ISHIFT = 1: exact shifts with respect to the reduced
+ tridiagonal matrix T. This is equivalent to restarting the
+ iteration with a starting vector that is a linear
+ combination of Ritz vectors associated with the "wanted"
+ Ritz values.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(2) = LEVEC. No longer referenced. See remark 2
+ below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IPARAM(3) = MXITER </para>
+ <para>
+ On INPUT: maximum number of Arnoldi update iterations
+ allowed.
+ </para>
+ <para>
+ On OUTPUT: actual number of Arnoldi update iterations
+ taken.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(4) = NB: blocksize to be used in the recurrence.
+ The code currently works only for NB = 1.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(5) = NCONV: number of "converged" Ritz values. This
+ represents the number of Ritz values that satisfy the
+ convergence criterion.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(6) = IUPD No longer referenced. Implicit restarting
+ is ALWAYS used.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(7) = MODE On INPUT determines what type of
+ eigenproblem is being solved. Must be 1,2,3,4,5; See under
+ Description of dsaupd for the five modes available.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(8) = NP When ido = 3 and the user provides shifts
+ through reverse communication (IPARAM(1)=0), dsaupd returns NP,
+ the number of shifts the user is to provide. 0 &lt; NP &lt;=
+ NCV-NEV. See Remark 6 below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IPARAM(9) = NUMOP, </para>
+ <para>IPARAM(10) = NUMOPB, </para>
+ <para>
+ IPARAM(11) = NUMREO, OUTPUT: NUMOP = total number of OP*x
+ operations, NUMOPB = total number of B*x operations if BMAT='G',
+ NUMREO = total number of steps of re-orthogonalization.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>IPNTR</term>
+ <listitem>
+ <para>
+ array of length 11. (OUTPUT)
+ </para>
+ <para>
+ Pointer to mark the starting locations in
+ the WORKD and WORKL arrays for matrices/vectors used by the Lanczos
+ iteration.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(1): pointer to the current operand vector X in
+ WORKD.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(2): pointer to the current result vector Y in
+ WORKD.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(3): pointer to the vector B * X in WORKD when used
+ in the shift-and-invert mode.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(4): pointer to the next available location in WORKL
+ that is untouched by the program.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(5): pointer to the NCV by 2 tridiagonal matrix T in
+ WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(6): pointer to the NCV RITZ values array in
+ WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(7): pointer to the Ritz estimates in array WORKL
+ associated with the Ritz values located in RITZ in WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(11): pointer to the NP shifts in WORKL. See Remark 6
+ below.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Note: IPNTR(8:10) is only referenced by dseupd . See Remark
+ 2.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(8): pointer to the NCV RITZ values of the original
+ system.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(9): pointer to the NCV corresponding error
+ bounds.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(10): pointer to the NCV by NCV matrix of
+ eigenvectors of the tridiagonal matrix T. Only referenced by
+ dseupd if RVEC = 1. See Remarks
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKD</term>
+ <listitem>
+ <para>work array of length 3 * N. (REVERSE COMMUNICATION) </para>
+ <para>
+ Distributed array to be used in the basic Arnoldi iteration
+ for reverse communication. The user should not use WORKD as
+ temporary workspace during the iteration. Upon termination
+ WORKD(1:N) contains B*RESID(1:N). If the Ritz vectors are desired
+ subroutine dseupd uses this output. See Data Distribution Note
+ below.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKL</term>
+ <listitem>
+ <para>
+ work array of length at least NCV ** 2 + 8 * NCV.
+ (OUTPUT/WORKSPACE)
+ </para>
+ <para>
+ Private (replicated) array on each PE or array allocated on
+ the front end. See Data Distribution Note below. add here the
+ parameter description.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>INFO</term>
+ <listitem>
+ <para>Integer. (INPUT/OUTPUT)</para>
+ <para>
+ If INFO = 0, a randomly initial residual vector is used, else
+ RESID contains the initial residual vector, possibly from a previous
+ run.
+ </para>
+ <para>Error flag on output.</para>
+ <itemizedlist>
+ <listitem>
+ <para>0: Normal exit.</para>
+ </listitem>
+ <listitem>
+ <para>
+ 1: Maximum number of iterations taken. All possible
+ eigenvalues of OP has been found. IPARAM(5) returns the number
+ of wanted converged Ritz values.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2: No longer an informational error. Deprecated starting
+ with release 2 of ARPACK.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3: No shifts could be applied during a cycle of the
+ Implicitly restarted Arnoldi iteration. One possibility is to
+ increase the size of NCV relative to NEV. See remark 4
+ below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-1: N must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-2: NEV must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -3: NCV must be greater than NEV and less than or equal to
+ N.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -4: The maximum number of Arnoldi update iterations
+ allowed must be greater than zero.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -5: WHICH must be one of 'LM', 'SM', 'LA', 'SA' or
+ 'BE'.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-6: BMAT must be one of 'I' or 'G'.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -7: Length of private work array WORKL is not
+ sufficient.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -8: Error return from trid. eigenvalue calculation;
+ Informatinal error from LAPACK routine dsteqr.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-9: Starting vector is zero.</para>
+ </listitem>
+ <listitem>
+ <para>-10: IPARAM(7) must be 1, 2, 3, 4, 5.</para>
+ </listitem>
+ <listitem>
+ <para>-11: IPARAM(7) = 1 and BMAT = 'G' are incompatable.</para>
+ </listitem>
+ <listitem>
+ <para>-12: IPARAM(1) must be equal to 0 or 1.</para>
+ </listitem>
+ <listitem>
+ <para>-13: NEV and WHICH = 'BE' are incompatable.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -9999: Could not build an Arnoldi factorization. IPARAM(5)
+ returns the size of the current Arnoldi factorization. The user
+ is advised to check that enough workspace and array storage has
+ been allocated.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Reverse communication interface for the Implicitly Restarted Arnoldi
+ Iteration. For symmetric problems this reduces to a variant of the Lanczos
+ method. This method has been designed to compute approximations to a few
+ eigenpairs of a linear operator OP that is real and symmetric with respect
+ to a real positive semi-definite symmetric matrix B, i.e.<literal>
+ B * OP =
+ (OP`) * B
+ </literal>
+ .
+ </para>
+ <para>
+ Another way to express this condition is <literal>
+ &lt; x,OPy &gt; =
+ &lt; OPx,y &gt; where &lt;z,w &gt; = z`Bw
+ </literal>
+ .
+ </para>
+ <para>
+ In the standard eigenproblem B is the identity matrix. ( A` denotes
+ transpose of A)
+ </para>
+ <para>
+ The computed approximate eigenvalues are called Ritz values and the
+ corresponding approximate eigenvectors are called Ritz vectors.
+ </para>
+ <para>
+ dsaupd is usually called iteratively to solve one of the following
+ problems:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Mode 1: A * x = lambda * x, A symmetric ===&gt; OP = A and B =
+ I.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Mode 2: A * x = lambda * M * x, A symmetric, M symmetric positive
+ definite ===&gt; OP = inv[M] * A and B = M. ===&gt; (If M can be
+ factored see remark 3 below)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Mode 3: K * x = lambda * M * x, K symmetric, M symmetric positive
+ semi-definite ===&gt; OP = (inv[K - sigma * M]) * M and B = M. ===&gt;
+ Shift-and-Invert mode
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Mode 4: K * x = lambda * KG * x, K symmetric positive semi-definite,
+ KG symmetric indefinite ===&gt; OP = (inv[K - sigma * KG]) * K and B = K.
+ ===&gt; Buckling mode
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Mode 5: A * x = lambda * M * x, A symmetric, M symmetric positive
+ semi-definite ===&gt; OP = inv[A - sigma * M] * [A + sigma * M] and B = M.
+ ===&gt; Cayley transformed mode
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ NOTE: The action of w &lt;- inv[A - sigma * M] * v or w &lt;- inv[M] * v
+ should be accomplished either by a direct method using a sparse matrix
+ factorization and solving <literal>
+ [A - sigma * M] * w = v or M * w =
+ v
+ </literal>
+ ,
+ </para>
+ <para>
+ or through an iterative method for solving these systems. If an
+ iterative method is used, the convergence test must be more stringent than
+ the accuracy requirements for the eigenvalue approximations.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Remarks</title>
+ <para>
+ 1. The converged Ritz values are always returned in ascending
+ algebraic order. The computed Ritz values are approximate eigenvalues of
+ OP. The selection of WHICH should be made with this in mind when Mode =
+ 3, 4, 5. After convergence, approximate eigenvalues of the original problem
+ may be obtained with the ARPACK subroutine dseupd .
+ </para>
+ <para>
+ 2. If the Ritz vectors corresponding to the converged Ritz values
+ are needed, the user must call dseupd immediately following completion of
+ dsaupd . This is new starting with version 2.1 of ARPACK.
+ </para>
+ <para>
+ 3. If M can be factored into a Cholesky factorization M = LL` then
+ Mode = 2 should not be selected. Instead one should use Mode = 1 with OP =
+ inv(L) * A * inv(L`). Appropriate triangular linear systems should be solved
+ with L and L` rather than computing inverses. After convergence, an
+ approximate eigenvector z of the original problem is recovered by solving
+ L`z = x where x is a Ritz vector of OP.
+ </para>
+ <para>
+ 4. At present there is no a-priori analysis to guide the selection
+ of NCV relative to NEV. The only formal requirement is that NCV &gt; NEV.
+ However, it is recommended that NCV &gt;= 2 * NEV. If many problems of the
+ same type are to be solved, one should experiment with increasing NCV
+ while keeping NEV fixed for a given test problem. This will usually
+ decrease the required number of OP * x operations but it also increases the
+ work and storage required to maintain the orthogonal basis vectors. The
+ optimal "cross-over" with respect to CPU time is problem dependent and
+ must be determined empirically.
+ </para>
+ <para>
+ 5. If IPARAM(7) = 2 then in the Reverse communication interface the
+ user must do the following. When IDO = 1, Y = OP * X is to be computed.
+ When IPARAM(7) = 2 OP = inv(B) * A. After computing A * X the user must
+ overwrite X with A * X. Y is then the solution to the linear set of
+ equations B * Y = A * X.
+ </para>
+ <para>
+ 6. When IPARAM(1) = 0, and IDO = 3, the user needs to provide the NP
+ = IPARAM(8) shifts in locations: 1 WORKL(IPNTR(11)) 2 WORKL(IPNTR(11) + 1) .
+ . . NP WORKL(IPNTR(11) + NP - 1). The eigenvalues of the current tridiagonal
+ matrix are located in WORKL(IPNTR(6)) through WORKL(IPNTR(6) + NCV - 1). They
+ are in the order defined by WHICH. The associated Ritz estimates are
+ located in WORKL(IPNTR(8)), WORKL(IPNTR(8) + 1), ... ,
+ WORKL(IPNTR(8) + NCV - 1).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Example</title>
+ <programlisting role="example">
+ <![CDATA[
+
+// The following sets dimensions for this problem.
+
+nx = 10;
+
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+
+// Local Arrays
+
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev, 1);
+z = zeros(nx, nev);
+resid = zeros(nx, 1);
+v = zeros(nx, ncv);
+workd = zeros(3 * nx, 1);
+workl = zeros(ncv * ncv + 8 * ncv, 1);
+
+// Build the symmetric test matrix
+
+A = diag(10 * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6 * ones(nx-1,1));
+
+tol = 0;
+ido = 0;
+
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+
+sigma = 0; // the real part of the shift
+info_dsaupd = 0;
+
+// M A I N L O O P (Reverse communication)
+
+while(ido <> 99)
+ // Repeatedly call the routine DSAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+
+ [ido, resid, v, iparam, ipntr, workd, workl, info_dsaupd] = dsaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_dsaupd);
+
+ if(info_dsaupd < 0)
+ printf('\nError with dsaupd, info = %d\n',info_dsaupd);
+ printf('Check the documentation of dsaupd\n\n');
+ end
+
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+
+// Post-Process using DSEUPD.
+rvec = 1;
+howmany = 'A';
+info_dseupd = 0;
+
+[d, z, resid, v, iparam, ipntr, workd, workl, info_dseupd] = dseupd(rvec, howmany, _select, d, z, sigma, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, info_dseupd);
+
+if(info_dseupd < 0)
+ printf('\nError with dseupd, info = %d\n', info_dseupd);
+ printf('Check the documentation of dseupd.\n\n');
+end
+
+
+// Done with program dssimp.
+printf('\nDSSIMP\n');
+printf('======\n');
+printf('\n');
+printf('Size of the matrix is %d\n', nx);
+printf('The number of Ritz values requested is %d\n', nev);
+printf('The number of Arnoldi vectors generated (NCV) is %d\n', ncv);
+printf('What portion of the spectrum: %s\n', which);
+printf('The number of Implicit Arnoldi update iterations taken is %d\n', iparam(3));
+printf('The number of OP*x is %d\n', iparam(9));
+printf('The convergence criterion is %d\n', tol);
+
+]]>
+ </programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="dnaupd">dnaupd</link>
+ </member>
+ <member>
+ <link linkend="dseupd">dseupd</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Bibliography</title>
+ <para>
+ 1. D.C. Sorensen, "Implicit Application of Polynomial Filters in a
+ k-Step Arnoldi Method", SIAM J. Matr. Anal. Apps., 13 (1992), pp
+ 357-385.
+ </para>
+ <para>
+ 2. R.B. Lehoucq, "Analysis and Implementation of an Implicitly
+ Restarted Arnoldi Iteration", Rice University Technical Report TR95-13,
+ Department of Computational and Applied Mathematics.
+ </para>
+ <para>
+ 3. B.N. Parlett and Y. Saad, "Complex Shift and Invert Strategies
+ for Real Matrices", Linear Algebra and its Applications, vol 88/89, pp
+ 575-595, (1987).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>Based on ARPACK routine dsaupd</para>
+ </refsection>
+ <refsection>
+ <title>History</title>
+ <revhistory>
+ <revision>
+ <revnumber>5.4.0</revnumber>
+ <revremark>
+ Function obsolete for <link linkend="eigs">eigs</link>.
+ </revremark>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
diff --git a/modules/arnoldi/help/en_US/dseupd.xml b/modules/arnoldi/help/en_US/dseupd.xml
new file mode 100755
index 000000000..b29edb314
--- /dev/null
+++ b/modules/arnoldi/help/en_US/dseupd.xml
@@ -0,0 +1,463 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="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="dseupd" xml:lang="en">
+ <refnamediv>
+ <refname>dseupd</refname>
+ <refpurpose>
+ Interface for the Implicitly Restarted Arnoldi Iteration, to
+ compute approximations to the converged approximations to eigenvalues of
+ A * z = lambda * B * z
+ <emphasis role="bold">
+ This function is obsolete. Please use <link linkend="eigs">eigs</link>
+ </emphasis>
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>
+ [D, Z, RESID, V, IPARAM, IPNTR, WORKD, WORKL, INFO] = dseupd(RVEC, HOWMANY, SELECT, D, Z, SIGMA, BMAT, N, WHICH,
+ NEV, TOL, RESID, NCV, V, IPARAM, IPNTR, WORKD, WORKL, INFO)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>RVEC</term>
+ <listitem>
+ <para>Integer. (INPUT) </para>
+ <para>
+ Specifies whether Ritz vectors corresponding to the Ritz value
+ approximations to the eigenproblem A * z = lambda * B * z are
+ computed.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>RVEC = 0 Compute Ritz values only.</para>
+ </listitem>
+ <listitem>
+ <para>RVEC = 1 Compute Ritz vectors.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>HOWMNY</term>
+ <listitem>
+ <para>Character*1. (INPUT) </para>
+ <para>
+ Specifies how many Ritz vectors are wanted and the form of Z
+ the matrix of Ritz vectors. See remark 1 below.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>'A': compute NEV Ritz vectors;</para>
+ </listitem>
+ <listitem>
+ <para>
+ 'S': compute some of the Ritz vectors, specified by the
+ integer array SELECT.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SELECT</term>
+ <listitem>
+ <para>Integer array of dimension NCV. (INPUT/WORKSPACE) </para>
+ <para>
+ If HOWMANY = 'S', SELECT specifies the Ritz vectors to be
+ computed. To select the Ritz vector corresponding to a Ritz value
+ D(j), SELECT(j) must be set to 1.
+ </para>
+ <para>
+ If HOWMANY = 'A' , SELECT is used as a workspace for
+ reordering the Ritz values.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>D</term>
+ <listitem>
+ <para>Double precision array of dimension NEV. (OUTPUT) </para>
+ <para>
+ On exit, D contains the Ritz value approximations to the
+ eigenvalues of A * z = lambda * B * z. The values are returned in
+ ascending order.
+ </para>
+ <para>
+ If IPARAM(7) = 3, 4, 5 then D represents the Ritz values of OP
+ computed by dsaupd transformed to those of the original eigensystem
+ A * z = lambda * B * z.
+ </para>
+ <para>
+ If IPARAM(7) = 1, 2 then the Ritz values of OP are the same as
+ the those of A * z = lambda * B * z.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Z</term>
+ <listitem>
+ <para>Double precision N by NEV array.</para>
+ <para>
+ If HOWMNY = 'A'. (OUTPUT) On exit, Z contains the
+ B-orthonormal Ritz vectors of the eigensystemA * z = lambda * B * z
+ corresponding to the Ritz value approximations.
+ </para>
+ <para>If RVEC = 0 then Z is not referenced. </para>
+ <para>
+ NOTE: The array Z may be set equal to first NEV columns of the
+ Arnoldi/Lanczos basis array V computed by DSAUPD .
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SIGMA</term>
+ <listitem>
+ <para>Double precision (INPUT) </para>
+ <para>
+ If IPARAM(7) = 3, 4, 5 represents the shift. Not referenced if
+ IPARAM(7) = 1 or 2.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ NOTE: The remaining arguments BMAT, N, WHICH, NEV, TOL, RESID, NCV,
+ V, IPARAM, IPNTR, WORKD, WORKL, LWORKL, INFO must be passed directly to
+ DSEUPD following the last call to DSAUPD .
+ </para>
+ <para>
+ These arguments MUST NOT BE MODIFIED between the last call to
+ DSAUPD and the call to DSEUPD.
+ </para>
+ <para>
+ Two of these parameters (WORKL, INFO) are also output
+ parameters.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>WORKL</term>
+ <listitem>
+ <para>
+ Double precision work array of length LWORKL.
+ (OUTPUT/WORKSPACE)
+ </para>
+ <para>
+ WORKL(1:4*ncv) contains information obtained in dsaupd. They
+ are not changed by dseupd.
+ </para>
+ <para>
+ WORKL(4*ncv+1:ncv*ncv+8*ncv) holds the untransformed Ritz
+ values, the computed error estimates, and the associated eigenvector
+ matrix of H.
+ </para>
+ <para>
+ Note: IPNTR(8:10) contains the pointer into WORKL for
+ addresses of the above information computed by dseupd .
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(8): pointer to the NCV RITZ values of the original
+ system.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(9): pointer to the NCV corresponding error bounds.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(10): pointer to the NCV by NCV matrix of
+ eigenvectors of the tridiagonal matrix T. Only referenced by
+ dseupd if RVEC = 1 See Remarks.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>INFO</term>
+ <listitem>
+ <para>Integer. (OUTPUT) </para>
+ <para>Error flag on output.</para>
+ <itemizedlist>
+ <listitem>
+ <para>0: Normal exit.</para>
+ </listitem>
+ <listitem>
+ <para>-1: N must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-2: NEV must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -3: NCV must be greater than NEV and less than or equal to
+ N.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -5: WHICH must be one of 'LM', 'SM', 'LA', 'SA' or
+ 'BE'.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-6: BMAT must be one of 'I' or 'G'.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -7: Length of private work WORKL array is not
+ sufficient.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -8: Error return from trid. eigenvalue calculation;
+ Information error from LAPACK routine dsteqr.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-9: Starting vector is zero.</para>
+ </listitem>
+ <listitem>
+ <para>-10: IPARAM(7) must be 1, 2, 3, 4, 5.</para>
+ </listitem>
+ <listitem>
+ <para>-11: IPARAM(7) = 1 and BMAT = 'G' are incompatible.</para>
+ </listitem>
+ <listitem>
+ <para>-12: NEV and WHICH = 'BE' are incompatible.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -14: DSAUPD did not find any eigenvalues to sufficient
+ accuracy.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-15: HOWMNY must be one of 'A' or 'S' if RVEC = 1.</para>
+ </listitem>
+ <listitem>
+ <para>-16: HOWMNY = 'S' not yet implemented.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -17: DSEUPD got a different count of the number of
+ converged Ritz values than DSAUPD got. This indicates the user
+ probably made an error in passing data from DSAUPD to DSEUPD or
+ that the data was modified before entering DSEUPD.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ This subroutine returns the converged approximations to eigenvalues
+ of A * z = lambda * B * z and (optionally):
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>the corresponding approximate eigenvectors,</para>
+ </listitem>
+ <listitem>
+ <para>
+ an orthonormal (Lanczos) basis for the associated approximate
+ invariant subspace,
+ </para>
+ </listitem>
+ <listitem>
+ <para>Both. </para>
+ </listitem>
+ </orderedlist>
+ <para>
+ There is negligible additional cost to obtain eigenvectors. An
+ orthonormal (Lanczos) basis is always computed. There is an additional
+ storage cost of n*nev if both are requested (in this case a separate array
+ Z must be supplied).
+ </para>
+ <para>
+ These quantities are obtained from the Lanczos factorization
+ computed by DSAUPD for the linear operator OP prescribed by the MODE
+ selection (see IPARAM(7) in DSAUPD documentation.) DSAUPD must be called
+ before this routine is called.
+ </para>
+ <para>
+ These approximate eigenvalues and vectors are commonly called Ritz
+ values and Ritz vectors respectively. They are referred to as such in the
+ comments that follow.
+ </para>
+ <para>
+ The computed orthonormal basis for the invariant subspace
+ corresponding to these Ritz values is referred to as a Lanczos basis.
+ </para>
+ <para>
+ See documentation in the header of the subroutine DSAUPD for a
+ definition of OP as well as other terms and the relation of computed Ritz
+ values and vectors of OP with respect to the given problem A * z = lambda * B * z.
+ </para>
+ <para>
+ The approximate eigenvalues of the original problem are returned in
+ ascending algebraic order.
+ </para>
+ <para>
+ The user may elect to call this routine once for each desired Ritz
+ vector and store it peripherally if desired. There is also the option of
+ computing a selected set of these vectors with a single call.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Remarks</title>
+ <para>
+ 1. The converged Ritz values are always returned in increasing
+ (algebraic) order. c 2. Currently only HOWMNY = 'A' is implemented. It is
+ included at this stage for the user who wants to incorporate it.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Example</title>
+ <programlisting role="example">
+ <![CDATA[
+
+// The following sets dimensions for this problem.
+
+nx = 10;
+
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+
+// Local Arrays
+
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev, 1);
+z = zeros(nx, nev);
+resid = zeros(nx, 1);
+v = zeros(nx, ncv);
+workd = zeros(3 * nx, 1);
+workl = zeros(ncv * ncv + 8 * ncv, 1);
+
+// Build the symmetric test matrix
+
+A = diag(10 * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6 * ones(nx-1,1));
+
+tol = 0;
+ido = 0;
+
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+
+sigma = 0; // the real part of the shift
+info_dsaupd = 0;
+
+// M A I N L O O P (Reverse communication)
+
+while(ido <> 99)
+ // Repeatedly call the routine DSAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+
+ [ido, resid, v, iparam, ipntr, workd, workl, info_dsaupd] = dsaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_dsaupd);
+
+ if(info_dsaupd < 0)
+ printf('\nError with dsaupd, info = %d\n',info_dsaupd);
+ printf('Check the documentation of dsaupd\n\n');
+ end
+
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+
+// Post-Process using DSEUPD.
+rvec = 1;
+howmany = 'A';
+info_dseupd = 0;
+
+[d, z, resid, v, iparam, ipntr, workd, workl, info_dseupd] = dseupd(rvec, howmany, _select, d, z, sigma, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, info_dseupd);
+
+if(info_dseupd < 0)
+ printf('\nError with dseupd, info = %d\n', info_dseupd);
+ printf('Check the documentation of dseupd.\n\n');
+end
+
+
+// Done with program dssimp.
+printf('\nDSSIMP\n');
+printf('======\n');
+printf('\n');
+printf('Size of the matrix is %d\n', nx);
+printf('The number of Ritz values requested is %d\n', nev);
+printf('The number of Arnoldi vectors generated (NCV) is %d\n', ncv);
+printf('What portion of the spectrum: %s\n', which);
+printf('The number of Implicit Arnoldi update iterations taken is %d\n', iparam(3));
+printf('The number of OP*x is %d\n', iparam(9));
+printf('The convergence criterion is %d\n', tol);
+
+]]>
+ </programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="dsaupd">dsaupd</link>
+ </member>
+ <member>
+ <link linkend="dneupd">dneupd</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Bibliography</title>
+ <para>
+ 1. D.C. Sorensen, "Implicit Application of Polynomial Filters in
+ k-Step Arnoldi Method", SIAM J. Matr. Anal. Apps., 13 (1992), pp
+ 357-385.
+ </para>
+ <para>
+ 2. R.B. Lehoucq, "Analysis and Implementation of an Implicitly
+ Restarted Arnoldi Iteration", Rice University Technical Report TR95-13,
+ Department of Computational and Applied Mathematics.
+ </para>
+ <para>
+ 3. B.N. Parlett and Y. Saad, "Complex Shift and Invert Strategies
+ for Real Matrices", Linear Algebra and its Applications, vol 88/89, pp
+ 575-595, (1987).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>Based on ARPACK routine dseupd</para>
+ </refsection>
+ <refsection>
+ <title>History</title>
+ <revhistory>
+ <revision>
+ <revnumber>5.4.0</revnumber>
+ <revremark>
+ Function obsolete for <link linkend="eigs">eigs</link>.
+ </revremark>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
diff --git a/modules/arnoldi/help/en_US/eigs.xml b/modules/arnoldi/help/en_US/eigs.xml
new file mode 100755
index 000000000..f2a86255e
--- /dev/null
+++ b/modules/arnoldi/help/en_US/eigs.xml
@@ -0,0 +1,525 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+ *
+ * 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:ns5="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="eigs" xml:lang="en">
+ <refnamediv>
+ <refname>eigs</refname>
+ <refpurpose>calculates largest eigenvalues and eigenvectors of matrices</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>
+ d = eigs(A [,B [,k [,sigma [,opts]]]])
+ [d, v] = eigs(A [,B [,k [,sigma [,opts]]]])
+
+ d = eigs(Af, n [,B [,k [,sigma [,opts]]]])
+ [d, v] = eigs(Af, n [,B [,k [,sigma [,opts]]]])
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>a full or sparse, real or complex, symmetric or non-symmetric square matrix</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Af </term>
+ <listitem>
+ <para>a function</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>n </term>
+ <listitem>
+ <para>
+ a scalar, defined only if <literal>A</literal> is a function
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>B</term>
+ <listitem>
+ <para>
+ a sparse, real or complex, square matrix with same dimensions as
+ <literal> A</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>k</term>
+ <listitem>
+ <para>an integer, number of eigenvalues to be computed</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>sigma</term>
+ <listitem>
+ <para>a real scalar or a string of length 2</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>opts</term>
+ <listitem>
+ <para>a structure</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>d</term>
+ <listitem>
+ <para>a real or complex eigenvalues vector or diagonal matrix (eigenvalues along the diagonal)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>v</term>
+ <listitem>
+ <para>
+ real or complex eigenvector matrix
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ The purpose of the eigs function is to compute the largest eigenvalues of sparse, large matrices.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>d = eigs(A) or d = eigs(Af, n)</term>
+ <listitem>
+ <para>
+ solves the eigenvalue problem <literal>A * v = lambda * v</literal>. This calling returns a vector <literal>d</literal> containing the six largest magnitude eigenvalues.
+ <literal>A</literal> is either a square matrix, which can be symmetric or non-symmetric, real or complex, full or sparse.
+ </para>
+ <para>
+ <literal>A</literal> should be represented by a function <literal>Af</literal>. In this instance, a scalar <literal>n</literal> designating
+ the length of the vector argument, must be defined. It must have the following header :
+ </para>
+ <programlisting role="no-scilab-exec">
+ <![CDATA[
+function y = A ( x )
+ ]]>
+ </programlisting>
+ <para>
+ This function <literal>Af</literal> must return one of the four following expressions :
+ <itemizedlist>
+ <listitem>
+ <term>A * x</term>
+ <para> if sigma is not given or is a string other than 'SM'.</para>
+ </listitem>
+ <listitem>
+ <term>A \ x</term>
+ <para> if sigma is 0 or 'SM'.</para>
+ </listitem>
+ <listitem>
+ <term>(A - sigma * I) \ x</term>
+ <para>for the standard eigenvalue problem, where I is the identity matrix.</para>
+ </listitem>
+ <listitem>
+ <term>(A - sigma * B) \ x</term>
+ <para> for the generalized eigenvalue problem.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[d, v] = eigs(A) or [d, v] = eigs(Af, n)</term>
+ <listitem>
+ <para>
+ returns a diagonal matrix <literal>d</literal> containing the six largest magnitude eigenvalues on the diagonal.
+ <literal>v</literal> is a n by six matrix whose columns are the six eigenvectors corresponding to the returned eigenvalues.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>d = eigs(A, B)</term>
+ <listitem>
+ <para>
+ solves the generalized eigenvalue problem <literal>A * v = lambda * B * v </literal> with positive, definite matrix <literal>B</literal>.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ if <literal>B</literal> is not specified, <literal>B = []</literal> is used.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ if <literal>B</literal> is specified, <literal>B</literal> must be the same size as A.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>d = eigs(A, B, k)</term>
+ <listitem>
+ <para>
+ returns in vector <literal>d</literal> the <literal>k</literal> eigenvalues.
+ If <literal>k</literal> is not specified, <literal>k = min(n, 6)</literal>, where n is the row number of A.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>d = eigs(A, B, k, sigma)</term>
+ <listitem>
+ <para>
+ returns in vector <literal>d</literal> the <literal>k</literal> eigenvalues determined by <literal>sigma</literal>.
+ <literal>sigma</literal> can be either a real or complex including 0 scalar or string.
+ If sigma is a string of length 2, it takes one of the following values :
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>'LM'</literal> compute the <varname>k</varname> largest in magnitude eigenvalues (by default).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>'SM'</literal> compute the <varname>k</varname> smallest in magnitude eigenvalues (same as sigma = 0).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>'LA'</literal> compute the <varname>k</varname> Largest Algebraic eigenvalues, only for real symmetric problems.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>'SA'</literal> compute the <varname>k</varname> Smallest Algebraic eigenvalues, only for real symmetric problems.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>'BE'</literal> compute <varname>k</varname> eigenvalues, half from each end of the spectrum, only for real
+ symmetric problems.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>'LR'</literal> compute the <varname>k</varname> eigenvalues of Largest Real part, only for real non-symmetric or
+ complex problems.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>'SR'</literal> compute the <varname>k</varname> eigenvalues of Smallest Real part, only for real non-symmetric or
+ complex problems.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>'LI'</literal> compute the <varname>k</varname> eigenvalues of Largest Imaginary part, only for real non-symmetric
+ or complex problems.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>'SI'</literal> compute the <varname>k</varname> eigenvalues of Smallest Imaginary part, only for real non-symmetric
+ or complex problems.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>d = eigs(A, B, k, sigma, opts)</term>
+ <listitem>
+ <para>
+ If the <literal> opts </literal> structure is specified, different options can be used to compute the <literal>k</literal> eigenvalues :
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <term>tol</term>
+ <para>
+ required convergence tolerance. By default, <literal>tol = %eps</literal>.
+ </para>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <term>maxiter</term>
+ <para>
+ maximum number of iterations. By default, <literal>maxiter = 300</literal>.
+ </para>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <term>ncv</term>
+ <para>
+ number of Lanzcos basis vectors to use. For real non-symmetric problems, the <literal>ncv</literal> value must be greater or equal than <literal>2 * k + 1 </literal> and, by default, <literal>ncv = min(max(2 * k + 1, 20), nA) </literal>. For real symmetric or complex problems, <literal>ncv</literal> must be greater or equal <literal>2 * k </literal> and, by default, <literal> ncv = min(max(2 * k, 20), nA) </literal> with <literal> nA = size(A, 2) </literal>.
+ </para>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <term>resid</term>
+ <para>
+ starting vector whose contains the initial residual vector, possibly from a previous run. By default,
+ <literal>resid</literal> is a random initial vector.
+ </para>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <term>cholB</term>
+ <para>
+ if <literal>chol(B)</literal> is passed rather than <literal>B</literal>. By default, <literal>cholB</literal> is %f.
+ </para>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <term>isreal</term>
+ <para>
+ if <literal>Af</literal> is given, <literal>isreal</literal> can be defined. By default, <literal>isreal</literal> is %t.
+ This argument must not be indicated if <literal>A</literal> is a matrix.
+ </para>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <term>issym</term>
+ <para>
+ if <literal>Af</literal> is given, <literal>issym</literal> can be defined. By default, <literal>issym</literal> is %f.
+ This argument must not be indicated if <literal>A</literal> is a matrix.
+ </para>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>References</title>
+ <para>
+ This function is based on the ARPACK package written by R. Lehoucq, K. Maschhoff, D. Sorensen, and C. Yang.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>DSAUPD and DSEUPD routines for real symmetric problems,</para>
+ </listitem>
+ <listitem>
+ <para>DNAUPD and DNEUPD routines for real non-symmetric problems.</para>
+ </listitem>
+ <listitem>
+ <para>ZNAUPD and ZNEUPD routines for complex problems.</para>
+ </listitem>
+ </itemizedlist>
+ </refsection>
+ <refsection>
+ <title>Example for real symmetric problems</title>
+ <programlisting role="example">
+ <![CDATA[
+clear opts
+A = diag(10*ones(10,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(9,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6*ones(9,1));
+
+B = eye(10,10);
+k = 8;
+sigma = 'SM';
+opts.cholB = %t;
+
+d = eigs(A)
+[d, v] = eigs(A)
+
+d = eigs(A, B, k, sigma)
+[d, v] = eigs(A, B, k, sigma)
+
+d = eigs(A, B, k, sigma, opts)
+[d, v] = eigs(A, B, k, sigma, opts)
+
+// With sparses
+AS = sparse(A);
+BS = sparse(B);
+
+d = eigs(AS)
+[d, v] = eigs(AS)
+
+d = eigs(AS, BS, k, sigma)
+[d, v] = eigs(AS, BS, k, sigma)
+
+d = eigs(AS, BS, k, sigma, opts)
+[d, v] = eigs(AS, BS, k, sigma, opts)
+
+// With function
+clear opts
+function y = fn(x)
+ y = A * x;
+endfunction
+
+opts.isreal = %t;
+opts.issym = %t;
+
+d = eigs(fn, 10, [], k, 'LM', opts)
+
+function y = fn(x)
+ y = A \ x;
+endfunction
+
+d = eigs(fn, 10, [], k, 'SM', opts)
+
+function y = fn(x)
+ y = (A - 4 * eye(10,10)) \ x;
+endfunction
+
+d = eigs(fn, 10, [], k, 4, opts)
+ ]]>
+ </programlisting>
+ </refsection>
+ <refsection>
+ <title>Example for real non-symmetric problems</title>
+ <programlisting role="example">
+ <![CDATA[
+ clear opts
+ A = diag(10*ones(10,1));
+ A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(9,1));
+ A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(9,1));
+
+ B = eye(10,10);
+ k = 8;
+ sigma = 'SM';
+ opts.cholB = %t;
+
+ d = eigs(A)
+[d, v] = eigs(A)
+
+ d = eigs(A, B, k, sigma)
+ [d, v] = eigs(A, B, k, sigma)
+
+ d = eigs(A, B, k, sigma, opts)
+ [d, v] = eigs(A, B, k, sigma, opts)
+
+// With sparses
+ AS = sparse(A);
+ BS = sparse(B);
+
+d = eigs(AS)
+[d, v] = eigs(AS)
+ d = eigs(AS, BS, k, sigma)
+ [d, v] = eigs(AS, BS, k, sigma)
+
+ d = eigs(AS, BS, k, sigma, opts)
+ [d, v] = eigs(AS, BS, k, sigma, opts)
+
+ // With function
+clear opts
+function y = fn(x)
+ y = A * x;
+endfunction
+
+opts.isreal = %t;
+opts.issym = %f;
+
+d = eigs(fn, 10, [], k, 'LM', opts)
+
+function y = fn(x)
+ y = A \ x;
+endfunction
+
+d = eigs(fn, 10, [], k, 'SM', opts)
+
+function y = fn(x)
+ y = (A - 4 * eye(10,10)) \ x;
+endfunction
+
+d = eigs(fn, 10, [], k, 4, opts)
+ ]]>
+ </programlisting>
+ </refsection>
+ <refsection>
+ <title>Example for complex problems</title>
+ <programlisting role="example">
+ <![CDATA[
+ clear opts
+ A = diag(10*ones(10,1) + %i * ones(10,1));
+ A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(9,1));
+ A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(9,1));
+
+ B = eye(10,10);
+ k = 8;
+ sigma = 'LM';
+ opts.cholB = %t;
+
+ d = eigs(A)
+[d, v] = eigs(A)
+
+ d = eigs(A, B, k, sigma)
+ [d, v] = eigs(A, B, k, sigma)
+ d = eigs(A, B, k, sigma, opts)
+ [d, v] = eigs(A, B, k, sigma, opts)
+
+ // With sparses
+ AS = sparse(A);
+ BS = sparse(B);
+
+ d = eigs(AS)
+[d, v] = eigs(AS)
+
+ d = eigs(AS, BS, k, sigma)
+ [d, v] = eigs(AS, BS, k, sigma)
+
+ d = eigs(AS, BS, k, sigma, opts)
+ [d, v] = eigs(AS, BS, k, sigma, opts)
+
+ // With function
+clear opts
+function y = fn(x)
+ y = A * x;
+endfunction
+
+opts.isreal = %f;
+opts.issym = %f;
+
+d = eigs(fn, 10, [], k, 'LM', opts)
+
+function y = fn(x)
+ y = A \ x;
+endfunction
+
+d = eigs(fn, 10, [], k, 'SM', opts)
+
+function y = fn(x)
+ y = (A - 4 * eye(10,10)) \ x;
+endfunction
+
+d = eigs(fn, 10, [], k, 4, opts)
+ ]]>
+ </programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>History</title>
+ <revhistory>
+ <revision>
+ <revnumber>5.4.0</revnumber>
+ <revremark>Function introduced. Deprecates dnaupd, dneupd, dsaupd, dseupd, znaupd and zneupd.</revremark>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
diff --git a/modules/arnoldi/help/en_US/znaupd.xml b/modules/arnoldi/help/en_US/znaupd.xml
new file mode 100755
index 000000000..62172c4b4
--- /dev/null
+++ b/modules/arnoldi/help/en_US/znaupd.xml
@@ -0,0 +1,799 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="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="znaupd" xml:lang="en">
+ <refnamediv>
+ <refname>znaupd</refname>
+ <refpurpose>
+ Interface for the Implicitly Restarted Arnoldi Iteration, to
+ compute a few eigenpairs of a complex linear operator OP with respect to a
+ semi-inner product defined by a hermitian positive semi-definite real
+ matrix B.
+ <emphasis role="bold">
+ This function is obsolete. Please use <link linkend="eigs">eigs</link>
+ </emphasis>
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[IDO, RESID, V, IPARAM, IPNTR, WORKD, WORKL, RWORK, INFO] = znaupd(ID0, BMAT, N, WHICH, NEV, TOL, RESID, NCV, V, IPARAM, IPNTR, WORKD, WORKL, RWORK, INFO)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>IDO</term>
+ <listitem>
+ <para>Integer. (INPUT/OUTPUT) </para>
+ <para>
+ Reverse communication flag. IDO must be zero on the first call
+ to znaupd. IDO will be set internally to indicate the type of
+ operation to be performed. Control is then given back to the calling
+ routine which has the responsibility to carry out the requested
+ operation and call znaupd with the result.
+ </para>
+ <para>
+ The operand is given in WORKD(IPNTR(1)), the result must be
+ put in WORKD(IPNTR(2)).
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IDO = 0: first call to the reverse communication interface
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = -1: compute Y = OP * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for Y.
+ </para>
+ <para>
+ This is for the initialization phase to force the starting
+ vector into the range of OP.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 1: compute Y = OP * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for Y.
+ </para>
+ <para>
+ In mode 3, the vector B * X is already available in
+ WORKD(ipntr(3)). It does not need to be recomputed in forming OP
+ * X.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 2: compute Y = M * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for
+ Y.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 3: compute and return the shifts in the first NP
+ locations of WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IDO = 99: done </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ After the initialization phase, when the routine is used in
+ the "shift-and-invert" mode, the vector M * X is already available
+ and does not need to be recomputed in forming OP*X.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>BMAT</term>
+ <listitem>
+ <para>Character. (INPUT) </para>
+ <para>
+ specifies the type of the matrix B that defines the
+ semi-inner product for the operator OP.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>'I': standard eigenvalue problem A * x = lambda * x</para>
+ </listitem>
+ <listitem>
+ <para>
+ 'G': generalized eigenvalue problem A * x =
+ lambda * M * x
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>N</term>
+ <listitem>
+ <para>Integer. (INPUT) </para>
+ <para>Dimension of the eigenproblem.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WHICH</term>
+ <listitem>
+ <para>string of length 2. (INPUT) </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ 'LM': want the NEV eigenvalues of largest
+ magnitude.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'SM': want the NEV eigenvalues of smallest
+ magnitude.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'LR': want the NEV eigenvalues of largest real
+ part.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'SR': want the NEV eigenvalues of smallest real part.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'LI': want the NEV eigenvalues of largest imaginary
+ part.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'SI': want the NEV eigenvalues of smallest imaginary
+ part.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>NEV</term>
+ <listitem>
+ <para>Integer. (INPUT) </para>
+ <para>
+ Number of eigenvalues of OP to be computed. 0 &lt; NEV &lt;
+ N - 1.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>TOL</term>
+ <listitem>
+ <para>Double precision scalar. (INPUT) </para>
+ <para>
+ Stopping criteria: the relative accuracy of the Ritz value is
+ considered acceptable if BOUNDS(I) .LE. TOL * ABS(RITZ(I)) where
+ ABS(RITZ(I)) is the magnitude when RITZ(I) is complex. DEFAULT =
+ dlamch('EPS') (machine precision as computed by the LAPACK auxiliary
+ subroutine dlamch).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>RESID</term>
+ <listitem>
+ <para>Complex*16 array of length N. (INPUT/OUTPUT) </para>
+ <para>
+ On INPUT: If INFO .EQ. 0, a random initial residual vector is
+ used. If INFO .NE. 0, RESID contains the initial residual vector,
+ possibly from a previous run.
+ </para>
+ <para>On OUTPUT: RESID contains the final residual vector.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>NCV</term>
+ <listitem>
+ <para>Integer. (INPUT) </para>
+ <para>
+ Number of columns of the matrix V. NCV must satisfy the two
+ inequalities 2 &lt;= NCV - NEV and NCV &lt;= N.
+ </para>
+ <para>
+ This will indicate how many Arnoldi vectors are generated at
+ each iteration. After the startup phase in which NEV Arnoldi vectors
+ are generated, the algorithm generates approximately NCV - NEV Arnoldi
+ vectors at each subsequent update iteration. Most of the cost in
+ generating each Arnoldi vector is in the matrix-vector operation
+ OP * x. (See remark 4 below.)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>V</term>
+ <listitem>
+ <para>Complex*16 array N by NCV. (OUTPUT) </para>
+ <para>Contains the final set of Arnoldi basis vectors.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>IPARAM</term>
+ <listitem>
+ <para>Integer array of length 11. (INPUT/OUTPUT) </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPARAM(1) = ISHIFT: method for selecting the implicit
+ shifts. The shifts selected at each iteration are used to filter
+ out the components of the unwanted eigenvector.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ISHIFT = 0: the shifts are to be provided by the user
+ via reverse communication. The NCV eigenvalues of the
+ Hessenberg matrix H are returned in the part of WORKL array
+ corresponding to RITZ.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ISHIFT = 1: exact shifts with respect to the current
+ Hessenberg matrix H. This is equivalent to restarting the
+ iteration from the beginning after updating the starting
+ vector with a linear combination of Ritz vectors associated
+ with the "wanted" eigenvalues.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ISHIFT = 2: other choice of internal shift to be
+ defined.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>IPARAM(2) = No longer referenced</para>
+ </listitem>
+ <listitem>
+ <para>IPARAM(3) = MXITER </para>
+ <para>
+ On INPUT: maximum number of Arnoldi update iterations
+ allowed.
+ </para>
+ <para>
+ On OUTPUT: actual number of Arnoldi update iterations
+ taken.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(4) = NB: blocksize to be used in the recurrence.
+ The code currently works only for NB = 1.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(5) = NCONV: number of "converged" Ritz values. This
+ represents the number of Ritz values that satisfy the
+ convergence criterion.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(6) = IUPD No longer referenced. Implicit restarting
+ is ALWAYS used.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(7) = MODE On INPUT determines what type of
+ eigenproblem is being solved. Must be 1,2,3; See under
+ Description of znaupd for the four modes available.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(8) = NP When ido = 3 and the user provides shifts
+ through reverse communication (IPARAM(1)=0), _naupd returns NP,
+ the number of shifts the user is to provide. 0 &lt; NP &lt;
+ NCV-NEV.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IPARAM(9) = NUMOP, </para>
+ <para>IPARAM(10) = NUMOPB, </para>
+ <para>
+ IPARAM(11) = NUMREO, OUTPUT: NUMOP = total number of OP*x
+ operations, NUMOPB = total number of B*x operations if BMAT='G',
+ NUMREO = total number of steps of re-orthogonalization.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>IPNTR</term>
+ <listitem>
+ <para>Integer array of length 14. (OUTPUT) </para>
+ <para>
+ Pointer to mark the starting locations in the WORKD and WORKL
+ arrays for matrices/vectors used by the Arnoldi iteration.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(1): pointer to the current operand vector X in
+ WORKD.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(2): pointer to the current result vector Y in
+ WORKD.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(3): pointer to the vector B * X in WORKD when used
+ in the shift-and-invert mode.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(4): pointer to the next available location in WORKL
+ that is untouched by the program.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(5): pointer to the NCV by NCV upper Hessenberg
+ matrix H in WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IPNTR(6): pointer to the ritz value array RITZ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(7): pointer to the (projected) ritz vector array Q
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(8): pointer to the error BOUNDS array in WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(14): pointer to the NP shifts in WORKL. See Remark 5
+ below.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Note: IPNTR(9:13) is only referenced by zneupd. See Remark 2
+ below.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(9): pointer to the NCV RITZ values of the original
+ system.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IPNTR(10): Not Used </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(11): pointer to the NCV corresponding error
+ bounds.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(12): pointer to the NCV by NCV upper triangular
+ Schur matrix for H.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(13): pointer to the NCV by NCV matrix of
+ eigenvectors of the upper Hessenberg matrix H. Only referenced
+ by zneupd if RVEC = 1 See Remark 2 below.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKD</term>
+ <listitem>
+ <para>
+ Complex*16 work array of length 3 * N. (REVERSE COMMUNICATION)
+ </para>
+ <para>
+ Distributed array to be used in the basic Arnoldi iteration
+ for reverse communication.
+ </para>
+ <para>
+ The user should not use WORKD as temporary workspace during
+ the iteration !!!!!!!!!!
+ </para>
+ <para>See Data Distribution Note below.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKL</term>
+ <listitem>
+ <para>
+ Complex*16 work array of length 3 * NCV ** 2 + 5 * NCV. (OUTPUT/WORKSPACE)
+ </para>
+ <para>
+ Private (replicated) array on each PE or array allocated on
+ the front end. See Data Distribution Note below.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>RWORK</term>
+ <listitem>
+ <para>
+ Double precision work array of length NCV (WORKSPACE) Private
+ (replicated) array on each PE or array allocated on the front
+ end.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>INFO</term>
+ <listitem>
+ <para>Integer. (INPUT/OUTPUT) </para>
+ <para>
+ If INFO == 0, a randomly initial residual vector is used.
+ </para>
+ <para>
+ If INFO ~= 0, RESID contains the initial residual vector,
+ possibly from a previous run.
+ </para>
+ <para>Error flag on output.</para>
+ <itemizedlist>
+ <listitem>
+ <para>0: Normal exit.</para>
+ </listitem>
+ <listitem>
+ <para>
+ 1: Maximum number of iterations taken. All possible
+ eigenvalues of OP has been found. IPARAM(5) returns the number
+ of wanted converged Ritz values.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2: No longer an informational error. Deprecated starting
+ with release 2 of ARPACK.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3: No shifts could be applied during a cycle of the
+ Implicitly restarted Arnoldi iteration. One possibility is to
+ increase the size of NCV relative to NEV. See remark 4
+ below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-1: N must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-2: NEV must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-3: NCV-NEV &gt;= 1 and less than or equal to N.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -4: The maximum number of Arnoldi update iteration must be
+ greater than zero.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -5: WHICH must be one of 'LM', 'SM', 'LR', 'SR', 'LI',
+ 'SI'.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-6: BMAT must be one of 'I' or 'G'.</para>
+ </listitem>
+ <listitem>
+ <para>-7: Length of private work array is not sufficient.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -8: Error return from LAPACK eigenvalue
+ calculation.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-9: Starting vector is zero.</para>
+ </listitem>
+ <listitem>
+ <para>-10: IPARAM(7) must be 1, 2, 3.</para>
+ </listitem>
+ <listitem>
+ <para>-11: IPARAM(7) = 1 and BMAT = 'G' are incompatible.</para>
+ </listitem>
+ <listitem>
+ <para>-12: IPARAM(1) must be equal to 0 or 1.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -9999: Could not build an Arnoldi factorization. User
+ input error highly likely. Please check actual array dimensions
+ and layout. IPARAM(5) returns the size of the current Arnoldi
+ factorization.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Reverse communication interface for the Implicitly Restarted Arnoldi
+ iteration. This is intended to be used to find a few eigenpairs of a
+ complex linear operator OP with respect to a semi-inner product defined by
+ a hermitian positive semi-definite real matrix B. B may be the identity
+ matrix.
+ </para>
+ <para>
+ NOTE: if both OP and B are real, then dsaupd or dnaupd should be
+ used.
+ </para>
+ <para>
+ The computed approximate eigenvalues are called Ritz values and the
+ corresponding approximate eigenvectors are called Ritz vectors. znaupd is
+ usually called iteratively to solve one of the following problems:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>Mode 1: A * x = lambda * x. </para>
+ <para>===&gt; OP = A and B = I.</para>
+ </listitem>
+ <listitem>
+ <para>Mode 2: A * x = lambda * M * x, M hermitian positive definite </para>
+ <para>===&gt; OP = inv[M] * A and B = M. </para>
+ <para>===&gt; (If M can be factored see remark 3 below) </para>
+ </listitem>
+ <listitem>
+ <para>Mode 3: A * x = lambda * M * x, M hermitian semi-definite </para>
+ <para>===&gt; OP = inv[A - sigma * M] * M and B = M. </para>
+ <para>
+ ===&gt; shift-and-invert mode If OP * x = amu * x, then lambda =
+ sigma + 1/amu.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ NOTE: The action of w &lt;- inv[A - sigma * M] * v or w &lt;- inv[M] * v
+ should be accomplished either by a direct method using a sparse matrix
+ factorization and solving
+ </para>
+ <para>[A - sigma * M] * w = v or M * w = v, </para>
+ <para>
+ or through an iterative method for solving these systems. If an
+ iterative method is used, the convergence test must be more stringent than
+ the accuracy requirements for the eigenvalue approximations.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Remarks</title>
+ <orderedlist>
+ <listitem>
+ <para>
+ The computed Ritz values are approximate eigenvalues of OP. The
+ selection of WHICH should be made with this in mind when using Mode =
+ 3. When operating in Mode = 3 setting WHICH = 'LM' will compute the
+ NEV eigenvalues of the original problem that are closest to the shift
+ SIGMA . After convergence, approximate eigenvalues of the original
+ problem may be obtained with the ARPACK subroutine zneupd.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If a basis for the invariant subspace corresponding to the
+ converged Ritz values is needed, the user must call zneupd immediately
+ following completion of znaupd. This is new starting with release 2 of
+ ARPACK.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If M can be factored into a Cholesky factorization M = LL` then
+ Mode = 2 should not be selected. Instead one should use Mode = 1 with
+ OP = inv(L) * A * inv(L`). Appropriate triangular linear systems should be
+ solved with L and L` rather than computing inverses. After
+ convergence, an approximate eigenvector z of the original problem is
+ recovered by solving L`z = x where x is a Ritz vector of OP.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ At present there is no a-priori analysis to guide the selection
+ of NCV relative to NEV. The only formal requirement is that NCV &gt;
+ NEV + 1. However, it is recommended that NCV .ge. 2 * NEV. If many
+ problems of the same type are to be solved, one should experiment with
+ increasing NCV while keeping NEV fixed for a given test problem. This
+ will usually decrease the required number of OP*x operations but it
+ also increases the work and storage required to maintain the
+ orthogonal basis vectors. The optimal "cross-over" with respect to CPU
+ time is problem dependent and must be determined empirically. See
+ Chapter 8 of Reference 2 for further information.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When IPARAM(1) = 0, and IDO = 3, the user needs to provide the
+ NP = IPARAM(8) complex shifts in locations
+ </para>
+ <para>
+ WORKL(IPNTR(14)), WORKL(IPNTR(14)+1), ... , WORKL(IPNTR(14)+NP).
+ </para>
+ <para>
+ Eigenvalues of the current upper Hessenberg matrix are located
+ in WORKL(IPNTR(6)) through WORKL(IPNTR(6)+NCV-1). They are ordered
+ according to the order defined by WHICH. The associated Ritz estimates
+ are located in
+ </para>
+ <para>
+ WORKL(IPNTR(8)), WORKL(IPNTR(8)+1), ... ,
+ WORKL(IPNTR(8)+NCV-1).
+ </para>
+ </listitem>
+ </orderedlist>
+ </refsection>
+ <refsection>
+ <title>Example</title>
+ <programlisting role="example">
+ <![CDATA[
+// The following sets dimensions for this problem.
+
+nx = 10;
+
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+
+// Local Arrays
+
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev + 1, 1) + 0 * %i;
+z = zeros(nx, nev) + 0* %i;
+resid = zeros(nx, 1) + 0 * %i;
+v = zeros(nx, ncv) + 0 * %i;
+workd = zeros(3 * nx, 1) + 0 * %i;
+workev = zeros(2 * ncv, 1) + 0 * %i;
+rwork = zeros(ncv, 1);
+workl = zeros(3 * ncv * ncv + 5 *ncv, 1) + 0 * %i;
+
+// Build the complex test matrix
+A = diag(10 * ones(nx,1) + %i * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx - 1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx - 1,1));
+
+tol = 0;
+ido = 0;
+
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+
+sigma = complex(0);
+info_znaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine ZNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+
+ [ido, resid, v, iparam, ipntr, workd, workl, rwork, info_znaupd] = znaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, rwork, info_znaupd);
+
+ if(info_znaupd < 0)
+ printf('\nError with znaupd, info = %d\n', info_znaupd);
+ printf('Check the documentation of znaupd\n\n');
+ end
+
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+
+// Post-Process using ZNEUPD.
+
+rvec = 1;
+howmany = 'A';
+info_zneupd = 0;
+
+[d, z, resid, iparam, ipntr, workd, workl, rwork, info_zneupd] = zneupd(rvec, howmany, _select, d, z, sigma, workev, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, rwork, info_zneupd);
+
+if(info_zneupd < 0)
+ printf('\nError with zneupd, info = %d\n', info_zneupd);
+ printf('Check the documentation of zneupd.\n\n');
+end
+
+// Done with program znsimp.
+printf('\nZNSIMP\n');
+printf('======\n');
+printf('\n');
+printf('Size of the matrix is %d\n', nx);
+printf('The number of Ritz values requested is %d\n', nev);
+printf('The number of Arnoldi vectors generated (NCV) is %d\n', ncv);
+printf('What portion of the spectrum: %s\n', which);
+printf('The number of Implicit Arnoldi update iterations taken is %d\n', iparam(3));
+printf('The number of OP*x is %d\n', iparam(9));
+printf('The convergence criterion is %d\n', tol);
+
+]]>
+ </programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="dnaupd">dnaupd</link>
+ </member>
+ <member>
+ <link linkend="dnaupd">dneupd</link>
+ </member>
+ <member>
+ <link linkend="dnaupd">zneupd</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Bibliography</title>
+ <para>
+ 1. D.C. Sorensen, "Implicit Application of Polynomial Filters in a
+ k-Step Arnoldi Method", SIAM J. Matr. Anal. Apps., 13 (1992), pp
+ 357-385.
+ </para>
+ <para>
+ 2. R.B. Lehoucq, "Analysis and Implementation of an Implicitly
+ Restarted Arnoldi Iteration", Rice University Technical Report TR95-13,
+ Department of Computational and Applied Mathematics.
+ </para>
+ <para>
+ 3. B.N. Parlett and Y. Saad, "Complex Shift and Invert Strategies
+ for Real Matrices", Linear Algebra and its Applications, vol 88/89, pp
+ 575-595, (1987).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>Based on ARPACK routine znaupd</para>
+ </refsection>
+ <refsection>
+ <title>History</title>
+ <revhistory>
+ <revision>
+ <revnumber>5.4.0</revnumber>
+ <revremark>
+ Function obsolete for <link linkend="eigs">eigs</link>.
+ </revremark>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
diff --git a/modules/arnoldi/help/en_US/zneupd.xml b/modules/arnoldi/help/en_US/zneupd.xml
new file mode 100755
index 000000000..f35717ca1
--- /dev/null
+++ b/modules/arnoldi/help/en_US/zneupd.xml
@@ -0,0 +1,525 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="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="zneupd" xml:lang="en">
+ <refnamediv>
+ <refname>zneupd</refname>
+ <refpurpose>
+ Interface for the Implicitly Restarted Arnoldi Iteration, to
+ compute approximations to the converged approximations to eigenvalues of
+ A * z = lambda * B * z
+ <emphasis role="bold">
+ This function is obsolete. Please use <link linkend="eigs">eigs</link>
+ </emphasis>
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>
+ [D, Z, RESID, IPARAM, IPNTR, WORKD, WORKL, RWORK, INFO] = zneupd(RVEC, HOWMANY, SELECT, D, Z, SIGMA, WORKev,
+ BMAT, N, WHICH, NEV, TOL, RESID, NCV, V, IPARAM, IPNTR, WORKD, WORKL, RWORK, INFO)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>RVEC</term>
+ <listitem>
+ <para>Integer. (INPUT) </para>
+ <para>
+ Specifies whether a basis for the invariant subspace
+ corresponding to the converged Ritz value approximations for the
+ eigenproblem A * z = lambda * B * z is computed.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>RVEC = 0 Compute Ritz values only.</para>
+ </listitem>
+ <listitem>
+ <para>
+ RVEC = 1 Compute Ritz vectors or Schur vectors. See
+ Remarks below.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>HOWMANY</term>
+ <listitem>
+ <para>Character. (INPUT) </para>
+ <para>
+ Specifies the form of the basis for the invariant subspace
+ corresponding to the converged Ritz values that is to be computed.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>'A': Compute NEV Ritz vectors;</para>
+ </listitem>
+ <listitem>
+ <para>'P': Compute NEV Schur vectors;</para>
+ </listitem>
+ <listitem>
+ <para>
+ 'S': compute some of the Ritz vectors, specified by the
+ integer array SELECT.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SELECT</term>
+ <listitem>
+ <para>Integer array of dimension NCV. (INPUT) </para>
+ <para>
+ If HOWMANY = 'S', SELECT specifies the Ritz vectors to be
+ computed. To select the Ritz vector corresponding to a Ritz value
+ D(j), SELECT(j) must be set to 1.
+ </para>
+ <para>
+ If HOWMANY = 'A' or 'P', SELECT need not be initialized but it
+ is used as internal workspace.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>D</term>
+ <listitem>
+ <para>Complex*16 array of dimension NEV + 1. (OUTPUT) </para>
+ <para>
+ On exit, D contains the Ritz approximations to the eigenvalues
+ lambda for A * z = lambda * B * z.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Z</term>
+ <listitem>
+ <para>Complex*16 N by NEV array. (OUTPUT) </para>
+ <para>On exit, </para>
+ <para>
+ If RVEC = 1 and HOWMANY = 'A', then the columns of Z
+ represents approximate eigenvectors (Ritz vectors) corresponding to
+ the NCONV = IPARAM(5) Ritz values for eigensystem A * z = lambda * B * z.
+ </para>
+ <para>
+ If RVEC = 0 or HOWMANY = 'P', then Z is NOT REFERENCED.
+ </para>
+ <para>
+ NOTE: If if RVEC = 1 and a Schur basis is not required, the
+ array Z may be set equal to first NEV+1 columns of the Arnoldi basis
+ array V computed by ZNAUPD. In this case the Arnoldi basis will be
+ destroyed and overwritten with the eigenvector basis.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SIGMA</term>
+ <listitem>
+ <para>Complex*16. (INPUT) </para>
+ <para>If IPARAM(7) = 3 then SIGMA represents the shift. </para>
+ <para>Not referenced if IPARAM(7) = 1 or 2.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKev</term>
+ <listitem>
+ <para>Complex*16 work array of dimension 2 * NCV. (WORKSPACE)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ NOTE: The remaining arguments BMAT, N, WHICH, NEV, TOL, RESID, NCV,
+ V, IPARAM, IPNTR, WORKD, WORKL, LWORKL, RWORK, INFO must be passed
+ directly to ZNEUPD following the last call to ZNAUPD.
+ </para>
+ <para>
+ These arguments MUST NOT BE MODIFIED between the last call to
+ ZNAUPD and the call to ZNEUPD.
+ </para>
+ <para>
+ Three of these parameters (V, WORKL and INFO) are also output
+ parameters.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>V</term>
+ <listitem>
+ <para>Complex*16 N by NCV array. (INPUT/OUTPUT) </para>
+ <para>
+ Upon INPUT: the NCV columns of V contain the Arnoldi basis
+ vectors for OP as constructed by ZNAUPD.
+ </para>
+ <para>
+ Upon OUTPUT: If RVEC = 1 the first NCONV = IPARAM(5) columns
+ contain approximate Schur vectors that span the desired invariant
+ subspace.
+ </para>
+ <para>
+ NOTE: If the array Z has been set equal to first NEV+1 columns
+ of the array V and RVEC = 1 and HOWMANY = 'A', then the Arnoldi basis
+ held by V has been overwritten by the desired Ritz vectors. If a
+ separate array Z has been passed then the first NCONV=IPARAM(5)
+ columns of V will contain approximate Schur vectors that span the
+ desired invariant subspace.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKL</term>
+ <listitem>
+ <para>
+ Double precision work array of length LWORKL.
+ (OUTPUT/WORKSPACE)
+ </para>
+ <para>
+ WORKL(1:ncv * ncv + 2 * ncv) contains information obtained in
+ znaupd. They are not changed by zneupd.
+ </para>
+ <para>
+ WORKL(ncv * ncv + 2 * ncv + 1:3 * ncv * ncv + 4 * ncv) holds the untransformed
+ Ritz values, the untransformed error estimates of the Ritz values,
+ the upper triangular matrix for H, and the associated matrix
+ representation of the invariant subspace for H.
+ </para>
+ <para>
+ Note: IPNTR(9:13) contains the pointer into WORKL for
+ addresses of the above information computed by zneupd.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(9): pointer to the NCV RITZ values of the original
+ system.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IPNTR(10): Not used </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(11): pointer to the NCV corresponding error
+ estimates.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(12): pointer to the NCV by NCV upper triangular
+ Schur matrix for H.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(13): pointer to the NCV by NCV matrix of
+ eigenvectors of the upper Hessenberg matrix H. Only referenced
+ by zneupd if RVEC = 1 See Remark 2 below.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>INFO</term>
+ <listitem>
+ <para>Integer. (OUTPUT) </para>
+ <para>Error flag on output.</para>
+ <itemizedlist>
+ <listitem>
+ <para>0: Normal exit.</para>
+ </listitem>
+ <listitem>
+ <para>
+ 1: The Schur form computed by LAPACK routine csheqr could
+ not be reordered by LAPACK routine ztrsen. Re-enter subroutine
+ zneupd with IPARAM(5) = NCV and increase the size of the array D
+ to have dimension at least dimension NCV and allocate at least
+ NCV columns for Z.
+ </para>
+ <para>
+ NOTE: Not necessary if Z and V share the same space.
+ Please notify the authors if this error occurs.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-1: N must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-2: NEV must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-3: NCV-NEV &gt;= 1 and less than or equal to N.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -5: WHICH must be one of 'LM', 'SM', 'LR', 'SR', 'LI',
+ 'SI'.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-6: BMAT must be one of 'I' or 'G'.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -7: Length of private work WORKL array is not
+ sufficient.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -8: Error return from LAPACK eigenvalue calculation. This
+ should never happened.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -9: Error return from calculation of eigenvectors.
+ Informational error from LAPACK routine ztrevc.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-10: IPARAM(7) must be 1, 2, 3.</para>
+ </listitem>
+ <listitem>
+ <para>-11: IPARAM(7) = 1 and BMAT = 'G' are incompatible.</para>
+ </listitem>
+ <listitem>
+ <para>-12: HOWMANY = 'S' not yet implemented.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -13: HOWMANY must be one of 'A' or 'P' if RVEC = .true.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -14: ZNAUPD did not find any eigenvalues to sufficient
+ accuracy.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -15: ZNEUPD got a different count of the number of
+ converged Ritz values than ZNAUPD got. This indicates the user
+ probably made an error in passing data from ZNAUPD to ZNEUPD or
+ that the data was modified before entering ZNEUPD.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ This subroutine returns the converged approximations to eigenvalues
+ of A * z = lambda * B * z and (optionally):
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>The corresponding approximate eigenvectors; </para>
+ </listitem>
+ <listitem>
+ <para>
+ An orthonormal basis for the associated approximate invariant
+ subspace;
+ </para>
+ </listitem>
+ <listitem>
+ <para>Both.</para>
+ </listitem>
+ </orderedlist>
+ <para>
+ There is negligible additional cost to obtain eigenvectors. An
+ orthonormal basis is always computed.
+ </para>
+ <para>
+ There is an additional storage cost of n*nev if both are requested
+ (in this case a separate array Z must be supplied).
+ </para>
+ <para>
+ The approximate eigenvalues and eigenvectors of A * z = lambda * B * z are
+ derived from approximate eigenvalues and eigenvectors of of the linear
+ operator OP prescribed by the MODE selection in the call to ZNAUPD.
+ </para>
+ <para>ZNAUPD must be called before this routine is called. </para>
+ <para>
+ These approximate eigenvalues and vectors are commonly called Ritz
+ values and Ritz vectors respectively. They are referred to as such in the
+ comments that follow.
+ </para>
+ <para>
+ The computed orthonormal basis for the invariant subspace
+ corresponding to these Ritz values is referred to as a Schur basis.
+ </para>
+ <para>
+ The definition of OP as well as other terms and the relation of
+ computed Ritz values and vectors of OP with respect to the given problem
+ A*z = lambda*B*z may be found in the header of ZNAUPD. For a brief
+ description, see definitions of IPARAM(7), MODE and WHICH in the
+ documentation of ZNAUPD.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Remarks</title>
+ <orderedlist>
+ <listitem>
+ <para>Currently only HOWMNY = 'A' and 'P' are implemented. </para>
+ </listitem>
+ <listitem>
+ <para>
+ Schur vectors are an orthogonal representation for the basis of
+ Ritz vectors. Thus, their numerical properties are often superior.
+ </para>
+ <para>If RVEC = 1 then the relationship </para>
+ <para>A * V(:,1:IPARAM(5)) = V(:,1:IPARAM(5)) * T, </para>
+ <para>and </para>
+ <para>transpose( V(:,1:IPARAM(5)) ) * V(:,1:IPARAM(5)) = I </para>
+ <para>
+ are approximately satisfied. Here T is the leading submatrix of
+ order IPARAM(5) of the upper triangular matrix stored
+ workl(ipntr(12)).
+ </para>
+ </listitem>
+ </orderedlist>
+ </refsection>
+ <refsection>
+ <title>Example</title>
+ <programlisting role="example">
+ <![CDATA[
+// The following sets dimensions for this problem.
+
+nx = 10;
+
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+
+// Local Arrays
+
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev + 1, 1) + 0 * %i;
+z = zeros(nx, nev) + 0* %i;
+resid = zeros(nx, 1) + 0 * %i;
+v = zeros(nx, ncv) + 0 * %i;
+workd = zeros(3 * nx, 1) + 0 * %i;
+workev = zeros(2 * ncv, 1) + 0 * %i;
+rwork = zeros(ncv, 1);
+workl = zeros(3 * ncv * ncv + 5 *ncv, 1) + 0 * %i;
+
+// Build the complex test matrix
+A = diag(10 * ones(nx,1) + %i * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx - 1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx - 1,1));
+
+tol = 0;
+ido = 0;
+
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+
+sigma = complex(0);
+info_znaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine ZNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+
+ [ido, resid, v, iparam, ipntr, workd, workl, rwork, info_znaupd] = znaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, rwork, info_znaupd);
+
+ if(info_znaupd < 0)
+ printf('\nError with znaupd, info = %d\n', info_znaupd);
+ printf('Check the documentation of znaupd\n\n');
+ end
+
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+
+// Post-Process using ZNEUPD.
+
+rvec = 1;
+howmany = 'A';
+info_zneupd = 0;
+
+[d, z, resid, iparam, ipntr, workd, workl, rwork, info_zneupd] = zneupd(rvec, howmany, _select, d, z, sigma, workev, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, rwork, info_zneupd);
+
+if(info_zneupd < 0)
+ printf('\nError with zneupd, info = %d\n', info_zneupd);
+ printf('Check the documentation of zneupd.\n\n');
+end
+
+// Done with program znsimp.
+printf('\nZNSIMP\n');
+printf('======\n');
+printf('\n');
+printf('Size of the matrix is %d\n', nx);
+printf('The number of Ritz values requested is %d\n', nev);
+printf('The number of Arnoldi vectors generated (NCV) is %d\n', ncv);
+printf('What portion of the spectrum: %s\n', which);
+printf('The number of Implicit Arnoldi update iterations taken is %d\n', iparam(3));
+printf('The number of OP*x is %d\n', iparam(9));
+printf('The convergence criterion is %d\n', tol);
+
+]]>
+ </programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="dnaupd">znaupd</link>
+ </member>
+ <member>
+ <link linkend="dnaupd">dnaupd</link>
+ </member>
+ <member>
+ <link linkend="dnaupd">dneupd</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Bibliography</title>
+ <para>
+ 1. D.C. Sorensen, "Implicit Application of Polynomial Filters in a
+ k-Step Arnoldi Method", SIAM J. Matr. Anal. Apps., 13 (1992), pp
+ 357-385.
+ </para>
+ <para>
+ 2. R.B. Lehoucq, "Analysis and Implementation of an Implicitly
+ Restarted Arnoldi Iteration", Rice University Technical Report TR95-13,
+ Department of Computational and Applied Mathematics.
+ </para>
+ <para>
+ 3. B.N. Parlett and Y. Saad, "Complex Shift and Invert Strategies
+ for Real Matrices", Linear Algebra and its Applications, vol 88/89, pp
+ 575-595, (1987).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>Based on ARPACK routine zneupd</para>
+ </refsection>
+ <refsection>
+ <title>History</title>
+ <revhistory>
+ <revision>
+ <revnumber>5.4.0</revnumber>
+ <revremark>
+ Function obsolete for <link linkend="eigs">eigs</link>.
+ </revremark>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
diff --git a/modules/arnoldi/help/fr_FR/addchapter.sce b/modules/arnoldi/help/fr_FR/addchapter.sce
new file mode 100755
index 000000000..7399d511a
--- /dev/null
+++ b/modules/arnoldi/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("ARnoldi PACKage (binding de ARPACK)",SCI+"/modules/arnoldi/help/fr_FR",%T);
+
diff --git a/modules/arnoldi/help/ja_JP/addchapter.sce b/modules/arnoldi/help/ja_JP/addchapter.sce
new file mode 100755
index 000000000..fcfdec114
--- /dev/null
+++ b/modules/arnoldi/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("ARnoldi PACKage",SCI+"/modules/arnoldi/help/ja_JP",%T);
+
diff --git a/modules/arnoldi/help/ja_JP/dnaupd.xml b/modules/arnoldi/help/ja_JP/dnaupd.xml
new file mode 100755
index 000000000..1e3ca2f46
--- /dev/null
+++ b/modules/arnoldi/help/ja_JP/dnaupd.xml
@@ -0,0 +1,861 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="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="dnaupd" xml:lang="ja">
+ <refnamediv>
+ <refname>dnaupd</refname>
+ <refpurpose>
+ 暗黙のうちに再開されるArnoldi反復へのインターフェイスで,
+ 実線形演算子の小数の固有値/ベクトルの組を近似的に計算します.
+ <emphasis role="bold">
+ この関数は廃止されました. <link linkend="eigs">eigs</link>を使用してください
+ </emphasis>
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[IDO, RESID, V, IPARAM, IPNTR, WORKD, WORKL, INFO] = dnaupd(ID0, BMAT, N, WHICH, NEV, TOL, RESID, NCV, V, IPARAM, IPNTR, WORKD, WORKL, INFO)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>ID0</term>
+ <listitem>
+ <para>
+ Integer. (INPUT/OUTPUT)
+ </para>
+ <para>
+ Reverse communication flag. IDO must
+ be zero on the first call to dnaupd. IDO will be set internally to
+ indicate the type of operation to be performed. Control is then
+ given back to the calling routine which has the responsibility to
+ carry out the requested operation and call dnaupd with the result.
+ The operand is given in WORKD(IPNTR(1)), the result must be put in
+ WORKD(IPNTR(2)).
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IDO = 0: first call to the reverse communication
+ interface.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = -1: compute Y = OP * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for Y. This
+ is for the initialization phase to force the starting vector
+ into the range of OP.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 1: compute Y = OP * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for Y. In
+ mode 3 and 4, the vector B * X is already available in
+ WORKD(ipntr(3)). It does not need to be recomputed in forming OP
+ * X.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 2: compute Y = B * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for
+ Y.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 3: compute the IPARAM(8) real and imaginary parts of
+ the shifts where INPTR(14) is the pointer into WORKL for placing
+ the shifts. See Remark 5 below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IDO = 99: done.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>BMAT</term>
+ <listitem>
+ <para>
+ Character. (INPUT)
+ </para>
+ <para>
+ specifies the type of the matrix B that defines the
+ semi-inner product for the operator OP.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>'I' - standard eigenvalue problem A * x = lambda * x</para>
+ </listitem>
+ <listitem>
+ <para>
+ 'G' - generalized eigenvalue problem A * x =
+ lambda * B * x
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>N</term>
+ <listitem>
+ <para>Integer. (INPUT)</para>
+ <para>dimension of the eigenproblem.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WHICH</term>
+ <listitem>
+ <para>
+ string of length 2. (INPUT)
+ </para>
+ <para>
+ Specifies which of the Ritz values of OP to
+ compute.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ 'LM' - want the NEV eigenvalues of largest
+ magnitude.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'SM' - want the NEV eigenvalues of smallest
+ magnitude.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'LR' - want the NEV eigenvalues of largest real
+ part.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'SR' - want the NEV eigenvalues of smallest real
+ part.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'LI' - want the NEV eigenvalues of largest imaginary
+ part.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'SI' - want the NEV eigenvalues of smallest imaginary
+ part.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>NEV</term>
+ <listitem>
+ <para>
+ Integer. (INPUT)
+ </para>
+ <para>
+ number of eigenvalues of OP to be computed. 0 &lt;
+ NEV &lt; N-1.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>TOL</term>
+ <listitem>
+ <para>
+ scalar. (INPUT)
+ </para>
+ <para>
+ Stopping criterion: the relative accuracy of the Ritz
+ value is considered acceptable if BOUNDS(I) &lt;= TOL*ABS(RITZ(I)).
+ If TOL &lt;= 0. is passed the machine precision is set.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>RESID</term>
+ <listitem>
+ <para>array of length N. (INPUT/OUTPUT)</para>
+ <para>
+ On INPUT: If INFO = 0, a random initial residual vector is
+ used, else RESID contains the initial residual vector, possibly from
+ a previous run.
+ </para>
+ <para>On OUTPUT: RESID contains the final residual vector.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>NCV</term>
+ <listitem>
+ <para>
+ Integer. (INPUT)
+ </para>
+ <para>
+ number of columns of the matrix V. NCV must satisfy
+ the two inequalities 2 &lt;= NCV - NEV and NCV &lt;= N.
+ </para>
+ <para>
+ This will indicate how many Arnoldi vectors are generated at
+ each iteration.
+ </para>
+ <para>
+ After the startup phase in which NEV Arnoldi vectors are
+ generated, the algorithm generates approximately NCV - NEV Arnoldi
+ vectors at each subsequent update iteration. Most of the cost in
+ generating each Arnoldi vector is in the matrix-vector operation
+ OP * x.
+ </para>
+ <para>
+ NOTE: 2 &lt;= NCV - NEV in order that complex conjugate pairs of
+ Ritz values are kept together. (See remark 4 below)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>V</term>
+ <listitem>
+ <para>
+ N by NCV array. (OUTPUT)
+ </para>
+ <para>
+ Contains the final set of Arnoldi basis
+ vectors.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>IPARAM</term>
+ <listitem>
+ <para>array of length 11. (INPUT/OUTPUT)</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPARAM(1) = ISHIFT: method for selecting the implicit
+ shifts. The shifts selected at each iteration are used to
+ restart the Arnoldi iteration in an implicit fashion.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ISHIFT = 0: the shifts are provided by the user via
+ reverse communication. The real and imaginary parts of the
+ NCV eigenvalues of the Hessenberg matrix H are returned in
+ the part of the WORKL array corresponding to RITZR and
+ RITZI. See remark 5 below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ISHIFT = 1: exact shifts with respect to the current
+ Hessenberg matrix H. This is equivalent to restarting the
+ iteration with a starting vector that is a linear
+ combination of approximate Schur vectors associated with the
+ "wanted" Ritz values.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>IPARAM(2) = LEVEC. No longer referenced.</para>
+ </listitem>
+ <listitem>
+ <para>IPARAM(3) = MXITER </para>
+ <para>
+ On INPUT: maximum number of Arnoldi update iterations
+ allowed.
+ </para>
+ <para>
+ On OUTPUT: actual number of Arnoldi update iterations
+ taken.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(4) = NB: blocksize to be used in the recurrence.
+ The code currently works only for NB = 1.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(5) = NCONV: number of "converged" Ritz values. This
+ represents the number of Ritz values that satisfy the
+ convergence criterion.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(6) = IUPD No longer referenced. Implicit restarting
+ is ALWAYS used.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(7) = MODE On INPUT determines what type of
+ eigenproblem is being solved. Must be 1,2,3,4; See under
+ Description of dnaupd for the five modes available.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(8) = NP When ido = 3 and the user provides shifts
+ through reverse communication (IPARAM(1)=0), dnaupd returns NP,
+ the number of shifts the user is to provide.
+ </para>
+ <para>0 &lt; NP &lt;= NCV-NEV. See Remark 5 below.</para>
+ </listitem>
+ <listitem>
+ <para>IPARAM(9) = NUMOP, </para>
+ <para>IPARAM(10) = NUMOPB, </para>
+ <para>IPARAM(11) = NUMREO, </para>
+ <para>
+ On OUTPUT: NUMOP = total number of OP*x operations, NUMOPB
+ = total number of B*x operations if BMAT='G', NUMREO = total
+ number of steps of re-orthogonalization.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>IPNTR</term>
+ <listitem>
+ <para>
+ array of length 14. (OUTPUT)
+ </para>
+ <para>
+ Pointer to mark the starting locations in
+ the WORKD and WORKL arrays for matrices/vectors used by the Arnoldi
+ iteration.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(1): pointer to the current operand vector X in
+ WORKD.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(2): pointer to the current result vector Y in
+ WORKD.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(3): pointer to the vector B * X in WORKD when used
+ in the shift-and-invert mode.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(4): pointer to the next available location in WORKL
+ that is untouched by the program.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(5): pointer to the NCV by NCV upper Hessenberg
+ matrix H in WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(6): pointer to the real part of the ritz value array
+ RITZR in WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(7): pointer to the imaginary part of the ritz value
+ array RITZI in WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(8): pointer to the Ritz estimates in array WORKL
+ associated with the Ritz values located in RITZR and RITZI in
+ WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(14): pointer to the NP shifts in WORKL. See Remark 5
+ below.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Note: IPNTR(9:13) is only referenced by dneupd . See Remark
+ 2.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(9): pointer to the real part of the NCV RITZ values
+ of the original system.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(10): pointer to the imaginary part of the NCV RITZ
+ values of the original system.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(11): pointer to the NCV corresponding error
+ bounds.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(12):pointer to the NCV by NCV upper quasi-triangular
+ Schur matrix for H.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(13): pointer to the NCV by NCV matrix of
+ eigenvectors of the upper Hessenberg matrix H. Only referenced
+ by dneupd if RVEC = 1 See Remark 2 below.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKD</term>
+ <listitem>
+ <para>
+ Double precision work array of length 3 * N. (REVERSE
+ COMMUNICATION)
+ </para>
+ <para>
+ Distributed array to be used in the basic Arnoldi iteration
+ for reverse communication. The user should not use WORKD as
+ temporary workspace during the iteration. Upon termination
+ WORKD(1:N) contains B*RESID(1:N). If an invariant subspace
+ associated with the converged Ritz values is desired, see remark 2
+ below, subroutine dneupd uses this output. See Data Distribution
+ Note below.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKL</term>
+ <listitem>
+ <para>
+ work array of length at least 3 * NCV ** 2 + 6 * NCV.
+ (OUTPUT/WORKSPACE)
+ </para>
+ <para>
+ Private (replicated) array on each PE or array
+ allocated on the front end. See Data Distribution Note below.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>INFO</term>
+ <listitem>
+ <para>Integer. (INPUT/OUTPUT)</para>
+ <para>
+ If INFO == 0, a randomly initial residual vector is used, else
+ RESID contains the initial residual vector, possibly from a previous
+ run.
+ </para>
+ <para>Error flag on output.</para>
+ <itemizedlist>
+ <listitem>
+ <para>0: Normal exit.</para>
+ </listitem>
+ <listitem>
+ <para>
+ 1: Maximum number of iterations taken. All possible
+ eigenvalues of OP has been found. IPARAM(5) returns the number
+ of wanted converged Ritz values.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2: No longer an informational error. Deprecated starting
+ with release 2 of ARPACK.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3: No shifts could be applied during a cycle of the
+ Implicitly restarted Arnoldi iteration. One possibility is to
+ increase the size of NCV relative to NEV. See remark 4
+ below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-1: N must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-2: NEV must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-3: NCV-NEV &gt;= 2 and less than or equal to N.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -4: The maximum number of Arnoldi update iterations
+ allowed must be greater than zero.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -5: WHICH must be one of 'LM', 'SM', 'LR', 'SR', 'LI',
+ 'SI'.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-6: BMAT must be one of 'I' or 'G'.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -7: Length of private work array WORKL is not
+ sufficient.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -8: Error return from LAPACK eigenvalue
+ calculation.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-9: Starting vector is zero.</para>
+ </listitem>
+ <listitem>
+ <para>-10: IPARAM(7) must be 1, 2, 3, 4.</para>
+ </listitem>
+ <listitem>
+ <para>-11: IPARAM(7) = 1 and BMAT = 'G' are incompatable.</para>
+ </listitem>
+ <listitem>
+ <para>-12: IPARAM(1) must be equal to 0 or 1.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -9999: Could not build an Arnoldi factorization. IPARAM(5)
+ returns the size of the current Arnoldi factorization. The user
+ is advised to check that enough workspace and array storage has
+ been allocated.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Reverse communication interface for the Implicitly Restarted Arnoldi
+ iteration. This subroutine computes approximations to a few eigenpairs of
+ a linear operator "OP" with respect to a semi-inner product defined by a
+ symmetric positive semi-definite real matrix B. B may be the identity
+ matrix. NOTE: If the linear operator "OP" is real and symmetric with
+ respect to the real positive semi-definite symmetric matrix B, i.e. B*OP =
+ (OP`)*B, then subroutine dsaupd should be used instead.
+ </para>
+ <para>
+ The computed approximate eigenvalues are called Ritz values and the
+ corresponding approximate eigenvectors are called Ritz vectors.
+ </para>
+ <para>
+ dnaupd is usually called iteratively to solve one of the following
+ problems:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Mode 1: A*x = lambda*x. <literal>
+ OP = A , B =
+ I
+ </literal>
+ .
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Mode 2: A*x = lambda*M*x, M symmetric positive definite
+ <literal>OP = inv[M]*A, B = M</literal>. (If M can be factored see
+ remark 3 below)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Mode 3: A*x = lambda*M*x, M symmetric positive semi-definite.
+ <literal>OP = Real_Part{ inv[A - sigma*M]*M }, B = M</literal>.
+ shift-and-invert mode (in real arithmetic)
+ </para>
+ <para>
+ If <literal>OP*x = amu*x</literal>, then
+ </para>
+ <para>
+ <literal>
+ amu = 1/2 * [ 1/(lambda-sigma) +
+ 1/(lambda-conjg(sigma))]
+ </literal>
+ .
+ </para>
+ <para>
+ Note: If sigma is real, i.e. imaginary part of sigma is zero;
+ <literal>
+ Real_Part{ inv[A - sigma*M]*M } == inv[A -
+ sigma*M]*M
+ </literal>
+ <literal>
+ amu ==
+ 1/(lambda-sigma)
+ </literal>
+ .
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Mode 4: A*x = lambda*M*x, M symmetric semi-definite <literal>
+ OP
+ = Imaginary_Part{ inv[A - sigma*M]*M } , B = M
+ </literal>
+ .
+ shift-and-invert mode (in real arithmetic)
+ </para>
+ <para>
+ If <literal>OP*x = amu*x</literal>, then <literal>
+ amu = 1/2i * [
+ 1/(lambda-sigma) - 1/(lambda-conjg(sigma)) ]
+ </literal>
+ .
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Both mode 3 and 4 give the same enhancement to eigenvalues close to
+ the (complex) shift sigma. However, as lambda goes to infinity, the
+ operator OP in mode 4 dampens the eigenvalues more strongly than does OP
+ defined in mode 3.
+ </para>
+ <para>
+ NOTE: The action of w &lt;- inv[A - sigma * M] * v or w &lt;- inv[M] * v
+ should be accomplished either by a direct method using a sparse matrix
+ factorization and solving <literal>[A - sigma * M] * w = v</literal> or
+ <literal>M * w = v</literal>, or through an iterative method for solving
+ these systems. If an iterative method is used, the convergence test must
+ be more stringent than the accuracy requirements for the eigenvalue
+ approximations.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Example</title>
+ <programlisting role="example">
+ <![CDATA[
+// The following sets dimensions for this problem.
+nx = 10;
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+// Local Arrays
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+dr = zeros(nev + 1, 1);
+di = zeros(nev + 1, 1);
+z = zeros(nx, nev + 1);
+resid = zeros(nx, 1);
+v = zeros(nx, ncv);
+workd = zeros(3 * nx, 1);
+workev = zeros(3 * ncv, 1);
+workl = zeros(3 * ncv * ncv + 6 * ncv, 1);
+// Build the test matrix
+A = diag(10 * ones(nx, 1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx-1,1));
+tol = 0;
+ido = 0;
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+sigmar = 0; // the real part of the shift
+sigmai = 0; // the imaginary part of the shift
+info_dnaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine DNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+ [ido, resid, v, iparam, ipntr, workd, workl, info_dnaupd] = dnaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_dnaupd);
+ if(info_dnaupd < 0)
+ printf('\nError with dnaupd, info = %d\n',info_dnaupd);
+ printf('Check the documentation of dnaupd\n\n');
+ end
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx -1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+// Post-Process using DNEUPD.
+rvec = 1;
+howmany = 'A';
+info_dneupd = 0;
+[dr, di, z, resid, v, iparam, ipntr, workd, workl, info_dneupd] = dneupd(rvec, howmany, _select, dr, di, z, sigmar, sigmai, workev, ...
+ bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, info_dneupd);
+if(info_dneupd < 0)
+ printf('\nError with dneupd, info = %d\n', info_dneupd);
+ printf('Check the documentation of dneupd.\n\n');
+end
+printf('\nDNSIMP\n');
+printf('======\n');
+printf('\n');
+printf('Size of the matrix is %d\n', nx);
+printf('The number of Ritz values requested is %d\n', nev);
+printf('The number of Arnoldi vectors generated (NCV) is %d\n', ncv);
+printf('What portion of the spectrum: %s\n', which);
+printf('The number of Implicit Arnoldi update iterations taken is %d\n', iparam(3));
+printf('The number of OP*x is %d\n', iparam(9));
+printf('The convergence criterion is %d\n', tol);
+]]>
+ </programlisting>
+ </refsection>
+ <refsection>
+ <title>Remarks</title>
+ <para>
+ 1. The computed Ritz values are approximate eigenvalues of OP. The
+ selection of WHICH should be made with this in mind when Mode = 3 and 4.
+ After convergence, approximate eigenvalues of the original problem may be
+ obtained with the ARPACK subroutine dneupd.
+ </para>
+ <para>
+ 2. If a basis for the invariant subspace corresponding to the
+ converged Ritz values is needed, the user must call dneupd immediately
+ following completion of dnaupd. This is new starting with release 2 of
+ ARPACK.
+ </para>
+ <para>
+ 3. If M can be factored into a Cholesky factorization M = LL` then
+ Mode = 2 should not be selected. Instead one should use Mode = 1 with OP =
+ inv(L) * A * inv(L`). Appropriate triangular linear systems should be solved
+ with L and L` rather than computing inverses. After convergence, an
+ approximate eigenvector z of the original problem is recovered by solving
+ L`z = x where x is a Ritz vector of OP.
+ </para>
+ <para>
+ 4. At present there is no a-priori analysis to guide the selection
+ of NCV relative to NEV. The only formal requirement is that NCV &gt; NEV +
+ 2. However, it is recommended that NCV &gt;= 2 * NEV + 1. If many problems of
+ the same type are to be solved, one should experiment with increasing NCV
+ while keeping NEV fixed for a given test problem. This will usually
+ decrease the required number of OP*x operations but it also increases the
+ work and storage required to maintain the orthogonal basis vectors. The
+ optimal "cross-over" with respect to CPU time is problem dependent and
+ must be determined empirically. See Chapter 8 of Reference 2 for further
+ information.
+ </para>
+ <para>
+ 5. When IPARAM(1) = 0, and IDO = 3, the user needs to provide the NP
+ = IPARAM(8) real and imaginary parts of the shifts in locations
+ </para>
+ <programlisting>
+ real part imaginary part
+ ----------------------- --------------
+ 1 WORKL(IPNTR(14)) WORKL(IPNTR(14) + NP)
+ 2 WORKL(IPNTR(14) + 1) WORKL(IPNTR(14) + NP + 1)
+ . .
+ . .
+ . .
+ NP WORKL(IPNTR(14) + NP - 1) WORKL(IPNTR(14) + 2 * NP - 1).
+ </programlisting>
+ <para>
+ Only complex conjugate pairs of shifts may be applied and the pairs
+ must be placed in consecutive locations. The real part of the eigenvalues
+ of the current upper Hessenberg matrix are located in WORKL(IPNTR(6))
+ through WORKL(IPNTR(6) + NCV - 1) and the imaginary part in WORKL(IPNTR(7))
+ through WORKL(IPNTR(7) + NCV - 1). They are ordered according to the order
+ defined by WHICH. The complex conjugate pairs are kept together and the
+ associated Ritz estimates are located in WORKL(IPNTR(8)),
+ WORKL(IPNTR(8)+1), ... , WORKL(IPNTR(8) + NCV - 1).
+ </para>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="dsaupd">dsaupd</link>
+ </member>
+ <member>
+ <link linkend="dneupd">dneupd</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Bibliography</title>
+ <para>
+ 1. D.C. Sorensen, "Implicit Application of Polynomial Filters in a
+ k-Step Arnoldi Method", SIAM J. Matr. Anal. Apps., 13 (1992), pp
+ 357-385.
+ </para>
+ <para>
+ 2. R.B. Lehoucq, "Analysis and Implementation of an Implicitly
+ Restarted Arnoldi Iteration", Rice University Technical Report TR95-13,
+ Department of Computational and Applied Mathematics.
+ </para>
+ <para>
+ 3. B.N. Parlett, "The Symmetric Eigenvalue Problem". Prentice-Hall,
+ 1980.
+ </para>
+ <para>
+ 4. B.N. Parlett, B. Nour-Omid, "Towards a Black Box Lanczos
+ Program", Computer Physics Communications, 53 (1989), pp 169-179.
+ </para>
+ <para>
+ 5. B. Nour-Omid, B.N. Parlett, T. Ericson, P.S. Jensen, "How to
+ Implement the Spectral Transformation", Math. Comp., 48 (1987), pp
+ 663-673.
+ </para>
+ <para>
+ 6. R.G. Grimes, J.G. Lewis and H.D. Simon, "A Shifted Block Lanczos
+ Algorithm for Solving Sparse Symmetric Generalized Eigenproblems", SIAM J.
+ Matr. Anal. Apps., January (1993).
+ </para>
+ <para>
+ 7. L. Reichel, W.B. Gragg, "Algorithm 686: FORTRAN Subroutines for
+ Updating the QR decomposition", ACM TOMS, December 1990, Volume 16 Number
+ 4, pp 369-377.
+ </para>
+ <para>
+ 8. R.B. Lehoucq, D.C. Sorensen, "Implementation of Some Spectral
+ Transformations in a k-Step Arnoldi Method". In Preparation.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>Based on ARPACK routine dnaupd</para>
+ </refsection>
+ <refsection>
+ <title>履歴</title>
+ <revhistory>
+ <revision>
+ <revnumber>5.4.0</revnumber>
+ <revremark>
+ 関数は廃止され,<link linkend="eigs">eigs</link>に代替されました.
+ </revremark>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
diff --git a/modules/arnoldi/help/ja_JP/dneupd.xml b/modules/arnoldi/help/ja_JP/dneupd.xml
new file mode 100755
index 000000000..ebd52acc8
--- /dev/null
+++ b/modules/arnoldi/help/ja_JP/dneupd.xml
@@ -0,0 +1,621 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="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="dneupd" xml:lang="ja">
+ <refnamediv>
+ <refname>dneupd</refname>
+ <refpurpose>
+ 暗黙のうちに再開されるArnoldi反復へのインターフェイスで,
+ 実線形演算子の小数の固有値/ベクトルの組を近似する
+ A * z = lambda * B * z の固有値を収束的近似により計算します.
+ <emphasis role="bold">
+ この関数は廃止されました. <link linkend="eigs">eigs</link>を使用してください
+ </emphasis>
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>
+ [Dr, Di, Z, RESID, V, IPARAM, IPNTR, WORKD, WORKL, INFO] = dneupd(RVEC, HOWMANY, SELECT, Dr, Di, Z, SIGMAr, SIGMAi, WORKev,
+ BMAT, N, WHICH, NEV, TOL, RESID, NCV, V, IPARAM, IPNTR, WORKD, WORKL, INFO)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>RVEC</term>
+ <listitem>
+ <para>Integer. (INPUT)</para>
+ <para>
+ Specifies whether a basis for the invariant subspace
+ corresponding to the converged Ritz value approximations for the
+ eigenproblem A * z = lambda * B * z is computed.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>RVEC = 0 Compute Ritz values only.</para>
+ </listitem>
+ <listitem>
+ <para>RVEC = 1 Compute the Ritz vectors or Schur vectors.</para>
+ </listitem>
+ </itemizedlist>
+ <para>See Remarks below.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>HOWMANY</term>
+ <listitem>
+ <para>Character. (INPUT) </para>
+ <para>
+ Specifies the form of the basis for the invariant subspace
+ corresponding to the converged Ritz values that is to be
+ computed.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>'A': Compute NEV Ritz vectors;</para>
+ </listitem>
+ <listitem>
+ <para>'P': Compute NEV Schur vectors;</para>
+ </listitem>
+ <listitem>
+ <para>
+ 'S': compute some of the Ritz vectors, specified by the
+ integer array SELECT.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SELECT</term>
+ <listitem>
+ <para>Integer array of dimension NCV. (INPUT) </para>
+ <para>
+ If HOWMANY = 'S', SELECT specifies the Ritz vectors to be
+ computed. To select the Ritz vector corresponding to a Ritz value
+ (DR(j), DI(j)), SELECT(j) must be set to 1.
+ </para>
+ <para>
+ If HOWMANY = 'A' or 'P', SELECT is used as internal
+ workspace.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>DR</term>
+ <listitem>
+ <para>Double precision array of dimension NEV + 1. (OUTPUT)</para>
+ <para>
+ If IPARAM(7) = 1, 2 or 3 and SIGMAI = 0.0 then on exit: DR
+ contains the real part of the Ritz approximations to the eigenvalues
+ of A * z = lambda * B * z.
+ </para>
+ <para>
+ If IPARAM(7) = 3, 4 and SIGMAI is not equal to zero, then on
+ exit: DR contains the real part of the Ritz values of OP computed by
+ DNAUPD.
+ </para>
+ <para>
+ A further computation must be performed by the user to
+ transform the Ritz values computed for OP by DNAUPD to those of the
+ original system A * z = lambda * B * z. See remark 3 below.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>DI</term>
+ <listitem>
+ <para>Double precision array of dimension NEV + 1. (OUTPUT) </para>
+ <para>
+ On exit, DI contains the imaginary part of the Ritz value
+ approximations to the eigenvalues of A * z = lambda * B * z associated
+ with DR.
+ </para>
+ <para>
+ NOTE: When Ritz values are complex, they will come in complex
+ conjugate pairs. If eigenvectors are requested, the corresponding
+ Ritz vectors will also come in conjugate pairs and the real and
+ imaginary parts of these are represented in two consecutive columns
+ of the array Z (see below).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Z</term>
+ <listitem>
+ <para>Double precision N by NEV + 1 array </para>
+ <para>if RVEC = 1 and HOWMANY = 'A'. (OUTPUT) </para>
+ <para>
+ On exit, if RVEC = 1 and HOWMANY = 'A', then the columns of Z
+ represent approximate eigenvectors (Ritz vectors) corresponding to
+ the NCONV = IPARAM(5) Ritz values for eigensystem A * z = lambda * B * z.
+ The complex Ritz vector associated with the Ritz value with positive
+ imaginary part is stored in two consecutive columns. The first
+ column holds the real part of the Ritz vector and the second column
+ holds the imaginary part. The Ritz vector associated with the Ritz
+ value with negative imaginary part is simply the complex conjugate
+ of the Ritz vector associated with the positive imaginary part.
+ </para>
+ <para>
+ If RVEC = 0 or HOWMANY = 'P', then Z is not referenced.
+ </para>
+ <para>
+ NOTE: If if RVEC = 1 and a Schur basis is not required, the
+ array Z may be set equal to first NEV+1 columns of the Arnoldi basis
+ array V computed by DNAUPD . In this case the Arnoldi basis will be
+ destroyed and overwritten with the eigenvector basis.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SIGMAR</term>
+ <listitem>
+ <para>Double precision (INPUT) </para>
+ <para>
+ If IPARAM(7) = 3 or 4, represents the real part of the
+ shift.
+ </para>
+ <para>Not referenced if IPARAM(7) = 1 or 2.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SIGMAI</term>
+ <listitem>
+ <para>Double precision (INPUT) </para>
+ <para>
+ If IPARAM(7) = 3 or 4, represents the imaginary part of the
+ shift.
+ </para>
+ <para>
+ Not referenced if IPARAM(7) = 1 or 2. See remark 3
+ below.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKEV</term>
+ <listitem>
+ <para>
+ Double precision work array of dimension 3 * NCV.
+ (WORKSPACE)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ NOTE: The remaining arguments BMAT, N, WHICH, NEV, TOL, RESID, NCV,
+ V, IPARAM, IPNTR, WORKD, WORKL, LWORKL, INFO must be passed directly to
+ DNEUPD following the last call to DNAUPD .
+ </para>
+ <para>
+ These arguments MUST NOT BE MODIFIED between the last call to
+ DNAUPD and the call to DNEUPD .
+ </para>
+ <para>
+ Three of these parameters (V, WORKL, INFO) are also output
+ parameters.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>V</term>
+ <listitem>
+ <para>Double precision N by NCV array. (INPUT/OUTPUT) </para>
+ <para>
+ Upon INPUT: the NCV columns of V contain the Arnoldi basis
+ vectors for OP as constructed by DNAUPD.
+ </para>
+ <para>
+ Upon OUTPUT: If RVEC = 1 the first NCONV = IPARAM(5) columns
+ contain approximate Schur vectors that span the desired invariant
+ subspace. See Remark 2 below.
+ </para>
+ <para>
+ NOTE: If the array Z has been set equal to first NEV+1 columns
+ of the array V and RVEC = 1 and HOWMANY= 'A', then the Arnoldi basis
+ held by V has been overwritten by the desired Ritz vectors. If a
+ separate array Z has been passed then the first NCONV = IPARAM(5)
+ columns of V will contain approximate Schur vectors that span the
+ desired invariant subspace.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKL</term>
+ <listitem>
+ <para>
+ Double precision work array of length LWORKL.
+ (OUTPUT/WORKSPACE)
+ </para>
+ <para>
+ WORKL(1:ncv*ncv+3*ncv) contains information obtained in dnaupd
+ . They are not changed by dneupd .
+ </para>
+ <para>
+ WORKL(ncv*ncv+3*ncv+1:3*ncv*ncv+6*ncv) holds the real and
+ imaginary part of the untransformed Ritz values, the upper
+ quasi-triangular matrix for H, and the associated matrix
+ representation of the invariant subspace for H.
+ </para>
+ <para>
+ Note: IPNTR(9:13) contains the pointer into WORKL for
+ addresses of the above information computed by dneupd .
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(9): pointer to the real part of the NCV RITZ values
+ of the original system.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(10): pointer to the imaginary part of the NCV RITZ
+ values of the original system.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(11): pointer to the NCV corresponding error
+ bounds.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(12): pointer to the NCV by NCV upper
+ quasi-triangular Schur matrix for H.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(13): pointer to the NCV by NCV matrix of
+ eigenvectors of the upper Hessenberg matrix H. Only referenced
+ by dneupd if RVEC = 1 See Remark 2 below.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>INFO</term>
+ <listitem>
+ <para>Integer. (OUTPUT).</para>
+ <para>Error flag on output.</para>
+ <itemizedlist>
+ <listitem>
+ <para>0: Normal exit.</para>
+ </listitem>
+ <listitem>
+ <para>
+ 1: The Schur form computed by LAPACK routine dlahqr could
+ not be reordered by LAPACK routine dtrsen . Re-enter subroutine
+ dneupd with IPARAM(5)=NCV and increase the size of the arrays DR
+ and DI to have dimension at least dimension NCV and allocate at
+ least NCV columns for Z.
+ </para>
+ <para>
+ NOTE: Not necessary if Z and V share the same space.
+ Please notify the authors if this error occurs.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-1: N must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-2: NEV must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-3: NCV-NEV &gt;= 2 and less than or equal to N.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -5: WHICH must be one of 'LM', 'SM', 'LR', 'SR', 'LI',
+ 'SI'.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-6: BMAT must be one of 'I' or 'G'.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -7: Length of private work WORKL array is not
+ sufficient.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -8: Error return from calculation of a real Schur form.
+ Informational error from LAPACK routine dlahqr.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -9: Error return from calculation of eigenvectors.
+ Informational error from LAPACK routine dtrevc.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-10: IPARAM(7) must be 1, 2, 3, 4.</para>
+ </listitem>
+ <listitem>
+ <para>-11: IPARAM(7) = 1 and BMAT = 'G' are incompatible.</para>
+ </listitem>
+ <listitem>
+ <para>-12: HOWMANY = 'S' not yet implemented. </para>
+ </listitem>
+ <listitem>
+ <para>-13: HOWMANY must be one of 'A' or 'P' if RVEC = 1.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -14: DNAUPD did not find any eigenvalues to sufficient
+ accuracy.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -15: DNEUPD got a different count of the number of
+ converged Ritz values than DNAUPD got. This indicates the user
+ probably made an error in passing data from DNAUPD to DNEUPD or
+ that the data was modified before entering DNEUPD.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ This subroutine returns the converged approximations to eigenvalues
+ of A * z = lambda * B * z and (optionally):
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>The corresponding approximate eigenvectors;</para>
+ </listitem>
+ <listitem>
+ <para>
+ An orthonormal basis for the associated approximate invariant
+ subspace;
+ </para>
+ </listitem>
+ <listitem>
+ <para>Both.</para>
+ </listitem>
+ </orderedlist>
+ <para>
+ There is negligible additional cost to obtain eigenvectors. An
+ orthonormal basis is always computed.
+ </para>
+ <para>
+ There is an additional storage cost of n*nev if both are requested
+ (in this case a separate array Z must be supplied).
+ </para>
+ <para>
+ The approximate eigenvalues and eigenvectors of A * z = lambda * B * z are
+ derived from approximate eigenvalues and eigenvectors of of the linear
+ operator OP prescribed by the MODE selection in the call to DNAUPD. DNAUPD
+ must be called before this routine is called.
+ </para>
+ <para>
+ These approximate eigenvalues and vectors are commonly called Ritz
+ values and Ritz vectors respectively. They are referred to as such in the
+ comments that follow.
+ </para>
+ <para>
+ The computed orthonormal basis for the invariant subspace
+ corresponding to these Ritz values is referred to as a Schur basis.
+ </para>
+ <para>
+ See documentation in the header of the subroutine DNAUPD for
+ definition of OP as well as other terms and the relation of computed Ritz
+ values and Ritz vectors of OP with respect to the given problem A * z =
+ lambda * B * z.
+ </para>
+ <para>
+ For a brief description, see definitions of IPARAM(7), MODE and
+ WHICH in the documentation of DNAUPD .
+ </para>
+ </refsection>
+ <refsection>
+ <title>Remarks</title>
+ <orderedlist>
+ <listitem>
+ <para>Currently only HOWMNY = 'A' and 'P' are implemented. </para>
+ <para>Let trans(X) denote the transpose of X. </para>
+ </listitem>
+ <listitem>
+ <para>
+ Schur vectors are an orthogonal representation for the basis of
+ Ritz vectors. Thus, their numerical properties are often superior. If
+ RVEC = 1 then the relationship
+ </para>
+ <para>
+ A * V(:,1:IPARAM(5)) = V(:,1:IPARAM(5)) * T, and
+ trans(V(:,1:IPARAM(5))) * V(:,1:IPARAM(5)) = I
+ </para>
+ <para>are approximately satisfied. </para>
+ <para>
+ Here T is the leading submatrix of order IPARAM(5) of the real
+ upper quasi-triangular matrix stored workl(ipntr(12)). That is, T is
+ block upper triangular with 1-by-1 and 2-by-2 diagonal blocks; each
+ 2-by-2 diagonal block has its diagonal elements equal and its
+ off-diagonal elements of opposite sign. Corresponding to each 2-by-2
+ diagonal block is a complex conjugate pair of Ritz values. The real
+ Ritz values are stored on the diagonal of T.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If IPARAM(7) = 3 or 4 and SIGMAI is not equal zero, then the
+ user must form the IPARAM(5) Rayleigh quotients in order to transform
+ the Ritz values computed by DNAUPD for OP to those of A * z =
+ lambda * B * z. Set RVEC = 1 and HOWMNY = 'A', and compute
+ </para>
+ <para>trans(Z(:,I)) * A * Z(:,I) if DI(I) = 0. </para>
+ <para>
+ If DI(I) is not equal to zero and DI(I+1) = - D(I), then the
+ desired real and imaginary parts of the Ritz value are
+ </para>
+ <para>
+ trans(Z(:,I)) * A * Z(:,I) + trans(Z(:,I+1)) * A * Z(:,I+1),
+ </para>
+ <para>
+ trans(Z(:,I)) * A * Z(:,I+1) - trans(Z(:,I+1)) * A * Z(:,I),
+ </para>
+ <para>respectively. </para>
+ <para>
+ Another possibility is to set RVEC = 1 and HOWMANY = 'P' and
+ compute
+ </para>
+ <para>trans(V(:,1:IPARAM(5))) * A * V(:,1:IPARAM(5)) </para>
+ <para>
+ and then an upper quasi-triangular matrix of order IPARAM(5) is
+ computed. See remark 2 above.
+ </para>
+ </listitem>
+ </orderedlist>
+ </refsection>
+ <refsection>
+ <title>Example</title>
+ <programlisting role="example">
+ <![CDATA[
+// The following sets dimensions for this problem.
+nx = 10;
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+// Local Arrays
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+dr = zeros(nev + 1, 1);
+di = zeros(nev + 1, 1);
+z = zeros(nx, nev + 1);
+resid = zeros(nx, 1);
+v = zeros(nx, ncv);
+workd = zeros(3 * nx, 1);
+workev = zeros(3 * ncv, 1);
+workl = zeros(3 * ncv * ncv + 6 * ncv, 1);
+// Build the test matrix
+A = diag(10 * ones(nx, 1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx-1,1));
+tol = 0;
+ido = 0;
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+sigmar = 0; // the real part of the shift
+sigmai = 0; // the imaginary part of the shift
+info_dnaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine DNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+ [ido, resid, v, iparam, ipntr, workd, workl, info_dnaupd] = dnaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_dnaupd);
+ if(info_dnaupd < 0)
+ printf('\nError with dnaupd, info = %d\n',info_dnaupd);
+ printf('Check the documentation of dnaupd\n\n');
+ end
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx -1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+// Post-Process using DNEUPD.
+rvec = 1;
+howmany = 'A';
+info_dneupd = 0;
+[dr, di, z, resid, v, iparam, ipntr, workd, workl, info_dneupd] = dneupd(rvec, howmany, _select, dr, di, z, sigmar, sigmai, workev, ...
+ bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, info_dneupd);
+if(info_dneupd < 0)
+ printf('\nError with dneupd, info = %d\n', info_dneupd);
+ printf('Check the documentation of dneupd.\n\n');
+end
+printf('\nDNSIMP\n');
+printf('======\n');
+printf('\n');
+printf('Size of the matrix is %d\n', nx);
+printf('The number of Ritz values requested is %d\n', nev);
+printf('The number of Arnoldi vectors generated (NCV) is %d\n', ncv);
+printf('What portion of the spectrum: %s\n', which);
+printf('The number of Implicit Arnoldi update iterations taken is %d\n', iparam(3));
+printf('The number of OP*x is %d\n', iparam(9));
+printf('The convergence criterion is %d\n', tol);
+]]>
+ </programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="dsaupd">dsaupd</link>
+ </member>
+ <member>
+ <link linkend="dnaupd">dnaupd</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Bibliography</title>
+ <para>
+ 1. D.C. Sorensen, "Implicit Application of Polynomial Filters in a
+ k-Step Arnoldi Method", SIAM J. Matr. Anal. Apps., 13 (1992), pp
+ 357-385.
+ </para>
+ <para>
+ 2. R.B. Lehoucq, "Analysis and Implementation of an Implicitly
+ Restarted Arnoldi Iteration", Rice University Technical Report TR95-13,
+ Department of Computational and Applied Mathematics.
+ </para>
+ <para>
+ 3. B.N. Parlett, "The Symmetric Eigenvalue Problem". Prentice-Hall,
+ 1980.
+ </para>
+ <para>
+ 4. B.N. Parlett, B. Nour-Omid, "Towards a Black Box Lanczos
+ Program", Computer Physics Communications, 53 (1989), pp 169-179.
+ </para>
+ <para>
+ 5. B. Nour-Omid, B.N. Parlett, T. Ericson, P.S. Jensen, "How to
+ Implement the Spectral Transformation", Math. Comp., 48 (1987), pp
+ 663-673.
+ </para>
+ <para>
+ 6. R.G. Grimes, J.G. Lewis and H.D. Simon, "A Shifted Block Lanczos
+ Algorithm for Solving Sparse Symmetric Generalized Eigenproblems", SIAM J.
+ Matr. Anal. Apps., January (1993).
+ </para>
+ <para>
+ 7. L. Reichel, W.B. Gragg, "Algorithm 686: FORTRAN Subroutines for
+ Updating the QR decomposition", ACM TOMS, December 1990, Volume 16 Number
+ 4, pp 369-377.
+ </para>
+ <para>
+ 8. R.B. Lehoucq, D.C. Sorensen, "Implementation of Some Spectral
+ Transformations in a k-Step Arnoldi Method". In Preparation.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>Based on ARPACK routine dneupd</para>
+ </refsection>
+ <refsection>
+ <title>履歴</title>
+ <revhistory>
+ <revision>
+ <revnumber>5.4.0</revnumber>
+ <revremark>
+ 関数は廃止され,<link linkend="eigs">eigs</link>に代替されました.
+ </revremark>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
diff --git a/modules/arnoldi/help/ja_JP/dsaupd.xml b/modules/arnoldi/help/ja_JP/dsaupd.xml
new file mode 100755
index 000000000..051494045
--- /dev/null
+++ b/modules/arnoldi/help/ja_JP/dsaupd.xml
@@ -0,0 +1,765 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="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="dsaupd" xml:lang="ja">
+ <refnamediv>
+ <refname>dsaupd</refname>
+ <refpurpose>
+ 暗黙のうちに再開されるArnoldi反復へのインターフェイスで,
+ 実対称線形演算子の小数の固有値/ベクトルの組を近似的に計算します.
+ <emphasis role="bold">
+ この関数は廃止されました. <link linkend="eigs">eigs</link>を使用してください
+ </emphasis>
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[IDO, RESID, V, IPARAM, IPNTR, WORKD, WORKL, INFO] = dsaupd(ID0, BMAT, N, WHICH, NEV, TOL, RESID, NCV, V, IPARAM, IPNTR, WORKD, WORKL, INFO)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>ID0</term>
+ <listitem>
+ <para>Integer. (INPUT/OUTPUT) </para>
+ <para>
+ Reverse communication flag. IDO must be zero on the first call
+ to dsaupd . IDO will be set internally to indicate the type of
+ operation to be performed. Control is then given back to the calling
+ routine which has the responsibility to carry out the requested
+ operation and call dsaupd with the result.
+ </para>
+ <para>
+ The operand is given in WORKD(IPNTR(1)), the result must be put
+ in WORKD(IPNTR(2)). (If Mode = 2 see remark 5 below)
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IDO = 0: first call to the reverse communication
+ interface.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = -1: compute Y = OP * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for Y. This
+ is for the initialization phase to force the starting vector
+ into the range of OP.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 1: compute Y = OP * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for Y. In
+ mode 3, 4 and 5, the vector B * X is already available in
+ WORKD(ipntr(3)). It does not need to be recomputed in forming OP
+ * X.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 2: compute Y = B * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for
+ Y.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 3: compute the IPARAM(8) shifts where IPNTR(11) is
+ the pointer into WORKL for placing the shifts. See remark 6
+ below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IDO = 99: done</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>BMAT</term>
+ <listitem>
+ <para>Character. (INPUT)</para>
+ <para>
+ Specifies the type of the matrix B that defines the semi-inner
+ product for the operator OP.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>'I': standard eigenvalue problem A * x = lambda * x</para>
+ </listitem>
+ <listitem>
+ <para>
+ 'G': generalized eigenvalue problem A * x =
+ lambda * B * x
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>N</term>
+ <listitem>
+ <para>Integer. (INPUT)</para>
+ <para>Dimension of the eigenproblem.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WHICH</term>
+ <listitem>
+ <para>String of length 2. (INPUT)</para>
+ <para>Specifies which of the Ritz values of OP to compute.</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ 'LA' - compute the NEV largest (algebraic)
+ eigenvalues.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'SA' - compute the NEV smallest (algebraic)
+ eigenvalues.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'LM' - compute the NEV largest (in magnitude)
+ eigenvalues.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'SM' - compute the NEV smallest (in magnitude)
+ eigenvalues.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'BE' - compute NEV eigenvalues, half from each end of the
+ spectrum. When NEV is odd, compute one more from the high end
+ than from the low end. (see remark 1 below)
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>NEV</term>
+ <listitem>
+ <para>Integer. (INPUT)</para>
+ <para>
+ Number of eigenvalues of OP to be computed. 0 &lt; NEV &lt;
+ N.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>TOL</term>
+ <listitem>
+ <para>scalar. (INPUT)</para>
+ <para>
+ Stopping criterion: the relative accuracy of the Ritz value is
+ considered acceptable if BOUNDS(I) &lt;= TOL * ABS(RITZ(I)). If TOL
+ &lt;= 0. is passed the machine precision is set.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>RESID</term>
+ <listitem>
+ <para>Array of length N. (INPUT/OUTPUT)</para>
+ <para>
+ On INPUT: If INFO = 0, a random initial residual vector is
+ used, else RESID contains the initial residual vector, possibly from
+ a previous run.
+ </para>
+ <para>On OUTPUT: RESID contains the final residual vector.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>NCV</term>
+ <listitem>
+ <para>Integer. (INPUT)</para>
+ <para>
+ Number of columns of the matrix V (less than or equal to N).
+ </para>
+ <para>
+ This will indicate how many Lanczos vectors are generated at
+ each iteration. After the startup phase in which NEV Lanczos vectors
+ are generated, the algorithm generates NCV - NEV Lanczos vectors at
+ each subsequent update iteration. Most of the cost in generating
+ each Lanczos vector is in the matrix-vector product OP * x. (See
+ remark 4 below).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>V</term>
+ <listitem>
+ <para>N by NCV array. (OUTPUT) </para>
+ <para>The NCV columns of V contain the Lanczos basis vectors.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>IPARAM</term>
+ <listitem>
+ <para>array of length 11. (INPUT/OUTPUT)</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPARAM(1) = ISHIFT: method for selecting the implicit
+ shifts. The shifts selected at each iteration are used to
+ restart the Arnoldi iteration in an implicit fashion.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ISHIFT = 0: the shifts are provided by the user via
+ reverse communication. The NCV eigenvalues of the current
+ tridiagonal matrix T are returned in the part of WORKL array
+ corresponding to RITZ. See remark 6 below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ISHIFT = 1: exact shifts with respect to the reduced
+ tridiagonal matrix T. This is equivalent to restarting the
+ iteration with a starting vector that is a linear
+ combination of Ritz vectors associated with the "wanted"
+ Ritz values.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(2) = LEVEC. No longer referenced. See remark 2
+ below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IPARAM(3) = MXITER </para>
+ <para>
+ On INPUT: maximum number of Arnoldi update iterations
+ allowed.
+ </para>
+ <para>
+ On OUTPUT: actual number of Arnoldi update iterations
+ taken.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(4) = NB: blocksize to be used in the recurrence.
+ The code currently works only for NB = 1.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(5) = NCONV: number of "converged" Ritz values. This
+ represents the number of Ritz values that satisfy the
+ convergence criterion.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(6) = IUPD No longer referenced. Implicit restarting
+ is ALWAYS used.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(7) = MODE On INPUT determines what type of
+ eigenproblem is being solved. Must be 1,2,3,4,5; See under
+ Description of dsaupd for the five modes available.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(8) = NP When ido = 3 and the user provides shifts
+ through reverse communication (IPARAM(1)=0), dsaupd returns NP,
+ the number of shifts the user is to provide. 0 &lt; NP &lt;=
+ NCV-NEV. See Remark 6 below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IPARAM(9) = NUMOP, </para>
+ <para>IPARAM(10) = NUMOPB, </para>
+ <para>
+ IPARAM(11) = NUMREO, OUTPUT: NUMOP = total number of OP*x
+ operations, NUMOPB = total number of B*x operations if BMAT='G',
+ NUMREO = total number of steps of re-orthogonalization.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>IPNTR</term>
+ <listitem>
+ <para>
+ array of length 11. (OUTPUT)
+ </para>
+ <para>
+ Pointer to mark the starting locations in
+ the WORKD and WORKL arrays for matrices/vectors used by the Lanczos
+ iteration.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(1): pointer to the current operand vector X in
+ WORKD.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(2): pointer to the current result vector Y in
+ WORKD.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(3): pointer to the vector B * X in WORKD when used
+ in the shift-and-invert mode.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(4): pointer to the next available location in WORKL
+ that is untouched by the program.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(5): pointer to the NCV by 2 tridiagonal matrix T in
+ WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(6): pointer to the NCV RITZ values array in
+ WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(7): pointer to the Ritz estimates in array WORKL
+ associated with the Ritz values located in RITZ in WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(11): pointer to the NP shifts in WORKL. See Remark 6
+ below.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Note: IPNTR(8:10) is only referenced by dseupd . See Remark
+ 2.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(8): pointer to the NCV RITZ values of the original
+ system.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(9): pointer to the NCV corresponding error
+ bounds.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(10): pointer to the NCV by NCV matrix of
+ eigenvectors of the tridiagonal matrix T. Only referenced by
+ dseupd if RVEC = 1. See Remarks
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKD</term>
+ <listitem>
+ <para>work array of length 3 * N. (REVERSE COMMUNICATION) </para>
+ <para>
+ Distributed array to be used in the basic Arnoldi iteration
+ for reverse communication. The user should not use WORKD as
+ temporary workspace during the iteration. Upon termination
+ WORKD(1:N) contains B*RESID(1:N). If the Ritz vectors are desired
+ subroutine dseupd uses this output. See Data Distribution Note
+ below.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKL</term>
+ <listitem>
+ <para>
+ work array of length at least NCV ** 2 + 8 * NCV.
+ (OUTPUT/WORKSPACE)
+ </para>
+ <para>
+ Private (replicated) array on each PE or array allocated on
+ the front end. See Data Distribution Note below. add here the
+ parameter description.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>INFO</term>
+ <listitem>
+ <para>Integer. (INPUT/OUTPUT)</para>
+ <para>
+ If INFO = 0, a randomly initial residual vector is used, else
+ RESID contains the initial residual vector, possibly from a previous
+ run.
+ </para>
+ <para>Error flag on output.</para>
+ <itemizedlist>
+ <listitem>
+ <para>0: Normal exit.</para>
+ </listitem>
+ <listitem>
+ <para>
+ 1: Maximum number of iterations taken. All possible
+ eigenvalues of OP has been found. IPARAM(5) returns the number
+ of wanted converged Ritz values.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2: No longer an informational error. Deprecated starting
+ with release 2 of ARPACK.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3: No shifts could be applied during a cycle of the
+ Implicitly restarted Arnoldi iteration. One possibility is to
+ increase the size of NCV relative to NEV. See remark 4
+ below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-1: N must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-2: NEV must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -3: NCV must be greater than NEV and less than or equal to
+ N.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -4: The maximum number of Arnoldi update iterations
+ allowed must be greater than zero.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -5: WHICH must be one of 'LM', 'SM', 'LA', 'SA' or
+ 'BE'.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-6: BMAT must be one of 'I' or 'G'.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -7: Length of private work array WORKL is not
+ sufficient.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -8: Error return from trid. eigenvalue calculation;
+ Informatinal error from LAPACK routine dsteqr.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-9: Starting vector is zero.</para>
+ </listitem>
+ <listitem>
+ <para>-10: IPARAM(7) must be 1, 2, 3, 4, 5.</para>
+ </listitem>
+ <listitem>
+ <para>-11: IPARAM(7) = 1 and BMAT = 'G' are incompatable.</para>
+ </listitem>
+ <listitem>
+ <para>-12: IPARAM(1) must be equal to 0 or 1.</para>
+ </listitem>
+ <listitem>
+ <para>-13: NEV and WHICH = 'BE' are incompatable.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -9999: Could not build an Arnoldi factorization. IPARAM(5)
+ returns the size of the current Arnoldi factorization. The user
+ is advised to check that enough workspace and array storage has
+ been allocated.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Reverse communication interface for the Implicitly Restarted Arnoldi
+ Iteration. For symmetric problems this reduces to a variant of the Lanczos
+ method. This method has been designed to compute approximations to a few
+ eigenpairs of a linear operator OP that is real and symmetric with respect
+ to a real positive semi-definite symmetric matrix B, i.e.<literal>
+ B * OP =
+ (OP`) * B
+ </literal>
+ .
+ </para>
+ <para>
+ Another way to express this condition is <literal>
+ &lt; x,OPy &gt; =
+ &lt; OPx,y &gt; where &lt;z,w &gt; = z`Bw
+ </literal>
+ .
+ </para>
+ <para>
+ In the standard eigenproblem B is the identity matrix. ( A` denotes
+ transpose of A)
+ </para>
+ <para>
+ The computed approximate eigenvalues are called Ritz values and the
+ corresponding approximate eigenvectors are called Ritz vectors.
+ </para>
+ <para>
+ dsaupd is usually called iteratively to solve one of the following
+ problems:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Mode 1: A * x = lambda * x, A symmetric ===&gt; OP = A and B =
+ I.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Mode 2: A * x = lambda * M * x, A symmetric, M symmetric positive
+ definite ===&gt; OP = inv[M] * A and B = M. ===&gt; (If M can be
+ factored see remark 3 below)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Mode 3: K * x = lambda * M * x, K symmetric, M symmetric positive
+ semi-definite ===&gt; OP = (inv[K - sigma * M]) * M and B = M. ===&gt;
+ Shift-and-Invert mode
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Mode 4: K * x = lambda * KG * x, K symmetric positive semi-definite,
+ KG symmetric indefinite ===&gt; OP = (inv[K - sigma * KG]) * K and B = K.
+ ===&gt; Buckling mode
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Mode 5: A * x = lambda * M * x, A symmetric, M symmetric positive
+ semi-definite ===&gt; OP = inv[A - sigma * M] * [A + sigma * M] and B = M.
+ ===&gt; Cayley transformed mode
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ NOTE: The action of w &lt;- inv[A - sigma * M] * v or w &lt;- inv[M] * v
+ should be accomplished either by a direct method using a sparse matrix
+ factorization and solving <literal>
+ [A - sigma * M] * w = v or M * w =
+ v
+ </literal>
+ ,
+ </para>
+ <para>
+ or through an iterative method for solving these systems. If an
+ iterative method is used, the convergence test must be more stringent than
+ the accuracy requirements for the eigenvalue approximations.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Remarks</title>
+ <para>
+ 1. The converged Ritz values are always returned in ascending
+ algebraic order. The computed Ritz values are approximate eigenvalues of
+ OP. The selection of WHICH should be made with this in mind when Mode =
+ 3, 4, 5. After convergence, approximate eigenvalues of the original problem
+ may be obtained with the ARPACK subroutine dseupd .
+ </para>
+ <para>
+ 2. If the Ritz vectors corresponding to the converged Ritz values
+ are needed, the user must call dseupd immediately following completion of
+ dsaupd . This is new starting with version 2.1 of ARPACK.
+ </para>
+ <para>
+ 3. If M can be factored into a Cholesky factorization M = LL` then
+ Mode = 2 should not be selected. Instead one should use Mode = 1 with OP =
+ inv(L) * A * inv(L`). Appropriate triangular linear systems should be solved
+ with L and L` rather than computing inverses. After convergence, an
+ approximate eigenvector z of the original problem is recovered by solving
+ L`z = x where x is a Ritz vector of OP.
+ </para>
+ <para>
+ 4. At present there is no a-priori analysis to guide the selection
+ of NCV relative to NEV. The only formal requirement is that NCV &gt; NEV.
+ However, it is recommended that NCV &gt;= 2 * NEV. If many problems of the
+ same type are to be solved, one should experiment with increasing NCV
+ while keeping NEV fixed for a given test problem. This will usually
+ decrease the required number of OP * x operations but it also increases the
+ work and storage required to maintain the orthogonal basis vectors. The
+ optimal "cross-over" with respect to CPU time is problem dependent and
+ must be determined empirically.
+ </para>
+ <para>
+ 5. If IPARAM(7) = 2 then in the Reverse communication interface the
+ user must do the following. When IDO = 1, Y = OP * X is to be computed.
+ When IPARAM(7) = 2 OP = inv(B) * A. After computing A * X the user must
+ overwrite X with A * X. Y is then the solution to the linear set of
+ equations B * Y = A * X.
+ </para>
+ <para>
+ 6. When IPARAM(1) = 0, and IDO = 3, the user needs to provide the NP
+ = IPARAM(8) shifts in locations: 1 WORKL(IPNTR(11)) 2 WORKL(IPNTR(11) + 1) .
+ . . NP WORKL(IPNTR(11) + NP - 1). The eigenvalues of the current tridiagonal
+ matrix are located in WORKL(IPNTR(6)) through WORKL(IPNTR(6) + NCV - 1). They
+ are in the order defined by WHICH. The associated Ritz estimates are
+ located in WORKL(IPNTR(8)), WORKL(IPNTR(8) + 1), ... ,
+ WORKL(IPNTR(8) + NCV - 1).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Example</title>
+ <programlisting role="example">
+ <![CDATA[
+// The following sets dimensions for this problem.
+nx = 10;
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+// Local Arrays
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev, 1);
+z = zeros(nx, nev);
+resid = zeros(nx, 1);
+v = zeros(nx, ncv);
+workd = zeros(3 * nx, 1);
+workl = zeros(ncv * ncv + 8 * ncv, 1);
+// Build the symmetric test matrix
+A = diag(10 * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6 * ones(nx-1,1));
+tol = 0;
+ido = 0;
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+sigma = 0; // the real part of the shift
+info_dsaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine DSAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+ [ido, resid, v, iparam, ipntr, workd, workl, info_dsaupd] = dsaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_dsaupd);
+ if(info_dsaupd < 0)
+ printf('\nError with dsaupd, info = %d\n',info_dsaupd);
+ printf('Check the documentation of dsaupd\n\n');
+ end
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+// Post-Process using DSEUPD.
+rvec = 1;
+howmany = 'A';
+info_dseupd = 0;
+[d, z, resid, v, iparam, ipntr, workd, workl, info_dseupd] = dseupd(rvec, howmany, _select, d, z, sigma, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, info_dseupd);
+if(info_dseupd < 0)
+ printf('\nError with dseupd, info = %d\n', info_dseupd);
+ printf('Check the documentation of dseupd.\n\n');
+end
+// Done with program dssimp.
+printf('\nDSSIMP\n');
+printf('======\n');
+printf('\n');
+printf('Size of the matrix is %d\n', nx);
+printf('The number of Ritz values requested is %d\n', nev);
+printf('The number of Arnoldi vectors generated (NCV) is %d\n', ncv);
+printf('What portion of the spectrum: %s\n', which);
+printf('The number of Implicit Arnoldi update iterations taken is %d\n', iparam(3));
+printf('The number of OP*x is %d\n', iparam(9));
+printf('The convergence criterion is %d\n', tol);
+]]>
+ </programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="dnaupd">dnaupd</link>
+ </member>
+ <member>
+ <link linkend="dseupd">dseupd</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Bibliography</title>
+ <para>
+ 1. D.C. Sorensen, "Implicit Application of Polynomial Filters in a
+ k-Step Arnoldi Method", SIAM J. Matr. Anal. Apps., 13 (1992), pp
+ 357-385.
+ </para>
+ <para>
+ 2. R.B. Lehoucq, "Analysis and Implementation of an Implicitly
+ Restarted Arnoldi Iteration", Rice University Technical Report TR95-13,
+ Department of Computational and Applied Mathematics.
+ </para>
+ <para>
+ 3. B.N. Parlett and Y. Saad, "Complex Shift and Invert Strategies
+ for Real Matrices", Linear Algebra and its Applications, vol 88/89, pp
+ 575-595, (1987).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>Based on ARPACK routine dsaupd</para>
+ </refsection>
+ <refsection>
+ <title>履歴</title>
+ <revhistory>
+ <revision>
+ <revnumber>5.4.0</revnumber>
+ <revremark>
+ 関数は廃止され,<link linkend="eigs">eigs</link>に代替されました.
+ </revremark>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
diff --git a/modules/arnoldi/help/ja_JP/dseupd.xml b/modules/arnoldi/help/ja_JP/dseupd.xml
new file mode 100755
index 000000000..87490a423
--- /dev/null
+++ b/modules/arnoldi/help/ja_JP/dseupd.xml
@@ -0,0 +1,440 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="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="dseupd" xml:lang="ja">
+ <refnamediv>
+ <refname>dseupd</refname>
+ <refpurpose>
+ 暗黙のうちに再開されるArnoldi反復へのインターフェイスで,
+ A * z = lambda * B * z の固有値を収束的近似により計算します.
+ <emphasis role="bold">
+ この関数は廃止されました. <link linkend="eigs">eigs</link>を使用してください
+ </emphasis>
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>
+ [D, Z, RESID, V, IPARAM, IPNTR, WORKD, WORKL, INFO] = dseupd(RVEC, HOWMANY, SELECT, D, Z, SIGMA, BMAT, N, WHICH,
+ NEV, TOL, RESID, NCV, V, IPARAM, IPNTR, WORKD, WORKL, INFO)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>RVEC</term>
+ <listitem>
+ <para>Integer. (INPUT) </para>
+ <para>
+ Specifies whether Ritz vectors corresponding to the Ritz value
+ approximations to the eigenproblem A * z = lambda * B * z are
+ computed.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>RVEC = 0 Compute Ritz values only.</para>
+ </listitem>
+ <listitem>
+ <para>RVEC = 1 Compute Ritz vectors.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>HOWMNY</term>
+ <listitem>
+ <para>Character*1. (INPUT) </para>
+ <para>
+ Specifies how many Ritz vectors are wanted and the form of Z
+ the matrix of Ritz vectors. See remark 1 below.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>'A': compute NEV Ritz vectors;</para>
+ </listitem>
+ <listitem>
+ <para>
+ 'S': compute some of the Ritz vectors, specified by the
+ integer array SELECT.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SELECT</term>
+ <listitem>
+ <para>Integer array of dimension NCV. (INPUT/WORKSPACE) </para>
+ <para>
+ If HOWMANY = 'S', SELECT specifies the Ritz vectors to be
+ computed. To select the Ritz vector corresponding to a Ritz value
+ D(j), SELECT(j) must be set to 1.
+ </para>
+ <para>
+ If HOWMANY = 'A' , SELECT is used as a workspace for
+ reordering the Ritz values.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>D</term>
+ <listitem>
+ <para>Double precision array of dimension NEV. (OUTPUT) </para>
+ <para>
+ On exit, D contains the Ritz value approximations to the
+ eigenvalues of A * z = lambda * B * z. The values are returned in
+ ascending order.
+ </para>
+ <para>
+ If IPARAM(7) = 3, 4, 5 then D represents the Ritz values of OP
+ computed by dsaupd transformed to those of the original eigensystem
+ A * z = lambda * B * z.
+ </para>
+ <para>
+ If IPARAM(7) = 1, 2 then the Ritz values of OP are the same as
+ the those of A * z = lambda * B * z.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Z</term>
+ <listitem>
+ <para>Double precision N by NEV array.</para>
+ <para>
+ If HOWMNY = 'A'. (OUTPUT) On exit, Z contains the
+ B-orthonormal Ritz vectors of the eigensystemA * z = lambda * B * z
+ corresponding to the Ritz value approximations.
+ </para>
+ <para>If RVEC = 0 then Z is not referenced. </para>
+ <para>
+ NOTE: The array Z may be set equal to first NEV columns of the
+ Arnoldi/Lanczos basis array V computed by DSAUPD .
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SIGMA</term>
+ <listitem>
+ <para>Double precision (INPUT) </para>
+ <para>
+ If IPARAM(7) = 3, 4, 5 represents the shift. Not referenced if
+ IPARAM(7) = 1 or 2.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ NOTE: The remaining arguments BMAT, N, WHICH, NEV, TOL, RESID, NCV,
+ V, IPARAM, IPNTR, WORKD, WORKL, LWORKL, INFO must be passed directly to
+ DSEUPD following the last call to DSAUPD .
+ </para>
+ <para>
+ These arguments MUST NOT BE MODIFIED between the last call to
+ DSAUPD and the call to DSEUPD.
+ </para>
+ <para>
+ Two of these parameters (WORKL, INFO) are also output
+ parameters.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>WORKL</term>
+ <listitem>
+ <para>
+ Double precision work array of length LWORKL.
+ (OUTPUT/WORKSPACE)
+ </para>
+ <para>
+ WORKL(1:4*ncv) contains information obtained in dsaupd. They
+ are not changed by dseupd.
+ </para>
+ <para>
+ WORKL(4*ncv+1:ncv*ncv+8*ncv) holds the untransformed Ritz
+ values, the computed error estimates, and the associated eigenvector
+ matrix of H.
+ </para>
+ <para>
+ Note: IPNTR(8:10) contains the pointer into WORKL for
+ addresses of the above information computed by dseupd .
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(8): pointer to the NCV RITZ values of the original
+ system.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(9): pointer to the NCV corresponding error bounds.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(10): pointer to the NCV by NCV matrix of
+ eigenvectors of the tridiagonal matrix T. Only referenced by
+ dseupd if RVEC = 1 See Remarks.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>INFO</term>
+ <listitem>
+ <para>Integer. (OUTPUT) </para>
+ <para>Error flag on output.</para>
+ <itemizedlist>
+ <listitem>
+ <para>0: Normal exit.</para>
+ </listitem>
+ <listitem>
+ <para>-1: N must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-2: NEV must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -3: NCV must be greater than NEV and less than or equal to
+ N.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -5: WHICH must be one of 'LM', 'SM', 'LA', 'SA' or
+ 'BE'.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-6: BMAT must be one of 'I' or 'G'.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -7: Length of private work WORKL array is not
+ sufficient.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -8: Error return from trid. eigenvalue calculation;
+ Information error from LAPACK routine dsteqr.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-9: Starting vector is zero.</para>
+ </listitem>
+ <listitem>
+ <para>-10: IPARAM(7) must be 1, 2, 3, 4, 5.</para>
+ </listitem>
+ <listitem>
+ <para>-11: IPARAM(7) = 1 and BMAT = 'G' are incompatible.</para>
+ </listitem>
+ <listitem>
+ <para>-12: NEV and WHICH = 'BE' are incompatible.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -14: DSAUPD did not find any eigenvalues to sufficient
+ accuracy.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-15: HOWMNY must be one of 'A' or 'S' if RVEC = 1.</para>
+ </listitem>
+ <listitem>
+ <para>-16: HOWMNY = 'S' not yet implemented.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -17: DSEUPD got a different count of the number of
+ converged Ritz values than DSAUPD got. This indicates the user
+ probably made an error in passing data from DSAUPD to DSEUPD or
+ that the data was modified before entering DSEUPD.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ This subroutine returns the converged approximations to eigenvalues
+ of A * z = lambda * B * z and (optionally):
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>the corresponding approximate eigenvectors,</para>
+ </listitem>
+ <listitem>
+ <para>
+ an orthonormal (Lanczos) basis for the associated approximate
+ invariant subspace,
+ </para>
+ </listitem>
+ <listitem>
+ <para>Both. </para>
+ </listitem>
+ </orderedlist>
+ <para>
+ There is negligible additional cost to obtain eigenvectors. An
+ orthonormal (Lanczos) basis is always computed. There is an additional
+ storage cost of n*nev if both are requested (in this case a separate array
+ Z must be supplied).
+ </para>
+ <para>
+ These quantities are obtained from the Lanczos factorization
+ computed by DSAUPD for the linear operator OP prescribed by the MODE
+ selection (see IPARAM(7) in DSAUPD documentation.) DSAUPD must be called
+ before this routine is called.
+ </para>
+ <para>
+ These approximate eigenvalues and vectors are commonly called Ritz
+ values and Ritz vectors respectively. They are referred to as such in the
+ comments that follow.
+ </para>
+ <para>
+ The computed orthonormal basis for the invariant subspace
+ corresponding to these Ritz values is referred to as a Lanczos basis.
+ </para>
+ <para>
+ See documentation in the header of the subroutine DSAUPD for a
+ definition of OP as well as other terms and the relation of computed Ritz
+ values and vectors of OP with respect to the given problem A * z = lambda * B * z.
+ </para>
+ <para>
+ The approximate eigenvalues of the original problem are returned in
+ ascending algebraic order.
+ </para>
+ <para>
+ The user may elect to call this routine once for each desired Ritz
+ vector and store it peripherally if desired. There is also the option of
+ computing a selected set of these vectors with a single call.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Remarks</title>
+ <para>
+ 1. The converged Ritz values are always returned in increasing
+ (algebraic) order. c 2. Currently only HOWMNY = 'A' is implemented. It is
+ included at this stage for the user who wants to incorporate it.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Example</title>
+ <programlisting role="example">
+ <![CDATA[
+// The following sets dimensions for this problem.
+nx = 10;
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+// Local Arrays
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev, 1);
+z = zeros(nx, nev);
+resid = zeros(nx, 1);
+v = zeros(nx, ncv);
+workd = zeros(3 * nx, 1);
+workl = zeros(ncv * ncv + 8 * ncv, 1);
+// Build the symmetric test matrix
+A = diag(10 * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6 * ones(nx-1,1));
+tol = 0;
+ido = 0;
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+sigma = 0; // the real part of the shift
+info_dsaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine DSAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+ [ido, resid, v, iparam, ipntr, workd, workl, info_dsaupd] = dsaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_dsaupd);
+ if(info_dsaupd < 0)
+ printf('\nError with dsaupd, info = %d\n',info_dsaupd);
+ printf('Check the documentation of dsaupd\n\n');
+ end
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+// Post-Process using DSEUPD.
+rvec = 1;
+howmany = 'A';
+info_dseupd = 0;
+[d, z, resid, v, iparam, ipntr, workd, workl, info_dseupd] = dseupd(rvec, howmany, _select, d, z, sigma, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, info_dseupd);
+if(info_dseupd < 0)
+ printf('\nError with dseupd, info = %d\n', info_dseupd);
+ printf('Check the documentation of dseupd.\n\n');
+end
+// Done with program dssimp.
+printf('\nDSSIMP\n');
+printf('======\n');
+printf('\n');
+printf('Size of the matrix is %d\n', nx);
+printf('The number of Ritz values requested is %d\n', nev);
+printf('The number of Arnoldi vectors generated (NCV) is %d\n', ncv);
+printf('What portion of the spectrum: %s\n', which);
+printf('The number of Implicit Arnoldi update iterations taken is %d\n', iparam(3));
+printf('The number of OP*x is %d\n', iparam(9));
+printf('The convergence criterion is %d\n', tol);
+]]>
+ </programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="dsaupd">dsaupd</link>
+ </member>
+ <member>
+ <link linkend="dneupd">dneupd</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Bibliography</title>
+ <para>
+ 1. D.C. Sorensen, "Implicit Application of Polynomial Filters in
+ k-Step Arnoldi Method", SIAM J. Matr. Anal. Apps., 13 (1992), pp
+ 357-385.
+ </para>
+ <para>
+ 2. R.B. Lehoucq, "Analysis and Implementation of an Implicitly
+ Restarted Arnoldi Iteration", Rice University Technical Report TR95-13,
+ Department of Computational and Applied Mathematics.
+ </para>
+ <para>
+ 3. B.N. Parlett and Y. Saad, "Complex Shift and Invert Strategies
+ for Real Matrices", Linear Algebra and its Applications, vol 88/89, pp
+ 575-595, (1987).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>Based on ARPACK routine dseupd</para>
+ </refsection>
+ <refsection>
+ <title>履歴</title>
+ <revhistory>
+ <revision>
+ <revnumber>5.4.0</revnumber>
+ <revremark>
+ 関数は廃止され,<link linkend="eigs">eigs</link>に代替されました.
+ </revremark>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
diff --git a/modules/arnoldi/help/ja_JP/eigs.xml b/modules/arnoldi/help/ja_JP/eigs.xml
new file mode 100755
index 000000000..b47056695
--- /dev/null
+++ b/modules/arnoldi/help/ja_JP/eigs.xml
@@ -0,0 +1,526 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+ *
+ * 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:ns5="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="eigs" xml:lang="ja">
+ <refnamediv>
+ <refname>eigs</refname>
+ <refpurpose>
+ 行列の最大固有値と固有ベクトルを計算
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>呼び出し手順</title>
+ <synopsis>
+ d = eigs(A [,B [,k [,sigma [,opts]]]])
+ [d, v] = eigs(A [,B [,k [,sigma [,opts]]]])
+ d = eigs(Af, n [,B [,k [,sigma [,opts]]]])
+ [d, v] = eigs(Af, n [,B [,k [,sigma [,opts]]]])
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>引数</title>
+ <variablelist>
+ <varlistentry>
+ <term>A </term>
+ <listitem>
+ <para>通常または疎, 実数または複素数, 対称または非対称正方行列</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Af </term>
+ <listitem>
+ <para>関数</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>n </term>
+ <listitem>
+ <para>
+ スカラー, Aが関数の場合のみ <literal>A</literal> 定義
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>B</term>
+ <listitem>
+ <para>
+ <literal> A</literal>と同じ次元の
+ 疎, 実数または複素数, 正方行列
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>k</term>
+ <listitem>
+ <para>整数, 計算する固有値の数</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>sigma</term>
+ <listitem>
+ <para>実スカラーまたは長さ2の文字列</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>opts</term>
+ <listitem>
+ <para>構造体</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>d</term>
+ <listitem>
+ <para>実数または複素数の固有値ベクトルまたは対角行列 (対角項に固有値)</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>v</term>
+ <listitem>
+ <para>
+ 実数または複素数の固有ベクトル行列
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>説明</title>
+ <para>
+ eigs関数の目的は,疎で大きな行列の最大固有値を計算することです.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>d = eigs(A) または d = eigs(Af, n)</term>
+ <listitem>
+ <para>
+ は,固有値問題<literal>A * v = lambda * v</literal>を解きます.
+ このコールは,大きさが最大の6個の固有値を有する
+ ベクトル <literal>d</literal>を返します.
+ <literal>A</literal> は正方行列で,
+ 対称または非対称, 実数または複素数, 通常または複素数
+ とすることができます.
+ </para>
+ <para>
+ <literal>A</literal> は関数<literal>Af</literal>で
+ 表すことも可能です.この場合,
+ ベクトル引数の長さを指定するスカラー<literal>n</literal>を
+ 定義する必要があります.
+ この関数は,以下のヘッダを有する必要があります:
+ </para>
+ <programlisting role="no-scilab-exec">
+ <![CDATA[
+function y = A ( x )
+ ]]>
+ </programlisting>
+ <para>
+ この関数 <literal>Af</literal> は以下の4つの式の1つを返す必要があります:
+ <itemizedlist>
+ <listitem>
+ <term>A * x</term>
+ <para> sigmaが指定されないか文字列が'SM'以外の場合.</para>
+ </listitem>
+ <listitem>
+ <term>A \ x</term>
+ <para>sigmaが0または'SM'の場合.</para>
+ </listitem>
+ <listitem>
+ <term>(A - sigma * I) \ x</term>
+ <para>標準固有値問題の場合, ただし I は単位行列.</para>
+ </listitem>
+ <listitem>
+ <term>(A - sigma * B) \ x</term>
+ <para> 一般化固有値問題の場合.</para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[d, v] = eigs(A) or [d, v] = eigs(Af, n)</term>
+ <listitem>
+ <para>
+ は,6個の最大固有値を対角項に有する対角行列 <literal>d</literal> を返します.
+ <literal>v</literal> は n行6列の行列で,
+ その列は返された固有値に対応する6個の固有値ベクトルです.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>d = eigs(A, B)</term>
+ <listitem>
+ <para>
+ は,正定行列<literal>B</literal>を指定して,
+ 一般化固有値問題 <literal>A * v = lambda * B * v </literal>
+ を解きます.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>B</literal> が指定されない場合,
+ <literal>B = []</literal> が使用されます.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>B</literal> が指定された場合,
+ <literal>B</literal> はAと同じ大きさとする必要があります.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>d = eigs(A, B, k)</term>
+ <listitem>
+ <para>
+ は,<literal>k</literal>個の固有値をベクトル<literal>d</literal>に返します.
+ <literal>k</literal> が指定されない場合,
+ <literal>k = min(n, 6)</literal>, ただし, nはAの行数となります.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>d = eigs(A, B, k, sigma)</term>
+ <listitem>
+ <para>
+ は,<literal>sigma</literal>で定義された<literal>k</literal>個の固有値を
+ ベクトル<literal>d</literal>に返します.
+ <literal>sigma</literal> は,0を含む実数または複素数,または文字列
+ とすることができます.
+ sigma が長さ2の文字列の場合, 以下の値のどれかとします :
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>'LM'</literal> は,大きさが最大の<varname>k</varname>個の
+ 固有値を計算します(デフォルト).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>'SM'</literal> は,大きさが最小の<varname>k</varname>個の
+ 固有値を計算します(sigma = 0 と同じ).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>'LA'</literal> は,実対称問題のみに適用され,
+ <varname>k</varname>個の代数的最大固有値を計算します.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>'SA'</literal> は,実対称問題のみに適用され,
+ <varname>k</varname>個の代数的最小固有値を計算します.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>'BE'</literal> は,実対称問題のみに適用され,
+ スペクトラムの各端から半分づつ,<varname>k</varname>個の固有値を計算します.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>'LR'</literal> は,実非対称または複素問題のみに適用され,
+ <varname>k</varname>個の実部最大の固有値を計算します.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>'SR'</literal> は,実非対称または複素問題のみに適用され,
+ <varname>k</varname>個の実部最小の固有値を計算します.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>'LI'</literal> は,実非対称または複素問題のみに適用され,
+ <varname>k</varname>個の虚部最大の固有値を計算します.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>'SI'</literal> は,実非対称または複素問題のみに適用され,
+ <varname>k</varname>個の虚部最小の固有値を計算します.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>d = eigs(A, B, k, sigma, opts)</term>
+ <listitem>
+ <para>
+ <literal> opts </literal> 構造体が指定された場合,
+ <literal>k</literal> 個の固有値を計算する際に
+ 異なるオプションを使用できます:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <term>tol</term>
+ <para>
+ 所要の収束閾値. デフォルトで, <literal>tol = %eps</literal>.
+ </para>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <term>maxiter</term>
+ <para>
+ 最大反復回数. デフォルトで, <literal>maxiter = 300</literal>.
+ </para>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <term>ncv</term>
+ <para>
+ 使用するLanzcos基底ベクトルの数.
+ 実非対称問題の場合, <literal>ncv</literal>の値は
+ <literal>2 * k + 1 </literal>以上とする必要があり,
+ デフォルトで <literal>ncv = min(max(2 * k + 1, 20), nA) </literal>です.
+ 実対称または複素数問題の場合,<literal>ncv</literal>は
+ <literal>2 * k </literal>以上とする必要があり,
+ デフォルトで<literal> ncv = min(max(2 * k, 20), nA) </literal>
+ です.ただし,<literal> nA = size(A, 2) </literal>.
+ </para>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <term>resid</term>
+ <para>
+ 初期残差ベクトルを有する開始ベクトルで,
+ 前回実行時の値を使用することもできます.
+ デフォルトで,<literal>resid</literal> はランダムな
+ 初期値ベクトルです.
+ </para>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <term>cholB</term>
+ <para>
+ <literal>B</literal>ではなく
+ <literal>chol(B)</literal>を指定します.
+ デフォルトで
+ , <literal>cholB</literal> は %f です.
+ </para>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <term>isreal</term>
+ <para>
+ <literal>Af</literal> が指定された場合,
+ <literal>isreal</literal> を定義できます.
+ デフォルトで, <literal>isreal</literal> は %t です.
+ この引数は,<literal>A</literal>が行列の場合,
+ 指定する必要がありません.
+ </para>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <term>issym</term>
+ <para>
+ <literal>Af</literal> が指定された場合,
+ <literal>issym</literal> を定義できます.
+ デフォルトで <literal>issym</literal> は %f です.
+ この引数は,<literal>A</literal>が行列の場合,
+ 指定する必要がありません.
+ </para>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>参考文献</title>
+ <para>
+ この関数はR. Lehoucq, K. Maschhoff, D. Sorensen, および C. Yang.により書かれた
+ ARPACKパッケージに基づいています.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>実対称問題用のDSAUPD および DSEUPD ルーチン,</para>
+ </listitem>
+ <listitem>
+ <para>実非対称行列用のDNAUPD および DNEUPD ルーチン.</para>
+ </listitem>
+ <listitem>
+ <para>複素問題用のZNAUPD および ZNEUPD.</para>
+ </listitem>
+ </itemizedlist>
+ </refsection>
+ <refsection>
+ <title>実対称問題の例</title>
+ <programlisting role="example">
+ <![CDATA[
+clear opts
+A = diag(10*ones(10,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(9,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6*ones(9,1));
+B = eye(10,10);
+k = 8;
+sigma = 'SM';
+opts.cholB = %t;
+d = eigs(A)
+[d, v] = eigs(A)
+d = eigs(A, B, k, sigma)
+[d, v] = eigs(A, B, k, sigma)
+d = eigs(A, B, k, sigma, opts)
+[d, v] = eigs(A, B, k, sigma, opts)
+// 疎行列
+AS = sparse(A);
+BS = sparse(B);
+d = eigs(AS)
+[d, v] = eigs(AS)
+d = eigs(AS, BS, k, sigma)
+[d, v] = eigs(AS, BS, k, sigma)
+d = eigs(AS, BS, k, sigma, opts)
+[d, v] = eigs(AS, BS, k, sigma, opts)
+// 関数
+clear opts
+function y = fn(x)
+ y = A * x;
+endfunction
+opts.isreal = %t;
+opts.issym = %t;
+d = eigs(fn, 10, [], k, 'LM', opts)
+function y = fn(x)
+ y = A \ x;
+endfunction
+d = eigs(fn, 10, [], k, 'SM', opts)
+function y = fn(x)
+ y = (A - 4 * eye(10,10)) \ x;
+endfunction
+d = eigs(fn, 10, [], k, 4, opts)
+ ]]>
+ </programlisting>
+ </refsection>
+ <refsection>
+ <title>実非対称問題の例</title>
+ <programlisting role="example">
+ <![CDATA[
+ clear opts
+ A = diag(10*ones(10,1));
+ A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(9,1));
+ A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(9,1));
+ B = eye(10,10);
+ k = 8;
+ sigma = 'SM';
+ opts.cholB = %t;
+ d = eigs(A)
+[d, v] = eigs(A)
+ d = eigs(A, B, k, sigma)
+ [d, v] = eigs(A, B, k, sigma)
+ d = eigs(A, B, k, sigma, opts)
+ [d, v] = eigs(A, B, k, sigma, opts)
+// 疎行列
+ AS = sparse(A);
+ BS = sparse(B);
+d = eigs(AS)
+[d, v] = eigs(AS)
+ d = eigs(AS, BS, k, sigma)
+ [d, v] = eigs(AS, BS, k, sigma)
+ d = eigs(AS, BS, k, sigma, opts)
+ [d, v] = eigs(AS, BS, k, sigma, opts)
+ // 関数
+clear opts
+function y = fn(x)
+ y = A * x;
+endfunction
+opts.isreal = %t;
+opts.issym = %f;
+d = eigs(fn, 10, [], k, 'LM', opts)
+function y = fn(x)
+ y = A \ x;
+endfunction
+d = eigs(fn, 10, [], k, 'SM', opts)
+function y = fn(x)
+ y = (A - 4 * eye(10,10)) \ x;
+endfunction
+d = eigs(fn, 10, [], k, 4, opts)
+ ]]>
+ </programlisting>
+ </refsection>
+ <refsection>
+ <title>複素問題の例</title>
+ <programlisting role="example">
+ <![CDATA[
+ clear opts
+ A = diag(10*ones(10,1) + %i * ones(10,1));
+ A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(9,1));
+ A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(9,1));
+ B = eye(10,10);
+ k = 8;
+ sigma = 'LM';
+ opts.cholB = %t;
+ d = eigs(A)
+[d, v] = eigs(A)
+ d = eigs(A, B, k, sigma)
+ [d, v] = eigs(A, B, k, sigma)
+ d = eigs(A, B, k, sigma, opts)
+ [d, v] = eigs(A, B, k, sigma, opts)
+ // 疎行列
+ AS = sparse(A);
+ BS = sparse(B);
+ d = eigs(AS)
+[d, v] = eigs(AS)
+ d = eigs(AS, BS, k, sigma)
+ [d, v] = eigs(AS, BS, k, sigma)
+ d = eigs(AS, BS, k, sigma, opts)
+ [d, v] = eigs(AS, BS, k, sigma, opts)
+ // 関数
+clear opts
+function y = fn(x)
+ y = A * x;
+endfunction
+opts.isreal = %f;
+opts.issym = %f;
+d = eigs(fn, 10, [], k, 'LM', opts)
+function y = fn(x)
+ y = A \ x;
+endfunction
+d = eigs(fn, 10, [], k, 'SM', opts)
+function y = fn(x)
+ y = (A - 4 * eye(10,10)) \ x;
+endfunction
+d = eigs(fn, 10, [], k, 4, opts)
+ ]]>
+ </programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>参照</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="spec">spec</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>履歴</title>
+ <revhistory>
+ <revision>
+ <revnumber>5.4.0</revnumber>
+ <revremark>
+ 関数が導入されました.
+ dnaupd, dneupd, dsaupd, dseupd, znaupd および zneupdは廃止されました.
+ </revremark>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
diff --git a/modules/arnoldi/help/ja_JP/znaupd.xml b/modules/arnoldi/help/ja_JP/znaupd.xml
new file mode 100755
index 000000000..4db374b2d
--- /dev/null
+++ b/modules/arnoldi/help/ja_JP/znaupd.xml
@@ -0,0 +1,780 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="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="znaupd" xml:lang="ja">
+ <refnamediv>
+ <refname>znaupd</refname>
+ <refpurpose>
+ 暗黙のうちに再開されるArnoldi反復へのインターフェイスで,
+ エルミート準正定実行列Bにより定義される準内積に関する
+ 複素線形演算子 OP の小数の固有値/ベクトルの組を近似的に計算します.
+ <emphasis role="bold">
+ この関数は廃止されました. <link linkend="eigs">eigs</link>を使用してください
+ </emphasis>
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>[IDO, RESID, V, IPARAM, IPNTR, WORKD, WORKL, RWORK, INFO] = znaupd(ID0, BMAT, N, WHICH, NEV, TOL, RESID, NCV, V, IPARAM, IPNTR, WORKD, WORKL, RWORK, INFO)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>IDO</term>
+ <listitem>
+ <para>Integer. (INPUT/OUTPUT) </para>
+ <para>
+ Reverse communication flag. IDO must be zero on the first call
+ to znaupd. IDO will be set internally to indicate the type of
+ operation to be performed. Control is then given back to the calling
+ routine which has the responsibility to carry out the requested
+ operation and call znaupd with the result.
+ </para>
+ <para>
+ The operand is given in WORKD(IPNTR(1)), the result must be
+ put in WORKD(IPNTR(2)).
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IDO = 0: first call to the reverse communication interface
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = -1: compute Y = OP * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for Y.
+ </para>
+ <para>
+ This is for the initialization phase to force the starting
+ vector into the range of OP.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 1: compute Y = OP * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for Y.
+ </para>
+ <para>
+ In mode 3, the vector B * X is already available in
+ WORKD(ipntr(3)). It does not need to be recomputed in forming OP
+ * X.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 2: compute Y = M * X where IPNTR(1) is the pointer
+ into WORKD for X, IPNTR(2) is the pointer into WORKD for
+ Y.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IDO = 3: compute and return the shifts in the first NP
+ locations of WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IDO = 99: done </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ After the initialization phase, when the routine is used in
+ the "shift-and-invert" mode, the vector M * X is already available
+ and does not need to be recomputed in forming OP*X.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>BMAT</term>
+ <listitem>
+ <para>Character. (INPUT) </para>
+ <para>
+ specifies the type of the matrix B that defines the
+ semi-inner product for the operator OP.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>'I': standard eigenvalue problem A * x = lambda * x</para>
+ </listitem>
+ <listitem>
+ <para>
+ 'G': generalized eigenvalue problem A * x =
+ lambda * M * x
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>N</term>
+ <listitem>
+ <para>Integer. (INPUT) </para>
+ <para>Dimension of the eigenproblem.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WHICH</term>
+ <listitem>
+ <para>string of length 2. (INPUT) </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ 'LM': want the NEV eigenvalues of largest
+ magnitude.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'SM': want the NEV eigenvalues of smallest
+ magnitude.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'LR': want the NEV eigenvalues of largest real
+ part.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'SR': want the NEV eigenvalues of smallest real part.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'LI': want the NEV eigenvalues of largest imaginary
+ part.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 'SI': want the NEV eigenvalues of smallest imaginary
+ part.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>NEV</term>
+ <listitem>
+ <para>Integer. (INPUT) </para>
+ <para>
+ Number of eigenvalues of OP to be computed. 0 &lt; NEV &lt;
+ N - 1.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>TOL</term>
+ <listitem>
+ <para>Double precision scalar. (INPUT) </para>
+ <para>
+ Stopping criteria: the relative accuracy of the Ritz value is
+ considered acceptable if BOUNDS(I) .LE. TOL * ABS(RITZ(I)) where
+ ABS(RITZ(I)) is the magnitude when RITZ(I) is complex. DEFAULT =
+ dlamch('EPS') (machine precision as computed by the LAPACK auxiliary
+ subroutine dlamch).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>RESID</term>
+ <listitem>
+ <para>Complex*16 array of length N. (INPUT/OUTPUT) </para>
+ <para>
+ On INPUT: If INFO .EQ. 0, a random initial residual vector is
+ used. If INFO .NE. 0, RESID contains the initial residual vector,
+ possibly from a previous run.
+ </para>
+ <para>On OUTPUT: RESID contains the final residual vector.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>NCV</term>
+ <listitem>
+ <para>Integer. (INPUT) </para>
+ <para>
+ Number of columns of the matrix V. NCV must satisfy the two
+ inequalities 2 &lt;= NCV - NEV and NCV &lt;= N.
+ </para>
+ <para>
+ This will indicate how many Arnoldi vectors are generated at
+ each iteration. After the startup phase in which NEV Arnoldi vectors
+ are generated, the algorithm generates approximately NCV - NEV Arnoldi
+ vectors at each subsequent update iteration. Most of the cost in
+ generating each Arnoldi vector is in the matrix-vector operation
+ OP * x. (See remark 4 below.)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>V</term>
+ <listitem>
+ <para>Complex*16 array N by NCV. (OUTPUT) </para>
+ <para>Contains the final set of Arnoldi basis vectors.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>IPARAM</term>
+ <listitem>
+ <para>Integer array of length 11. (INPUT/OUTPUT) </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPARAM(1) = ISHIFT: method for selecting the implicit
+ shifts. The shifts selected at each iteration are used to filter
+ out the components of the unwanted eigenvector.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ISHIFT = 0: the shifts are to be provided by the user
+ via reverse communication. The NCV eigenvalues of the
+ Hessenberg matrix H are returned in the part of WORKL array
+ corresponding to RITZ.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ISHIFT = 1: exact shifts with respect to the current
+ Hessenberg matrix H. This is equivalent to restarting the
+ iteration from the beginning after updating the starting
+ vector with a linear combination of Ritz vectors associated
+ with the "wanted" eigenvalues.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ISHIFT = 2: other choice of internal shift to be
+ defined.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <para>IPARAM(2) = No longer referenced</para>
+ </listitem>
+ <listitem>
+ <para>IPARAM(3) = MXITER </para>
+ <para>
+ On INPUT: maximum number of Arnoldi update iterations
+ allowed.
+ </para>
+ <para>
+ On OUTPUT: actual number of Arnoldi update iterations
+ taken.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(4) = NB: blocksize to be used in the recurrence.
+ The code currently works only for NB = 1.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(5) = NCONV: number of "converged" Ritz values. This
+ represents the number of Ritz values that satisfy the
+ convergence criterion.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(6) = IUPD No longer referenced. Implicit restarting
+ is ALWAYS used.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(7) = MODE On INPUT determines what type of
+ eigenproblem is being solved. Must be 1,2,3; See under
+ Description of znaupd for the four modes available.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPARAM(8) = NP When ido = 3 and the user provides shifts
+ through reverse communication (IPARAM(1)=0), _naupd returns NP,
+ the number of shifts the user is to provide. 0 &lt; NP &lt;
+ NCV-NEV.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IPARAM(9) = NUMOP, </para>
+ <para>IPARAM(10) = NUMOPB, </para>
+ <para>
+ IPARAM(11) = NUMREO, OUTPUT: NUMOP = total number of OP*x
+ operations, NUMOPB = total number of B*x operations if BMAT='G',
+ NUMREO = total number of steps of re-orthogonalization.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>IPNTR</term>
+ <listitem>
+ <para>Integer array of length 14. (OUTPUT) </para>
+ <para>
+ Pointer to mark the starting locations in the WORKD and WORKL
+ arrays for matrices/vectors used by the Arnoldi iteration.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(1): pointer to the current operand vector X in
+ WORKD.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(2): pointer to the current result vector Y in
+ WORKD.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(3): pointer to the vector B * X in WORKD when used
+ in the shift-and-invert mode.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(4): pointer to the next available location in WORKL
+ that is untouched by the program.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(5): pointer to the NCV by NCV upper Hessenberg
+ matrix H in WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IPNTR(6): pointer to the ritz value array RITZ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(7): pointer to the (projected) ritz vector array Q
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(8): pointer to the error BOUNDS array in WORKL.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(14): pointer to the NP shifts in WORKL. See Remark 5
+ below.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Note: IPNTR(9:13) is only referenced by zneupd. See Remark 2
+ below.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(9): pointer to the NCV RITZ values of the original
+ system.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IPNTR(10): Not Used </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(11): pointer to the NCV corresponding error
+ bounds.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(12): pointer to the NCV by NCV upper triangular
+ Schur matrix for H.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(13): pointer to the NCV by NCV matrix of
+ eigenvectors of the upper Hessenberg matrix H. Only referenced
+ by zneupd if RVEC = 1 See Remark 2 below.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKD</term>
+ <listitem>
+ <para>
+ Complex*16 work array of length 3 * N. (REVERSE COMMUNICATION)
+ </para>
+ <para>
+ Distributed array to be used in the basic Arnoldi iteration
+ for reverse communication.
+ </para>
+ <para>
+ The user should not use WORKD as temporary workspace during
+ the iteration !!!!!!!!!!
+ </para>
+ <para>See Data Distribution Note below.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKL</term>
+ <listitem>
+ <para>
+ Complex*16 work array of length 3 * NCV ** 2 + 5 * NCV. (OUTPUT/WORKSPACE)
+ </para>
+ <para>
+ Private (replicated) array on each PE or array allocated on
+ the front end. See Data Distribution Note below.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>RWORK</term>
+ <listitem>
+ <para>
+ Double precision work array of length NCV (WORKSPACE) Private
+ (replicated) array on each PE or array allocated on the front
+ end.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>INFO</term>
+ <listitem>
+ <para>Integer. (INPUT/OUTPUT) </para>
+ <para>
+ If INFO == 0, a randomly initial residual vector is used.
+ </para>
+ <para>
+ If INFO ~= 0, RESID contains the initial residual vector,
+ possibly from a previous run.
+ </para>
+ <para>Error flag on output.</para>
+ <itemizedlist>
+ <listitem>
+ <para>0: Normal exit.</para>
+ </listitem>
+ <listitem>
+ <para>
+ 1: Maximum number of iterations taken. All possible
+ eigenvalues of OP has been found. IPARAM(5) returns the number
+ of wanted converged Ritz values.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2: No longer an informational error. Deprecated starting
+ with release 2 of ARPACK.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 3: No shifts could be applied during a cycle of the
+ Implicitly restarted Arnoldi iteration. One possibility is to
+ increase the size of NCV relative to NEV. See remark 4
+ below.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-1: N must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-2: NEV must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-3: NCV-NEV &gt;= 1 and less than or equal to N.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -4: The maximum number of Arnoldi update iteration must be
+ greater than zero.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -5: WHICH must be one of 'LM', 'SM', 'LR', 'SR', 'LI',
+ 'SI'.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-6: BMAT must be one of 'I' or 'G'.</para>
+ </listitem>
+ <listitem>
+ <para>-7: Length of private work array is not sufficient.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -8: Error return from LAPACK eigenvalue
+ calculation.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-9: Starting vector is zero.</para>
+ </listitem>
+ <listitem>
+ <para>-10: IPARAM(7) must be 1, 2, 3.</para>
+ </listitem>
+ <listitem>
+ <para>-11: IPARAM(7) = 1 and BMAT = 'G' are incompatible.</para>
+ </listitem>
+ <listitem>
+ <para>-12: IPARAM(1) must be equal to 0 or 1.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -9999: Could not build an Arnoldi factorization. User
+ input error highly likely. Please check actual array dimensions
+ and layout. IPARAM(5) returns the size of the current Arnoldi
+ factorization.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Reverse communication interface for the Implicitly Restarted Arnoldi
+ iteration. This is intended to be used to find a few eigenpairs of a
+ complex linear operator OP with respect to a semi-inner product defined by
+ a hermitian positive semi-definite real matrix B. B may be the identity
+ matrix.
+ </para>
+ <para>
+ NOTE: if both OP and B are real, then dsaupd or dnaupd should be
+ used.
+ </para>
+ <para>
+ The computed approximate eigenvalues are called Ritz values and the
+ corresponding approximate eigenvectors are called Ritz vectors. znaupd is
+ usually called iteratively to solve one of the following problems:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>Mode 1: A * x = lambda * x. </para>
+ <para>===&gt; OP = A and B = I.</para>
+ </listitem>
+ <listitem>
+ <para>Mode 2: A * x = lambda * M * x, M hermitian positive definite </para>
+ <para>===&gt; OP = inv[M] * A and B = M. </para>
+ <para>===&gt; (If M can be factored see remark 3 below) </para>
+ </listitem>
+ <listitem>
+ <para>Mode 3: A * x = lambda * M * x, M hermitian semi-definite </para>
+ <para>===&gt; OP = inv[A - sigma * M] * M and B = M. </para>
+ <para>
+ ===&gt; shift-and-invert mode If OP * x = amu * x, then lambda =
+ sigma + 1/amu.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ NOTE: The action of w &lt;- inv[A - sigma * M] * v or w &lt;- inv[M] * v
+ should be accomplished either by a direct method using a sparse matrix
+ factorization and solving
+ </para>
+ <para>[A - sigma * M] * w = v or M * w = v, </para>
+ <para>
+ or through an iterative method for solving these systems. If an
+ iterative method is used, the convergence test must be more stringent than
+ the accuracy requirements for the eigenvalue approximations.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Remarks</title>
+ <orderedlist>
+ <listitem>
+ <para>
+ The computed Ritz values are approximate eigenvalues of OP. The
+ selection of WHICH should be made with this in mind when using Mode =
+ 3. When operating in Mode = 3 setting WHICH = 'LM' will compute the
+ NEV eigenvalues of the original problem that are closest to the shift
+ SIGMA . After convergence, approximate eigenvalues of the original
+ problem may be obtained with the ARPACK subroutine zneupd.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If a basis for the invariant subspace corresponding to the
+ converged Ritz values is needed, the user must call zneupd immediately
+ following completion of znaupd. This is new starting with release 2 of
+ ARPACK.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If M can be factored into a Cholesky factorization M = LL` then
+ Mode = 2 should not be selected. Instead one should use Mode = 1 with
+ OP = inv(L) * A * inv(L`). Appropriate triangular linear systems should be
+ solved with L and L` rather than computing inverses. After
+ convergence, an approximate eigenvector z of the original problem is
+ recovered by solving L`z = x where x is a Ritz vector of OP.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ At present there is no a-priori analysis to guide the selection
+ of NCV relative to NEV. The only formal requirement is that NCV &gt;
+ NEV + 1. However, it is recommended that NCV .ge. 2 * NEV. If many
+ problems of the same type are to be solved, one should experiment with
+ increasing NCV while keeping NEV fixed for a given test problem. This
+ will usually decrease the required number of OP*x operations but it
+ also increases the work and storage required to maintain the
+ orthogonal basis vectors. The optimal "cross-over" with respect to CPU
+ time is problem dependent and must be determined empirically. See
+ Chapter 8 of Reference 2 for further information.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When IPARAM(1) = 0, and IDO = 3, the user needs to provide the
+ NP = IPARAM(8) complex shifts in locations
+ </para>
+ <para>
+ WORKL(IPNTR(14)), WORKL(IPNTR(14)+1), ... , WORKL(IPNTR(14)+NP).
+ </para>
+ <para>
+ Eigenvalues of the current upper Hessenberg matrix are located
+ in WORKL(IPNTR(6)) through WORKL(IPNTR(6)+NCV-1). They are ordered
+ according to the order defined by WHICH. The associated Ritz estimates
+ are located in
+ </para>
+ <para>
+ WORKL(IPNTR(8)), WORKL(IPNTR(8)+1), ... ,
+ WORKL(IPNTR(8)+NCV-1).
+ </para>
+ </listitem>
+ </orderedlist>
+ </refsection>
+ <refsection>
+ <title>Example</title>
+ <programlisting role="example">
+ <![CDATA[
+// The following sets dimensions for this problem.
+nx = 10;
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+// Local Arrays
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev + 1, 1) + 0 * %i;
+z = zeros(nx, nev) + 0* %i;
+resid = zeros(nx, 1) + 0 * %i;
+v = zeros(nx, ncv) + 0 * %i;
+workd = zeros(3 * nx, 1) + 0 * %i;
+workev = zeros(2 * ncv, 1) + 0 * %i;
+rwork = zeros(ncv, 1);
+workl = zeros(3 * ncv * ncv + 5 *ncv, 1) + 0 * %i;
+// Build the complex test matrix
+A = diag(10 * ones(nx,1) + %i * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx - 1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx - 1,1));
+tol = 0;
+ido = 0;
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+sigma = complex(0);
+info_znaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine ZNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+ [ido, resid, v, iparam, ipntr, workd, workl, rwork, info_znaupd] = znaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, rwork, info_znaupd);
+ if(info_znaupd < 0)
+ printf('\nError with znaupd, info = %d\n', info_znaupd);
+ printf('Check the documentation of znaupd\n\n');
+ end
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+// Post-Process using ZNEUPD.
+rvec = 1;
+howmany = 'A';
+info_zneupd = 0;
+[d, z, resid, iparam, ipntr, workd, workl, rwork, info_zneupd] = zneupd(rvec, howmany, _select, d, z, sigma, workev, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, rwork, info_zneupd);
+if(info_zneupd < 0)
+ printf('\nError with zneupd, info = %d\n', info_zneupd);
+ printf('Check the documentation of zneupd.\n\n');
+end
+// Done with program znsimp.
+printf('\nZNSIMP\n');
+printf('======\n');
+printf('\n');
+printf('Size of the matrix is %d\n', nx);
+printf('The number of Ritz values requested is %d\n', nev);
+printf('The number of Arnoldi vectors generated (NCV) is %d\n', ncv);
+printf('What portion of the spectrum: %s\n', which);
+printf('The number of Implicit Arnoldi update iterations taken is %d\n', iparam(3));
+printf('The number of OP*x is %d\n', iparam(9));
+printf('The convergence criterion is %d\n', tol);
+]]>
+ </programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="dnaupd">dnaupd</link>
+ </member>
+ <member>
+ <link linkend="dnaupd">dneupd</link>
+ </member>
+ <member>
+ <link linkend="dnaupd">zneupd</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Bibliography</title>
+ <para>
+ 1. D.C. Sorensen, "Implicit Application of Polynomial Filters in a
+ k-Step Arnoldi Method", SIAM J. Matr. Anal. Apps., 13 (1992), pp
+ 357-385.
+ </para>
+ <para>
+ 2. R.B. Lehoucq, "Analysis and Implementation of an Implicitly
+ Restarted Arnoldi Iteration", Rice University Technical Report TR95-13,
+ Department of Computational and Applied Mathematics.
+ </para>
+ <para>
+ 3. B.N. Parlett and Y. Saad, "Complex Shift and Invert Strategies
+ for Real Matrices", Linear Algebra and its Applications, vol 88/89, pp
+ 575-595, (1987).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>Based on ARPACK routine znaupd</para>
+ </refsection>
+ <refsection>
+ <title>履歴</title>
+ <revhistory>
+ <revision>
+ <revnumber>5.4.0</revnumber>
+ <revremark>
+ 関数は廃止され,<link linkend="eigs">eigs</link>に代替されました.
+ </revremark>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
diff --git a/modules/arnoldi/help/ja_JP/zneupd.xml b/modules/arnoldi/help/ja_JP/zneupd.xml
new file mode 100755
index 000000000..6b2522440
--- /dev/null
+++ b/modules/arnoldi/help/ja_JP/zneupd.xml
@@ -0,0 +1,506 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="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="zneupd" xml:lang="ja">
+ <refnamediv>
+ <refname>zneupd</refname>
+ <refpurpose>
+ 暗黙のうちに再開されるArnoldi反復へのインターフェイスで,
+ A * z = lambda * B * z の固有値を収束的近似により計算します.
+ <emphasis role="bold">
+ この関数は廃止されました. <link linkend="eigs">eigs</link>を使用してください
+ </emphasis>
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Calling Sequence</title>
+ <synopsis>
+ [D, Z, RESID, IPARAM, IPNTR, WORKD, WORKL, RWORK, INFO] = zneupd(RVEC, HOWMANY, SELECT, D, Z, SIGMA, WORKev,
+ BMAT, N, WHICH, NEV, TOL, RESID, NCV, V, IPARAM, IPNTR, WORKD, WORKL, RWORK, INFO)
+ </synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>RVEC</term>
+ <listitem>
+ <para>Integer. (INPUT) </para>
+ <para>
+ Specifies whether a basis for the invariant subspace
+ corresponding to the converged Ritz value approximations for the
+ eigenproblem A * z = lambda * B * z is computed.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>RVEC = 0 Compute Ritz values only.</para>
+ </listitem>
+ <listitem>
+ <para>
+ RVEC = 1 Compute Ritz vectors or Schur vectors. See
+ Remarks below.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>HOWMANY</term>
+ <listitem>
+ <para>Character. (INPUT) </para>
+ <para>
+ Specifies the form of the basis for the invariant subspace
+ corresponding to the converged Ritz values that is to be computed.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>'A': Compute NEV Ritz vectors;</para>
+ </listitem>
+ <listitem>
+ <para>'P': Compute NEV Schur vectors;</para>
+ </listitem>
+ <listitem>
+ <para>
+ 'S': compute some of the Ritz vectors, specified by the
+ integer array SELECT.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SELECT</term>
+ <listitem>
+ <para>Integer array of dimension NCV. (INPUT) </para>
+ <para>
+ If HOWMANY = 'S', SELECT specifies the Ritz vectors to be
+ computed. To select the Ritz vector corresponding to a Ritz value
+ D(j), SELECT(j) must be set to 1.
+ </para>
+ <para>
+ If HOWMANY = 'A' or 'P', SELECT need not be initialized but it
+ is used as internal workspace.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>D</term>
+ <listitem>
+ <para>Complex*16 array of dimension NEV + 1. (OUTPUT) </para>
+ <para>
+ On exit, D contains the Ritz approximations to the eigenvalues
+ lambda for A * z = lambda * B * z.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Z</term>
+ <listitem>
+ <para>Complex*16 N by NEV array. (OUTPUT) </para>
+ <para>On exit, </para>
+ <para>
+ If RVEC = 1 and HOWMANY = 'A', then the columns of Z
+ represents approximate eigenvectors (Ritz vectors) corresponding to
+ the NCONV = IPARAM(5) Ritz values for eigensystem A * z = lambda * B * z.
+ </para>
+ <para>
+ If RVEC = 0 or HOWMANY = 'P', then Z is NOT REFERENCED.
+ </para>
+ <para>
+ NOTE: If if RVEC = 1 and a Schur basis is not required, the
+ array Z may be set equal to first NEV+1 columns of the Arnoldi basis
+ array V computed by ZNAUPD. In this case the Arnoldi basis will be
+ destroyed and overwritten with the eigenvector basis.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SIGMA</term>
+ <listitem>
+ <para>Complex*16. (INPUT) </para>
+ <para>If IPARAM(7) = 3 then SIGMA represents the shift. </para>
+ <para>Not referenced if IPARAM(7) = 1 or 2.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKev</term>
+ <listitem>
+ <para>Complex*16 work array of dimension 2 * NCV. (WORKSPACE)</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>
+ NOTE: The remaining arguments BMAT, N, WHICH, NEV, TOL, RESID, NCV,
+ V, IPARAM, IPNTR, WORKD, WORKL, LWORKL, RWORK, INFO must be passed
+ directly to ZNEUPD following the last call to ZNAUPD.
+ </para>
+ <para>
+ These arguments MUST NOT BE MODIFIED between the last call to
+ ZNAUPD and the call to ZNEUPD.
+ </para>
+ <para>
+ Three of these parameters (V, WORKL and INFO) are also output
+ parameters.
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>V</term>
+ <listitem>
+ <para>Complex*16 N by NCV array. (INPUT/OUTPUT) </para>
+ <para>
+ Upon INPUT: the NCV columns of V contain the Arnoldi basis
+ vectors for OP as constructed by ZNAUPD.
+ </para>
+ <para>
+ Upon OUTPUT: If RVEC = 1 the first NCONV = IPARAM(5) columns
+ contain approximate Schur vectors that span the desired invariant
+ subspace.
+ </para>
+ <para>
+ NOTE: If the array Z has been set equal to first NEV+1 columns
+ of the array V and RVEC = 1 and HOWMANY = 'A', then the Arnoldi basis
+ held by V has been overwritten by the desired Ritz vectors. If a
+ separate array Z has been passed then the first NCONV=IPARAM(5)
+ columns of V will contain approximate Schur vectors that span the
+ desired invariant subspace.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>WORKL</term>
+ <listitem>
+ <para>
+ Double precision work array of length LWORKL.
+ (OUTPUT/WORKSPACE)
+ </para>
+ <para>
+ WORKL(1:ncv * ncv + 2 * ncv) contains information obtained in
+ znaupd. They are not changed by zneupd.
+ </para>
+ <para>
+ WORKL(ncv * ncv + 2 * ncv + 1:3 * ncv * ncv + 4 * ncv) holds the untransformed
+ Ritz values, the untransformed error estimates of the Ritz values,
+ the upper triangular matrix for H, and the associated matrix
+ representation of the invariant subspace for H.
+ </para>
+ <para>
+ Note: IPNTR(9:13) contains the pointer into WORKL for
+ addresses of the above information computed by zneupd.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ IPNTR(9): pointer to the NCV RITZ values of the original
+ system.
+ </para>
+ </listitem>
+ <listitem>
+ <para>IPNTR(10): Not used </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(11): pointer to the NCV corresponding error
+ estimates.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(12): pointer to the NCV by NCV upper triangular
+ Schur matrix for H.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ IPNTR(13): pointer to the NCV by NCV matrix of
+ eigenvectors of the upper Hessenberg matrix H. Only referenced
+ by zneupd if RVEC = 1 See Remark 2 below.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>INFO</term>
+ <listitem>
+ <para>Integer. (OUTPUT) </para>
+ <para>Error flag on output.</para>
+ <itemizedlist>
+ <listitem>
+ <para>0: Normal exit.</para>
+ </listitem>
+ <listitem>
+ <para>
+ 1: The Schur form computed by LAPACK routine csheqr could
+ not be reordered by LAPACK routine ztrsen. Re-enter subroutine
+ zneupd with IPARAM(5) = NCV and increase the size of the array D
+ to have dimension at least dimension NCV and allocate at least
+ NCV columns for Z.
+ </para>
+ <para>
+ NOTE: Not necessary if Z and V share the same space.
+ Please notify the authors if this error occurs.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-1: N must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-2: NEV must be positive.</para>
+ </listitem>
+ <listitem>
+ <para>-3: NCV-NEV &gt;= 1 and less than or equal to N.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -5: WHICH must be one of 'LM', 'SM', 'LR', 'SR', 'LI',
+ 'SI'.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-6: BMAT must be one of 'I' or 'G'.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -7: Length of private work WORKL array is not
+ sufficient.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -8: Error return from LAPACK eigenvalue calculation. This
+ should never happened.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -9: Error return from calculation of eigenvectors.
+ Informational error from LAPACK routine ztrevc.
+ </para>
+ </listitem>
+ <listitem>
+ <para>-10: IPARAM(7) must be 1, 2, 3.</para>
+ </listitem>
+ <listitem>
+ <para>-11: IPARAM(7) = 1 and BMAT = 'G' are incompatible.</para>
+ </listitem>
+ <listitem>
+ <para>-12: HOWMANY = 'S' not yet implemented.</para>
+ </listitem>
+ <listitem>
+ <para>
+ -13: HOWMANY must be one of 'A' or 'P' if RVEC = .true.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -14: ZNAUPD did not find any eigenvalues to sufficient
+ accuracy.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ -15: ZNEUPD got a different count of the number of
+ converged Ritz values than ZNAUPD got. This indicates the user
+ probably made an error in passing data from ZNAUPD to ZNEUPD or
+ that the data was modified before entering ZNEUPD.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ This subroutine returns the converged approximations to eigenvalues
+ of A * z = lambda * B * z and (optionally):
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>The corresponding approximate eigenvectors; </para>
+ </listitem>
+ <listitem>
+ <para>
+ An orthonormal basis for the associated approximate invariant
+ subspace;
+ </para>
+ </listitem>
+ <listitem>
+ <para>Both.</para>
+ </listitem>
+ </orderedlist>
+ <para>
+ There is negligible additional cost to obtain eigenvectors. An
+ orthonormal basis is always computed.
+ </para>
+ <para>
+ There is an additional storage cost of n*nev if both are requested
+ (in this case a separate array Z must be supplied).
+ </para>
+ <para>
+ The approximate eigenvalues and eigenvectors of A * z = lambda * B * z are
+ derived from approximate eigenvalues and eigenvectors of of the linear
+ operator OP prescribed by the MODE selection in the call to ZNAUPD.
+ </para>
+ <para>ZNAUPD must be called before this routine is called. </para>
+ <para>
+ These approximate eigenvalues and vectors are commonly called Ritz
+ values and Ritz vectors respectively. They are referred to as such in the
+ comments that follow.
+ </para>
+ <para>
+ The computed orthonormal basis for the invariant subspace
+ corresponding to these Ritz values is referred to as a Schur basis.
+ </para>
+ <para>
+ The definition of OP as well as other terms and the relation of
+ computed Ritz values and vectors of OP with respect to the given problem
+ A*z = lambda*B*z may be found in the header of ZNAUPD. For a brief
+ description, see definitions of IPARAM(7), MODE and WHICH in the
+ documentation of ZNAUPD.
+ </para>
+ </refsection>
+ <refsection>
+ <title>Remarks</title>
+ <orderedlist>
+ <listitem>
+ <para>Currently only HOWMNY = 'A' and 'P' are implemented. </para>
+ </listitem>
+ <listitem>
+ <para>
+ Schur vectors are an orthogonal representation for the basis of
+ Ritz vectors. Thus, their numerical properties are often superior.
+ </para>
+ <para>If RVEC = 1 then the relationship </para>
+ <para>A * V(:,1:IPARAM(5)) = V(:,1:IPARAM(5)) * T, </para>
+ <para>and </para>
+ <para>transpose( V(:,1:IPARAM(5)) ) * V(:,1:IPARAM(5)) = I </para>
+ <para>
+ are approximately satisfied. Here T is the leading submatrix of
+ order IPARAM(5) of the upper triangular matrix stored
+ workl(ipntr(12)).
+ </para>
+ </listitem>
+ </orderedlist>
+ </refsection>
+ <refsection>
+ <title>Example</title>
+ <programlisting role="example">
+ <![CDATA[
+// The following sets dimensions for this problem.
+nx = 10;
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+// Local Arrays
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev + 1, 1) + 0 * %i;
+z = zeros(nx, nev) + 0* %i;
+resid = zeros(nx, 1) + 0 * %i;
+v = zeros(nx, ncv) + 0 * %i;
+workd = zeros(3 * nx, 1) + 0 * %i;
+workev = zeros(2 * ncv, 1) + 0 * %i;
+rwork = zeros(ncv, 1);
+workl = zeros(3 * ncv * ncv + 5 *ncv, 1) + 0 * %i;
+// Build the complex test matrix
+A = diag(10 * ones(nx,1) + %i * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx - 1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx - 1,1));
+tol = 0;
+ido = 0;
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+sigma = complex(0);
+info_znaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine ZNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+ [ido, resid, v, iparam, ipntr, workd, workl, rwork, info_znaupd] = znaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, rwork, info_znaupd);
+ if(info_znaupd < 0)
+ printf('\nError with znaupd, info = %d\n', info_znaupd);
+ printf('Check the documentation of znaupd\n\n');
+ end
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+// Post-Process using ZNEUPD.
+rvec = 1;
+howmany = 'A';
+info_zneupd = 0;
+[d, z, resid, iparam, ipntr, workd, workl, rwork, info_zneupd] = zneupd(rvec, howmany, _select, d, z, sigma, workev, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, rwork, info_zneupd);
+if(info_zneupd < 0)
+ printf('\nError with zneupd, info = %d\n', info_zneupd);
+ printf('Check the documentation of zneupd.\n\n');
+end
+// Done with program znsimp.
+printf('\nZNSIMP\n');
+printf('======\n');
+printf('\n');
+printf('Size of the matrix is %d\n', nx);
+printf('The number of Ritz values requested is %d\n', nev);
+printf('The number of Arnoldi vectors generated (NCV) is %d\n', ncv);
+printf('What portion of the spectrum: %s\n', which);
+printf('The number of Implicit Arnoldi update iterations taken is %d\n', iparam(3));
+printf('The number of OP*x is %d\n', iparam(9));
+printf('The convergence criterion is %d\n', tol);
+]]>
+ </programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See Also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="dnaupd">znaupd</link>
+ </member>
+ <member>
+ <link linkend="dnaupd">dnaupd</link>
+ </member>
+ <member>
+ <link linkend="dnaupd">dneupd</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection>
+ <title>Bibliography</title>
+ <para>
+ 1. D.C. Sorensen, "Implicit Application of Polynomial Filters in a
+ k-Step Arnoldi Method", SIAM J. Matr. Anal. Apps., 13 (1992), pp
+ 357-385.
+ </para>
+ <para>
+ 2. R.B. Lehoucq, "Analysis and Implementation of an Implicitly
+ Restarted Arnoldi Iteration", Rice University Technical Report TR95-13,
+ Department of Computational and Applied Mathematics.
+ </para>
+ <para>
+ 3. B.N. Parlett and Y. Saad, "Complex Shift and Invert Strategies
+ for Real Matrices", Linear Algebra and its Applications, vol 88/89, pp
+ 575-595, (1987).
+ </para>
+ </refsection>
+ <refsection>
+ <title>Used Functions</title>
+ <para>Based on ARPACK routine zneupd</para>
+ </refsection>
+ <refsection>
+ <title>履歴</title>
+ <revhistory>
+ <revision>
+ <revnumber>5.4.0</revnumber>
+ <revremark>
+ 関数は廃止され,<link linkend="eigs">eigs</link>に代替されました.
+ </revremark>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
diff --git a/modules/arnoldi/help/pt_BR/addchapter.sce b/modules/arnoldi/help/pt_BR/addchapter.sce
new file mode 100755
index 000000000..d3565543c
--- /dev/null
+++ b/modules/arnoldi/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("ARnoldi PACKage",SCI+"/modules/arnoldi/help/pt_BR",%T);
+
diff --git a/modules/arnoldi/help/ru_RU/addchapter.sce b/modules/arnoldi/help/ru_RU/addchapter.sce
new file mode 100755
index 000000000..10bc12342
--- /dev/null
+++ b/modules/arnoldi/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("ARnoldi PACKage",SCI+"/modules/arnoldi/help/ru_RU",%T);
+
diff --git a/modules/arnoldi/includes/dynlib_arnoldi.h b/modules/arnoldi/includes/dynlib_arnoldi.h
new file mode 100755
index 000000000..db05c3d08
--- /dev/null
+++ b/modules/arnoldi/includes/dynlib_arnoldi.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_ARNOLDI_H__
+#define __DYNLIB_ARNOLDI_H__
+
+#ifdef _MSC_VER
+#ifdef ARNOLDI_EXPORTS
+#define ARNOLDI_IMPEXP __declspec(dllexport)
+#else
+#define ARNOLDI_IMPEXP __declspec(dllimport)
+#endif
+#else
+#define ARNOLDI_IMPEXP
+#endif
+
+#endif /* __DYNLIB_ARNOLDI_H__ */
+/*--------------------------------------------------------------------------*/
diff --git a/modules/arnoldi/includes/eigs.h b/modules/arnoldi/includes/eigs.h
new file mode 100755
index 000000000..865e6bcb2
--- /dev/null
+++ b/modules/arnoldi/includes/eigs.h
@@ -0,0 +1,56 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - Scilab Enterprises - Adeline CARNIS
+ *
+ * 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 __EIGS_H__
+#define __EIGS_H__
+#include "doublecomplex.h"
+
+
+/**
+ * @TODO add comment
+ *
+ * @param AR
+ * @param AC
+ * @param N
+ * @param Acomplex
+ * @param Asym
+ * @param B
+ * @param BC
+ * @param Bcomplex
+ * @param matB
+ * @param nev
+ * @param SIGMA
+ * @param which
+ * @param maxiter
+ * @param tol
+ * @param NCV
+ * @param RESID
+ * @param RESIDC
+ * @param INFO
+ * @param cholB
+ * @param INFO_EUPD
+ * @param eigenvalue
+ * @param eigenvector
+ * @param eigenvalueC
+ * @param eigenvectorC
+ * @param RVEC
+ * @return <ReturnValue>
+ */
+int eigs(double *AR, doublecomplex *AC, int N, int Acomplex, int Asym,
+ double* B, doublecomplex* BC, int Bcomplex, int matB, int nev,
+ doublecomplex SIGMA, char* which, double* maxiter, double* tol,
+ double* NCV, double* RESID, doublecomplex* RESIDC, int* INFO,
+ double* cholB, int INFO_EUPD, double* eigenvalue, double* eigenvector,
+ doublecomplex* eigenvalueC, doublecomplex* eigenvectorC, int RVEC);
+
+#endif /* __EIGS_H__ */
+/*--------------------------------------------------------------------------*/
diff --git a/modules/arnoldi/includes/eigs_dependencies.h b/modules/arnoldi/includes/eigs_dependencies.h
new file mode 100755
index 000000000..396b9386c
--- /dev/null
+++ b/modules/arnoldi/includes/eigs_dependencies.h
@@ -0,0 +1,44 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - Scilab Enterprises - Adeline CARNIS
+ *
+ * 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 __PROCESS_DNEUPD_H__
+#define __PROCESS_DNEUPD_H__
+#include "doublecomplex.h"
+#include <string.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "stack-c.h"
+#include "MALLOC.h"
+#include "sciprint.h"
+
+/**
+ * @TODO add comment
+ *
+ * @param DR
+ * @param DI
+ * @param Z
+ * @param N
+ * @param nev
+ * @param AR
+ * @param eigenvalue
+ * @param eigenvector
+ * @param sigma_imaginary
+ * @param RVEC
+ */
+
+void process_dneupd_data(double* DR, double* DI, double* Z, int N, int nev, double* AR,
+ doublecomplex* eigenvalue, doublecomplex* eigenvector,
+ int sigma_imaginary);
+
+#endif /* __PROCESS_DNEUPD_H__ */
+/*--------------------------------------------------------------------------*/
diff --git a/modules/arnoldi/includes/gw_arnoldi.h b/modules/arnoldi/includes/gw_arnoldi.h
new file mode 100755
index 000000000..cd3eec15b
--- /dev/null
+++ b/modules/arnoldi/includes/gw_arnoldi.h
@@ -0,0 +1,31 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - 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_ARNOLDI_H__
+#define __GW_ARNOLDI_H__
+/*--------------------------------------------------------------------------*/
+#include "dynlib_arnoldi.h"
+/*--------------------------------------------------------------------------*/
+ARNOLDI_IMPEXP int gw_arnoldi(void);
+/*--------------------------------------------------------------------------*/
+ARNOLDI_IMPEXP int sci_dsaupd(char *fname, unsigned long fname_len);
+ARNOLDI_IMPEXP int sci_dnaupd(char *fname, unsigned long fname_len);
+ARNOLDI_IMPEXP int sci_znaupd(char *fname, unsigned long fname_len);
+ARNOLDI_IMPEXP int sci_dseupd(char *fname, unsigned long fname_len);
+ARNOLDI_IMPEXP int sci_dneupd(char *fname, unsigned long fname_len);
+ARNOLDI_IMPEXP int sci_zneupd(char *fname, unsigned long fname_len);
+ARNOLDI_IMPEXP int sci_eigs(char *fname, unsigned long fname_len);
+/*--------------------------------------------------------------------------*/
+#endif /* __GW_ARNOLDI_H__ */
+/*--------------------------------------------------------------------------*/
+
diff --git a/modules/arnoldi/libsciarnoldi.la b/modules/arnoldi/libsciarnoldi.la
new file mode 100755
index 000000000..522e905ef
--- /dev/null
+++ b/modules/arnoldi/libsciarnoldi.la
@@ -0,0 +1,41 @@
+# libsciarnoldi.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='libsciarnoldi.so.5'
+
+# Names of this library.
+library_names='libsciarnoldi.so.5.5.2 libsciarnoldi.so.5 libsciarnoldi.so'
+
+# The name of the static archive.
+old_library=''
+
+# 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 -lblas -llapack -larpack -lpthread -ldl -lcurses -lm'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libsciarnoldi.
+current=10
+age=5
+revision=2
+
+# 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='/usr/local/lib/scilab'
diff --git a/modules/arnoldi/license.txt b/modules/arnoldi/license.txt
new file mode 100755
index 000000000..db1d06612
--- /dev/null
+++ b/modules/arnoldi/license.txt
@@ -0,0 +1,11 @@
+Copyright:
+Copyright (c) 2008 - DIGITEO
+Copyright (c) 1989-2008 - INRIA
+Copyright (c) 1989-2007 - ENPC
+
+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
diff --git a/modules/arnoldi/locales/arnoldi.pot b/modules/arnoldi/locales/arnoldi.pot
new file mode 100755
index 000000000..9e4eaccaa
--- /dev/null
+++ b/modules/arnoldi/locales/arnoldi.pot
@@ -0,0 +1,674 @@
+# Localization of the module arnoldi
+# 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/sci_dnaupd.c, line: 98
+# File: sci_gateway/c/sci_dnaupd.c, line: 116
+# File: sci_gateway/c/sci_dnaupd.c, line: 132
+# File: sci_gateway/c/sci_dnaupd.c, line: 148
+# File: sci_gateway/c/sci_dnaupd.c, line: 164
+# File: sci_gateway/c/sci_dnaupd.c, line: 181
+# File: sci_gateway/c/sci_dnaupd.c, line: 197
+# File: sci_gateway/c/sci_dnaupd.c, line: 214
+# File: sci_gateway/c/sci_dnaupd.c, line: 231
+# File: sci_gateway/c/sci_dnaupd.c, line: 248
+# File: sci_gateway/c/sci_dnaupd.c, line: 265
+# File: sci_gateway/c/sci_dnaupd.c, line: 282
+# File: sci_gateway/c/sci_dneupd.c, line: 120
+# File: sci_gateway/c/sci_dneupd.c, line: 136
+# File: sci_gateway/c/sci_dneupd.c, line: 152
+# File: sci_gateway/c/sci_dneupd.c, line: 169
+# File: sci_gateway/c/sci_dneupd.c, line: 186
+# File: sci_gateway/c/sci_dneupd.c, line: 203
+# File: sci_gateway/c/sci_dneupd.c, line: 219
+# File: sci_gateway/c/sci_dneupd.c, line: 235
+# File: sci_gateway/c/sci_dneupd.c, line: 251
+# File: sci_gateway/c/sci_dneupd.c, line: 267
+# File: sci_gateway/c/sci_dneupd.c, line: 283
+# File: sci_gateway/c/sci_dneupd.c, line: 299
+# File: sci_gateway/c/sci_dneupd.c, line: 316
+# File: sci_gateway/c/sci_dneupd.c, line: 332
+# File: sci_gateway/c/sci_dneupd.c, line: 349
+# File: sci_gateway/c/sci_dneupd.c, line: 366
+# File: sci_gateway/c/sci_dneupd.c, line: 383
+# File: sci_gateway/c/sci_dneupd.c, line: 400
+# File: sci_gateway/c/sci_dneupd.c, line: 417
+# File: sci_gateway/c/sci_dsaupd.c, line: 97
+# File: sci_gateway/c/sci_dsaupd.c, line: 115
+# File: sci_gateway/c/sci_dsaupd.c, line: 131
+# File: sci_gateway/c/sci_dsaupd.c, line: 147
+# File: sci_gateway/c/sci_dsaupd.c, line: 163
+# File: sci_gateway/c/sci_dsaupd.c, line: 180
+# File: sci_gateway/c/sci_dsaupd.c, line: 196
+# File: sci_gateway/c/sci_dsaupd.c, line: 213
+# File: sci_gateway/c/sci_dsaupd.c, line: 230
+# File: sci_gateway/c/sci_dsaupd.c, line: 247
+# File: sci_gateway/c/sci_dsaupd.c, line: 264
+# File: sci_gateway/c/sci_dsaupd.c, line: 281
+# File: sci_gateway/c/sci_dseupd.c, line: 116
+# File: sci_gateway/c/sci_dseupd.c, line: 132
+# File: sci_gateway/c/sci_dseupd.c, line: 148
+# File: sci_gateway/c/sci_dseupd.c, line: 165
+# File: sci_gateway/c/sci_dseupd.c, line: 182
+# File: sci_gateway/c/sci_dseupd.c, line: 198
+# File: sci_gateway/c/sci_dseupd.c, line: 214
+# File: sci_gateway/c/sci_dseupd.c, line: 230
+# File: sci_gateway/c/sci_dseupd.c, line: 246
+# File: sci_gateway/c/sci_dseupd.c, line: 263
+# File: sci_gateway/c/sci_dseupd.c, line: 279
+# File: sci_gateway/c/sci_dseupd.c, line: 296
+# File: sci_gateway/c/sci_dseupd.c, line: 313
+# File: sci_gateway/c/sci_dseupd.c, line: 330
+# File: sci_gateway/c/sci_dseupd.c, line: 347
+# File: sci_gateway/c/sci_dseupd.c, line: 364
+# File: sci_gateway/c/sci_znaupd.c, line: 100
+# File: sci_gateway/c/sci_znaupd.c, line: 118
+# File: sci_gateway/c/sci_znaupd.c, line: 134
+# File: sci_gateway/c/sci_znaupd.c, line: 150
+# File: sci_gateway/c/sci_znaupd.c, line: 166
+# File: sci_gateway/c/sci_znaupd.c, line: 183
+# File: sci_gateway/c/sci_znaupd.c, line: 199
+# File: sci_gateway/c/sci_znaupd.c, line: 216
+# File: sci_gateway/c/sci_znaupd.c, line: 233
+# File: sci_gateway/c/sci_znaupd.c, line: 251
+# File: sci_gateway/c/sci_znaupd.c, line: 269
+# File: sci_gateway/c/sci_znaupd.c, line: 286
+# File: sci_gateway/c/sci_znaupd.c, line: 303
+# File: sci_gateway/c/sci_zneupd.c, line: 120
+# File: sci_gateway/c/sci_zneupd.c, line: 136
+# File: sci_gateway/c/sci_zneupd.c, line: 152
+# File: sci_gateway/c/sci_zneupd.c, line: 169
+# File: sci_gateway/c/sci_zneupd.c, line: 186
+# File: sci_gateway/c/sci_zneupd.c, line: 202
+# File: sci_gateway/c/sci_zneupd.c, line: 218
+# File: sci_gateway/c/sci_zneupd.c, line: 234
+# File: sci_gateway/c/sci_zneupd.c, line: 250
+# File: sci_gateway/c/sci_zneupd.c, line: 266
+# File: sci_gateway/c/sci_zneupd.c, line: 283
+# File: sci_gateway/c/sci_zneupd.c, line: 299
+# File: sci_gateway/c/sci_zneupd.c, line: 315
+# File: sci_gateway/c/sci_zneupd.c, line: 332
+# File: sci_gateway/c/sci_zneupd.c, line: 350
+# File: sci_gateway/c/sci_zneupd.c, line: 367
+# File: sci_gateway/c/sci_zneupd.c, line: 384
+# File: sci_gateway/c/sci_zneupd.c, line: 401
+#, c-format
+msgid "%s: Wrong type for argument #%d: A real expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dnaupd.c, line: 294
+# File: sci_gateway/c/sci_znaupd.c, line: 315
+#, c-format
+msgid "%s: the computation is already terminated\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dnaupd.c, line: 301
+# File: sci_gateway/c/sci_dnaupd.c, line: 307
+# File: sci_gateway/c/sci_dnaupd.c, line: 313
+# File: sci_gateway/c/sci_dnaupd.c, line: 325
+# File: sci_gateway/c/sci_dnaupd.c, line: 333
+# File: sci_gateway/c/sci_dneupd.c, line: 430
+# File: sci_gateway/c/sci_dneupd.c, line: 436
+# File: sci_gateway/c/sci_dneupd.c, line: 442
+# File: sci_gateway/c/sci_dneupd.c, line: 448
+# File: sci_gateway/c/sci_dneupd.c, line: 454
+# File: sci_gateway/c/sci_dneupd.c, line: 460
+# File: sci_gateway/c/sci_dneupd.c, line: 466
+# File: sci_gateway/c/sci_dneupd.c, line: 478
+# File: sci_gateway/c/sci_dneupd.c, line: 492
+# File: sci_gateway/c/sci_dsaupd.c, line: 293
+# File: sci_gateway/c/sci_dsaupd.c, line: 300
+# File: sci_gateway/c/sci_dsaupd.c, line: 306
+# File: sci_gateway/c/sci_dsaupd.c, line: 312
+# File: sci_gateway/c/sci_dsaupd.c, line: 324
+# File: sci_gateway/c/sci_dsaupd.c, line: 332
+# File: sci_gateway/c/sci_dseupd.c, line: 377
+# File: sci_gateway/c/sci_dseupd.c, line: 383
+# File: sci_gateway/c/sci_dseupd.c, line: 389
+# File: sci_gateway/c/sci_dseupd.c, line: 395
+# File: sci_gateway/c/sci_dseupd.c, line: 401
+# File: sci_gateway/c/sci_dseupd.c, line: 407
+# File: sci_gateway/c/sci_dseupd.c, line: 427
+# File: sci_gateway/c/sci_znaupd.c, line: 322
+# File: sci_gateway/c/sci_znaupd.c, line: 328
+# File: sci_gateway/c/sci_znaupd.c, line: 334
+# File: sci_gateway/c/sci_znaupd.c, line: 346
+# File: sci_gateway/c/sci_znaupd.c, line: 354
+# File: sci_gateway/c/sci_zneupd.c, line: 414
+# File: sci_gateway/c/sci_zneupd.c, line: 420
+# File: sci_gateway/c/sci_zneupd.c, line: 426
+# File: sci_gateway/c/sci_zneupd.c, line: 432
+# File: sci_gateway/c/sci_zneupd.c, line: 438
+# File: sci_gateway/c/sci_zneupd.c, line: 444
+# File: sci_gateway/c/sci_zneupd.c, line: 456
+# File: sci_gateway/c/sci_zneupd.c, line: 470
+#, c-format
+msgid "%s: Wrong size for input argument %s: An array of size %d expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dnaupd.c, line: 319
+# File: sci_gateway/c/sci_dneupd.c, line: 472
+# File: sci_gateway/c/sci_dneupd.c, line: 484
+# File: sci_gateway/c/sci_dsaupd.c, line: 318
+# File: sci_gateway/c/sci_dseupd.c, line: 413
+# File: sci_gateway/c/sci_dseupd.c, line: 419
+# File: sci_gateway/c/sci_znaupd.c, line: 340
+# File: sci_gateway/c/sci_zneupd.c, line: 450
+# File: sci_gateway/c/sci_zneupd.c, line: 462
+#, c-format
+msgid ""
+"%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_dnaupd.c, line: 347
+# File: sci_gateway/c/sci_dnaupd.c, line: 363
+# File: sci_gateway/c/sci_dneupd.c, line: 506
+# File: sci_gateway/c/sci_dneupd.c, line: 522
+# File: sci_gateway/c/sci_dneupd.c, line: 540
+# File: sci_gateway/c/sci_dsaupd.c, line: 346
+# File: sci_gateway/c/sci_dsaupd.c, line: 362
+# File: sci_gateway/c/sci_dseupd.c, line: 442
+# File: sci_gateway/c/sci_dseupd.c, line: 458
+# File: sci_gateway/c/sci_dseupd.c, line: 477
+# File: sci_gateway/c/sci_znaupd.c, line: 369
+# File: sci_gateway/c/sci_znaupd.c, line: 385
+# File: sci_gateway/c/sci_zneupd.c, line: 484
+# File: sci_gateway/c/sci_zneupd.c, line: 500
+# File: sci_gateway/c/sci_zneupd.c, line: 518
+#, c-format
+msgid "%s: Wrong type for argument #%d: A string expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 118
+# File: sci_gateway/c/sci_eigs.c, line: 168
+# File: sci_gateway/c/sci_eigs.c, line: 230
+# File: sci_gateway/c/sci_eigs.c, line: 270
+# File: sci_gateway/c/sci_eigs.c, line: 334
+# File: sci_gateway/c/sci_eigs.c, line: 354
+# File: sci_gateway/c/sci_eigs.c, line: 378
+# File: sci_gateway/c/sci_eigs.c, line: 402
+# File: sci_gateway/c/sci_eigs.c, line: 435
+# File: sci_gateway/c/sci_eigs.c, line: 455
+# File: sci_gateway/c/sci_eigs.c, line: 554
+# File: sci_gateway/c/sci_eigs.c, line: 588
+# File: sci_gateway/c/sci_eigs.c, line: 599
+# File: sci_gateway/c/sci_eigs.c, line: 611
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 126
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 176
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: An empty matrix or full or sparse "
+"square matrix expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 184
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 238
+# File: sci_gateway/c/sci_eigs.c, line: 244
+# File: sci_gateway/c/sci_eigs.c, line: 277
+# File: sci_gateway/c/sci_eigs.c, line: 327
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A scalar expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 250
+#, c-format
+msgid "%s: Wrong type for input argument #%d: k must be a positive integer.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 256
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: k must be in the range 1 to N.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 294
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 300
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+" "
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 308
+#, c-format
+msgid "%s: Invalid sigma value for complex or non symmetric problem.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 314
+#, c-format
+msgid "%s: Invalid sigma value for real symmetric problem.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 340
+#, c-format
+msgid "%s: Wrong type for input argument #%d: sigma must be a real.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 361
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a scalar.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 367
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer positive "
+"value.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 385
+# File: sci_gateway/c/sci_eigs.c, line: 391
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a real scalar.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 410
+# File: sci_gateway/c/sci_eigs.c, line: 417
+# File: sci_gateway/c/sci_eigs.c, line: 425
+# File: sci_gateway/c/sci_eigs.c, line: 441
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 462
+# File: sci_gateway/c/sci_eigs.c, line: 471
+# File: sci_gateway/c/sci_eigs.c, line: 488
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar or a "
+"boolean.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 477
+# File: sci_gateway/c/sci_eigs.c, line: 494
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s must be %s or %s.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 509
+# File: sci_gateway/c/sci_eigs.c, line: 531
+#, c-format
+msgid "%s: B is not positive definite. Try with sigma='SM' or sigma=scalar.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 516
+# File: sci_gateway/c/sci_eigs.c, line: 538
+#, c-format
+msgid "%s: If opts.cholB is true, B should be upper triangular.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 562
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 570
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 579
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be real for real "
+"problems.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 618
+#, c-format
+msgid "%s: Wrong type for input argument #%d: An integer expected.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 652
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, NCV "
+"must be k < NCV <= N.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 658
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV <= N.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 662
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For complex problems, NCV must be k "
+"+ 1 < NCV <= N.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 671
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be an integer in the range 1 to N - 1.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 675
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be an integer in the range 1 to N - 2.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 681
+#, c-format
+msgid ""
+"%s: Error with input argument #%d: B is not positive definite. Try with "
+"sigma='SM' or sigma=scalar.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 690
+# File: sci_gateway/c/sci_eigs.c, line: 694
+# File: sci_gateway/c/sci_eigs.c, line: 699
+# File: sci_gateway/c/sci_eigs.c, line: 728
+# File: sci_gateway/c/sci_eigs.c, line: 732
+# File: sci_gateway/c/sci_eigs.c, line: 737
+#, c-format
+msgid "%s: Error with %s: info = %d \n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 709
+# File: sci_gateway/c/sci_eigs.c, line: 713
+# File: sci_gateway/c/sci_eigs.c, line: 718
+#, c-format
+msgid "%s: Error with %s: unknown mode returned.\n"
+msgstr ""
+
+#
+# File: sci_gateway/c/sci_eigs.c, line: 761
+# File: sci_gateway/c/sci_eigs.c, line: 796
+# File: sci_gateway/c/sci_eigs.c, line: 814
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr ""
+
+# File: macros/eigs.sci, line: 14
+#, c-format
+msgid "%s : Wrong number of input arguments : %d to %d expected.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 19
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A full or sparse square matrix or a "
+"function expected"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 34
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A positive integer expected if the "
+"first input argument is a function."
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 81
+# File: macros/eigs.sci, line: 153
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A structure expected"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 84
+# File: macros/eigs.sci, line: 156
+#, c-format
+msgid ""
+"%s: Wrong type for input argument: If A is a matrix, use opts with tol, "
+"maxiter, ncv, resid, cholB"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 274
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 280
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 292
+# File: macros/eigs.sci, line: 746
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 318
+# File: macros/eigs.sci, line: 772
+#, c-format
+msgid "%s: Wrong dimension for input argument #%d: %s must be 1 by 1 size.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 343
+# File: macros/eigs.sci, line: 797
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV < N.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 389
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be complex for "
+"complex problems.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 415
+# File: macros/eigs.sci, line: 871
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: if opts.cholB is true, B must be "
+"upper triangular.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 428
+# File: macros/eigs.sci, line: 883
+#, c-format
+msgid ""
+"%s: Impossible to use the Cholesky factorization with complex sparse "
+"matrices.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 499
+# File: macros/eigs.sci, line: 504
+# File: macros/eigs.sci, line: 510
+# File: macros/eigs.sci, line: 581
+# File: macros/eigs.sci, line: 598
+# File: macros/eigs.sci, line: 634
+# File: macros/eigs.sci, line: 941
+# File: macros/eigs.sci, line: 946
+# File: macros/eigs.sci, line: 952
+# File: macros/eigs.sci, line: 1050
+# File: macros/eigs.sci, line: 1067
+# File: macros/eigs.sci, line: 1103
+#, c-format
+msgid "%s: Error with %s: info = %d.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 668
+# File: macros/eigs.sci, line: 672
+#, c-format
+msgid "%s: Wrong type for input argument #%d: n must be a positive integer.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 707
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be in the range 1 to N - 1.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 711
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be in the range 1 to N - 2.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 722
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a scalar expected.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 729
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a string expected.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 733
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s or %s.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 735
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s, %s or %s.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 783
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 835
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector opts.resid must be "
+"N by 1.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 841
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be real "
+"for real problems.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 845
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be "
+"complex for complex problems.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 1041
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: n does not match rows number of "
+"matrix A.\n"
+msgstr ""
+
+#
+# File: macros/eigs.sci, line: 1043
+#, c-format
+msgid "%s: Wrong type or value for input arguments.\n"
+msgstr ""
diff --git a/modules/arnoldi/locales/ca_ES.po b/modules/arnoldi/locales/ca_ES.po
new file mode 100755
index 000000000..7078b6eca
--- /dev/null
+++ b/modules/arnoldi/locales/ca_ES.po
@@ -0,0 +1,350 @@
+# 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: 2009-10-22 08:35+0000\n"
+"Last-Translator: oriolsbd <oriolsbd@yahoo.es>\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 "%s: Wrong type for argument #%d: A real expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: the computation is already terminated\n"
+msgstr "%s: ja s'ha acabat el càlcul\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument %s: An array of size %d expected.\n"
+msgstr ""
+"%s: La mida de l'argument d'entrada %s és incorrecta: Ha de ser un vector de "
+"mida %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"
+msgstr ""
+"%s: La mida de l'argument d'entrada %s és incorrecta: Ha de ser una matriu "
+"de mida %dx%d.\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: An empty matrix or full or sparse "
+"square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: k must be a positive integer.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: k must be in the range 1 to N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+" "
+msgstr ""
+
+#, c-format
+msgid "%s: Invalid sigma value for complex or non symmetric problem.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Invalid sigma value for real symmetric problem.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: sigma must be a real.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer positive "
+"value.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a real scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar or a "
+"boolean.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s must be %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: B is not positive definite. Try with sigma='SM' or sigma=scalar.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: If opts.cholB is true, B should be upper triangular.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be real for real "
+"problems.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: An integer expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, NCV "
+"must be k < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For complex problems, NCV must be k "
+"+ 1 < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be an integer in the range 1 to N - 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be an integer in the range 1 to N - 2.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Error with input argument #%d: B is not positive definite. Try with "
+"sigma='SM' or sigma=scalar.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: info = %d \n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: unknown mode returned.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr ""
+
+#, c-format
+msgid "%s : Wrong number of input arguments : %d to %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A full or sparse square matrix or a "
+"function expected"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A positive integer expected if the "
+"first input argument is a function."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A structure expected"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument: If A is a matrix, use opts with tol, "
+"maxiter, ncv, resid, cholB"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong dimension for input argument #%d: %s must be 1 by 1 size.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV < N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be complex for "
+"complex problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: if opts.cholB is true, B must be "
+"upper triangular.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Impossible to use the Cholesky factorization with complex sparse "
+"matrices.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: info = %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: n must be a positive integer.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be in the range 1 to N - 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be in the range 1 to N - 2.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s, %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector opts.resid must be "
+"N by 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be real "
+"for real problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be "
+"complex for complex problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: n does not match rows number of "
+"matrix A.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type or value for input arguments.\n"
+msgstr ""
diff --git a/modules/arnoldi/locales/cs_CZ.po b/modules/arnoldi/locales/cs_CZ.po
new file mode 100755
index 000000000..14b36cf64
--- /dev/null
+++ b/modules/arnoldi/locales/cs_CZ.po
@@ -0,0 +1,423 @@
+# 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: 2014-09-26 09:20+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 "%s: Wrong type for argument #%d: A real expected.\n"
+msgstr "%s: Špatný typ argumentu #%d: Očekáváno reálné číslo.\n"
+
+#, c-format
+msgid "%s: the computation is already terminated\n"
+msgstr "%s: výpočet byl již ukončen\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument %s: An array of size %d expected.\n"
+msgstr ""
+"%s: Chybná velikost vstupního argumentu %s: Očekáváno pole o velikosti %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"
+msgstr ""
+"%s: Chybná velikost vstupního argumentu %s: Očekávána matice typu %dx%d.\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: A string expected.\n"
+msgstr "%s: Špatný typ argumentu #%d: Očekáván řetězec.\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: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: Špatný typ vstupního argumentu #%d: Očekávána čtvercová matice.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: An empty matrix or full or sparse "
+"square matrix expected.\n"
+msgstr ""
+"%s: Špatný typ vstupního argumentu #%d: Očekávána prázdná matice nebo plná "
+"či řídká čtvercová matice.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"
+msgstr ""
+"%s: Špatný rozměr vstupního argumentu #%d: B musí mít stejnou velikost jako "
+"A.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A scalar expected.\n"
+msgstr "%s: Špatný typ vstupního argumentu #%d: Očekáván skalár.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: k must be a positive integer.\n"
+msgstr ""
+"%s: Špatný typ vstupního argumentu #%d: k musí být kladné celé číslo.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: k must be in the range 1 to N.\n"
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: k musí být v rozsahu od 1 do N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: Nerozpoznaná hodnota sigma.\n"
+" Sigma musí být jedna z '%s', '%s', '%s', '%s' nebo '%s'.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+" "
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: Nerozpoznaná hodnota sigma.\n"
+" Sigma musí být jedna z '%s', '%s', '%s', '%s', '%s' nebo '%s'.\n"
+" "
+
+#, c-format
+msgid "%s: Invalid sigma value for complex or non symmetric problem.\n"
+msgstr "%s: Neplatná sigma pro komplexní či nesymetrické úlohy.\n"
+
+#, c-format
+msgid "%s: Invalid sigma value for real symmetric problem.\n"
+msgstr "%s: Neplatná sigma pro reálnou nesymetrickou úlohu.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: sigma must be a real.\n"
+msgstr ""
+"%s: Špatný typ vstupního argumentu #%d: Sigma musí být reálné číslo.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a scalar.\n"
+msgstr "%s: Špatný typ vstupního argumentu #%d: %s musí být skalár.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer positive "
+"value.\n"
+msgstr ""
+"%s: Špatný typ vstupního argumentu #%d: %s musí být hodnota celého kladného "
+"čísla.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a real scalar.\n"
+msgstr "%s: Špatný typ vstupního argumentu #%d: %s musí být reálný skalár.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+"%s: Špatný typ vstupního rozměru #%d: %s musí být celočíselný skalár.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar or a "
+"boolean.\n"
+msgstr ""
+"%s: Špatný typ vstupního argumentu #%d: %s musí být celočíselný skalár nebo "
+"boolean.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s must be %s or %s.\n"
+msgstr "%s: Špatná hodnota argumentu #%d: %s musí být %s nebo %s.\n"
+
+#, c-format
+msgid ""
+"%s: B is not positive definite. Try with sigma='SM' or sigma=scalar.\n"
+msgstr ""
+"%s: B není pozitivně definitivní. Zkuste použít sigma='SM' nebo "
+"sigma=scalar.\n"
+
+#, c-format
+msgid "%s: If opts.cholB is true, B should be upper triangular.\n"
+msgstr ""
+"%s: Pokud je opts.cholB pravda, pak by B mělo být horní trojúhelníková "
+"matice.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"
+msgstr ""
+"%s: Špatný typ vstupního argumentu #%d: Očekávána reálná nebo komplexní "
+"matice.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"
+msgstr ""
+"%s: Špatný rozměr vstupního argumentu #%d: Počáteční vektor %s musí být N "
+"krát 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be real for real "
+"problems.\n"
+msgstr ""
+"%s: Špatný typ vstupního argumentu #%d: Počáteční vektor %s musí být pro "
+"reálné úlohy reálný.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: An integer expected.\n"
+msgstr "%s: Špatný typ vstupního argumentu #%d: Očekáváno celé číslo.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, NCV "
+"must be k < NCV <= N.\n"
+msgstr ""
+"%s: Špatná hodnota argumentu #%d: V reálných symetrických úlohách musí být k "
+"< NCV <= N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV <= N.\n"
+msgstr ""
+"%s: Špatná hodnota argumentu #%d: V reálných nesymetrických úlohách musí být "
+"k + 2 < NCV <= N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For complex problems, NCV must be k "
+"+ 1 < NCV <= N.\n"
+msgstr ""
+"%s: Špatná hodnota argumentu #%d: V komplexních úlohách musí být k + 1 < NCV "
+"<= N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be an integer in the range 1 to N - 1.\n"
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: V reálných symetrických úlohách "
+"musí být k celé číslo v rozsahu od 1 do N - 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be an integer in the range 1 to N - 2.\n"
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: V reálných nesymetrických "
+"úlohách musí být k celé číslo v rozsahu od 1 do N - 2.\n"
+
+#, c-format
+msgid ""
+"%s: Error with input argument #%d: B is not positive definite. Try with "
+"sigma='SM' or sigma=scalar.\n"
+msgstr ""
+"%s: Chyba ve vstupním argumentu #%d: B není pozitivně definitivní. Zkuste "
+"použít sigma='SM' nebo sigma=scalar.\n"
+
+#, c-format
+msgid "%s: Error with %s: info = %d \n"
+msgstr "%s: Chyba s %s: info = %d \n"
+
+#, c-format
+msgid "%s: Error with %s: unknown mode returned.\n"
+msgstr "%s: Chyba s %s: vrácen neznámý režim.\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 number of input arguments : %d to %d expected.\n"
+msgstr "%s: Špatný počet vstupních argumentů : očekáváno %d až %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A full or sparse square matrix or a "
+"function expected"
+msgstr ""
+"%s: Špatný typ vstupního argumentu #%d: Očekávána úplná nebo řídká matice či "
+"funkce"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A positive integer expected if the "
+"first input argument is a function."
+msgstr ""
+"%s: Špatný typ vstupního argumentu #%d: Pokud je první vstupní argument "
+"funkce, pak je očekáváno kladné celé číslo."
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A structure expected"
+msgstr "%s: Špatný typ vstupního argumentu #%d: Očekávána struktura"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument: If A is a matrix, use opts with tol, "
+"maxiter, ncv, resid, cholB"
+msgstr ""
+"%s: Špatný typ vstupního argumentu: Pokud je A matice, použijte opts s tol, "
+"maxiter, ncv, resid, cholB"
+
+#, 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: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: Nerozpoznaná hodnota sigma.\n"
+" Sigma musí být jedna z '%s', '%s', '%s', '%s', '%s' nebo '%s'.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"
+msgstr ""
+"%s: Špatný typ vstupního argumentu #%d: Očekáván reálný skalár nebo "
+"řetězec.\n"
+
+#, c-format
+msgid "%s: Wrong dimension for input argument #%d: %s must be 1 by 1 size.\n"
+msgstr ""
+"%s: Špatný rozměr pro vstupní argument #%d: %s musí mít velikost 1 krát 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV < N.\n"
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: V reálných nesymetrických "
+"úlohách musí být k + 2 < NCV < N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be complex for "
+"complex problems.\n"
+msgstr ""
+"%s: Špatný typ vstupního argumentu #%d: Počáteční vektor %s musí být "
+"komplexní pro komplexní problémy.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: if opts.cholB is true, B must be "
+"upper triangular.\n"
+msgstr ""
+"%s: Špatný typ vstupního argumentu #%d: pokud je opts.cholB pravda, B musí "
+"být horní trojúhelníková matice.\n"
+
+#, c-format
+msgid ""
+"%s: Impossible to use the Cholesky factorization with complex sparse "
+"matrices.\n"
+msgstr ""
+"%s: Choleského faktorizaci nelze použít v komplexních řídkých maticích.\n"
+
+#, c-format
+msgid "%s: Error with %s: info = %d.\n"
+msgstr "%s: Chyba s %s: info = %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: n must be a positive integer.\n"
+msgstr ""
+"%s: Špatný typ vstupního argumentu #%d: n musí být kladné celé číslo.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be in the range 1 to N - 1.\n"
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: V reálných symetrických úlohách "
+"musí být k v rozsahu od 1 do N - 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be in the range 1 to N - 2.\n"
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: V reálných nesymetrických nebo "
+"komplexních úlohách musí být k v rozsahu od 1 do N - 2.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a scalar expected.\n"
+msgstr "%s: Špatný typ vstupního argumentu #%d: Očekáván skalár.\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: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s or %s.\n"
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: Nerozpoznaná hodnota sigma.\n"
+" Sigma musí být jedna z %s, %s, %s, %s nebo %s.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s, %s or %s.\n"
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: Nerozpoznaná hodnota sigma.\n"
+" Sigma musí být jedna z %s, %s, %s, %s, %s nebo %s.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+"%s: Špatný rozměr vstupního rozměru #%d: %s musí být celočíselný skalár.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector opts.resid must be "
+"N by 1.\n"
+msgstr ""
+"%s: Špatný rozměr vstupního argumentu #%d: Počáteční vektor opts.resid musí "
+"být N krát 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be real "
+"for real problems.\n"
+msgstr ""
+"%s: Špatný typ vstupního argumentu #%d: Počáteční vektor opts.resid musí být "
+"pro úlohy s reálnými čísly reálný.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be "
+"complex for complex problems.\n"
+msgstr ""
+"%s: Špatný typ vstupního argumentu #%d: Počáteční vektor opts.resid musí být "
+"pro úlohy s komplexními čísly komplexní.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: n does not match rows number of "
+"matrix A.\n"
+msgstr ""
+"%s: Špatná hodnota vstupního argumentu #%d: n neodpovídá počtu řádků v "
+"matici A.\n"
+
+#, c-format
+msgid "%s: Wrong type or value for input arguments.\n"
+msgstr "%s: Špatný typ nebo hodnota vstupních argumentů.\n"
diff --git a/modules/arnoldi/locales/de_DE.po b/modules/arnoldi/locales/de_DE.po
new file mode 100755
index 000000000..8f5c6cc20
--- /dev/null
+++ b/modules/arnoldi/locales/de_DE.po
@@ -0,0 +1,349 @@
+# German 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: 2010-10-23 16:38+0000\n"
+"Last-Translator: Petersen <Unknown>\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 "%s: Wrong type for argument #%d: A real expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: the computation is already terminated\n"
+msgstr "%s: die Berechnung ist bereits abgebrochen\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument %s: An array of size %d expected.\n"
+msgstr ""
+"%s: Falsche Größe für Eingangsargument %s: ein Datenfeld der Größe %d "
+"erwartet.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"
+msgstr ""
+"%s: Falsche Größe für Eingangsargument %s: eine %dx%d Matrix erwartet.\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: An empty matrix or full or sparse "
+"square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: k must be a positive integer.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: k must be in the range 1 to N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+" "
+msgstr ""
+
+#, c-format
+msgid "%s: Invalid sigma value for complex or non symmetric problem.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Invalid sigma value for real symmetric problem.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: sigma must be a real.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer positive "
+"value.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a real scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar or a "
+"boolean.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s must be %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: B is not positive definite. Try with sigma='SM' or sigma=scalar.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: If opts.cholB is true, B should be upper triangular.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be real for real "
+"problems.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: An integer expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, NCV "
+"must be k < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For complex problems, NCV must be k "
+"+ 1 < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be an integer in the range 1 to N - 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be an integer in the range 1 to N - 2.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Error with input argument #%d: B is not positive definite. Try with "
+"sigma='SM' or sigma=scalar.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: info = %d \n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: unknown mode returned.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr ""
+
+#, c-format
+msgid "%s : Wrong number of input arguments : %d to %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A full or sparse square matrix or a "
+"function expected"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A positive integer expected if the "
+"first input argument is a function."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A structure expected"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument: If A is a matrix, use opts with tol, "
+"maxiter, ncv, resid, cholB"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong dimension for input argument #%d: %s must be 1 by 1 size.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV < N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be complex for "
+"complex problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: if opts.cholB is true, B must be "
+"upper triangular.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Impossible to use the Cholesky factorization with complex sparse "
+"matrices.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: info = %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: n must be a positive integer.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be in the range 1 to N - 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be in the range 1 to N - 2.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s, %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector opts.resid must be "
+"N by 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be real "
+"for real problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be "
+"complex for complex problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: n does not match rows number of "
+"matrix A.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type or value for input arguments.\n"
+msgstr ""
diff --git a/modules/arnoldi/locales/es_ES.po b/modules/arnoldi/locales/es_ES.po
new file mode 100755
index 000000000..c1d594d3d
--- /dev/null
+++ b/modules/arnoldi/locales/es_ES.po
@@ -0,0 +1,370 @@
+# 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: 2012-09-09 18:08+0000\n"
+"Last-Translator: Jorge Catumba <jorgerev90@gmail.com>\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 "%s: Wrong type for argument #%d: A real expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: the computation is already terminated\n"
+msgstr "%s: los cálculos ya han terminado\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument %s: An array of size %d expected.\n"
+msgstr ""
+"%s: Tamaño incorrecto del argumento de entrada %s. Se esperaba un arreglo de "
+"tamaño %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"
+msgstr ""
+"%s: Tamaño incorrecto del argumento de entrada %s. Se esperaba una matriz de "
+"tamaño %dx%d.\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s: No se puede leer el argumento de entrada #%d.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: Tipo incorrecto del argumento de entrada #%d: Se esperaba una matriz "
+"cuadrada.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: An empty matrix or full or sparse "
+"square matrix expected.\n"
+msgstr ""
+"%s Tipo incorrecto de argumento de entada #%d: Se esperaba una matriz "
+"cuadrada vacía completa o dispersa.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"
+msgstr ""
+"%s: Dimensión incorrecta del argumento de entrada #%d: B debe tener el mismo "
+"tamaño que A.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A scalar expected.\n"
+msgstr ""
+"%s: Tipo incorrecto del argumento de entrada #%d: Se esperaba un escalar.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: k must be a positive integer.\n"
+msgstr ""
+"%s: Tipo incorrecto del argumento de entrada #%d: k debe se un entero "
+"positivo.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: k must be in the range 1 to N.\n"
+msgstr ""
+"%s: Tipo incorrecto del argumento de entrada #%d: k debe estar en el rango "
+"de 1 a N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+"%s: Valor incorrecto del argumento de entrada #%d: Valor de sigma no "
+"reconocido.\n"
+" Sigma debe ser '%s', '%s', '%s', '%s' o '%s'.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+" "
+msgstr ""
+"%s: Valor incorrecto del argumento de entrada #%d: Valor de sigma no "
+"reconocido.\n"
+" Sigma debe ser '%s', '%s', '%s', '%s', '%s' o '%s'.\n"
+" "
+
+#, c-format
+msgid "%s: Invalid sigma value for complex or non symmetric problem.\n"
+msgstr "%s: Valor de sigma inválido para problema complejo o no simétrico.\n"
+
+#, c-format
+msgid "%s: Invalid sigma value for real symmetric problem.\n"
+msgstr "%s: Valor de sigma inválido para problema real simétrico.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: sigma must be a real.\n"
+msgstr ""
+"%s: Tipo incorrecto del argumento de entrada #%d: sigma debe ser un real.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a scalar.\n"
+msgstr ""
+"%s: Tipo incorrecto del argumento de entrada #%d: %s debe ser un escalar.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer positive "
+"value.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a real scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar or a "
+"boolean.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s must be %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: B is not positive definite. Try with sigma='SM' or sigma=scalar.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: If opts.cholB is true, B should be upper triangular.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be real for real "
+"problems.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: An integer expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, NCV "
+"must be k < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For complex problems, NCV must be k "
+"+ 1 < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be an integer in the range 1 to N - 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be an integer in the range 1 to N - 2.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Error with input argument #%d: B is not positive definite. Try with "
+"sigma='SM' or sigma=scalar.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: info = %d \n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: unknown mode returned.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr ""
+
+#, c-format
+msgid "%s : Wrong number of input arguments : %d to %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A full or sparse square matrix or a "
+"function expected"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A positive integer expected if the "
+"first input argument is a function."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A structure expected"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument: If A is a matrix, use opts with tol, "
+"maxiter, ncv, resid, cholB"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong dimension for input argument #%d: %s must be 1 by 1 size.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV < N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be complex for "
+"complex problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: if opts.cholB is true, B must be "
+"upper triangular.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Impossible to use the Cholesky factorization with complex sparse "
+"matrices.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: info = %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: n must be a positive integer.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be in the range 1 to N - 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be in the range 1 to N - 2.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s, %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector opts.resid must be "
+"N by 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be real "
+"for real problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be "
+"complex for complex problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: n does not match rows number of "
+"matrix A.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type or value for input arguments.\n"
+msgstr ""
diff --git a/modules/arnoldi/locales/fr_FR.po b/modules/arnoldi/locales/fr_FR.po
new file mode 100755
index 000000000..3ebd0bf9d
--- /dev/null
+++ b/modules/arnoldi/locales/fr_FR.po
@@ -0,0 +1,453 @@
+# French 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: 2014-02-19 11:40+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 "%s: Wrong type for argument #%d: A real expected.\n"
+msgstr "%s : Type erroné de l'argument n°%d : Un réel attendu.\n"
+
+#, c-format
+msgid "%s: the computation is already terminated\n"
+msgstr "%s : Le calcul est déjà terminé\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument %s: An array of size %d expected.\n"
+msgstr ""
+"%s :Dimension erronée de l'argument d'entrée %s : Un tableau de taille %d "
+"attendu.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"
+msgstr ""
+"%s : Dimension erronée de l'argument d'entrée %s : Une matrice de taille "
+"%dx%d attendue.\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: A string expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument n°%d : Une chaîne de caractères attendue.\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: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Une matrice carrée attendue.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: An empty matrix or full or sparse "
+"square matrix expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Une matrice vide ou une "
+"matrice carrée, dense ou creuse attendue.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"
+msgstr ""
+"%s : Dimension erronée de l'argument d'entrée n°%d : B doit avoir la même "
+"taille que A.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A scalar expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Un scalaire attendu.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: k must be a positive integer.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : k doit être un entier "
+"positif.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: k must be in the range 1 to N.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n%d : k doit être compris entre 1 "
+"et N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Valeur sigma non "
+"reconnue.\n"
+" Sigma doit être '%s', '%s', '%s', '%s' ou '%s'.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+" "
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Valeur sigma non "
+"reconnue.\n"
+" Sigma doit être '%s', '%s', '%s', '%s', '%s' ou '%s'.\n"
+" "
+
+#, c-format
+msgid "%s: Invalid sigma value for complex or non symmetric problem.\n"
+msgstr ""
+"%s : Valeur de sigma invalide pour des problèmes complexes ou non "
+"symétriques.\n"
+
+#, c-format
+msgid "%s: Invalid sigma value for real symmetric problem.\n"
+msgstr ""
+"%s : Valeur de sigma invalide pour des problèmes réels symétriques.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: sigma must be a real.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : sigma doit être un réel.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a scalar.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : %s doit être un scalaire.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer positive "
+"value.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : %s doit être une valeur "
+"entière positive.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a real scalar.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : %s doit être un scalaire "
+"réel.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : %s doit être un scalaire "
+"entier.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar or a "
+"boolean.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n%d : %s doit être un scalaire "
+"entier ou un booléen.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s must be %s or %s.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : %s doit être %s ou %s.\n"
+
+#, c-format
+msgid ""
+"%s: B is not positive definite. Try with sigma='SM' or sigma=scalar.\n"
+msgstr ""
+"%s : N n'est pas définie positive. Essayez avec sigma='SM' ou sigma "
+"scalaire.\n"
+
+#, c-format
+msgid "%s: If opts.cholB is true, B should be upper triangular.\n"
+msgstr ""
+"%s : Si opts.cholB est vrai, B devrait être triangulaire supérieure.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Une matrice réelle ou "
+"complexe attendue.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"
+msgstr ""
+"%s : Dimension erronée de l'argument d'entrée n°%d : Le vecteur de début %s "
+"doit être N par 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be real for real "
+"problems.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Le vecteur de début %s doit "
+"être réel pour des problèmes réels.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: An integer expected.\n"
+msgstr "%s : Type erroné de l'argument d'entrée n°%d : Un entier attendu.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, NCV "
+"must be k < NCV <= N.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Pour des problèmes réels "
+"symétriques, NCV doit être k < NCV <= N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV <= N.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Pour des problèmes réels "
+"non symétriques, NCV doit être k + 2 < NCV <= N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For complex problems, NCV must be k "
+"+ 1 < NCV <= N.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Pour des problèmes "
+"complexes, NCV doit être k + 1 < NCV <= N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be an integer in the range 1 to N - 1.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Pour des problèmes réels "
+"symétriques, K doit être un entier compris entre 1 et N -1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be an integer in the range 1 to N - 2.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Pour des problèmes réels "
+"non symétriques ou complexes, k doit être un entier compris entre 1 et N - "
+"2.\n"
+
+#, c-format
+msgid ""
+"%s: Error with input argument #%d: B is not positive definite. Try with "
+"sigma='SM' or sigma=scalar.\n"
+msgstr ""
+"%s : Erreur avec l'argument d'entrée n°%d : B n'est pas définie positive. "
+"Essayez avec sigma='SM' ou sigma scalaire.\n"
+
+#, c-format
+msgid "%s: Error with %s: info = %d \n"
+msgstr "%s : Erreur avec %s : info = %d \n"
+
+#, c-format
+msgid "%s: Error with %s: unknown mode returned.\n"
+msgstr "%s : Erreur avec %s : mode inconnu retourné.\n"
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr "%s : Erreur d'allocation mémoire.\n"
+
+#, c-format
+msgid "%s : Wrong number of input arguments : %d to %d expected.\n"
+msgstr "%s : Nombre erroné d'arguments d'entrée : %d à %d attendus.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A full or sparse square matrix or a "
+"function expected"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Une matrice carrée, dense ou "
+"creuse ou une fonction attendue."
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A positive integer expected if the "
+"first input argument is a function."
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Un entier positif attendu si "
+"le premier argument d'entrée est une fonction."
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A structure expected"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Une structure attendue."
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument: If A is a matrix, use opts with tol, "
+"maxiter, ncv, resid, cholB"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée : Si A est une matrice, utilisez "
+"opts avec tol, maxiter, ncv, resid, cholB."
+
+#, 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: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Valeur sigma non "
+"reconnue.\n"
+" Sigma doit être '%s', '%s', '%s', '%s', '%s' ou '%s'.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Un scalaire réel ou une "
+"chaîne de caractères attendu.\n"
+
+#, c-format
+msgid "%s: Wrong dimension for input argument #%d: %s must be 1 by 1 size.\n"
+msgstr ""
+"%s : Dimension erronée de l'argument d'entrée n°%d : %s doit être de taille "
+"1 par 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV < N.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Pour des problèmes réels "
+"non symétriques, NCV doit être k + 2 < NCV < N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be complex for "
+"complex problems.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Le vecteur de début %s doit "
+"être complexe pour des problèmes complexes.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: if opts.cholB is true, B must be "
+"upper triangular.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : si opts.cholB est vrai, B "
+"doit être triangulaire supérieur.\n"
+
+#, c-format
+msgid ""
+"%s: Impossible to use the Cholesky factorization with complex sparse "
+"matrices.\n"
+msgstr ""
+"%s : Impossible d'utiliser la factorisation de Cholesky avec des matrices "
+"creuses complexes.\n"
+
+#, c-format
+msgid "%s: Error with %s: info = %d.\n"
+msgstr "%s : Erreur avec %s: info = %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: n must be a positive integer.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : n doit être un entier "
+"positif.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be in the range 1 to N - 1.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Pour des problèmes réels "
+"symétriques, k doit être compris entre 1 et N - 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be in the range 1 to N - 2.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Pour des problèmes réels "
+"non symétriques ou complexes, k doit être compris entre 1 et N - 2.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a scalar expected.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Un scalaire attendu.\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: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s or %s.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Valeur sigma non "
+"reconnue.\n"
+" Sigma doit être %s, %s, %s, %s ou %s.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s, %s or %s.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : Valeur sigma non "
+"reconnue.\n"
+" Sigma doit être %s, %s, %s, %s, %s ou %s.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+"%s : Dimension erronée de l'argument d'entrée n°%d : %s doit être un "
+"scalaire entier.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector opts.resid must be "
+"N by 1.\n"
+msgstr ""
+"%s : Dimension erronée de l'argument d'entrée n°%d : Le vecteur de début "
+"opts.resid doit être N par 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be real "
+"for real problems.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Le vecteur de début "
+"opts.resid doit être réel pour des problèmes réels.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be "
+"complex for complex problems.\n"
+msgstr ""
+"%s : Type erroné de l'argument d'entrée n°%d : Le vecteur de début "
+"opts.resid doit être complexe pour des problèmes complexes.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: n does not match rows number of "
+"matrix A.\n"
+msgstr ""
+"%s : Valeur erronée de l'argument d'entrée n°%d : n ne correspond pas au "
+"nombre de lignes de la matrice A.\n"
+
+#, c-format
+msgid "%s: Wrong type or value for input arguments.\n"
+msgstr "%s : Type ou valeur erroné des arguments d'entrée.\n"
diff --git a/modules/arnoldi/locales/it_IT.po b/modules/arnoldi/locales/it_IT.po
new file mode 100755
index 000000000..a83e79316
--- /dev/null
+++ b/modules/arnoldi/locales/it_IT.po
@@ -0,0 +1,461 @@
+# 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: 2015-02-14 21:06+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 "%s: Wrong type for argument #%d: A real expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era atteso un numero "
+"reale.\n"
+
+#, c-format
+msgid "%s: the computation is already terminated\n"
+msgstr "%s: il calcolo è già finito\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument %s: An array of size %d expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso %s ha una dimensione sbagliata: era atteso un "
+"array di dimensione %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso %s ha una dimensione sbagliata: era attesa una "
+"matrice di dimensioni %dx%d.\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: A string expected.\n"
+msgstr "%s: L'argomento %d è di tipo sbagliato: era attesa una stringa.\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: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era attesa una matrice "
+"quadrata.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: An empty matrix or full or sparse "
+"square matrix expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era attesa una matrice "
+"vuota o completa o una matrice sparsa quadrata.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha una dimensione sbagliata: B deve avere la "
+"stessa dimensione di A.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A scalar expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era atteso uno "
+"scalare.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: k must be a positive integer.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: k deve essere un intero "
+"positivo.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: k must be in the range 1 to N.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: k deve essere "
+"nell'intervallo da 1 a N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: valore di sigma non "
+"riconosciuto.\n"
+" Sigma deve essere uno fra '%s', '%s', '%s', '%s' o '%s'.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+" "
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: valore di sigma non "
+"riconosciuto.\n"
+" Sigma deve essere uno fra '%s', '%s', '%s', '%s', '%s' o '%s'.\n"
+" "
+
+#, c-format
+msgid "%s: Invalid sigma value for complex or non symmetric problem.\n"
+msgstr ""
+"%s: Il valore di sigma non è valido per un problema complesso o non "
+"simmetrico.\n"
+
+#, c-format
+msgid "%s: Invalid sigma value for real symmetric problem.\n"
+msgstr ""
+"%s: Il valore di sigma non è valido per un problema reale simmetrico.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: sigma must be a real.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: sigma deve essere un "
+"numero reale.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a scalar.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: %s deve essere uno "
+"scalare.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer positive "
+"value.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: %s deve essere un "
+"numero intero positivo.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a real scalar.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: %s deve essere uno "
+"scalare reale.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: %s deve essere uno "
+"scalare intero.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar or a "
+"boolean.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: %s deve essere in "
+"intero scalare o un booleano.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s must be %s or %s.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: %s deve essere %s o "
+"%s.\n"
+
+#, c-format
+msgid ""
+"%s: B is not positive definite. Try with sigma='SM' or sigma=scalar.\n"
+msgstr ""
+"%s: B non è definita positiva. Provare con sigma='SM' o sigma=scalar.\n"
+
+#, c-format
+msgid "%s: If opts.cholB is true, B should be upper triangular.\n"
+msgstr "%s: Se opts.cholB è vero, B dovrebbe essere triangolare superiore.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: era attesa una "
+"matrice reale o complessa.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha una dimensione sbagliata: il vettore "
+"iniziale %s deve essere N per 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be real for real "
+"problems.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: per problemi reali, "
+"il vettore iniziale %s deve essere reale.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: An integer expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era atteso un intero.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, NCV "
+"must be k < NCV <= N.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: per problemi reali "
+"simmetrici, NCV deve essere k < NCV <= N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV <= N.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: per problemi reali "
+"non simmetrici, NCV deve essere k + 2 < NCV <= N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For complex problems, NCV must be k "
+"+ 1 < NCV <= N.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: per problemi "
+"complessi, NCV deve essere k + 1 < NCV <= N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be an integer in the range 1 to N - 1.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: per problemi reali "
+"simmetrici, k deve essere un intero nell'intervallo da 1 a N - 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be an integer in the range 1 to N - 2.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: per problemi reali "
+"non simmetrici o complessi, k deve essere un intero nell'intervallo da 1 a N "
+"- 2.\n"
+
+#, c-format
+msgid ""
+"%s: Error with input argument #%d: B is not positive definite. Try with "
+"sigma='SM' or sigma=scalar.\n"
+msgstr ""
+"%s: Errore con l'argomento in ingresso #%d: B non è definita positiva. "
+"Provare con sigma='SM' o sigma=scalar.\n"
+
+#, c-format
+msgid "%s: Error with %s: info = %d \n"
+msgstr "%s: Errore con %s: info = %d \n"
+
+#, c-format
+msgid "%s: Error with %s: unknown mode returned.\n"
+msgstr "%s: Errore con %s: restituito un modo sconosciuto.\n"
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr "%s: Errore di allocazione della memoria.\n"
+
+#, c-format
+msgid "%s : Wrong number of input arguments : %d to %d expected.\n"
+msgstr ""
+"%s: Il numero di argomenti in ingresso è sbagliato: erano attesi da %d a "
+"%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A full or sparse square matrix or a "
+"function expected"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era attesa una matrice "
+"completa o una sparsa quadrata o una funzione."
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A positive integer expected if the "
+"first input argument is a function."
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: è atteso un intero "
+"positivo se il primo argomento in ingresso è una funzione."
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A structure expected"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era attesa una "
+"struttura."
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument: If A is a matrix, use opts with tol, "
+"maxiter, ncv, resid, cholB"
+msgstr ""
+"%s: L'argomento in ingresso è di tipo sbagliato: se A è una matrice,usare "
+"opts con tol, maxiter, ncv, resif, cholB."
+
+#, 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: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: valore di sigma non "
+"riconosciuto.\n"
+" Sigma deve essere uno fra '%s', '%s', '%s', '%s', '%s' o '%s'.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era atteso uno scalare "
+"reale o una stringa.\n"
+
+#, c-format
+msgid "%s: Wrong dimension for input argument #%d: %s must be 1 by 1 size.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha una dimensione sbagliata: %s deve avere "
+"dimensione 1 per 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV < N.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: per problemi reali non "
+"simmetrici, NCV deve essere k + 2 < NCV < N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be complex for "
+"complex problems.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: il vettore iniziale %s "
+"deve essere complesso per problemi complessi.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: if opts.cholB is true, B must be "
+"upper triangular.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: Se opts.cholB è vero, B "
+"dovrebbe essere triangolare superiore.\n"
+
+#, c-format
+msgid ""
+"%s: Impossible to use the Cholesky factorization with complex sparse "
+"matrices.\n"
+msgstr ""
+"%s: Impossibile usare la fattorizzazione di Cholesky con delle matrici "
+"complesse sparse.\n"
+
+#, c-format
+msgid "%s: Error with %s: info = %d.\n"
+msgstr "%s: Errore con %s: info = %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: n must be a positive integer.\n"
+msgstr ""
+"%s: L'argomento ingresso #%d è di tipo sbagliato: n deve essere un intero "
+"positivo.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be in the range 1 to N - 1.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: per problemi reali "
+"simmetrici, k deve essere nell'intervallo da 1 a N - 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be in the range 1 to N - 2.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: per problemi reali "
+"non simmetrici o complessi, k deve essere nell'intervallo da 1 a N - 2.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a scalar expected.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: era atteso uno "
+"scalare.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a string expected.\n"
+msgstr ""
+"%s: L'argomento ingresso #%d è di tipo sbagliato: era attesa una stringa.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s or %s.\n"
+msgstr ""
+"%s: L' argomento in ingresso #%d ha un valore sbagliato: valore di sigma non "
+"riconosciuto.\n"
+" Sigma deve essere uno fra %s, %s, %s, %s o %s.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s, %s or %s.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: valore di sigma non "
+"riconosciuto.\n"
+" Sigma deve essere uno fra %s, %s, %s, %s, %s o %s.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha una dimensione sbagliata: %s deve essere "
+"uno scalare intero.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector opts.resid must be "
+"N by 1.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha una dimensione sbagliata: il vettore "
+"iniziale opts.resid deve essere N per 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be real "
+"for real problems.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: il vettore iniziale "
+"opts.resid deve essere reale per problemi reali.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be "
+"complex for complex problems.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d è di tipo sbagliato: il vettore iniziale "
+"opts.resid deve essere complesso per problemi complessi.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: n does not match rows number of "
+"matrix A.\n"
+msgstr ""
+"%s: L'argomento in ingresso #%d ha un valore sbagliato: n non corrisponde al "
+"numero di righe della matrice A.\n"
+
+#, c-format
+msgid "%s: Wrong type or value for input arguments.\n"
+msgstr "%s: Tipo o valore sbagliato per gli argomenti in ingresso.\n"
diff --git a/modules/arnoldi/locales/ja_JP.po b/modules/arnoldi/locales/ja_JP.po
new file mode 100755
index 000000000..6e470a306
--- /dev/null
+++ b/modules/arnoldi/locales/ja_JP.po
@@ -0,0 +1,364 @@
+# 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: 2014-02-17 14:33+0000\n"
+"Last-Translator: Rui Hirokawa <Unknown>\n"
+"Language-Team: Japanese <ja@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: ja\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: A real expected.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: 実数を指定してください.\n"
+
+#, c-format
+msgid "%s: the computation is already terminated\n"
+msgstr "%s: 計算は既に終了しています.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument %s: An array of size %d expected.\n"
+msgstr "%s: 入力引数 %s の大きさが間違っています: 大きさ %d の配列を指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"
+msgstr "%s: 入力引数 %s の大きさが間違っています: 大きさ %dx%d の行列を指定してください.\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: A string expected.\n"
+msgstr "%s: 引数 #%d の型が間違っています: 文字列を指定してください.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s: 入力引数 #%d を読み込めません.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: 正方行列を指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: An empty matrix or full or sparse "
+"square matrix expected.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: 空行列または通常/疎正方行列を使用してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"
+msgstr "%s: 入力引数 #%d の次元が間違っています: Bの大きさはAと同じにしてください.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A scalar expected.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: スカラーを指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: k must be a positive integer.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: kには正の整数を指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: k must be in the range 1 to N.\n"
+msgstr "%s: 入力引数 #%d の値が間違っています: k は 1~Nの範囲で指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+"%s: 入力引数 #%d の値が間違っています: シグマ値が認識できません.\n"
+" シグマには '%s', '%s', '%s', '%s' または '%s' のどれかを指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+" "
+msgstr ""
+"%s: 入力引数 #%d の値が間違っています: シグマ値が認識できません.\n"
+" シグマには '%s', '%s', '%s', '%s', '%s' または '%s' のどれかを指定してください.\n"
+" "
+
+#, c-format
+msgid "%s: Invalid sigma value for complex or non symmetric problem.\n"
+msgstr "%s: 複素または非対称問題のシグマ値が無効です.\n"
+
+#, c-format
+msgid "%s: Invalid sigma value for real symmetric problem.\n"
+msgstr "%s: 実対称問題のシグマ値が無効です.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: sigma must be a real.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: シグマには実数を指定してください.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a scalar.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: %s にはスカラーを指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer positive "
+"value.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: %s には正の整数値を指定してください.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a real scalar.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: %s には実スカラーを指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: %s は整数スカラーとしてください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar or a "
+"boolean.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: %sには整数スカラーまたは論理値を指定してください.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s must be %s or %s.\n"
+msgstr "%s: 入力引数 #%d の値が間違っています: %s には %s または %sを指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: B is not positive definite. Try with sigma='SM' or sigma=scalar.\n"
+msgstr "%s: Bが静定ではありません. sigma='SM' または sigma=scalar を試してください.\n"
+
+#, c-format
+msgid "%s: If opts.cholB is true, B should be upper triangular.\n"
+msgstr "%s: opts.cholB が true の場合, B は上三角行列とします.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: 実または複素行列を指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"
+msgstr "%s: 入力引数 #%d の次元が間違っています: 開始ベクトル %s は N x 1とする必要があります.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be real for real "
+"problems.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: 実数問題の場合, 開始ベクトル %s には実数を指定してください.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: An integer expected.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: 整数を指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, NCV "
+"must be k < NCV <= N.\n"
+msgstr "%s: 入力引数 #%d の値が間違っています: 実対称問題の場合, NCV は k < NCV <= N とする必要があります.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV <= N.\n"
+msgstr ""
+"%s: 入力引数 #%d の値が間違っています: 実非対称問題の場合, NCV は k + 2 < NCV <= N とする必要があります.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For complex problems, NCV must be k "
+"+ 1 < NCV <= N.\n"
+msgstr ""
+"%s: 入力引数 #%d の値が間違っています: 複素問題の場合, NCV は k + 1 < NCV <= N とする必要があります.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be an integer in the range 1 to N - 1.\n"
+msgstr "%s: 入力引数 #%d の値が間違っています: 実対称問題の場合, k には 1 から N - 1の範囲の整数を指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be an integer in the range 1 to N - 2.\n"
+msgstr ""
+"%s: 入力引数 #%d の値が間違っています: 実非対称または複素問題の場合, k には 1 から N - 2の範囲の整数を指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Error with input argument #%d: B is not positive definite. Try with "
+"sigma='SM' or sigma=scalar.\n"
+msgstr ""
+"%s: 入力引数 #%d にエラーがあります: B が正定ではありません. sigma='SM' または sigma=scalar を試してください.\n"
+
+#, c-format
+msgid "%s: Error with %s: info = %d \n"
+msgstr "%s: エラー %s : info = %d \n"
+
+#, c-format
+msgid "%s: Error with %s: unknown mode returned.\n"
+msgstr "%s: エラー %s: 未知のモードが返されました.\n"
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr "%s: メモリ割当エラー.\n"
+
+#, c-format
+msgid "%s : Wrong number of input arguments : %d to %d expected.\n"
+msgstr "%s: 入力引数の数が間違っています: %d から %d の間の値を指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A full or sparse square matrix or a "
+"function expected"
+msgstr "%s: 入力引数 #%d の型が間違っています: 通常または疎正方行列または関数を指定してください."
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A positive integer expected if the "
+"first input argument is a function."
+msgstr "%s: 入力引数 #%d の型が間違っています: 最初の入力引数が関数の場合, 正の整数を指定してください."
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A structure expected"
+msgstr "%s: 入力引数 #%d の型が間違っています: 構造体を指定してください."
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument: If A is a matrix, use opts with tol, "
+"maxiter, ncv, resid, cholB"
+msgstr ""
+"%s: 入力引数の型が間違っています: Aが行列の場合, tol, maxiter, ncv, resid, cholB を指定した opt "
+"を使用してください"
+
+#, 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: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+"%s: 入力引数 #%d の値が間違っています: シグマ値が認識できません.\n"
+" シグマには '%s', '%s', '%s', '%s', '%s' または '%s' のどれかを指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: 実スカラーまたは文字列を指定してください.\n"
+
+#, c-format
+msgid "%s: Wrong dimension for input argument #%d: %s must be 1 by 1 size.\n"
+msgstr "%s: 入力引数 #%d の次元が間違っています: %s には大きさ 1x1の値を指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV < N.\n"
+msgstr "%s: 入力引数 #%d の値が間違っています: 実非対称問題の場合, NCV は k + 2 < NCV < N としてください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be complex for "
+"complex problems.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: 複素問題の場合, 開始ベクトル %s は複素数とする必要があります.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: if opts.cholB is true, B must be "
+"upper triangular.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: opts.cholB が真の場合, B には上三角行列を指定します.\n"
+
+#, c-format
+msgid ""
+"%s: Impossible to use the Cholesky factorization with complex sparse "
+"matrices.\n"
+msgstr "%s: 複素疎行列にはコレスキー分解を使用できません.\n"
+
+#, c-format
+msgid "%s: Error with %s: info = %d.\n"
+msgstr "%s: エラー %s: info = %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: n must be a positive integer.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: n には正の整数を指定してください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be in the range 1 to N - 1.\n"
+msgstr "%s: 入力引数 #%d の値が間違っています: 実対称問題の場合, k は 1 から N - 1 の範囲としてください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be in the range 1 to N - 2.\n"
+msgstr ""
+"%s: 入力引数 #%d の値が間違っています: 実非対称または複素問題の場合, k は 1 から N - 2 の範囲としてください.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a scalar expected.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: 実対称問題の場合, スカラーを指定してください.\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: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s or %s.\n"
+msgstr ""
+"%s: 入力引数 #%d の値が間違っています: シグマ値を認識できません.\n"
+"シグマは %s, %s, %s, %s または %s のどれかとしてください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s, %s or %s.\n"
+msgstr ""
+"%s: 入力引数 #%d の値が間違っています: シグマ値を認識できません.\n"
+" シグマは %s, %s, %s, %s, %s または %s のどれかとしてください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: %s must be an integer scalar.\n"
+msgstr "%s: 入力引数 #%d の次元が間違っています: %s は整数スカラーとしてください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector opts.resid must be "
+"N by 1.\n"
+msgstr "%s: 入力引数 #%d の次元が間違っています: 開始ベクトル opts.resid は N x 1 としてください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be real "
+"for real problems.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: 実数問題の場合, 開始ベクトル opts.resid は実数としてください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be "
+"complex for complex problems.\n"
+msgstr "%s: 入力引数 #%d の型が間違っています: 複素問題の場合, 開始ベクトル opts.resid は複素数としてください.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: n does not match rows number of "
+"matrix A.\n"
+msgstr "%s: 入力引数 #%d の値が間違っています: n が行列Aの行数に一致していません.\n"
+
+#, c-format
+msgid "%s: Wrong type or value for input arguments.\n"
+msgstr "%s: 入力引数の型または値が間違っています.\n"
diff --git a/modules/arnoldi/locales/pl_PL.po b/modules/arnoldi/locales/pl_PL.po
new file mode 100755
index 000000000..93c047e82
--- /dev/null
+++ b/modules/arnoldi/locales/pl_PL.po
@@ -0,0 +1,351 @@
+# Polish 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: 2012-10-25 20:58+0000\n"
+"Last-Translator: Grzegorz Szostek <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 "%s: Wrong type for argument #%d: A real expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: the computation is already terminated\n"
+msgstr "%s: obliczenia są już zakończone\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument %s: An array of size %d expected.\n"
+msgstr ""
+"%s: Nieprawidłowy rozmiar parametru wejściowego %s: oczekiwana tablica o "
+"rozmiarze %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"
+msgstr ""
+"%s: Nieprawidłowy rozmiar parametru wejściowego %s: oczekiwana macierz o "
+"wymiarach %d%d.\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s: Nie można odczytać argumentu wejściowego #%d.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: An empty matrix or full or sparse "
+"square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A scalar expected.\n"
+msgstr ""
+"%s: Nieprawidłowy typ argumentu wejściowego nr %d: oczekiwano skalara.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: k must be a positive integer.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: k must be in the range 1 to N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+" "
+msgstr ""
+
+#, c-format
+msgid "%s: Invalid sigma value for complex or non symmetric problem.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Invalid sigma value for real symmetric problem.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: sigma must be a real.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer positive "
+"value.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a real scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar or a "
+"boolean.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s must be %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: B is not positive definite. Try with sigma='SM' or sigma=scalar.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: If opts.cholB is true, B should be upper triangular.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be real for real "
+"problems.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: An integer expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, NCV "
+"must be k < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For complex problems, NCV must be k "
+"+ 1 < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be an integer in the range 1 to N - 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be an integer in the range 1 to N - 2.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Error with input argument #%d: B is not positive definite. Try with "
+"sigma='SM' or sigma=scalar.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: info = %d \n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: unknown mode returned.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr ""
+
+#, c-format
+msgid "%s : Wrong number of input arguments : %d to %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A full or sparse square matrix or a "
+"function expected"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A positive integer expected if the "
+"first input argument is a function."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A structure expected"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument: If A is a matrix, use opts with tol, "
+"maxiter, ncv, resid, cholB"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong dimension for input argument #%d: %s must be 1 by 1 size.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV < N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be complex for "
+"complex problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: if opts.cholB is true, B must be "
+"upper triangular.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Impossible to use the Cholesky factorization with complex sparse "
+"matrices.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: info = %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: n must be a positive integer.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be in the range 1 to N - 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be in the range 1 to N - 2.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s, %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector opts.resid must be "
+"N by 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be real "
+"for real problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be "
+"complex for complex problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: n does not match rows number of "
+"matrix A.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type or value for input arguments.\n"
+msgstr ""
diff --git a/modules/arnoldi/locales/pt_BR.po b/modules/arnoldi/locales/pt_BR.po
new file mode 100755
index 000000000..ebc9c2763
--- /dev/null
+++ b/modules/arnoldi/locales/pt_BR.po
@@ -0,0 +1,350 @@
+# Brazilian Portuguese 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: 2012-10-29 12:06+0000\n"
+"Last-Translator: Henrique Andrade <Unknown>\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 "%s: Wrong type for argument #%d: A real expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: the computation is already terminated\n"
+msgstr "%s: o cálculo já terminou\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument %s: An array of size %d expected.\n"
+msgstr ""
+"%s: Tamanho errado para o argumento de entrada %s: Esperava-se um vetor de "
+"tamanho %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"
+msgstr ""
+"%s: Tamanho errado para o argumento de entrada %s: Esperava-se uma matriz de "
+"%dx%d.\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s: Não foi possível ler o argumento de entrada #%d.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: An empty matrix or full or sparse "
+"square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: k must be a positive integer.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: k must be in the range 1 to N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+" "
+msgstr ""
+
+#, c-format
+msgid "%s: Invalid sigma value for complex or non symmetric problem.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Invalid sigma value for real symmetric problem.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: sigma must be a real.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer positive "
+"value.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a real scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar or a "
+"boolean.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s must be %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: B is not positive definite. Try with sigma='SM' or sigma=scalar.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: If opts.cholB is true, B should be upper triangular.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be real for real "
+"problems.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: An integer expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, NCV "
+"must be k < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For complex problems, NCV must be k "
+"+ 1 < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be an integer in the range 1 to N - 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be an integer in the range 1 to N - 2.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Error with input argument #%d: B is not positive definite. Try with "
+"sigma='SM' or sigma=scalar.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: info = %d \n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: unknown mode returned.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr ""
+
+#, c-format
+msgid "%s : Wrong number of input arguments : %d to %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A full or sparse square matrix or a "
+"function expected"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A positive integer expected if the "
+"first input argument is a function."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A structure expected"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument: If A is a matrix, use opts with tol, "
+"maxiter, ncv, resid, cholB"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong dimension for input argument #%d: %s must be 1 by 1 size.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV < N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be complex for "
+"complex problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: if opts.cholB is true, B must be "
+"upper triangular.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Impossible to use the Cholesky factorization with complex sparse "
+"matrices.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: info = %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: n must be a positive integer.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be in the range 1 to N - 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be in the range 1 to N - 2.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s, %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector opts.resid must be "
+"N by 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be real "
+"for real problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be "
+"complex for complex problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: n does not match rows number of "
+"matrix A.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type or value for input arguments.\n"
+msgstr ""
diff --git a/modules/arnoldi/locales/ru_RU.po b/modules/arnoldi/locales/ru_RU.po
new file mode 100755
index 000000000..92785ceef
--- /dev/null
+++ b/modules/arnoldi/locales/ru_RU.po
@@ -0,0 +1,440 @@
+# Russian 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: 2014-03-06 14:22+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 "%s: Wrong type for argument #%d: A real expected.\n"
+msgstr "%s: Неверный тип аргумента №%d: ожидалось вещественное число.\n"
+
+#, c-format
+msgid "%s: the computation is already terminated\n"
+msgstr "%s: вычисление уже заверешено\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument %s: An array of size %d expected.\n"
+msgstr ""
+"%s: Неверный размер входного параметра %s: ожидался массив размером %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"
+msgstr ""
+"%s: Неверный размер входного параметра %s: ожидалась (%d x %d)-матрица.\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: A string expected.\n"
+msgstr "%s: Неверный тип аргумента №%d: ожидалась строка.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s: Не могу прочитать входной аргумент №%d.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: ожидалась квадратная матрица.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: An empty matrix or full or sparse "
+"square matrix expected.\n"
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: ожидалась пустая, полная или "
+"разрежённая квадратная матрица.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"
+msgstr ""
+"%s: Неверный размер входного аргумента №%d: B должно быть того же размера, "
+"что и A.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A scalar expected.\n"
+msgstr "%s: Неверный тип входного аргумента №%d: ожидался скаляр.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: k must be a positive integer.\n"
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: k должна быть положительным целым "
+"числом.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: k must be in the range 1 to N.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: k должна быть в диапазоне от 1 "
+"до N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: Нераспознанное значение "
+"сигма.\n"
+" Значение сигма должно быть одним из '%s', '%s', '%s', '%s' или '%s'.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+" "
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: Нераспознанное значение "
+"сигма.\n"
+" Значение сигма должно быть одним из '%s', '%s', '%s', '%s', '%s' или '%s'.\n"
+" "
+
+#, c-format
+msgid "%s: Invalid sigma value for complex or non symmetric problem.\n"
+msgstr ""
+"%s: Некорректное значение сигма для комплексной или несимметричной задачи.\n"
+
+#, c-format
+msgid "%s: Invalid sigma value for real symmetric problem.\n"
+msgstr ""
+"%s: Некорректное значение сигма для вещественной симметричной задачи.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: sigma must be a real.\n"
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: сигма должна быть вещественной.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a scalar.\n"
+msgstr "%s: Неверный тип входного аргумента №%d: %s должен быть скаляром.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer positive "
+"value.\n"
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: %s должен быть целым положительным "
+"значением.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a real scalar.\n"
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: %s должен быть вещественным "
+"скаляром.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: %s должно быть целочисленным "
+"скаляром.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar or a "
+"boolean.\n"
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: %s должен быть целочисленным "
+"скаляром или логическим значением.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s must be %s or %s.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: %s должен быть %s или %s.\n"
+
+#, c-format
+msgid ""
+"%s: B is not positive definite. Try with sigma='SM' or sigma=scalar.\n"
+msgstr ""
+"%s: B не является положительно определённой. Попробуйте sigma='SM' или "
+"sigma=scalar.\n"
+
+#, c-format
+msgid "%s: If opts.cholB is true, B should be upper triangular.\n"
+msgstr ""
+"%s: Если opts.cholB - ИСТИНА, то B должна быть верхней треугольной.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: ожидалась вещественная или "
+"комплексная матрица.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"
+msgstr ""
+"%s: Неверный размер входного аргумента №%d: Начальный вектор %s должнет быть "
+"размером N на 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be real for real "
+"problems.\n"
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: Начальный вектор %s должен быть "
+"вещественным для вещественных задач.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: An integer expected.\n"
+msgstr "%s: Неверный тип входного параметра №%d: ожидалось целое число.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, NCV "
+"must be k < NCV <= N.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: Для вещественных симметричных "
+"задач NCV должно быть k < NCV <= N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV <= N.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: Для вещественных "
+"несимметричных задач NCV должно быть k + 2 < NCV <= N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For complex problems, NCV must be k "
+"+ 1 < NCV <= N.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: Для комплексных задач NCV "
+"должно быть k + 1 < NCV <= N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be an integer in the range 1 to N - 1.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: Для вещественных симметричных "
+"задач значение k должно быть целым в диапазоне от 1 до N - 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be an integer in the range 1 to N - 2.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: Для вещественных "
+"несимметричных задач значение k должно быть целым в диапазоне от 1 до N - "
+"2.\n"
+
+#, c-format
+msgid ""
+"%s: Error with input argument #%d: B is not positive definite. Try with "
+"sigma='SM' or sigma=scalar.\n"
+msgstr ""
+"%s: Ошибка входного аргумента №%d: B не является положительно определённой. "
+"Попробуйте sigma='SM' or sigma=scalar.\n"
+
+#, c-format
+msgid "%s: Error with %s: info = %d \n"
+msgstr "%s: Ошибка в %s: info = %d \n"
+
+#, c-format
+msgid "%s: Error with %s: unknown mode returned.\n"
+msgstr "%s: Ошибка в %s: возвращён неизвестный режим.\n"
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr "%s: Ошибка распределения памяти.\n"
+
+#, c-format
+msgid "%s : Wrong number of input arguments : %d to %d expected.\n"
+msgstr ""
+"%s : Неверное количество входных аргументов: ожидалось от %d до %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A full or sparse square matrix or a "
+"function expected"
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: ожидалась полная или разрежённая "
+"квадратная матрица, либо функция"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A positive integer expected if the "
+"first input argument is a function."
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: ожидалось положительное целое "
+"число, если первый входной аргумент является функцией."
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A structure expected"
+msgstr "%s: Неверный тип входного аргумента №%d: ожидалась структура"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument: If A is a matrix, use opts with tol, "
+"maxiter, ncv, resid, cholB"
+msgstr ""
+"%s: Неверный тип входного аргумента: если A является матрицей, то "
+"используйте opts с tol, maxiter, ncv, resid, cholB"
+
+#, 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: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: Нераспознанное значение "
+"сигма.\n"
+" Значение сигма должно быть одним из '%s', '%s', '%s', '%s', '%s' или '%s'.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: ожидался вещественный скаляр или "
+"строка.\n"
+
+#, c-format
+msgid "%s: Wrong dimension for input argument #%d: %s must be 1 by 1 size.\n"
+msgstr ""
+"%s: Неверный размер входного аргумента №%d: %s должен быть размером 1 на 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV < N.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: Для вещественных "
+"несимметричных задач NCV должно быть k + 2 < NCV < N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be complex for "
+"complex problems.\n"
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: начальный вектор %s должен быть "
+"комплексным для комплексных задач.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: if opts.cholB is true, B must be "
+"upper triangular.\n"
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: если opts.cholB - ИСТИНА, то B "
+"должна быть верхней треугольной.\n"
+
+#, c-format
+msgid ""
+"%s: Impossible to use the Cholesky factorization with complex sparse "
+"matrices.\n"
+msgstr ""
+"%s: Невозможно использовать разложение Холецкого с комплексными разрежёнными "
+"матрицами.\n"
+
+#, c-format
+msgid "%s: Error with %s: info = %d.\n"
+msgstr "%s: Ошибка в %s: info = %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: n must be a positive integer.\n"
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: n должно быть положительным целым "
+"числом.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be in the range 1 to N - 1.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: Для вещественных симметричных "
+"задач k должно быть в диапазоне от 1 до N - 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be in the range 1 to N - 2.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: для вещественных "
+"несимметричных или комплексных задач k должна быть в диапазоне от 1 до N - "
+"2.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a scalar expected.\n"
+msgstr "%s: Неверный тип входного аргумента №%d: ожидался скаляр.\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: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s or %s.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: Неопознанное значение sigma.\n"
+" Sigma должна быть одной из %s, %s, %s, %s или %s.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s, %s or %s.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: Неопознанное значение sigma.\n"
+" Sigma должна быть одной из %s, %s, %s, %s, %s или %s.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+"%s: Неверный размер входного аргумента №%d: %s должно быть целочисленным "
+"скаляром.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector opts.resid must be "
+"N by 1.\n"
+msgstr ""
+"%s: Неверные размеры входного аргумента №%d: начальный вектор opts.resid "
+"должен быть N на 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be real "
+"for real problems.\n"
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: начальный вектор opts.resid должен "
+"быть вещественным для вещественных задач.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be "
+"complex for complex problems.\n"
+msgstr ""
+"%s: Неверный тип входного аргумента №%d: начальный вектор opts.resid должен "
+"быть комплексным для комплексных задач.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: n does not match rows number of "
+"matrix A.\n"
+msgstr ""
+"%s: Неверное значение входного аргумента №%d: n не соответствует количеству "
+"строк в матрице A.\n"
+
+#, c-format
+msgid "%s: Wrong type or value for input arguments.\n"
+msgstr "%s: Неверный тип или значения входных аргументов.\n"
diff --git a/modules/arnoldi/locales/uk_UA.po b/modules/arnoldi/locales/uk_UA.po
new file mode 100755
index 000000000..c936cee2f
--- /dev/null
+++ b/modules/arnoldi/locales/uk_UA.po
@@ -0,0 +1,450 @@
+# 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@ukr.net>, 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: 2014-02-23 07:25+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 "%s: Wrong type for argument #%d: A real expected.\n"
+msgstr ""
+"%s: помилковий тип параметра №%d: мало бути використано дійсне число.\n"
+
+#, c-format
+msgid "%s: the computation is already terminated\n"
+msgstr "%s: обчислення вже перервано.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument %s: An array of size %d expected.\n"
+msgstr ""
+"%s: помилкова розмірність вхідного параметра %s: мав бути масив розмірності "
+"%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"
+msgstr ""
+"%s: помилкова розмірність вхідного параметра %s: мала бути матриця "
+"розмірності %dx%d.\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: A string expected.\n"
+msgstr ""
+"%s: помилковий тип параметра №%d: слід використовувати рядок з одного "
+"символу.\n"
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s: не вдалося прочитати вхідний параметр №%d.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: слід використовувати квадратну "
+"матрицю.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: An empty matrix or full or sparse "
+"square matrix expected.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: слід використовувати порожню, "
+"заповнену або розріджену квадратну матрицю.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"
+msgstr ""
+"%s: помилкова розмірність вхідного параметра №%d: B має бути одного розміру "
+"з A.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A scalar expected.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: слід використовувати скалярний "
+"тип.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: k must be a positive integer.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: k має бути додатним цілим "
+"числом.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: k must be in the range 1 to N.\n"
+msgstr ""
+"%s: помилкове значення вхідного параметра №%d: k має належати діапазону від "
+"1 до N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+"%s: Помилкове значення вхідного параметра №%d: нерозпізнане значення σ.\n"
+" σ повинне мати одне з таких значень: «%s», «%s», «%s», «%s» або «%s».\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+" "
+msgstr ""
+"%s: Помилкове значення вхідного параметра №%d: нерозпізнане значення σ.\n"
+" σ повинне мати одне з таких значень: «%s», «%s», «%s», «%s», «%s» або "
+"«%s».\n"
+" "
+
+#, c-format
+msgid "%s: Invalid sigma value for complex or non symmetric problem.\n"
+msgstr ""
+"%s: некоректне значення σ для комплексної або несиметричної задачі.\n"
+
+#, c-format
+msgid "%s: Invalid sigma value for real symmetric problem.\n"
+msgstr "%s: некоректне значення σ для дійсної симетричної задачі.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: sigma must be a real.\n"
+msgstr "%s: помилковий тип вхідного параметра №%d: σ має бути дійсним.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a scalar.\n"
+msgstr "%s: помилковий тип вхідного параметра №%d: %s має бути числом.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer positive "
+"value.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: %s має бути додатним цілим "
+"значенням.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a real scalar.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: %s має бути дійсним числом.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: %s має бути цілим числом.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar or a "
+"boolean.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: %s має бути цілим числом або "
+"булевим значенням.\n"
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s must be %s or %s.\n"
+msgstr ""
+"%s: помилкове значення вхідного параметра №%d: для %s слід використовувати "
+"%s або %s.\n"
+
+#, c-format
+msgid ""
+"%s: B is not positive definite. Try with sigma='SM' or sigma=scalar.\n"
+msgstr ""
+"%s: B не є додатньовизначеною. Спробуйте з sigma='SM' або sigma=скаляр.\n"
+
+#, c-format
+msgid "%s: If opts.cholB is true, B should be upper triangular.\n"
+msgstr "%s: якщо opts.cholB дорівнює true, B має бути верхньою трикутною.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: слід використовувати матрицю з "
+"дійсних або комплексних значень.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"
+msgstr ""
+"%s: помилкова розмірність вхідного параметра №%d: початковий вектор %s "
+"повинен мати розмірність N на 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be real for real "
+"problems.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: початковий вектор %s має бути "
+"дійсним у задачах з дійсними розв’язками.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: An integer expected.\n"
+msgstr "%s: помилковий тип вхідного параметра №%d: мало бути ціле число.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, NCV "
+"must be k < NCV <= N.\n"
+msgstr ""
+"%s: помилкове значення вхідного параметра №%d: у дійсних симетричних задачах "
+"NCV має задовольняти нерівність k < NCV <= N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV <= N.\n"
+msgstr ""
+"%s: помилкове значення вхідного параметра №%d: у дійсних несиметричних "
+"задачах NCV має задовольняти нерівність k + 2 < NCV <= N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For complex problems, NCV must be k "
+"+ 1 < NCV <= N.\n"
+msgstr ""
+"%s: помилкове значення вхідного параметра №%d: у комплексних задачах NCV має "
+"задовольняти нерівність k + 1 < NCV <= N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be an integer in the range 1 to N - 1.\n"
+msgstr ""
+"%s: помилкове значення вхідного параметра №%d: у дійсних симетричних задачах "
+"k має бути цілим числом і належати діапазону від 1 до N - 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be an integer in the range 1 to N - 2.\n"
+msgstr ""
+"%s: помилкове значення вхідного параметра №%d: у дійсних несиметричних або "
+"комплексних задачах k має бути цілим числом і належати діапазону від 1 до N -"
+" 2.\n"
+
+#, c-format
+msgid ""
+"%s: Error with input argument #%d: B is not positive definite. Try with "
+"sigma='SM' or sigma=scalar.\n"
+msgstr ""
+"%s: помилка у вхідному параметрі №%d: B не є додатньовизначеною. Спробуйте з "
+"sigma='SM' або sigma=скаляр.\n"
+
+#, c-format
+msgid "%s: Error with %s: info = %d \n"
+msgstr "%s: помилка у %s: інформація = %d \n"
+
+#, c-format
+msgid "%s: Error with %s: unknown mode returned.\n"
+msgstr "%s: помилка у %s: повернуто невідомий режим.\n"
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr "%s: помилка під час спроби виділення пам’яті.\n"
+
+#, c-format
+msgid "%s : Wrong number of input arguments : %d to %d expected.\n"
+msgstr ""
+"%s: помилкова кількість вхідних параметрів: слід використовувати від %d до "
+"%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A full or sparse square matrix or a "
+"function expected"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: слід використовувати заповнену "
+"або розріджену квадратну матрицю або функцію."
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A positive integer expected if the "
+"first input argument is a function."
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: слід використовувати додатне ціле "
+"число, якщо першим вхідним параметром є функція.\n"
+"."
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A structure expected"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: слід використовувати структуру."
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument: If A is a matrix, use opts with tol, "
+"maxiter, ncv, resid, cholB"
+msgstr ""
+"%s: помилковий тип вхідного параметра: якщо A є матрицею, opts має містити "
+"tol, maxiter, ncv, resid, cholB"
+
+#, 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: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+"%s: Помилкове значення вхідного параметра №%d: нерозпізнане значення σ.\n"
+" σ повинне мати одне з таких значень: «%s», «%s», «%s», «%s», «%s» або "
+"«%s».\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: слід використовувати тип «string» "
+"або дійсний скалярний тип.\n"
+
+#, c-format
+msgid "%s: Wrong dimension for input argument #%d: %s must be 1 by 1 size.\n"
+msgstr ""
+"%s: помилкова розмірність вхідного параметра №%d: %s має бути розміром 1 на "
+"1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV < N.\n"
+msgstr ""
+"%s: помилкове значення вхідного параметра №%d: у дійсних несиметричних "
+"задачах NCV має задовольняти нерівність k + 2 < NCV < N.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be complex for "
+"complex problems.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: у комплексних задачах початковий "
+"вектор %s має бути комплексним.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: if opts.cholB is true, B must be "
+"upper triangular.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: якщо opts.cholB має значення "
+"true, B має бути верхньою трикутною.\n"
+
+#, c-format
+msgid ""
+"%s: Impossible to use the Cholesky factorization with complex sparse "
+"matrices.\n"
+msgstr ""
+"%s: факторизацію Холецького не можна використовувати для комплексних "
+"розріджених матриць.\n"
+
+#, c-format
+msgid "%s: Error with %s: info = %d.\n"
+msgstr "%s: помилка у %s: інформація = %d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: n must be a positive integer.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: n має бути додатним цілим "
+"числом.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be in the range 1 to N - 1.\n"
+msgstr ""
+"%s: помилкове значення вхідного параметра №%d: у дійсних симетричних задачах "
+"k має належати діапазону від 1 до N - 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be in the range 1 to N - 2.\n"
+msgstr ""
+"%s: помилкове значення вхідного параметра №%d: у дійсних несиметричних або "
+"комплексних задачах k має належати діапазону від 1 до N - 2.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a scalar expected.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: слід використовувати скалярний "
+"тип.\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: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s or %s.\n"
+msgstr ""
+"%s: помилкове значення вхідного параметра №%d: невідоме значення σ.\n"
+" σ має бути одним з таких значень: %s, %s, %s, %s або %s.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s, %s or %s.\n"
+msgstr ""
+"%s: помилкове значення вхідного параметра №%d: невідоме значення σ.\n"
+" σ має бути одним з таких значень: %s, %s, %s, %s, %s або %s.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+"%s: помилкова розмірність вхідного параметра №%d: %s має бути цілим числом.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector opts.resid must be "
+"N by 1.\n"
+msgstr ""
+"%s: помилкова розмірність вхідного параметра №%d: початковий вектор "
+"opts.resid повинен мати розмірність N на 1.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be real "
+"for real problems.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: початковий вектор opts.resid має "
+"бути дійсним у дійсних задачах.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be "
+"complex for complex problems.\n"
+msgstr ""
+"%s: помилковий тип вхідного параметра №%d: для задач у комплексних числах "
+"початковий вектор opts.resid має бути комплексним.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: n does not match rows number of "
+"matrix A.\n"
+msgstr ""
+"%s: помилкове значення вхідного параметра №%d: n не збігається з кількістю "
+"рядків матриці A.\n"
+
+#, c-format
+msgid "%s: Wrong type or value for input arguments.\n"
+msgstr "%s: помилковий тип або значення вхідних параметрів.\n"
diff --git a/modules/arnoldi/locales/zh_CN.po b/modules/arnoldi/locales/zh_CN.po
new file mode 100755
index 000000000..454b0189d
--- /dev/null
+++ b/modules/arnoldi/locales/zh_CN.po
@@ -0,0 +1,346 @@
+# Simplified Chinese 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: 2009-10-24 14:41+0000\n"
+"Last-Translator: Shiqi Yu <shiqi.yu@gmail.com>\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 "%s: Wrong type for argument #%d: A real expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: the computation is already terminated\n"
+msgstr "%s:计算已经结束\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument %s: An array of size %d expected.\n"
+msgstr "%s:输入参数%s的大小错误:应该是大小为 %d 的数组。\n"
+
+#, c-format
+msgid ""
+"%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"
+msgstr "%s:输入参数%s的大小错误:应该是大小为 %d x %d。\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: An empty matrix or full or sparse "
+"square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: k must be a positive integer.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: k must be in the range 1 to N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+" "
+msgstr ""
+
+#, c-format
+msgid "%s: Invalid sigma value for complex or non symmetric problem.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Invalid sigma value for real symmetric problem.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: sigma must be a real.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer positive "
+"value.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a real scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar or a "
+"boolean.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s must be %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: B is not positive definite. Try with sigma='SM' or sigma=scalar.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: If opts.cholB is true, B should be upper triangular.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be real for real "
+"problems.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: An integer expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, NCV "
+"must be k < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For complex problems, NCV must be k "
+"+ 1 < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be an integer in the range 1 to N - 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be an integer in the range 1 to N - 2.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Error with input argument #%d: B is not positive definite. Try with "
+"sigma='SM' or sigma=scalar.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: info = %d \n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: unknown mode returned.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr ""
+
+#, c-format
+msgid "%s : Wrong number of input arguments : %d to %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A full or sparse square matrix or a "
+"function expected"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A positive integer expected if the "
+"first input argument is a function."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A structure expected"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument: If A is a matrix, use opts with tol, "
+"maxiter, ncv, resid, cholB"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong dimension for input argument #%d: %s must be 1 by 1 size.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV < N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be complex for "
+"complex problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: if opts.cholB is true, B must be "
+"upper triangular.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Impossible to use the Cholesky factorization with complex sparse "
+"matrices.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: info = %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: n must be a positive integer.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be in the range 1 to N - 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be in the range 1 to N - 2.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s, %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector opts.resid must be "
+"N by 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be real "
+"for real problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be "
+"complex for complex problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: n does not match rows number of "
+"matrix A.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type or value for input arguments.\n"
+msgstr ""
diff --git a/modules/arnoldi/locales/zh_TW.po b/modules/arnoldi/locales/zh_TW.po
new file mode 100755
index 000000000..4b48bc775
--- /dev/null
+++ b/modules/arnoldi/locales/zh_TW.po
@@ -0,0 +1,348 @@
+# Traditional Chinese 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-04 03:58+0000\n"
+"Last-Translator: Alvin Tseng <Unknown>\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"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: A real expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: the computation is already terminated\n"
+msgstr "%s:計算結果已經被中止.\n"
+
+#, c-format
+msgid "%s: Wrong size for input argument %s: An array of size %d expected.\n"
+msgstr "%s:輸入的參數%s容量錯誤: 指定一非正常的陣列尺寸%d.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"
+msgstr "%s:輸入的參數%s容量錯誤: 指定一非正常的矩陣尺寸%dx%d.\n"
+
+#, c-format
+msgid "%s: Wrong type for argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Can not read input argument #%d.\n"
+msgstr "%s: 無法讀取第 #%d 個參數值.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A square matrix expected.\n"
+msgstr "%s: 輸入引數 #%d 型態錯誤: 應爲方陣.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: An empty matrix or full or sparse "
+"square matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"
+msgstr "%s: 輸入引數 #%d 的秩錯誤: B 的大小必需與A相同.\n"
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A scalar expected.\n"
+msgstr "%s: 第 %d 個輸入參數型態錯誤: 應為純量.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: k must be a positive integer.\n"
+msgstr "%s: 輸入引數 #%d 型態錯誤: k 必需爲正整數.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: k must be in the range 1 to N.\n"
+msgstr "%s: 輸入引數 #%d 數值錯誤: k 必需在 1 到 N 的範圍之間.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+"%s: 輸入引數 #%d 的數值錯誤: 無法識別sigma 值.\n"
+" Sigma 必需是 '%s', '%s', '%s', '%s' or '%s' 其中一個.\n"
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+" "
+msgstr ""
+
+#, c-format
+msgid "%s: Invalid sigma value for complex or non symmetric problem.\n"
+msgstr "%s: 複數或非對稱問題的sigma值無效.\n"
+
+#, c-format
+msgid "%s: Invalid sigma value for real symmetric problem.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: sigma must be a real.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer positive "
+"value.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: %s must be a real scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: %s must be an integer scalar or a "
+"boolean.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong value for input argument #%d: %s must be %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: B is not positive definite. Try with sigma='SM' or sigma=scalar.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: If opts.cholB is true, B should be upper triangular.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be real for real "
+"problems.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: An integer expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, NCV "
+"must be k < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For complex problems, NCV must be k "
+"+ 1 < NCV <= N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be an integer in the range 1 to N - 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be an integer in the range 1 to N - 2.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Error with input argument #%d: B is not positive definite. Try with "
+"sigma='SM' or sigma=scalar.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: info = %d \n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: unknown mode returned.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Memory allocation error.\n"
+msgstr ""
+
+#, c-format
+msgid "%s : Wrong number of input arguments : %d to %d expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A full or sparse square matrix or a "
+"function expected"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: A positive integer expected if the "
+"first input argument is a function."
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A structure expected"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument: If A is a matrix, use opts with tol, "
+"maxiter, ncv, resid, cholB"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: A string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong dimension for input argument #%d: %s must be 1 by 1 size.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric problems, NCV "
+"must be k + 2 < NCV < N.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector %s must be complex for "
+"complex problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: if opts.cholB is true, B must be "
+"upper triangular.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Impossible to use the Cholesky factorization with complex sparse "
+"matrices.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Error with %s: info = %d.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: n must be a positive integer.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real symmetric problems, k must "
+"be in the range 1 to N - 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: For real non symmetric or complex "
+"problems, k must be in the range 1 to N - 2.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a scalar expected.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type for input argument #%d: a string expected.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: Unrecognized sigma value.\n"
+" Sigma must be one of %s, %s, %s, %s, %s or %s.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: %s must be an integer scalar.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong dimension for input argument #%d: Start vector opts.resid must be "
+"N by 1.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be real "
+"for real problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong type for input argument #%d: Start vector opts.resid must be "
+"complex for complex problems.\n"
+msgstr ""
+
+#, c-format
+msgid ""
+"%s: Wrong value for input argument #%d: n does not match rows number of "
+"matrix A.\n"
+msgstr ""
+
+#, c-format
+msgid "%s: Wrong type or value for input arguments.\n"
+msgstr ""
diff --git a/modules/arnoldi/macros/buildmacros.bat b/modules/arnoldi/macros/buildmacros.bat
new file mode 100755
index 000000000..6f1e82dfc
--- /dev/null
+++ b/modules/arnoldi/macros/buildmacros.bat
@@ -0,0 +1,11 @@
+rem Scilab ( http://mwww.scilab.org/ ) - This file is part of Scilab
+rem Copyright (C) ????-2008 - INRIA - Allan CORNET
+rem
+rem This file must be used under the terms of the CeCILL.
+rem This source file is licensed as described in the file COPYING, which
+rem you should have received as part of this distribution. The terms
+rem are also available at
+rem http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+
+@..\..\..\bin\scilex -nwni -ns -e exec('buildmacros.sce');quit;
diff --git a/modules/arnoldi/macros/buildmacros.sce b/modules/arnoldi/macros/buildmacros.sce
new file mode 100755
index 000000000..a7516f6a9
--- /dev/null
+++ b/modules/arnoldi/macros/buildmacros.sce
@@ -0,0 +1,17 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2006-2008 - 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("arnoldilib","SCI/modules/arnoldi/macros",%f,%t);
+//------------------------------------
diff --git a/modules/arnoldi/macros/cleanmacros.bat b/modules/arnoldi/macros/cleanmacros.bat
new file mode 100755
index 000000000..6294097b5
--- /dev/null
+++ b/modules/arnoldi/macros/cleanmacros.bat
@@ -0,0 +1,13 @@
+rem Scilab ( http://mwww.scilab.org/ ) - This file is part of Scilab
+rem Copyright (C) ????-2008 - INRIA - Allan CORNET
+rem
+rem This file must be used under the terms of the CeCILL.
+rem This source file is licensed as described in the file COPYING, which
+rem you should have received as part of this distribution. The terms
+rem are also available at
+rem http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+
+@del *.bin 2>NUL
+@del lib 2>NUL
+@del names 2>NUL \ No newline at end of file
diff --git a/modules/arnoldi/macros/eigs.bin b/modules/arnoldi/macros/eigs.bin
new file mode 100755
index 000000000..b2d76ccd0
--- /dev/null
+++ b/modules/arnoldi/macros/eigs.bin
Binary files differ
diff --git a/modules/arnoldi/macros/eigs.sci b/modules/arnoldi/macros/eigs.sci
new file mode 100755
index 000000000..4ae8ef716
--- /dev/null
+++ b/modules/arnoldi/macros/eigs.sci
@@ -0,0 +1,1123 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// 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 [d, v] = eigs(varargin)
+ lhs = argn(1);
+ rhs = argn(2);
+ if(rhs == 0 | rhs > 6)
+ error(msprintf(gettext("%s : Wrong number of input arguments : %d to %d expected.\n"), "eigs", 1, 6));
+ end
+
+ if(rhs >= 1)
+ if((typeof(varargin(1)) <> "constant") & typeof(varargin(1)) <> "function" & (typeof(varargin(1)) <> "sparse") | varargin(1) == [])
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: A full or sparse square matrix or a function expected"), "eigs", 1));
+ end
+ end
+
+ if(rhs >= 1 & typeof(varargin(1)) <> "function")
+ if(isreal(varargin(1)))
+ resid = rand(size(varargin(1), "r"), 1);
+ else
+ resid = complex(rand(size(varargin(1), "r"), 1), rand(size(varargin(1), "r"), 1));
+ end
+ A = varargin(1);
+ end
+
+ if(rhs > 1 & typeof(varargin(1)) == "function")
+ if(size(varargin(2)) <> 1)
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: A positive integer expected if the first input argument is a function."), "eigs",2));
+ end
+ a_real = 1;
+ a_sym = 0;
+ resid = rand(varargin(2),1);
+ info = 0;
+ Af = varargin(1);
+ Asize = varargin(2);
+ end
+
+ maxiter = 300;
+ tol = %eps;
+ ncv = [];
+ cholB = 0;
+ info = 0;
+ B = [];
+ sigma = "LM";
+ if(rhs == 1)
+ if(~issparse(varargin(1)))
+ info = int32(0);
+ end
+ else
+ if(~issparse(varargin(1)) & ~issparse(varargin(2)))
+ info = int32(0);
+ end
+ end
+
+ if(typeof(varargin(1)) <> "function")
+ select rhs
+ case 1
+ nev = min(size(A, "r"), 6);
+ case 2
+ nev = min(size(A, "r"), 6);
+ B = varargin(2);
+ case 3
+ B = varargin(2);
+ nev = varargin(3);
+ case 4
+ B = varargin(2);
+ nev = varargin(3);
+ sigma = varargin(4);
+ case 5
+ B = varargin(2);
+ nev = varargin(3);
+ sigma = varargin(4);
+ opts = varargin(5);
+ if(~isstruct(opts))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: A structure expected"), "eigs", 5));
+ end
+ if(size(intersect(fieldnames(opts), ["tol", "maxiter", "ncv", "resid", "cholB"]), "*") < size(fieldnames(opts),"*"))
+ error(msprintf(gettext("%s: Wrong type for input argument: If A is a matrix, use opts with tol, maxiter, ncv, resid, cholB"), "eigs"));
+ end
+ if(isfield(opts, "tol"))
+ tol = opts.tol;
+ end
+ if(isfield(opts, "maxiter"))
+ maxiter = opts.maxiter;
+ end
+ if(isfield(opts, "ncv"))
+ ncv = opts.ncv;
+ end
+ if(isfield(opts, "resid"))
+ resid = opts.resid;
+ if(issparse(varargin(1)) | issparse(varargin(2)))
+ info = 1;
+ else
+ info = int32(1);
+ end
+ if(and(resid==0))
+ if(issparse(varargin(1)) | issparse(varargin(2)))
+ info = 0;
+ else
+ info = int32(0);
+ end
+ end
+ end
+ if(isfield(opts,"cholB"))
+ cholB = opts.cholB;
+ end
+ end
+
+ select lhs
+ case 1
+ if(issparse(A) | issparse(B))
+ d = speigs(A, B, nev, sigma, maxiter, tol, ncv, cholB, resid, info);
+ else
+ d = %_eigs(A, B, nev, sigma, maxiter, tol, ncv, cholB, resid, info);
+ end
+ case 2
+ if(issparse(A) | issparse(B))
+ [d, v] = speigs(A, B, nev, sigma, maxiter, tol, ncv, cholB, resid, info);
+ else
+ [d, v] = %_eigs(A, B, nev, sigma, maxiter, tol, ncv, cholB, resid, info);
+ end
+ end
+ else
+ select rhs
+ case 2
+ nev = min(Asize, 6)
+
+ case 3
+ nev = min(Asize, 6);
+ B = varargin(3);
+
+ case 4
+ B = varargin(3);
+ nev = varargin(4);
+
+ case 5
+ B = varargin(3);
+ nev = varargin(4);
+ sigma = varargin(5);
+
+ case 6
+ B = varargin(3);
+ nev = varargin(4);
+ sigma = varargin(5);
+ opts = varargin(6);
+ if(~isstruct(opts)) then
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: A structure expected"), "eigs",5));
+ end
+ if(size(intersect(fieldnames(opts), ["tol", "maxiter", "ncv", "resid", "cholB", "issym", "isreal"]), "*") < size(fieldnames(opts),"*"))
+ error(msprintf(gettext("%s: Wrong type for input argument: If A is a function, use opts with tol, maxiter, ncv, resid, cholB, issym", "isreal"), "eigs"));
+ end
+ if(isfield(opts,"tol"))
+ tol = opts.tol;
+ end
+ if(isfield(opts,"maxiter"))
+ maxiter = opts.maxiter;
+ end
+ if(isfield(opts, "ncv"))
+ ncv = opts.ncv;
+ end
+ if(isfield(opts,"resid"))
+ resid = opts.resid;
+ info = 1;
+ if(and(resid==0))
+ info = 0;
+ end
+ end
+ if(isfield(opts,"cholB"))
+ cholB = opts.cholB;
+ end
+ if(isfield(opts,"issym"))
+ a_sym = opts.issym;
+ end
+ if(isfield(opts,"isreal"))
+ a_real = opts.isreal;
+ if(~a_real & ~isfield(opts,"resid"))
+ resid = complex(rand(Asize, 1), rand(Asize, 1));
+ end
+ end
+ end
+ select lhs
+ case 1
+ d = feigs(Af, Asize, B, nev, sigma, maxiter, tol, ncv, cholB, resid, info, a_real, a_sym);
+ case 2
+ [d, v] = feigs(Af, Asize, B, nev, sigma, maxiter, tol, ncv, cholB, resid, info, a_real, a_sym);
+ end
+ end
+endfunction
+
+function [res_d, res_v] = speigs(A, %_B, nev, which, maxiter, tol, ncv, cholB, resid, info)
+ lhs = argn(1);
+ rvec = 0;
+ if(lhs > 1)
+ rvec = 1;
+ end
+
+ //**************************
+ //First variable A :
+ //**************************
+ [mA, nA] = size(A);
+
+ //check if A is a square matrix
+ if(mA * nA < 2 | mA <> nA)
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1));
+ end
+
+ //check if A is complex
+ Areal = isreal(A);
+
+ //check if A is symetric
+ Asym = norm(A-A') == 0;
+
+ //*************************
+ //Second variable B :
+ //*************************
+ if((typeof(%_B) <> "constant") & (typeof(%_B) <> "sparse"))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: An empty matrix or full or sparse square matrix expected.\n"), "eigs", 2));
+ end
+ [mB, nB] = size(%_B);
+
+ //Check if B is a square matrix
+ if(mB * nB <> 0 & (mB <> mA | nB <> nA))
+ error(msprintf(gettext("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2));
+ end
+
+ //check if B is complex
+ Breal = isreal(%_B);
+ matB = mB * nB;
+
+ //*************************
+ //NEV :
+ //*************************
+ //verification du type de nev
+ //check if nev is complex?
+ if(typeof(nev) <> "constant") | (~isreal(nev)) | (size(nev,"*") <> 1)
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3));
+ end
+
+ if(nev <> floor(nev) | (nev<=0))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: k must be a positive integer.\n"), "eigs", 3));
+ end
+
+ if(Asym & Areal & Breal)
+ if(nev >= nA)
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: For real symmetric problems, k must be an integer in the range 1 to N - 1.\n"), "eigs", 3));
+ end
+ else
+ if(nev >= nA - 1)
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: For real non symmetric or complex problems, k must be an integer in the range 1 to N - 2.\n"), "eigs", 3));
+ end
+ end
+
+ //*************************
+ //SIGMA AND WHICH :
+ //*************************
+ //Check type
+ select type(which)
+ case 1 then
+ if(typeof(which) <> "constant" | which == [] | isnan(which))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 4));
+ end
+ sigma = which;
+ which = "LM";
+
+ case 10 then
+ [mWHICH, nWHICH] = size(which);
+ if(mWHICH * nWHICH <> 1)
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: A string expected.\n"), "eigs", 4));
+ end
+ if(strcmp(which,"LM") ~= 0 & strcmp(which,"SM") ~= 0 & strcmp(which,"LR") ~= 0 & strcmp(which,"SR") ~= 0 & strcmp(which,"LI") ~= 0 & strcmp(which,"SI") ~= 0 & strcmp(which,"LA") ~= 0 & strcmp(which,"SA") ~= 0 & strcmp(which,"BE") ~= 0)
+ if(Areal & Breal & Asym)
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: Unrecognized sigma value.\n Sigma must be one of ''%s'', ''%s'', ''%s'', ''%s'' or ''%s''.\n"), "eigs", 4, "LM", "SM", "LA", "SA", "BE"));
+ else
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: Unrecognized sigma value.\n Sigma must be one of ''%s'', ''%s'', ''%s'', ''%s'', ''%s'' or ''%s''.\n"), "eigs", 4, "LM", "SM", "LR", "SR", "LI", "SI"));
+ end
+ end
+ if((~Areal | ~Breal | ~Asym) & (strcmp(which,"LA") == 0 | strcmp(which,"SA") == 0 | strcmp(which,"BE") == 0))
+ error(msprintf(gettext("%s: Invalid sigma value for complex or non symmetric problem.\n"), "eigs"));
+ end
+ if(Areal & Breal & Asym & (strcmp(which,"LR") == 0 | strcmp(which,"SR") == 0 | strcmp(which,"LI") == 0 | strcmp(which,"SI") == 0))
+ error(msprintf(gettext("%s: Invalid sigma value for real symmetric problem.\n"), "eigs"));
+ end
+ sigma = 0;
+
+ else
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"), "eigs", 4));
+ end
+
+ if(~Areal | ~Breal)
+ sigma = complex(sigma);
+ end
+
+ //*************************
+ //MAXITER :
+ //*************************
+ if(typeof(maxiter) <> "constant" | ~isreal(maxiter) | size(maxiter, "*") <> 1)
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: %s must be a scalar.\n"), "eigs", 5, "opts.maxiter"));
+ end
+
+ if((maxiter <> floor(maxiter)) | (maxiter <= 0) )
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: %s must be an integer positive value.\n"), "eigs", 5, "opts.maxiter"));
+ end
+
+ //*************************
+ //TOL :
+ //*************************
+ if(typeof(tol) <> "constant" | ~isreal(tol) | isnan(tol))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol"));
+ end
+
+ if(size(tol, "*") <> 1)
+ error(msprintf(gettext("%s: Wrong dimension for input argument #%d: %s must be 1 by 1 size.\n"), "eigs", 6, "opts.tol"));
+ end
+
+ //*************************
+ //NCV :
+ //*************************
+ if(typeof(ncv) <> "constant" | ~isreal(ncv))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv"));
+ end
+
+ if(size(ncv, "*") > 1 | ncv <> floor(ncv) | (ncv <> [] & ncv <= 0))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv"));
+ end
+
+ if(isempty(ncv))
+ if(~Asym & Areal & Breal)
+ ncv = min(max(2*nev+1, 20), nA);
+ else
+ ncv = min(max(2*nev, 20), nA);
+ end
+ else
+ if(ncv <= nev | ncv > nA)
+ if(Asym & Areal & Breal)
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: For real symmetric problems, NCV must be k < NCV <= N.\n"), "eigs", 7));
+ elseif(~Asym & Areal & Breal)
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: For real non symmetric problems, NCV must be k + 2 < NCV < N.\n"), "eigs", 7));
+ else
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: For complex problems, NCV must be k + 1 < NCV <= N.\n"), "eigs", 7));
+ end
+ end
+ end
+
+ //*************************
+ //CHOL :
+ //*************************
+ select typeof(cholB)
+ case "boolean"
+ if and(opts.cholB <> [%f %t]) then
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB","%f", "%t"));
+ end
+ case "constant"
+ //check if chol is complex?
+ if(~isreal(cholB) | size(cholB, "*") <> 1)
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: %s must be an integer scalar or a boolean.\n"), "eigs", 8, "opts.cholB"));
+ end
+
+ if(and(cholB <> [0 1]))
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB","%f", "%t"));
+ end
+ else
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: %s must be an integer scalar or a boolean.\n"), "eigs", 8, "opts.cholB"));
+ end
+
+ //*************************
+ //RESID :
+ //*************************
+ if(typeof(resid) <> "constant")
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"), "eigs", 9));
+ end
+
+ if(size(resid, "*") ~= nA)
+ error(msprintf(gettext("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid"));
+ end
+
+ if(Areal & Breal)
+ //resid complexe ?
+ if(~isreal(resid))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: Start vector %s must be real for real problems.\n"), "eigs", 9, "opts.resid"));
+ end
+ else
+ if(isreal(resid))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: Start vector %s must be complex for complex problems.\n"), "eigs", 9, "opts.resid"));
+ end
+ end
+
+ iparam = zeros(11,1);
+ iparam(1) = 1;
+ iparam(3) = maxiter;
+ iparam(7) = 1;
+
+ ipntr = zeros(14,1);
+
+ //MODE 1, 2, 3, 4, 5
+ if(~strcmp(which,"SM") | sigma <> 0)
+ iparam(7) = 3;
+ which = "LM";
+ end
+
+ //bmat initialization
+ if(matB == 0 | iparam(7) == 1)
+ bmat = "I";
+ else
+ bmat = "G";
+ end
+
+ if(cholB)
+ if(or(triu(%_B) <> %_B))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: if opts.cholB is true, B must be upper triangular.\n"), "eigs", 2));
+ end
+ if(issparse(%_B)) //sparse cholesky decomposition is reversed...
+ Rprime = %_B;
+ R = Rprime';
+ else
+ R = %_B;
+ Rprime = R';
+ end
+ end
+
+ if(~cholB & matB & iparam(7) == 1)
+ if(issparse(%_B) & ~Breal)
+ error(msprintf(gettext("%s: Impossible to use the Cholesky factorization with complex sparse matrices.\n"), "eigs"));
+ else
+ if(issparse(%_B))
+ [R, P] = spchol(%_B);
+ perm = spget(P);
+ perm = perm(:,2);
+ iperm = spget(P');
+ iperm = iperm(:,2);
+ else
+ R = chol(%_B);
+ Rprime = R';
+ end
+ end
+ end
+ if(matB & issparse(%_B) & iparam(7) ==1)
+ Rfact = umf_lufact(R);
+ Rprimefact = umf_lufact(R');
+ end
+
+ //Main
+ howmny = "A";
+ ido = 0;
+ info_eupd = 0;
+ _select = zeros(ncv,1);
+ if(iparam(7) == 3)
+ if(matB == 0)
+ AMSB = A - sigma * speye(nA, nA);
+ else
+ if(cholB)
+ AMSB = A - (sigma * Rprime * R);
+ else
+ AMSB = A - sigma * %_B;
+ end
+ end
+ Lup = umf_lufact(AMSB);
+ end
+
+ if(Areal)
+ if(Asym)
+ lworkl = ncv * ncv + 8 * ncv;
+ v = zeros(nA, ncv);
+ workl = zeros(lworkl, 1);
+ workd = zeros(3 * nA, 1);
+ d = zeros(nev, 1);
+ z = zeros(nA, nev);
+ else
+ lworkl = 3 * ncv * (ncv + 2);
+ v = zeros(nA, ncv);
+ workl = zeros(lworkl, 1);
+ workd = zeros(3 * nA, 1);
+ dr = zeros(nev+1, 1);
+ di = zeros(nev+1, 1);
+ z = zeros(nA, nev + 1);
+ workev = zeros(3 * ncv, 1);
+ end
+ else
+ lworkl = 3 * ncv * ncv + 5 * ncv;
+ v = zeros(nA, ncv) + 0 * %i;
+ workl = zeros(lworkl, 1) + 0 * %i;
+ workd = zeros(3 * nA, 1) + 0 * %i;
+ rwork = zeros(ncv, 1);
+ d = zeros(nev + 1, 1) + 0 * %i;
+ z = zeros(nA, nev) + 0 * %i;
+ workev = zeros(2 * ncv, 1) + 0 * %i;
+ end
+
+ while(ido <> 99)
+ if(Areal & Breal)
+ if(Asym)
+ [ido, resid, v, iparam, ipntr, workd, workl, info] = dsaupd(ido, bmat, nA, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info);
+ if(info < 0)
+ error(msprintf(gettext("%s: Error with %s: info = %d.\n"), "eigs", "DSAUPD", info));
+ end
+ else
+ [ido, resid, v, iparam, ipntr, workd, workl, info] = dnaupd(ido, bmat, nA, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info);
+ if(info < 0)
+ error(msprintf(gettext("%s: Error with %s: info = %d.\n"), "eigs", "DNAUPD", info));
+ end
+ end
+ else
+ [ido, resid, v, iparam, ipntr, workd, workl, rwork, info] = znaupd(ido, bmat, nA, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, rwork, info);
+ if(info < 0)
+ error(msprintf(gettext("%s: Error with %s: info = %d.\n"), "eigs", "ZNAUPD", info));
+ end
+ end
+
+ if(ido == -1 | ido == 1 | ido == 2)
+ if(iparam(7) == 1)
+ if(ido == 2)
+ workd(ipntr(2):ipntr(2)+nA-1) = workd(ipntr(1):ipntr(1)+nA-1);
+ else
+ if(matB == 0)
+ workd(ipntr(2):ipntr(2)+nA-1) = A * workd(ipntr(1):ipntr(1)+nA-1);
+ else
+ if(issparse(%_B))
+ y = umf_lusolve(Rprimefact, workd(ipntr(1):ipntr(1)+nA-1));
+ if(~cholB)
+ y = A * y(perm);
+ y = y(iperm);
+ else
+ y = A * y;
+ end
+ workd(ipntr(2):ipntr(2)+nA-1) = umf_lusolve(Rfact, y);
+ else
+ workd(ipntr(2):ipntr(2)+nA-1) = Rprime \ (A * (R \ workd(ipntr(1):ipntr(1)+nA-1)));
+ end
+ end
+ end
+ elseif(iparam(7) == 3)
+ if(matB == 0)
+ if(ido == 2)
+ workd(ipntr(2):ipntr(2)+nA-1) = workd(ipntr(1):ipntr(1)+nA-1);
+ else
+ workd(ipntr(2):ipntr(2)+nA-1) = umf_lusolve(Lup, workd(ipntr(1):ipntr(1)+nA-1));
+ end
+ else
+ if(ido == 2)
+ if(cholB)
+ workd(ipntr(2):ipntr(2)+nA-1) = Rprime * (R * workd(ipntr(1):ipntr(1)+nA-1));
+ else
+ workd(ipntr(2):ipntr(2)+nA-1) = %_B * workd(ipntr(1):ipntr(1)+nA-1);
+ end
+ elseif(ido == -1)
+ if(cholB)
+ workd(ipntr(2):ipntr(2)+nA-1) = Rprime * (R * workd(ipntr(1):ipntr(1)+nA-1));
+ else
+ workd(ipntr(2):ipntr(2)+nA-1) = %_B * workd(ipntr(1):ipntr(1)+nA-1);
+ end
+ workd(ipntr(2):ipntr(2)+nA-1) = umf_lusolve(Lup, workd(ipntr(2):ipntr(2)+nA-1));
+ else
+ workd(ipntr(2):ipntr(2)+nA-1) = umf_lusolve(Lup, workd(ipntr(3):ipntr(3)+nA-1));
+ end
+ end
+ else
+ if(Areal & Breal)
+ if(Asym)
+ error(msprintf(gettext("%s: Error with %s: unknown mode returned.\n"), "eigs", "DSAUPD"));
+ else
+ error(msprintf(gettext("%s: Error with %s: unknown mode returned.\n"), "eigs", "DNAUPD"));
+ end
+ else
+ error(msprintf(gettext("%s: Error with %s: unknown mode returned.\n"), "eigs", "ZNAUPD"));
+ end
+ end
+ end
+ end
+ if(iparam(7) == 3)
+ umf_ludel(Lup);
+ end
+ if(Areal & Breal)
+ if(Asym)
+ [d, z, resid, v, iparam, iptnr, workd, workl, info_eupd] = dseupd(rvec, howmny, _select, d, z, sigma, bmat, nA, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_eupd);
+ if(info_eupd <> 0)
+ error(msprintf(gettext("%s: Error with %s: info = %d.\n"), "eigs", "DSEUPD", info_eupd));
+ else
+ res_d = d;
+ if(rvec)
+ res_d = diag(res_d);
+ res_v = z;
+ end
+ end
+ else
+ sigmar = real(sigma);
+ sigmai = imag(sigma);
+ computevec = rvec;
+ if iparam(7) == 3 & sigmai then
+ computevec = 1;
+ end
+ [dr, di, z, resid, v, iparam, ipntr, workd, workl, info_eupd] = dneupd(computevec, howmny, _select, dr, di, z, sigmar, sigmai, workev, bmat, nA, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_eupd);
+ if(info_eupd <> 0)
+ error(msprintf(gettext("%s: Error with %s: info = %d.\n"), "eigs", "DNEUPD", info_eupd));
+ else
+ if iparam(7) == 3 & sigmai then
+ res_d = complex(zeros(nev + 1,1));
+ i = 1;
+ while i <= nev
+ if(~di(i))
+ res_d(i) = complex(z(:,i)'*A*z(:,i), 0);
+ i = i + 1;
+ else
+ real_part = z(:,i)' * A * z(:,i) + z(:,i+1)' * A * z(:,i+1);
+ imag_part = z(:,i)' * A * z(:,i+1) - z(:,i+1)' * A * z(:,i)
+ res_d(i) = complex(real_part, imag_part);
+ res_d(i+1) = complex(real_part, -imag_part);
+ i = i + 2;
+ end
+ end
+ else
+ res_d = complex(dr, di);
+ end
+ res_d = res_d(1:nev);
+ if(rvec)
+ index = find(di~=0);
+ index = index(1:2:$);
+ res_v = z;
+ if ~isempty(index) then
+ res_v(:,[index index+1]) = [complex(res_v(:,index),res_v(:,index+1)), complex(res_v(:,index),-res_v(:,index+1))];
+ end
+ res_d = diag(res_d);
+ res_v = res_v(:,1:nev);
+ end
+ end
+ end
+ else
+ [d, z, resid, iparam, ipntr, workd, workl, rwork, info_eupd] = zneupd(rvec, howmny, _select, d, z, sigma, workev, bmat, nA, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, rwork, info_eupd);
+ if(info_eupd <> 0)
+ error(msprintf(gettext("%s: Error with %s: info = %d.\n"), "eigs", "ZNEUPD", info_eupd));
+ else
+ d(nev+1) = []
+ res_d = d;
+ if(rvec)
+ res_d = diag(d);
+ res_v = z;
+ end
+ end
+ end
+ if(rvec & iparam(7) == 1 & matB)
+ if issparse(%_B)
+ res_v = umf_lusolve(Rprimefact, res_v);
+ if(~cholB)
+ res_v = res_v(perm, :);
+ end
+ else
+ res_v = R \ res_v;
+ end
+ end
+endfunction
+
+
+function [res_d, res_v] = feigs(A_fun, nA, %_B, nev, which, maxiter, tol, ncv, cholB, resid, info, a_real, a_sym)
+ lhs = argn(1);
+ rvec = 0;
+ if(lhs > 1)
+ rvec = 1;
+ end
+
+ //**************************
+ //Second variable nA :
+ //**************************
+ if(size(nA,"*") <> 1 | ~isreal(nA) | typeof(nA) <> "constant")
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: n must be a positive integer.\n"), "eigs", 2));
+ end
+
+ if(floor(nA) <> nA | nA <= 0)
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: n must be a positive integer.\n"), "eigs", 2));
+ end
+
+ //*************************
+ //Third variable B :
+ //*************************
+ if((typeof(%_B) <> "constant") & (typeof(%_B) <> "sparse"))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: An empty matrix or full or sparse square matrix expected.\n"), "eigs", 3));
+ end
+ [mB, nB] = size(%_B);
+
+ matB = mB * nB;
+ //Check if B is a square matrix
+ if(matB & (mB <> nA |nB <> nA))
+ error(msprintf(gettext("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 3));
+ end
+
+ //check if B is complex
+ Breal = isreal(%_B);
+
+ //*************************
+ //NEV :
+ //*************************
+ // type of nev check
+ // check if nev is complex?
+ if(typeof(nev) <> "constant") | (~isreal(nev)) | (size(nev,"*") <> 1)
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3));
+ end
+
+ if(nev <> floor(nev) | (nev<=0))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: k must be a positive integer.\n"), "eigs", 4));
+ end
+
+ if(a_sym & a_real & Breal)
+ if(nev >= nA)
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: For real symmetric problems, k must be in the range 1 to N - 1.\n"), "eigs", 4));
+ end
+ else
+ if(nev >= nA - 1)
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: For real non symmetric or complex problems, k must be in the range 1 to N - 2.\n"), "eigs", 4));
+ end
+ end
+
+ //*************************
+ //SIGMA AND WHICH :
+ //*************************
+ //Check type
+ select type(which)
+ case 1 then
+ if(typeof(which) <> "constant" | which == [] | isnan(which))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: a scalar expected.\n"), "eigs", 5));
+ end
+ sigma = which;
+ which = "LM";
+ case 10 then
+ [mWHICH, nWHICH] = size(which);
+ if(mWHICH * nWHICH <> 1)
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: a string expected.\n"), "eigs", 5));
+ end
+ if(strcmp(which,"LM") ~= 0 & strcmp(which,"SM") ~= 0 & strcmp(which,"LR") ~= 0 & strcmp(which,"SR") ~= 0 & strcmp(which,"LI") ~= 0 & strcmp(which,"SI") ~= 0 & strcmp(which,"LA") ~= 0 & strcmp(which,"SA") ~= 0 & strcmp(which,"BE") ~= 0)
+ if(a_real & Breal & a_sym)
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: Unrecognized sigma value.\n Sigma must be one of %s, %s, %s, %s or %s.\n"), "eigs", 5, "LM", "SM", "LA", "SA", "BE"));
+ else
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: Unrecognized sigma value.\n Sigma must be one of %s, %s, %s, %s, %s or %s.\n"), "eigs", 5, "LM", "SM", "LR", "SR", "LI", "SI"));
+ end
+ end
+ if((~a_real | ~Breal | ~a_sym) & (strcmp(which,"LA") == 0 | strcmp(which,"SA") == 0 | strcmp(which,"BE") == 0))
+ error(msprintf(gettext("%s: Invalid sigma value for complex or non symmetric problem.\n"), "eigs"));
+ end
+ if(a_real & Breal & a_sym & (strcmp(which,"LR") == 0 | strcmp(which,"SR") == 0 | strcmp(which,"LI") == 0 | strcmp(which,"SI") == 0))
+ error(msprintf(gettext("%s: Invalid sigma value for real symmetric problem.\n"), "eigs"));
+ end
+ sigma = 0;
+ else
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"), "eigs", 5));
+ end
+
+ if(~a_real | ~Breal)
+ sigma = complex(sigma);
+ end
+
+ //*************************
+ //MAXITER :
+ //*************************
+ if(typeof(maxiter) <> "constant" | ~isreal(maxiter) | size(maxiter,"*") <> 1)
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: %s must be a scalar.\n"), "eigs", 6, "opts.maxiter"));
+ end
+
+ if((maxiter <> floor(maxiter)) | (maxiter <= 0) )
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: %s must be an integer positive value.\n"), "eigs", 6, "opts.maxiter"));
+ end
+
+ //*************************
+ //TOL :
+ //*************************
+ if(typeof(tol) <> "constant" | ~isreal(tol) | isnan(tol))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 7, "opts.tol"));
+ end
+
+ if(size(tol,"*") <> 1)
+ error(msprintf(gettext("%s: Wrong dimension for input argument #%d: %s must be 1 by 1 size.\n"), "eigs", 7, "opts.tol"));
+ end
+
+ //*************************
+ //NCV :
+ //*************************
+ if(typeof(ncv) <> "constant" | ~isreal(ncv))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 8, "opts.ncv"));
+ end
+
+ if(size(ncv,"*") > 1 | ncv <> floor(ncv) | (ncv <> [] & ncv <= 0))
+ error(msprintf(gettext("%s: Wrong dimension for input argument #%d: %s must be an integer scalar.\n"), "eigs", 8, "opts.ncv"));
+ end
+
+ if(isempty(ncv))
+ if(~a_sym & a_real & Breal)
+ ncv = min(max(2*nev+1, 20), nA);
+ else
+ ncv = min(max(2*nev, 20), nA);
+ end
+ else
+ if(ncv <= nev | ncv > nA)
+ if(a_sym & a_real & Breal)
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: For real symmetric problems, NCV must be k < NCV <= N.\n"), "eigs", 8));
+ elseif(~a_sym & a_real & Breal)
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: For real non symmetric problems, NCV must be k + 2 < NCV < N.\n"), "eigs", 8));
+
+ else
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: For complex problems, NCV must be k + 1 < NCV <= N.\n"), "eigs", 8));
+ end
+ end
+ end
+
+ //*************************
+ //CHOL :
+ //*************************
+ select typeof(cholB)
+ case "boolean"
+ if and(cholB <> [%f %t]) then
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB","%f", "%t"));
+ end
+ case "constant"
+ //check if chol is complex?
+ if(~isreal(cholB) | size(cholB, "*") <> 1)
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: %s must be an integer scalar or a boolean.\n"), "eigs", 8, "opts.cholB"));
+
+ end
+
+ if(and(cholB <> [0 1]))
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB","%f", "%t"));
+ end
+ else
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: %s must be an integer scalar or a boolean.\n"), "eigs", 8, "opts.cholB"));
+ end
+
+ //*************************
+ //RESID :
+ //*************************
+ if(typeof(resid) <> "constant")
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"), "eigs", 10));
+ end
+
+ if(size(resid,"*") ~= nA)
+ error(msprintf(gettext("%s: Wrong dimension for input argument #%d: Start vector opts.resid must be N by 1.\n"), "eigs", 10));
+ end
+
+ if(a_real & Breal)
+ //resid complex ?
+ if(~isreal(resid))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: Start vector opts.resid must be real for real problems.\n"), "eigs", 10));
+ end
+ else
+ if(isreal(resid))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: Start vector opts.resid must be complex for complex problems.\n"), "eigs", 10));
+ end
+ end
+
+ iparam = zeros(11,1);
+ iparam(1) = 1;
+ iparam(3) = maxiter;
+ iparam(7) = 1;
+
+ ipntr = zeros(14,1);
+
+ //MODE 1, 2, 3, 4, 5
+ if(~strcmp(which,"SM") | sigma <> 0)
+ iparam(7) = 3;
+ which = "LM";
+ end
+
+ //bmat initialization
+ if(matB == 0 | iparam(7) == 1)
+ bmat = "I";
+ else
+ bmat = "G";
+ end
+
+ if(cholB)
+ if(or(triu(%_B) <> %_B))
+ error(msprintf(gettext("%s: Wrong type for input argument #%d: if opts.cholB is true, B must be upper triangular.\n"), "eigs", 2));
+ end
+ if(issparse(%_B)) //sparse cholesky decomposition is reversed...
+ Rprime = %_B;
+ R = Rprime;
+ else
+ R = %_B;
+ Rprime = R';
+ end
+ end
+ if(~cholB & matB & iparam(7) == 1)
+ if(issparse(%_B) & ~Breal)
+ error(msprintf(gettext("%s: Impossible to use the Cholesky factorization with complex sparse matrices.\n"), "eigs"));
+ else
+ if(issparse(%_B))
+ [R,P] = spchol(%_B);
+ perm = spget(P);
+ perm = perm(:,2);
+ iperm = spget(P');
+ iperm = iperm(:,2);
+ else
+ R = chol(%_B);
+ Rprime = R';
+ end
+ end
+ end
+ if(matB & issparse(%_B) & iparam(7) == 1)
+ Rfact = umf_lufact(R);
+ Rprimefact = umf_lufact(R');
+ end
+
+ //Main
+ howmny = "A";
+ ido = 0;
+ info_aupd = 0;
+ _select = zeros(ncv,1);
+
+ if(a_real)
+ if(a_sym)
+ lworkl = ncv * ncv + 8 * ncv;
+ v = zeros(nA, ncv);
+ workl = zeros(lworkl, 1);
+ workd = zeros(3 * nA, 1);
+ d = zeros(nev, 1);
+ z = zeros(nA, nev);
+ else
+ lworkl = 3 * ncv * (ncv + 2);
+ v = zeros(nA, ncv);
+ workl = zeros(lworkl, 1);
+ workd = zeros(3 * nA, 1);
+ dr = zeros(nev+1, 1);
+ di = zeros(nev+1, 1);
+ z = zeros(nA, nev + 1);
+ workev = zeros(3 * ncv, 1);
+ end
+ else
+ lworkl = 3 * ncv * ncv + 5 * ncv;
+ v = zeros(nA, ncv) + 0 * %i;
+ workl = zeros(lworkl, 1) + 0 * %i;
+ workd = zeros(3 * nA, 1) + 0 * %i;
+ rwork = zeros(ncv, 1);
+ d = zeros(nev + 1, 1) + 0 * %i;
+ z = zeros(nA, nev) + 0 * %i;
+ workev = zeros(2 * ncv, 1) + 0 * %i;
+ end
+ while(ido <> 99)
+ if(a_real & Breal)
+ if(a_sym)
+ [ido, resid, v, iparam, ipntr, workd, workl, info] = dsaupd(ido, bmat, nA, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_aupd);
+ if(info_aupd <0)
+ error(msprintf(gettext("%s: Error with %s: info = %d.\n"), "eigs", "DSAUPD", info_aupd));
+ end
+ else
+ [ido, resid, v, iparam, ipntr, workd, workl, info] = dnaupd(ido, bmat, nA, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_aupd);
+ if(info_aupd <0)
+ error(msprintf(gettext("%s: Error with %s: info = %d.\n"), "eigs", "DNAUPD", info_aupd));
+ end
+ end
+ else
+ [ido, resid, v, iparam, ipntr, workd, workl, rwork, info] = znaupd(ido, bmat, nA, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, rwork, info_aupd);
+ if(info_aupd <0)
+ error(msprintf(gettext("%s: Error with %s: info = %d.\n"), "eigs", "ZNAUPD", info_aupd));
+ end
+ end
+
+ if(ido == -1 | ido == 1 | ido == 2)
+ if(iparam(7) == 1)
+ if(ido == 2)
+ workd(ipntr(2):ipntr(2)+nA-1) = workd(ipntr(1):ipntr(1)+nA-1);
+ else
+ if(matB == 0)
+ ierr = execstr("workd(ipntr(2):ipntr(2)+nA-1) = A_fun(workd(ipntr(1):ipntr(1)+nA-1))", "errcatch");
+ if(ierr <> 0)
+ break;
+ end
+ else
+ if(issparse(%_B))
+ y = umf_lusolve(Rprimefact, workd(ipntr(1):ipntr(1)+nA-1));
+ if(~cholB)
+ ierr = execstr("workd(ipntr(2):ipntr(2)+nA-1) = A_fun( y(perm) )", "errcatch");
+ if(ierr <> 0)
+ break;
+ end
+ y = y(iperm);
+ else
+ ierr = execstr("workd(ipntr(2):ipntr(2)+nA-1) = A_fun(y)", "errcatch");
+ if(ierr <> 0)
+ break;
+ end
+ end
+ workd(ipntr(2):ipntr(2)+nA-1) = umf_lusolve(Rfact, y);
+ else
+ ierr = execstr("workd(ipntr(2):ipntr(2)+nA-1) = A_fun( R \ workd(ipntr(1):ipntr(1)+nA-1) )", "errcatch");
+ if(ierr <> 0)
+ break;
+ end
+ workd(ipntr(2):ipntr(2)+nA-1) = Rprime \ workd(ipntr(2):ipntr(2)+nA-1);
+ end
+ end
+ end
+ elseif(iparam(7) == 3)
+ if(matB == 0)
+ if(ido == 2)
+ workd(ipntr(2):ipntr(2)+nA-1) = workd(ipntr(1):ipntr(1)+nA-1);
+ else
+ ierr = execstr("workd(ipntr(2):ipntr(2)+nA-1) = A_fun(workd(ipntr(1):ipntr(1)+nA-1))", "errcatch");
+ if(ierr <> 0)
+ break;
+ end
+ end
+ else
+ if(ido == 2)
+ if(cholB)
+ workd(ipntr(2):ipntr(2)+nA-1) = Rprime * (R * workd(ipntr(1):ipntr(1)+nA-1));
+ else
+ workd(ipntr(2):ipntr(2)+nA-1) = %_B * workd(ipntr(1):ipntr(1)+nA-1);
+ end
+ elseif(ido == -1)
+ if(cholB)
+ workd(ipntr(2):ipntr(2)+nA-1) = Rprime * (R * workd(ipntr(1):ipntr(1)+nA-1));
+ else
+ workd(ipntr(2):ipntr(2)+nA-1) = %_B * workd(ipntr(1):ipntr(1)+nA-1);
+ end
+ ierr = execstr("workd(ipntr(2):ipntr(2)+nA-1) = A_fun(workd(ipntr(2):ipntr(2)+nA-1))", "errcatch");
+ if(ierr <> 0)
+ break;
+ end
+ else
+ ierr = execstr("workd(ipntr(2):ipntr(2)+nA-1) = A_fun(workd(ipntr(3):ipntr(3)+nA-1))", "errcatch");
+ if(ierr <> 0)
+ break;
+ end
+ end
+ end
+ else
+ if(a_real & Breal)
+ if(a_sym)
+ error(msprintf(gettext("%s: Error with %s: unknown mode returned.\n"), "eigs", "DSAUPD"));
+ else
+ error(msprintf(gettext("%s: Error with %s: unknown mode returned.\n"), "eigs", "DNAUPD"));
+ end
+ else
+ error(msprintf(gettext("%s: Error with %s: unknown mode returned.\n"), "eigs", "ZNAUPD"));
+ end
+ end
+ end
+ end
+
+ if(ierr <> 0)
+ if(ierr == 10)
+ error(msprintf(gettext("%s: Wrong value for input argument #%d: n does not match rows number of matrix A.\n"), "eigs", 2));
+ end
+ error(msprintf(gettext("%s: Wrong type or value for input arguments.\n"), "eigs"));
+ end
+
+ if(a_real & Breal)
+ if(a_sym)
+ [d, z, resid, v, iparam, iptnr, workd, workl, info_eupd] = dseupd(rvec, howmny, _select, d, z, sigma, bmat, nA, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info);
+ if(info <> 0)
+ error(msprintf(gettext("%s: Error with %s: info = %d.\n"), "eigs", "DSEUPD", info));
+ else
+ res_d = d;
+ if(rvec)
+ res_d = diag(res_d);
+ res_v = z;
+ end
+ end
+ else
+ sigmar = real(sigma);
+ sigmai = imag(sigma);
+ computevec = rvec;
+ if iparam(7) == 3 & sigmai then
+ computevec = 1;
+ end
+ [dr, di, z, resid, v, iparam, ipntr, workd, workl, info_eupd] = dneupd(computevec, howmny, _select, dr, di, z, sigmar, sigmai, workev, bmat, nA, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info);
+ if(info <> 0)
+ error(msprintf(gettext("%s: Error with %s: info = %d.\n"), "eigs", "DNEUPD", info));
+ else
+ if iparam(7) == 3 & sigmai then
+ res_d = complex(zeros(nev + 1,1));
+ i = 1;
+ while i <= nev
+ if(~di(i))
+ res_d(i) = complex(z(:,i)'*A*z(:,i), 0);
+ i = i + 1;
+ else
+ real_part = z(:,i)' * A * z(:,i) + z(:,i+1)' * A * z(:,i+1);
+ imag_part = z(:,i)' * A * z(:,i+1) - z(:,i+1)' * A * z(:,i)
+ res_d(i) = complex(real_part, imag_part);
+ res_d(i+1) = complex(real_part, -imag_part);
+ i = i + 2;
+ end
+ end
+ else
+ res_d = complex(dr,di);
+ end
+ res_d = res_d(1:nev);
+ if(rvec)
+ index = find(di~=0);
+ index = index(1:2:$);
+ res_v = z;
+ if ~isempty(index) then
+ res_v(:,[index index+1]) = [complex(res_v(:,index), res_v(:,index+1)), complex(res_v(:,index), -res_v(:,index+1))];
+ end
+ res_d = diag(res_d);
+ res_v = res_v(:,1:nev);
+ end
+ end
+ end
+ else
+ [d, z, resid, iparam, ipntr, workd, workl, rwork, info_eupd] = zneupd(rvec, howmny, _select, d, z, sigma, workev, bmat, nA, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, rwork, info);
+ if(info <> 0)
+ error(msprintf(gettext("%s: Error with %s: info = %d.\n"), "eigs", "ZNEUPD", info));
+ else
+ d(nev+1) = []
+ res_d = d;
+ if(rvec)
+ res_d = diag(d);
+ res_v = z;
+ end
+ end
+ end
+ if(rvec & iparam(7) == 1 & matB)
+ if issparse(%_B)
+ res_v = umf_lusolve(Rprimefact, res_v);
+ if(~cholB)
+ res_v = res_v(perm, :);
+ end
+ else
+ res_v = R \ res_v;
+ end
+ end
+endfunction
diff --git a/modules/arnoldi/macros/lib b/modules/arnoldi/macros/lib
new file mode 100755
index 000000000..f52cc96f8
--- /dev/null
+++ b/modules/arnoldi/macros/lib
Binary files differ
diff --git a/modules/arnoldi/macros/names b/modules/arnoldi/macros/names
new file mode 100755
index 000000000..a8fb5846a
--- /dev/null
+++ b/modules/arnoldi/macros/names
@@ -0,0 +1 @@
+eigs
diff --git a/modules/arnoldi/sci_gateway/arnoldi_gateway.xml b/modules/arnoldi/sci_gateway/arnoldi_gateway.xml
new file mode 100755
index 000000000..389771c8f
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/arnoldi_gateway.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Sylvestre LEDRU
+ * Copyright (C) 2007-2008 - 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
+ *
+ -->
+
+<!DOCTYPE GATEWAY SYSTEM "../../functions/xml/gateway.dtd">
+<GATEWAY name="arnoldi">
+ <!-- =================== -->
+ <!--
+ 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="35" primitiveId="1" primitiveName="dsaupd" />
+ <PRIMITIVE gatewayId="35" primitiveId="2" primitiveName="dnaupd" />
+ <PRIMITIVE gatewayId="35" primitiveId="3" primitiveName="znaupd" />
+ <PRIMITIVE gatewayId="35" primitiveId="4" primitiveName="dseupd" />
+ <PRIMITIVE gatewayId="35" primitiveId="5" primitiveName="dneupd" />
+ <PRIMITIVE gatewayId="35" primitiveId="6" primitiveName="zneupd" />
+ <PRIMITIVE gatewayId="35" primitiveId="7" primitiveName="%_eigs" />
+</GATEWAY>
diff --git a/modules/arnoldi/sci_gateway/c/.deps/.dirstamp b/modules/arnoldi/sci_gateway/c/.deps/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.deps/.dirstamp
diff --git a/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-gw_arnoldi.Plo b/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-gw_arnoldi.Plo
new file mode 100755
index 000000000..b1c9cc9a1
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-gw_arnoldi.Plo
@@ -0,0 +1,273 @@
+sci_gateway/c/libsciarnoldi_la-gw_arnoldi.lo: sci_gateway/c/gw_arnoldi.c \
+ /usr/include/stdc-predef.h /usr/include/math.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/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/string.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 includes/gw_arnoldi.h \
+ includes/dynlib_arnoldi.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/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 \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ ../../modules/core/includes/callFunctionFromGateway.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/math.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/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/string.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:
+
+includes/gw_arnoldi.h:
+
+includes/dynlib_arnoldi.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/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:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+../../modules/core/includes/callFunctionFromGateway.h:
diff --git a/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_dnaupd.Plo b/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_dnaupd.Plo
new file mode 100755
index 000000000..9b41bd8b1
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_dnaupd.Plo
@@ -0,0 +1,284 @@
+sci_gateway/c/libsciarnoldi_la-sci_dnaupd.lo: sci_gateway/c/sci_dnaupd.c \
+ /usr/include/stdc-predef.h /usr/include/math.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/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/string.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/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 includes/gw_arnoldi.h \
+ includes/dynlib_arnoldi.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:
+
+/usr/include/math.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/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/string.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/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:
+
+includes/gw_arnoldi.h:
+
+includes/dynlib_arnoldi.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/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_dneupd.Plo b/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_dneupd.Plo
new file mode 100755
index 000000000..733c5b46d
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_dneupd.Plo
@@ -0,0 +1,284 @@
+sci_gateway/c/libsciarnoldi_la-sci_dneupd.lo: sci_gateway/c/sci_dneupd.c \
+ /usr/include/stdc-predef.h /usr/include/math.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/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/string.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/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 includes/gw_arnoldi.h \
+ includes/dynlib_arnoldi.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:
+
+/usr/include/math.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/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/string.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/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:
+
+includes/gw_arnoldi.h:
+
+includes/dynlib_arnoldi.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/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_dsaupd.Plo b/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_dsaupd.Plo
new file mode 100755
index 000000000..454d3d57c
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_dsaupd.Plo
@@ -0,0 +1,284 @@
+sci_gateway/c/libsciarnoldi_la-sci_dsaupd.lo: sci_gateway/c/sci_dsaupd.c \
+ /usr/include/stdc-predef.h /usr/include/math.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/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/string.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/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 includes/gw_arnoldi.h \
+ includes/dynlib_arnoldi.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:
+
+/usr/include/math.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/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/string.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/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:
+
+includes/gw_arnoldi.h:
+
+includes/dynlib_arnoldi.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/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_dseupd.Plo b/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_dseupd.Plo
new file mode 100755
index 000000000..bd7dcf7b2
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_dseupd.Plo
@@ -0,0 +1,284 @@
+sci_gateway/c/libsciarnoldi_la-sci_dseupd.lo: sci_gateway/c/sci_dseupd.c \
+ /usr/include/stdc-predef.h /usr/include/math.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/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/string.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/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 includes/gw_arnoldi.h \
+ includes/dynlib_arnoldi.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:
+
+/usr/include/math.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/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/string.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/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:
+
+includes/gw_arnoldi.h:
+
+includes/dynlib_arnoldi.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/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_eigs.Plo b/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_eigs.Plo
new file mode 100755
index 000000000..f04132610
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_eigs.Plo
@@ -0,0 +1,316 @@
+sci_gateway/c/libsciarnoldi_la-sci_eigs.lo: sci_gateway/c/sci_eigs.c \
+ /usr/include/stdc-predef.h /usr/include/math.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/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/string.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/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/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/isanan.h \
+ ../../modules/core/includes/core_math.h includes/gw_arnoldi.h \
+ includes/dynlib_arnoldi.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 \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ ../../modules/output_stream/includes/do_error_number.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/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/sci_types.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/sciprint.h \
+ ../../modules/core/includes/BOOL.h ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h includes/eigs.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/math.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/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/string.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/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/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/isanan.h:
+
+../../modules/core/includes/core_math.h:
+
+includes/gw_arnoldi.h:
+
+includes/dynlib_arnoldi.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:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+../../modules/output_stream/includes/do_error_number.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/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/sci_types.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/sciprint.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+includes/eigs.h:
diff --git a/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_znaupd.Plo b/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_znaupd.Plo
new file mode 100755
index 000000000..7f7ccdb44
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_znaupd.Plo
@@ -0,0 +1,284 @@
+sci_gateway/c/libsciarnoldi_la-sci_znaupd.lo: sci_gateway/c/sci_znaupd.c \
+ /usr/include/stdc-predef.h /usr/include/math.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/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/string.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/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 includes/gw_arnoldi.h \
+ includes/dynlib_arnoldi.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:
+
+/usr/include/math.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/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/string.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/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:
+
+includes/gw_arnoldi.h:
+
+includes/dynlib_arnoldi.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/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_zneupd.Plo b/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_zneupd.Plo
new file mode 100755
index 000000000..186c546ef
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.deps/libsciarnoldi_la-sci_zneupd.Plo
@@ -0,0 +1,284 @@
+sci_gateway/c/libsciarnoldi_la-sci_zneupd.lo: sci_gateway/c/sci_zneupd.c \
+ /usr/include/stdc-predef.h /usr/include/math.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/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/string.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/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 includes/gw_arnoldi.h \
+ includes/dynlib_arnoldi.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:
+
+/usr/include/math.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/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/string.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/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:
+
+includes/gw_arnoldi.h:
+
+includes/dynlib_arnoldi.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/arnoldi/sci_gateway/c/.dirstamp b/modules/arnoldi/sci_gateway/c/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.dirstamp
diff --git a/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-gw_arnoldi.o b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-gw_arnoldi.o
new file mode 100755
index 000000000..1812098de
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-gw_arnoldi.o
Binary files differ
diff --git a/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dnaupd.o b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dnaupd.o
new file mode 100755
index 000000000..305630bc4
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dnaupd.o
Binary files differ
diff --git a/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dneupd.o b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dneupd.o
new file mode 100755
index 000000000..b0893e97a
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dneupd.o
Binary files differ
diff --git a/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dsaupd.o b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dsaupd.o
new file mode 100755
index 000000000..a8565b2d9
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dsaupd.o
Binary files differ
diff --git a/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dseupd.o b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dseupd.o
new file mode 100755
index 000000000..9856e4a18
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dseupd.o
Binary files differ
diff --git a/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_eigs.o b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_eigs.o
new file mode 100755
index 000000000..5414ca9fb
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_eigs.o
Binary files differ
diff --git a/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_znaupd.o b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_znaupd.o
new file mode 100755
index 000000000..f47ec9c91
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_znaupd.o
Binary files differ
diff --git a/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_zneupd.o b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_zneupd.o
new file mode 100755
index 000000000..c4c66ab43
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_zneupd.o
Binary files differ
diff --git a/modules/arnoldi/sci_gateway/c/gw_arnoldi.c b/modules/arnoldi/sci_gateway/c/gw_arnoldi.c
new file mode 100755
index 000000000..9e127cecb
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/gw_arnoldi.c
@@ -0,0 +1,48 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006-2008 - 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 <math.h>
+#include <string.h>
+/*--------------------------------------------------------------------------*/
+#include "gw_arnoldi.h"
+#include "api_scilab.h"
+#include "MALLOC.h"
+#include "callFunctionFromGateway.h"
+/*--------------------------------------------------------------------------*/
+static gw_generic_table Tab[] =
+{
+ {sci_dsaupd, "dsaupd"},
+ {sci_dnaupd, "dnaupd"},
+ {sci_znaupd, "znaupd"},
+ {sci_dseupd, "dseupd"},
+ {sci_dneupd, "dneupd"},
+ {sci_zneupd, "zneupd"},
+ {sci_eigs, "%_eigs"}
+};
+/*--------------------------------------------------------------------------*/
+int gw_arnoldi(void)
+{
+ Rhs = Max(0, Rhs);
+
+ 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/arnoldi/sci_gateway/c/libsciarnoldi_la-gw_arnoldi.lo b/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-gw_arnoldi.lo
new file mode 100755
index 000000000..c7f37eef2
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-gw_arnoldi.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libsciarnoldi_la-gw_arnoldi.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/libsciarnoldi_la-gw_arnoldi.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_dnaupd.lo b/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_dnaupd.lo
new file mode 100755
index 000000000..032579505
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_dnaupd.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libsciarnoldi_la-sci_dnaupd.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/libsciarnoldi_la-sci_dnaupd.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_dneupd.lo b/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_dneupd.lo
new file mode 100755
index 000000000..06ac154ad
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_dneupd.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libsciarnoldi_la-sci_dneupd.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/libsciarnoldi_la-sci_dneupd.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_dsaupd.lo b/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_dsaupd.lo
new file mode 100755
index 000000000..f675787db
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_dsaupd.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libsciarnoldi_la-sci_dsaupd.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/libsciarnoldi_la-sci_dsaupd.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_dseupd.lo b/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_dseupd.lo
new file mode 100755
index 000000000..de36443f7
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_dseupd.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libsciarnoldi_la-sci_dseupd.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/libsciarnoldi_la-sci_dseupd.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_eigs.lo b/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_eigs.lo
new file mode 100755
index 000000000..0efe16762
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_eigs.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libsciarnoldi_la-sci_eigs.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/libsciarnoldi_la-sci_eigs.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_znaupd.lo b/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_znaupd.lo
new file mode 100755
index 000000000..78b7f23c0
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_znaupd.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libsciarnoldi_la-sci_znaupd.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/libsciarnoldi_la-sci_znaupd.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_zneupd.lo b/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_zneupd.lo
new file mode 100755
index 000000000..a66db7825
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/libsciarnoldi_la-sci_zneupd.lo
@@ -0,0 +1,12 @@
+# sci_gateway/c/libsciarnoldi_la-sci_zneupd.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/libsciarnoldi_la-sci_zneupd.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/arnoldi/sci_gateway/c/sci_dnaupd.c b/modules/arnoldi/sci_gateway/c/sci_dnaupd.c
new file mode 100755
index 000000000..7735d7cee
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/sci_dnaupd.c
@@ -0,0 +1,395 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - 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
+ *
+ */
+
+#include <math.h>
+#include <string.h>
+#include "api_scilab.h"
+#include "core_math.h"
+#include "gw_arnoldi.h"
+#include "localization.h"
+#include "Scierror.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(dnaupd)(int *ido, char *bmat, int *n, char *which, int *nev,
+ double *tol, double *resid, int *ncv, double *v,
+ int *ldv, int *iparam, int *ipntr, double *workd,
+ double *workl, int *lworkl, int *info,
+ unsigned long bmat_len, unsigned long which_len);
+/*--------------------------------------------------------------------------*/
+int sci_dnaupd(char *fname, unsigned long fname_len)
+{
+ SciErr sciErr;
+
+ int* piAddrpIDO = NULL;
+ int* pIDO = NULL;
+ int* piAddrpBMAT = NULL;
+ char* pBMAT = NULL;
+ int* piAddrpN = NULL;
+ int* pN = NULL;
+ int* piAddrpWHICH = NULL;
+ char* pWHICH = NULL;
+ int* piAddrpNEV = NULL;
+ int* pNEV = NULL;
+ int* piAddrpTOL = NULL;
+ double* pTOL = NULL;
+ int* piAddrpRESID = NULL;
+ double* pRESID = NULL;
+ int* piAddrpNCV = NULL;
+ int* pNCV = NULL;
+ int* piAddrpV = NULL;
+ double* pV = NULL;
+ int* piAddrpIPARAM = NULL;
+ int* pIPARAM = NULL;
+ int* piAddrpIPNTR = NULL;
+ int* pIPNTR = NULL;
+ int* piAddrpWORKD = NULL;
+ double* pWORKD = NULL;
+ int* piAddrpWORKL = NULL;
+ double* pWORKL = NULL;
+ int* piAddrpINFO = NULL;
+ int* pINFO = NULL;
+
+ int IDO, mIDO, nIDO;
+ int mBMAT, nBMAT;
+ int mN, nN;
+ int mWHICH, nWHICH;
+ int mNEV, nNEV;
+ int mTOL, nTOL;
+ int RESID, mRESID, nRESID;
+ int mNCV, nNCV;
+ int V, mV, nV;
+ int IPARAM, mIPARAM, nIPARAM;
+ int IPNTR, mIPNTR, nIPNTR;
+ int WORKD, mWORKD, nWORKD;
+ int WORKL, mWORKL, nWORKL;
+ int INFO, mINFO, nINFO;
+
+ int minlhs = 1, minrhs = 14, maxlhs = 8, maxrhs = 14;
+ int LDV, LWORKL;
+ int sizeWORKL = 0;
+
+ /* [IDO,RESID,V,IPARAM,IPNTR,WORKD,WORKL,INFO]=dnaupd...
+ (ID0,BMAT,N,WHICH,NEV,TOL,RESID,NCV,V,IPARAM,IPNTR,WORKD,WORKL,INFO) */
+
+ CheckInputArgument(pvApiCtx, minrhs, maxrhs);
+ CheckOutputArgument(pvApiCtx, minlhs, maxlhs);
+
+ /* VARIABLE = NUMBER */
+ sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddrpIDO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 1.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpIDO, &mIDO, &nIDO, &pIDO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 1);
+ return 1;
+ }
+
+ IDO = 1;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 3, &piAddrpN);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 3.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpN, &mN, &nN, &pN);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 3);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 5, &piAddrpNEV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 5.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpNEV, &mNEV, &nNEV, &pNEV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 5);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 6, &piAddrpTOL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 6.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpTOL, &mTOL, &nTOL, &pTOL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 6);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 7, &piAddrpRESID);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 7.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpRESID, &mRESID, &nRESID, &pRESID);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 7);
+ return 1;
+ }
+
+ RESID = 7;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 8, &piAddrpNCV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 8.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpNCV, &mNCV, &nNCV, &pNCV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 8);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 9, &piAddrpV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 9.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpV, &mV, &nV, &pV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 9);
+ return 1;
+ }
+
+ V = 9;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 10, &piAddrpIPARAM);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 10.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpIPARAM, &mIPARAM, &nIPARAM, &pIPARAM);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 10);
+ return 1;
+ }
+
+ IPARAM = 10;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 11, &piAddrpIPNTR);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 11.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpIPNTR, &mIPNTR, &nIPNTR, &pIPNTR);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 11);
+ return 1;
+ }
+
+ IPNTR = 11;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 12, &piAddrpWORKD);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 12.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpWORKD, &mWORKD, &nWORKD, &pWORKD);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 12);
+ return 1;
+ }
+
+ WORKD = 12;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 13, &piAddrpWORKL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 13.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpWORKL, &mWORKL, &nWORKL, &pWORKL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 13);
+ return 1;
+ }
+
+ WORKL = 13;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 14, &piAddrpINFO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 14.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpINFO, &mINFO, &nINFO, &pINFO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 14);
+ return 1;
+ }
+
+ INFO = 14;
+
+ LWORKL = mWORKL * nWORKL;
+ LDV = Max(1, pN[0]);
+
+ /* Don't call dnaupd if ido == 99 */
+ if (pIDO[0] == 99)
+ {
+ Scierror(999, _("%s: the computation is already terminated\n"), fname);
+ return 1;
+ }
+
+ /* Check some sizes */
+ if (mIPARAM*nIPARAM != 11)
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "IPARAM", 11);
+ return 1;
+ }
+
+ if (mIPNTR*nIPNTR != 14)
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "IPNTR", 14);
+ return 1;
+ }
+
+ if (mRESID*nRESID != pN[0])
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "RESID", *(int*)(pN));
+ return 1;
+ }
+
+ if ((mV != pN[0]) || (nV != pNCV[0]))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"), fname, "V", *(int*)(pN), *(int*)(pNCV));
+ return 1;
+ }
+
+ if (mWORKD * nWORKD < 3 * pN[0])
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "WORKD", 3 * *(int*)(pN));
+ return 1;
+ }
+
+ sizeWORKL = 3 * pNCV[0] * pNCV[0] + 6 * pNCV[0];
+
+ if (mWORKL * nWORKL < sizeWORKL)
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "WORKL", sizeWORKL);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddrpBMAT);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 2.
+ if (getAllocatedSingleString(pvApiCtx, piAddrpBMAT, &pBMAT))
+ {
+ Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, 2);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 4, &piAddrpWHICH);
+ if (sciErr.iErr)
+ {
+ freeAllocatedSingleString(pBMAT);
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 4.
+ if (getAllocatedSingleString(pvApiCtx, piAddrpWHICH, &pWHICH))
+ {
+ freeAllocatedSingleString(pBMAT);
+ Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, 4);
+ return 1;
+ }
+
+ C2F(dnaupd)(pIDO, pBMAT, pN,
+ pWHICH, pNEV, pTOL,
+ pRESID, pNCV, pV, &LDV,
+ pIPARAM, pIPNTR, pWORKD,
+ pWORKL, &LWORKL, pINFO, 1L, 2L);
+
+ freeAllocatedSingleString(pBMAT);
+ freeAllocatedSingleString(pWHICH);
+
+ if (*pINFO < 0)
+ {
+ C2F(errorinfo)("dnaupd", (int*)(pINFO), 6L);
+ return 0;
+ }
+
+ AssignOutputVariable(pvApiCtx, 1) = IDO;
+ AssignOutputVariable(pvApiCtx, 2) = RESID;
+ AssignOutputVariable(pvApiCtx, 3) = V;
+ AssignOutputVariable(pvApiCtx, 4) = IPARAM;
+ AssignOutputVariable(pvApiCtx, 5) = IPNTR;
+ AssignOutputVariable(pvApiCtx, 6) = WORKD;
+ AssignOutputVariable(pvApiCtx, 7) = WORKL;
+ AssignOutputVariable(pvApiCtx, 8) = INFO;
+
+ ReturnArguments(pvApiCtx);
+
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/arnoldi/sci_gateway/c/sci_dneupd.c b/modules/arnoldi/sci_gateway/c/sci_dneupd.c
new file mode 100755
index 000000000..aa70b9367
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/sci_dneupd.c
@@ -0,0 +1,579 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - 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
+ *
+ */
+
+#include <math.h>
+#include <string.h>
+#include "api_scilab.h"
+#include "core_math.h"
+#include "gw_arnoldi.h"
+#include "localization.h"
+#include "Scierror.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(dneupd)(int *rvec, char *howmny, int *select, double *dr,
+ double *di, double *z, int *ldz, double *sigmar,
+ double *sigmai, double *workev, char *bmat, int *n,
+ char *which, int *nev, double *tol, double *resid,
+ int *ncv, double *v, int *ldv, int *iparam, int *ipntr,
+ double *workd, double *workl, int *lworkl, int *info);
+/*--------------------------------------------------------------------------*/
+int sci_dneupd(char *fname, unsigned long fname_len)
+{
+ SciErr sciErr;
+
+ int* piAddrpRVEC = NULL;
+ int* pRVEC = NULL;
+ int* piAddrpHOWMANY = NULL;
+ char* pHOWMANY = NULL;
+ int* piAddrpSELECT = NULL;
+ int* pSELECT = NULL;
+ int* piAddrpDr = NULL;
+ double* pDr = NULL;
+ int* piAddrpDi = NULL;
+ double* pDi = NULL;
+ int* piAddrpZ = NULL;
+ double* pZ = NULL;
+ int* piAddrpSIGMAr = NULL;
+ double* pSIGMAr = NULL;
+ int* piAddrpSIGMAi = NULL;
+ double* pSIGMAi = NULL;
+ int* piAddrpWORKev = NULL;
+ double* pWORKev = NULL;
+ int* piAddrpBMAT = NULL;
+ char* pBMAT = NULL;
+ int* piAddrpN = NULL;
+ int* pN = NULL;
+ int* piAddrpWHICH = NULL;
+ char* pWHICH = NULL;
+ int* piAddrpNEV = NULL;
+ int* pNEV = NULL;
+ int* piAddrpTOL = NULL;
+ double* pTOL = NULL;
+ int* piAddrpRESID = NULL;
+ double* pRESID = NULL;
+ int* piAddrpNCV = NULL;
+ int* pNCV = NULL;
+ int* piAddrpV = NULL;
+ double* pV = NULL;
+ int* piAddrpIPARAM = NULL;
+ int* pIPARAM = NULL;
+ int* piAddrpIPNTR = NULL;
+ int* pIPNTR = NULL;
+ int* piAddrpWORKD = NULL;
+ double* pWORKD = NULL;
+ int* piAddrpWORKL = NULL;
+ double* pWORKL = NULL;
+ int* piAddrpINFO = NULL;
+ int* pINFO = NULL;
+
+ int mRVEC, nRVEC;
+ int mHOWMANY, nHOWMANY;
+ int mSELECT, nSELECT;
+ int Dr, mDr, nDr;
+ int Di, mDi, nDi;
+ int Z, mZ, nZ;
+ int mSIGMAr, nSIGMAr;
+ int mSIGMAi, nSIGMAi;
+ int mWORKev, nWORKev;
+ int mBMAT, nBMAT;
+ int mN, nN;
+ int mWHICH, nWHICH;
+ int mNEV, nNEV;
+ int mTOL, nTOL;
+ int RESID, mRESID, nRESID;
+ int mNCV, nNCV;
+ int V, mV, nV;
+ int IPARAM, mIPARAM, nIPARAM;
+ int IPNTR, mIPNTR, nIPNTR;
+ int WORKD, mWORKD, nWORKD;
+ int WORKL, mWORKL, nWORKL;
+ int INFO, mINFO, nINFO;
+
+ int minlhs = 1, minrhs = 22, maxlhs = 10, maxrhs = 22;
+ int LDZ, LDV, LWORKL;
+ int sizeWORKL = 0;
+
+ CheckInputArgument(pvApiCtx, minrhs, maxrhs);
+ CheckOutputArgument(pvApiCtx, minlhs, maxlhs);
+
+ /* VARIABLE = NUMBER */
+ sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddrpRVEC);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 1.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpRVEC, &mRVEC, &nRVEC, &pRVEC);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 1);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 3, &piAddrpSELECT);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 3.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpSELECT, &mSELECT, &nSELECT, &pSELECT);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 3);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 4, &piAddrpDr);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 4.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpDr, &mDr, &nDr, &pDr);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 4);
+ return 1;
+ }
+
+ Dr = 4;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 5, &piAddrpDi);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 5.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpDi, &mDi, &nDi, &pDi);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 5);
+ return 1;
+ }
+
+ Di = 5;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 6, &piAddrpZ);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 6.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpZ, &mZ, &nZ, &pZ);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 6);
+ return 1;
+ }
+
+ Z = 6;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 7, &piAddrpSIGMAr);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 7.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpSIGMAr, &mSIGMAr, &nSIGMAr, &pSIGMAr);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 7);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 8, &piAddrpSIGMAi);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 8.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpSIGMAi, &mSIGMAi, &nSIGMAi, &pSIGMAi);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 8);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 9, &piAddrpWORKev);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 9.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpWORKev, &mWORKev, &nWORKev, &pWORKev);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 9);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 11, &piAddrpN);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 11.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpN, &mN, &nN, &pN);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 11);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 13, &piAddrpNEV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 13.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpNEV, &mNEV, &nNEV, &pNEV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 13);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 14, &piAddrpTOL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 14.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpTOL, &mTOL, &nTOL, &pTOL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 14);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 15, &piAddrpRESID);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 15.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpRESID, &mRESID, &nRESID, &pRESID);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 15);
+ return 1;
+ }
+
+ RESID = 15;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 16, &piAddrpNCV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 16.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpNCV, &mNCV, &nNCV, &pNCV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 16);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 17, &piAddrpV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 17.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpV, &mV, &nV, &pV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 17);
+ return 1;
+ }
+
+ V = 17;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 18, &piAddrpIPARAM);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 18.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpIPARAM, &mIPARAM, &nIPARAM, &pIPARAM);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 18);
+ return 1;
+ }
+
+ IPARAM = 18;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 19, &piAddrpIPNTR);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 19.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpIPNTR, &mIPNTR, &nIPNTR, &pIPNTR);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 19);
+ return 1;
+ }
+
+ IPNTR = 19;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 20, &piAddrpWORKD);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 20.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpWORKD, &mWORKD, &nWORKD, &pWORKD);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 20);
+ return 1;
+ }
+
+ WORKD = 20;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 21, &piAddrpWORKL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 21.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpWORKL, &mWORKL, &nWORKL, &pWORKL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 21);
+ return 1;
+ }
+
+ WORKL = 21;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 22, &piAddrpINFO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 22.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpINFO, &mINFO, &nINFO, &pINFO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 22);
+ return 1;
+ }
+
+ INFO = 22;
+
+ LWORKL = mWORKL * nWORKL;
+ LDV = Max(1, *(int*)(pN));
+ LDZ = LDV;
+
+ /* Check some sizes */
+ if (mIPARAM*nIPARAM != 11)
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "IPARAM", 11);
+ return 0;
+ }
+
+ if (mIPNTR*nIPNTR != 14)
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "IPNTR", 14);
+ return 0;
+ }
+
+ if (mRESID*nRESID != *(int*)(pN))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "RESID", *(int*)(pN));
+ return 0;
+ }
+
+ if (mWORKD * nWORKD < 3 * *(int*)(pN))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "WORKD", 3 * *(int*)(pN));
+ return 0;
+ }
+
+ if (mSELECT*nSELECT != *(int*)(pNCV))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "SELECT", *(int*)(pNCV));
+ return 0;
+ }
+
+ if (mDr*nDr != (*(int*)(pNEV) + 1))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "Dr", *(int*)(pNEV) + 1);
+ return 0;
+ }
+
+ if (mDi*nDi != (*(int*)(pNEV) + 1))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "Di", *(int*)(pNEV) + 1);
+ return 0;
+ }
+
+ if ((mZ != *(int*)(pN)) || (nZ != *(int*)(pNEV) + 1))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"), fname, "Z", *(int*)(pN), *(int*)(pNEV) + 1);
+ return 0;
+ }
+
+ if (mWORKev*nWORKev != 3 * *(int*)(pNCV))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "WORKev", 3 * *(int*)(pNCV));
+ return 0;
+ }
+
+ if ((mV != *(int*)(pN)) || (nV != *(int*)(pNCV)))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"), fname, "V", *(int*)(pN), *(int*)(pNCV));
+ return 0;
+ }
+
+ sizeWORKL = 3 * *(int*)(pNCV) * *(int*)(pNCV) + 6 * *(int*)(pNCV);
+
+ if ((mWORKL * nWORKL < sizeWORKL))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "WORKL", sizeWORKL);
+ return 0;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddrpHOWMANY);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 2.
+ if (getAllocatedSingleString(pvApiCtx, piAddrpHOWMANY, &pHOWMANY))
+ {
+ Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, 2);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 10, &piAddrpBMAT);
+ if (sciErr.iErr)
+ {
+ freeAllocatedSingleString(pHOWMANY);
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 10.
+ if (getAllocatedSingleString(pvApiCtx, piAddrpBMAT, &pBMAT))
+ {
+ freeAllocatedSingleString(pHOWMANY);
+ Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, 10);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 12, &piAddrpWHICH);
+ if (sciErr.iErr)
+ {
+ freeAllocatedSingleString(pHOWMANY);
+ freeAllocatedSingleString(pBMAT);
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 12.
+ if (getAllocatedSingleString(pvApiCtx, piAddrpWHICH, &pWHICH))
+ {
+ freeAllocatedSingleString(pHOWMANY);
+ freeAllocatedSingleString(pBMAT);
+ Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, 12);
+ return 1;
+ }
+
+ C2F(dneupd)(pRVEC, pHOWMANY, pSELECT,
+ pDr, pDi, pZ, &LDZ,
+ pSIGMAr, pSIGMAi, pWORKev,
+ pBMAT, pN, pWHICH,
+ pNEV, pTOL, pRESID,
+ pNCV, pV, &LDV,
+ pIPARAM, pIPNTR,
+ pWORKD, pWORKL, &LWORKL,
+ pINFO);
+
+ freeAllocatedSingleString(pHOWMANY);
+ freeAllocatedSingleString(pBMAT);
+ freeAllocatedSingleString(pWHICH);
+
+ if (pINFO[0] < 0)
+ {
+ C2F(errorinfo)("dneupd", (int*)(pINFO), 6L);
+ return 0;
+ }
+
+ AssignOutputVariable(pvApiCtx, 1) = Dr;
+ AssignOutputVariable(pvApiCtx, 2) = Di;
+ AssignOutputVariable(pvApiCtx, 3) = Z;
+ AssignOutputVariable(pvApiCtx, 4) = RESID;
+ AssignOutputVariable(pvApiCtx, 5) = V;
+ AssignOutputVariable(pvApiCtx, 6) = IPARAM;
+ AssignOutputVariable(pvApiCtx, 7) = IPNTR;
+ AssignOutputVariable(pvApiCtx, 8) = WORKD;
+ AssignOutputVariable(pvApiCtx, 9) = WORKL;
+ AssignOutputVariable(pvApiCtx, 10) = INFO;
+
+ ReturnArguments(pvApiCtx);
+
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/arnoldi/sci_gateway/c/sci_dsaupd.c b/modules/arnoldi/sci_gateway/c/sci_dsaupd.c
new file mode 100755
index 000000000..c707950ce
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/sci_dsaupd.c
@@ -0,0 +1,395 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - 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
+ *
+ */
+
+#include <math.h>
+#include <string.h>
+#include "api_scilab.h"
+#include "core_math.h"
+#include "gw_arnoldi.h"
+#include "localization.h"
+#include "Scierror.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(dsaupd)(int *ido, char *bmat, int *n, char *which, int *nev,
+ double *tol, double *resid, int *ncv, double *v,
+ int *ldv, int *iparam, int *ipntr, double *workd,
+ double *workl, int *lworkl, int *info);
+/*--------------------------------------------------------------------------*/
+int sci_dsaupd(char *fname, unsigned long fname_len)
+{
+ SciErr sciErr;
+
+ int* piAddrpIDO = NULL;
+ int* pIDO = NULL;
+ int* piAddrpBMAT = NULL;
+ char* pBMAT = NULL;
+ int* piAddrpN = NULL;
+ int* pN = NULL;
+ int* piAddrpWHICH = NULL;
+ char* pWHICH = NULL;
+ int* piAddrpNEV = NULL;
+ int* pNEV = NULL;
+ int* piAddrpTOL = NULL;
+ double* pTOL = NULL;
+ int* piAddrpRESID = NULL;
+ double* pRESID = NULL;
+ int* piAddrpNCV = NULL;
+ int* pNCV = NULL;
+ int* piAddrpV = NULL;
+ double* pV = NULL;
+ int* piAddrpIPARAM = NULL;
+ int* pIPARAM = NULL;
+ int* piAddrpIPNTR = NULL;
+ int* pIPNTR = NULL;
+ int* piAddrpWORKD = NULL;
+ double* pWORKD = NULL;
+ int* piAddrpWORKL = NULL;
+ double* pWORKL = NULL;
+ int* piAddrpINFO = NULL;
+ int* pINFO = NULL;
+
+ int IDO, mIDO, nIDO;
+ int mBMAT, nBMAT;
+ int mN, nN;
+ int mWHICH, nWHICH;
+ int mNEV, nNEV;
+ int mTOL, nTOL;
+ int RESID, mRESID, nRESID;
+ int mNCV, nNCV;
+ int V, mV, nV;
+ int IPARAM, mIPARAM, nIPARAM;
+ int IPNTR, mIPNTR, nIPNTR;
+ int WORKD, mWORKD, nWORKD;
+ int WORKL, mWORKL, nWORKL;
+ int INFO, mINFO, nINFO;
+
+ int minlhs = 1, minrhs = 14, maxlhs = 8, maxrhs = 14;
+ int LDV, LWORKL;
+ int sizeWORKL = 0;
+
+ /* [IDO,RESID,V,IPARAM,IPNTR,WORKD,WORKL,INFO]=dsaupd...
+ (ID0,BMAT,N,WHICH,NEV,TOL,RESID,NCV,V,IPARAM,IPNTR,WORKD,WORKL,INFO) */
+
+ CheckInputArgument(pvApiCtx, minrhs, maxrhs);
+ CheckOutputArgument(pvApiCtx, minlhs, maxlhs);
+
+ /* VARIABLE = NUMBER */
+ sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddrpIDO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 1.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpIDO, &mIDO, &nIDO, &pIDO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 1);
+ return 1;
+ }
+
+ IDO = 1;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 3, &piAddrpN);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 3.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpN, &mN, &nN, &pN);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 3);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 5, &piAddrpNEV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 5.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpNEV, &mNEV, &nNEV, &pNEV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 5);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 6, &piAddrpTOL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 6.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpTOL, &mTOL, &nTOL, &pTOL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 6);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 7, &piAddrpRESID);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 7.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpRESID, &mRESID, &nRESID, &pRESID);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 7);
+ return 1;
+ }
+
+ RESID = 7;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 8, &piAddrpNCV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 8.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpNCV, &mNCV, &nNCV, &pNCV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 8);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 9, &piAddrpV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 9.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpV, &mV, &nV, &pV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 9);
+ return 1;
+ }
+
+ V = 9;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 10, &piAddrpIPARAM);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 10.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpIPARAM, &mIPARAM, &nIPARAM, &pIPARAM);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 10);
+ return 1;
+ }
+
+ IPARAM = 10;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 11, &piAddrpIPNTR);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 11.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpIPNTR, &mIPNTR, &nIPNTR, &pIPNTR);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 11);
+ return 1;
+ }
+
+ IPNTR = 11;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 12, &piAddrpWORKD);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 12.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpWORKD, &mWORKD, &nWORKD, &pWORKD);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 12);
+ return 1;
+ }
+
+ WORKD = 12;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 13, &piAddrpWORKL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 13.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpWORKL, &mWORKL, &nWORKL, &pWORKL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 13);
+ return 1;
+ }
+
+ WORKL = 13;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 14, &piAddrpINFO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 14.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpINFO, &mINFO, &nINFO, &pINFO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 14);
+ return 1;
+ }
+
+ INFO = 14;
+
+ LWORKL = mWORKL * nWORKL;
+ LDV = Max(1, pN[0]);
+
+ /* Don't call dnaupd if ido == 99 */
+ if (pIDO[0] == 99)
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname);
+ return 1;
+ }
+
+ /* Check some sizes */
+ if (mIPARAM*nIPARAM != 11)
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "IPARAM", 11);
+ return 1;
+ }
+
+ if (mIPNTR*nIPNTR != 14)
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "IPNTR", 14);
+ return 1;
+ }
+
+ if (mRESID*nRESID != pN[0])
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "RESID", pN[0]);
+ return 1;
+ }
+
+ if ((mV != pN[0]) || (nV != pNCV[0]))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"), fname, "V", pN[0], pNCV[0]);
+ return 1;
+ }
+
+ if (mWORKD * nWORKD < 3 * pN[0])
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "WORKD", 3 * pN[0]);
+ return 1;
+ }
+
+ sizeWORKL = pNCV[0] * pNCV[0] + 8 * pNCV[0];
+
+ if (mWORKL * nWORKL < sizeWORKL)
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "WORKL", sizeWORKL);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddrpBMAT);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 2.
+ if (getAllocatedSingleString(pvApiCtx, piAddrpBMAT, &pBMAT))
+ {
+ Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, 2);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 4, &piAddrpWHICH);
+ if (sciErr.iErr)
+ {
+ freeAllocatedSingleString(pBMAT);
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 4.
+ if (getAllocatedSingleString(pvApiCtx, piAddrpWHICH, &pWHICH))
+ {
+ freeAllocatedSingleString(pBMAT);
+ Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, 4);
+ return 1;
+ }
+
+
+ C2F(dsaupd)(pIDO, pBMAT, pN,
+ pWHICH, pNEV, pTOL,
+ pRESID, pNCV, pV, &LDV,
+ pIPARAM, pIPNTR, pWORKD,
+ pWORKL, &LWORKL, pINFO);
+
+ freeAllocatedSingleString(pBMAT);
+ freeAllocatedSingleString(pWHICH);
+
+ if (pINFO[0] < 0)
+ {
+ C2F(errorinfo)("dsaupd", (int*)(pINFO), 6L);
+ return 0;
+ }
+
+ AssignOutputVariable(pvApiCtx, 1) = IDO;
+ AssignOutputVariable(pvApiCtx, 2) = RESID;
+ AssignOutputVariable(pvApiCtx, 3) = V;
+ AssignOutputVariable(pvApiCtx, 4) = IPARAM;
+ AssignOutputVariable(pvApiCtx, 5) = IPNTR;
+ AssignOutputVariable(pvApiCtx, 6) = WORKD;
+ AssignOutputVariable(pvApiCtx, 7) = WORKL;
+ AssignOutputVariable(pvApiCtx, 8) = INFO;
+
+ ReturnArguments(pvApiCtx);
+
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/arnoldi/sci_gateway/c/sci_dseupd.c b/modules/arnoldi/sci_gateway/c/sci_dseupd.c
new file mode 100755
index 000000000..ed316d83c
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/sci_dseupd.c
@@ -0,0 +1,514 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - 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
+ *
+ */
+
+#include <math.h>
+#include <string.h>
+#include "api_scilab.h"
+#include "core_math.h"
+#include "gw_arnoldi.h"
+#include "localization.h"
+#include "Scierror.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(dseupd)(int *rvec, char *howmny, int *select, double *d,
+ double *z, int *ldz, double *sigma, char *bmat,
+ int *n, char *which, int *nev , double *tol,
+ double *resid, int *ncv, double *v , int *ldv,
+ int *iparam, int *ipntr, double *workd, double *workl,
+ int *lworkl, int *info, unsigned long rvec_length,
+ unsigned long howmany_length,
+ unsigned long bmat_length, unsigned long which_len);
+/*--------------------------------------------------------------------------*/
+int sci_dseupd(char *fname, unsigned long fname_len)
+{
+ SciErr sciErr;
+
+ int* piAddrpRVEC = NULL;
+ int* pRVEC = NULL;
+ int* piAddrpHOWMANY = NULL;
+ char* pHOWMANY = NULL;
+ int* piAddrpSELECT = NULL;
+ int* pSELECT = NULL;
+ int* piAddrpD = NULL;
+ double* pD = NULL;
+ int* piAddrpZ = NULL;
+ double* pZ = NULL;
+ int* piAddrpSIGMA = NULL;
+ double* pSIGMA = NULL;
+ int* piAddrpBMAT = NULL;
+ char* pBMAT = NULL;
+ int* piAddrpN = NULL;
+ int* pN = NULL;
+ int* piAddrpWHICH = NULL;
+ char* pWHICH = NULL;
+ int* piAddrpNEV = NULL;
+ int* pNEV = NULL;
+ int* piAddrpTOL = NULL;
+ double* pTOL = NULL;
+ int* piAddrpRESID = NULL;
+ double* pRESID = NULL;
+ int* piAddrpNCV = NULL;
+ int* pNCV = NULL;
+ int* piAddrpV = NULL;
+ double* pV = NULL;
+ int* piAddrpIPARAM = NULL;
+ int* pIPARAM = NULL;
+ int* piAddrpIPNTR = NULL;
+ int* pIPNTR = NULL;
+ int* piAddrpWORKD = NULL;
+ double* pWORKD = NULL;
+ int* piAddrpWORKL = NULL;
+ double* pWORKL = NULL;
+ int* piAddrpINFO = NULL;
+ int* pINFO = NULL;
+
+ int mRVEC, nRVEC;
+ int mHOWMANY, nHOWMANY;
+ int mSELECT, nSELECT;
+ int D, mD, nD;
+ int Z, mZ, nZ;
+ int mSIGMA, nSIGMA;
+ int mBMAT, nBMAT;
+ int mN, nN;
+ int mWHICH, nWHICH;
+ int mNEV, nNEV;
+ int mTOL, nTOL;
+ int RESID, mRESID, nRESID;
+ int mNCV, nNCV;
+ int V, mV, nV;
+ int IPARAM, mIPARAM, nIPARAM;
+ int IPNTR, mIPNTR, nIPNTR;
+ int WORKD, mWORKD, nWORKD;
+ int WORKL, mWORKL, nWORKL;
+ int INFO, mINFO, nINFO;
+
+ int minlhs = 1, minrhs = 19, maxlhs = 9, maxrhs = 19;
+ int LDZ, LDV, LWORKL;
+ int sizeWORKL = 0;
+
+ /* [D,Z,RESID,V,IPARAM,IPNTR,WORKD,WORKL,INFO]=dseupd...
+ (RVEC,HOWMANY,SELECT,D,Z,SIGMA,BMAT,N,WHICH,NEV,TOL,RESID,NCV,V,IPARAM,IPNTR,WORKD,WORKL,INFO) */
+
+ CheckInputArgument(pvApiCtx, minrhs, maxrhs);
+ CheckOutputArgument(pvApiCtx, minlhs, maxlhs);
+
+ /* VARIABLE = NUMBER */
+ sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddrpRVEC);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 1.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpRVEC, &mRVEC, &nRVEC, &pRVEC);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 1);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 3, &piAddrpSELECT);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 3.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpSELECT, &mSELECT, &nSELECT, &pSELECT);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 3);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 4, &piAddrpD);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 4.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpD, &mD, &nD, &pD);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 4);
+ return 1;
+ }
+
+ D = 4;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 5, &piAddrpZ);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 5.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpZ, &mZ, &nZ, &pZ);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 5);
+ return 1;
+ }
+
+ Z = 5;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 6, &piAddrpSIGMA);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 6.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpSIGMA, &mSIGMA, &nSIGMA, &pSIGMA);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 6);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 8, &piAddrpN);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 8.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpN, &mN, &nN, &pN);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 8);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 10, &piAddrpNEV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 10.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpNEV, &mNEV, &nNEV, &pNEV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 10);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 11, &piAddrpTOL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 11.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpTOL, &mTOL, &nTOL, &pTOL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 11);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 12, &piAddrpRESID);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 12.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpRESID, &mRESID, &nRESID, &pRESID);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 12);
+ return 1;
+ }
+
+ RESID = 12;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 13, &piAddrpNCV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 13.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpNCV, &mNCV, &nNCV, &pNCV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 13);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 14, &piAddrpV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 14.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpV, &mV, &nV, &pV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 14);
+ return 1;
+ }
+
+ V = 14;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 15, &piAddrpIPARAM);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 15.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpIPARAM, &mIPARAM, &nIPARAM, &pIPARAM);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 15);
+ return 1;
+ }
+
+ IPARAM = 15;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 16, &piAddrpIPNTR);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 16.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpIPNTR, &mIPNTR, &nIPNTR, &pIPNTR);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 16);
+ return 1;
+ }
+
+ IPNTR = 16;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 17, &piAddrpWORKD);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 17.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpWORKD, &mWORKD, &nWORKD, &pWORKD);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 17);
+ return 1;
+ }
+
+ WORKD = 17;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 18, &piAddrpWORKL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 18.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpWORKL, &mWORKL, &nWORKL, &pWORKL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 18);
+ return 1;
+ }
+
+ WORKL = 18;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 19, &piAddrpINFO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 19.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpINFO, &mINFO, &nINFO, &pINFO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 19);
+ return 1;
+ }
+
+ INFO = 19;
+
+ LWORKL = mWORKL * nWORKL;
+ LDV = Max(1, pN[0]);
+ LDZ = LDV;
+
+ /* Check some sizes */
+ if (mIPARAM*nIPARAM != 11)
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "IPARAM", 11);
+ return 1;
+ }
+
+ if (mIPNTR*nIPNTR != 14)
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "IPNTR", 14);
+ return 1;
+ }
+
+ if (mRESID*nRESID != pN[0])
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "RESID", pN[0]);
+ return 1;
+ }
+
+ if (mWORKD * nWORKD < 3 * pN[0])
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "WORKD", 3 * pN[0]);
+ return 1;
+ }
+
+ if (mSELECT*nSELECT != pNCV[0])
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "SELECT", pNCV[0]);
+ return 1;
+ }
+
+ if (mD*nD != (pNEV[0]))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "D", pNEV[0]);
+ return 1;
+ }
+
+ if ((mZ != pN[0]) || (nZ != pNEV[0]))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"), fname, "Z", pN[0], pNEV[0]);
+ return 1;
+ }
+
+ if ((mV != pN[0]) || (nV != pNCV[0]))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"), fname, "V", pN[0], pNCV[0]);
+ return 1;
+ }
+
+ sizeWORKL = pNCV[0] * pNCV[0] + 8 * pNCV[0];
+
+ if ((mWORKL * nWORKL < sizeWORKL))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "WORKL", sizeWORKL);
+ return 1;
+ }
+
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddrpHOWMANY);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 2.
+ if (getAllocatedSingleString(pvApiCtx, piAddrpHOWMANY, &pHOWMANY))
+ {
+ Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, 2);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 7, &piAddrpBMAT);
+ if (sciErr.iErr)
+ {
+ freeAllocatedSingleString(pHOWMANY);
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 7.
+ if (getAllocatedSingleString(pvApiCtx, piAddrpBMAT, &pBMAT))
+ {
+ freeAllocatedSingleString(pHOWMANY);
+ Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, 7);
+ return 1;
+ }
+
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 9, &piAddrpWHICH);
+ if (sciErr.iErr)
+ {
+ freeAllocatedSingleString(pBMAT);
+ freeAllocatedSingleString(pHOWMANY);
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 9.
+ if (getAllocatedSingleString(pvApiCtx, piAddrpWHICH, &pWHICH))
+ {
+ freeAllocatedSingleString(pBMAT);
+ freeAllocatedSingleString(pHOWMANY);
+ Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, 9);
+ return 1;
+ }
+
+ C2F(dseupd)(pRVEC, pHOWMANY, pSELECT,
+ pD, pZ, &LDZ,
+ pSIGMA, pBMAT, pN, pWHICH,
+ pNEV, pTOL, pRESID,
+ pNCV, pV, &LDV,
+ pIPARAM, pIPNTR,
+ pWORKD, pWORKL, &LWORKL,
+ pINFO, 1L, 1L, 1L, 2L);
+
+ freeAllocatedSingleString(pHOWMANY);
+ freeAllocatedSingleString(pBMAT);
+
+ if (pINFO[0] < 0)
+ {
+ C2F(errorinfo)("dseupd", pINFO, 6L);
+ return 0;
+ }
+
+ AssignOutputVariable(pvApiCtx, 1) = D;
+ AssignOutputVariable(pvApiCtx, 2) = Z;
+ AssignOutputVariable(pvApiCtx, 3) = RESID;
+ AssignOutputVariable(pvApiCtx, 4) = V;
+ AssignOutputVariable(pvApiCtx, 5) = IPARAM;
+ AssignOutputVariable(pvApiCtx, 6) = IPNTR;
+ AssignOutputVariable(pvApiCtx, 7) = WORKD;
+ AssignOutputVariable(pvApiCtx, 8) = WORKL;
+ AssignOutputVariable(pvApiCtx, 9) = INFO;
+
+ ReturnArguments(pvApiCtx);
+
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
+
diff --git a/modules/arnoldi/sci_gateway/c/sci_eigs.c b/modules/arnoldi/sci_gateway/c/sci_eigs.c
new file mode 100755
index 000000000..99b425254
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/sci_eigs.c
@@ -0,0 +1,841 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+*
+* 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 <math.h>
+#include <string.h>
+#include "stack-c.h"
+#include "isanan.h"
+#include "core_math.h"
+#include "gw_arnoldi.h"
+#include "localization.h"
+#include "Scierror.h"
+#include "api_scilab.h"
+#include "stdio.h"
+#include "stdlib.h"
+#include "sciprint.h"
+#include "doublecomplex.h"
+#include "MALLOC.h"
+#include "eigs.h"
+
+int sci_eigs(char *fname, unsigned long fname_len)
+{
+ SciErr sciErr;
+
+ int *piAddressVarOne = NULL;
+ int iRowsOne = 0;
+ int iColsOne = 0;
+ double elemt1 = 0;
+ double elemt2 = 0;
+ double* Areal = NULL;
+ doublecomplex* Acplx = NULL;
+ int Asym = 1;
+ int Acomplex = 0;
+ int N = 0;
+
+ int *piAddressVarTwo = NULL;
+ int iTypeVarTwo = 0;
+ int iRowsTwo = 0;
+ int iColsTwo = 0;
+ double* Breal = NULL;
+ doublecomplex* Bcplx = NULL;
+ int Bcomplex = 0;
+ int matB = 0;
+
+ int *piAddressVarThree = NULL;
+ double dblNEV = 0;
+ int iNEV = 0;
+
+ int *piAddressVarFour = NULL;
+ int iTypeVarFour = 0;
+ int iRowsFour = 0;
+ int iColsFour = 0;
+ int iLen = 0;
+ char* pstData = NULL;
+ doublecomplex SIGMA;
+
+ int *piAddressVarFive = NULL;
+ double dblMAXITER = 0;
+
+ int *piAddressVarSix = NULL;
+ double dblTOL = 0;
+
+ int *piAddressVarSeven = NULL;
+ int TypeVarSeven = 0;
+ int RowsSeven = 0;
+ int ColsSeven = 0;
+ double* dblNCV = NULL;
+
+ int *piAddressVarEight = NULL;
+ int iTypeVarEight = 0;
+ double dblCHOLB = 0;
+ int iCHOLB = 0;
+
+ int *piAddressVarNine = NULL;
+ int iTypeVarNine = 0;
+ int iRowsNine = 0;
+ int iColsNine = 0;
+ double* RESID = NULL;
+ doublecomplex* RESIDC = NULL;
+
+ int *piAddressVarTen = NULL;
+ int iINFO = 0;
+ int RVEC = 0;
+ // Output arguments
+ double* eigenvalue = NULL;
+ double* eigenvector = NULL;
+ doublecomplex* eigenvalueC = NULL;
+ doublecomplex* eigenvectorC = NULL;
+
+ double* mat_eigenvalue = NULL;
+ doublecomplex* mat_eigenvalueC = NULL;
+ int INFO_EUPD = 0;
+ int error = 0;
+
+ int iErr = 0;
+ int i = 0;
+ int j = 0;
+
+ CheckInputArgument(pvApiCtx, 1, 10);
+ CheckOutputArgument(pvApiCtx, 0, 2);
+
+ /****************************************
+ * First variable : A *
+ *****************************************/
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVarOne);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
+ return 1;
+ }
+
+ sciErr = getVarDimension(pvApiCtx, piAddressVarOne, &iRowsOne, &iColsOne);
+ //check if A is a square matrix
+ if (iRowsOne * iColsOne == 1 || iRowsOne != iColsOne)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1);
+ return 1;
+ }
+
+ N = iRowsOne;
+
+ //check if A is complex
+ if (isVarComplex(pvApiCtx, piAddressVarOne))
+ {
+ sciErr = getComplexZMatrixOfDouble(pvApiCtx, piAddressVarOne, &iRowsOne, &iColsOne, &Acplx);
+ Acomplex = 1;
+ }
+ else
+ {
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddressVarOne, &iRowsOne, &iColsOne, &Areal);
+
+ for (i = 0; i < iColsOne; i++)
+ {
+ for (j = 0; j < i; j++)
+ {
+ elemt1 = Areal[j + i * iColsOne];
+ elemt2 = Areal[j * iColsOne + i];
+ if (fabs(elemt1 - elemt2) > 0)
+ {
+ Asym = 0;
+ break;
+ }
+ }
+ if (Asym == 0)
+ {
+ break;
+ }
+ }
+ }
+
+ /****************************************
+ * Second variable : B *
+ *****************************************/
+ sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddressVarTwo);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 2);
+ return 1;
+ }
+
+ sciErr = getVarType(pvApiCtx, piAddressVarTwo, &iTypeVarTwo);
+ if (sciErr.iErr || iTypeVarTwo != sci_matrix)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Wrong type for input argument #%d: An empty matrix or full or sparse square matrix expected.\n"), "eigs", 2);
+ return 1;
+ }
+
+ sciErr = getVarDimension(pvApiCtx, piAddressVarTwo, &iRowsTwo, &iColsTwo);
+ matB = iRowsTwo * iColsTwo;
+ if (matB && (iRowsTwo != iRowsOne || iColsTwo != iColsOne))
+ {
+ Scierror(999, _("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+ return 1;
+ }
+
+ if (isVarComplex(pvApiCtx, piAddressVarTwo))
+ {
+ sciErr = getComplexZMatrixOfDouble(pvApiCtx, piAddressVarTwo, &iRowsTwo, &iColsTwo, &Bcplx);
+ Bcomplex = 1;
+ }
+ else
+ {
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddressVarTwo, &iRowsTwo, &iColsTwo, &Breal);
+ }
+
+ if (matB != 0)
+ {
+ if (Acomplex && !Bcomplex)
+ {
+ Bcplx = (doublecomplex*)MALLOC(N * N * sizeof(doublecomplex));
+ memset(Bcplx, 0, N * N * sizeof(doublecomplex));
+ Bcomplex = 1;
+ for (i = 0 ; i < N * N ; i++)
+ {
+ Bcplx[i].r = Breal[i];
+ }
+ }
+ if (!Acomplex && Bcomplex)
+ {
+ Acplx = (doublecomplex*)MALLOC(N * N * sizeof(doublecomplex));
+ memset(Acplx, 0, N * N * sizeof(doublecomplex));
+ Acomplex = 1;
+ for (i = 0 ; i < N * N ; i++)
+ {
+ Acplx[i].r = Areal[i];
+ }
+ }
+ }
+
+
+ /****************************************
+ * NEV *
+ *****************************************/
+ sciErr = getVarAddressFromPosition(pvApiCtx, 3, &piAddressVarThree);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 3);
+ FREE(Acplx);
+ return 1;
+ }
+
+ iErr = getScalarDouble(pvApiCtx, piAddressVarThree, &dblNEV);
+ if (iErr)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3);
+ return 1;
+ }
+
+ if (isVarComplex(pvApiCtx, piAddressVarThree))
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3);
+ return 1;
+ }
+
+ if (dblNEV != floor(dblNEV) || (dblNEV <= 0))
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: k must be a positive integer.\n"), "eigs", 3);
+ return 1;
+ }
+
+ if (!finite(dblNEV))
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: k must be in the range 1 to N.\n"), "eigs", 3);
+ return 1;
+ }
+
+
+ iNEV = (int)dblNEV;
+
+ /****************************************
+ * SIGMA AND WHICH *
+ *****************************************/
+ sciErr = getVarAddressFromPosition(pvApiCtx, 4, &piAddressVarFour);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 4);
+ return 1;
+ }
+
+ sciErr = getVarType(pvApiCtx, piAddressVarFour, &iTypeVarFour);
+ if (sciErr.iErr || (iTypeVarFour != sci_matrix && iTypeVarFour != sci_strings))
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 4);
+ return 1;
+ }
+
+ if (iTypeVarFour == sci_strings)
+ {
+ int iErr = getAllocatedSingleString(pvApiCtx, piAddressVarFour, &pstData);
+ if (iErr)
+ {
+ return 1;
+ }
+
+ if (strcmp(pstData, "LM") != 0 && strcmp(pstData, "SM") != 0 && strcmp(pstData, "LR") != 0 && strcmp(pstData, "SR") != 0 && strcmp(pstData, "LI") != 0
+ && strcmp(pstData, "SI") != 0 && strcmp(pstData, "LA") != 0 && strcmp(pstData, "SA") != 0 && strcmp(pstData, "BE") != 0)
+ {
+ if (!Acomplex && Asym)
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: Unrecognized sigma value.\n Sigma must be one of '%s', '%s', '%s', '%s' or '%s'.\n" ),
+ "eigs", 4, "LM", "SM", "LA", "SA", "BE");
+ return 1;
+ }
+ else
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: Unrecognized sigma value.\n Sigma must be one of '%s', '%s', '%s', '%s', '%s' or '%s'.\n " ),
+ "eigs", 4, "LM", "SM", "LR", "SR", "LI", "SI");
+ return 1;
+ }
+ }
+
+ if ((Acomplex || !Asym) && (strcmp(pstData, "LA") == 0 || strcmp(pstData, "SA") == 0 || strcmp(pstData, "BE") == 0))
+ {
+ Scierror(999, _("%s: Invalid sigma value for complex or non symmetric problem.\n"), "eigs", 4);
+ return 1;
+ }
+
+ if (!Acomplex && Asym && (strcmp(pstData, "LR") == 0 || strcmp(pstData, "SR") == 0 || strcmp(pstData, "LI") == 0 || strcmp(pstData, "SI") == 0))
+ {
+ Scierror(999, _("%s: Invalid sigma value for real symmetric problem.\n"), "eigs", 4);
+ return 1;
+ }
+
+ SIGMA.r = 0;
+ SIGMA.i = 0;
+ }
+
+ if (iTypeVarFour == sci_matrix)
+ {
+ sciErr = getVarDimension(pvApiCtx, piAddressVarFour, &iRowsFour, &iColsFour);
+ if (iRowsFour * iColsFour != 1)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 4);
+ return 1;
+ }
+
+ if (getScalarComplexDouble(pvApiCtx, piAddressVarFour, &SIGMA.r, &SIGMA.i))
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 4);
+ return 1;
+ }
+
+ if (C2F(isanan)(&SIGMA.r) || C2F(isanan)(&SIGMA.i))
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: sigma must be a real.\n"), "eigs", 4);
+ return 1;
+ }
+
+ pstData = "LM";
+ }
+
+ /****************************************
+ * MAXITER *
+ *****************************************/
+ sciErr = getVarAddressFromPosition(pvApiCtx, 5, &piAddressVarFive);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 5);
+ return 0;
+ }
+
+ iErr = getScalarDouble(pvApiCtx, piAddressVarFive, &dblMAXITER);
+ if (iErr)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: %s must be a scalar.\n"), "eigs", 5, "opts.maxiter");
+ return 1;
+ }
+
+ if ((dblMAXITER != floor(dblMAXITER)) || (dblMAXITER <= 0))
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: %s must be an integer positive value.\n"), "eigs", 5, "opts.maxiter");
+ return 1;
+ }
+
+ /****************************************
+ * TOL *
+ *****************************************/
+ sciErr = getVarAddressFromPosition(pvApiCtx, 6, &piAddressVarSix);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 6);
+ return 1;
+ }
+
+ iErr = getScalarDouble(pvApiCtx, piAddressVarSix, &dblTOL);
+ if (iErr)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+ return 1;
+ }
+
+ if (C2F(isanan)(&dblTOL))
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+ return 1;
+ }
+
+ /****************************************
+ * NCV *
+ *****************************************/
+ sciErr = getVarAddressFromPosition(pvApiCtx, 7, &piAddressVarSeven);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 7);
+ return 1;
+ }
+
+ sciErr = getVarType(pvApiCtx, piAddressVarSeven, &TypeVarSeven);
+ if (sciErr.iErr || TypeVarSeven != sci_matrix)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+ return 1;
+ }
+ else
+ {
+ if (isVarComplex(pvApiCtx, piAddressVarSeven))
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+ 0;
+ }
+ else
+ {
+ sciErr = getVarDimension(pvApiCtx, piAddressVarSeven, &RowsSeven, &ColsSeven);
+ if (RowsSeven * ColsSeven > 1)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+ return 1;
+ }
+
+ if (RowsSeven * ColsSeven == 1)
+ {
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddressVarSeven, &RowsSeven, &ColsSeven, &dblNCV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 7);
+ return 1;
+ }
+
+ if (dblNCV[0] != floor(dblNCV[0]))
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+ return 1;
+ }
+ }
+ }
+ }
+
+ /****************************************
+ * CHOLB *
+ *****************************************/
+ sciErr = getVarAddressFromPosition(pvApiCtx, 8, &piAddressVarEight);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 8);
+ return 1;
+ }
+
+ sciErr = getVarType(pvApiCtx, piAddressVarEight, &iTypeVarEight);
+ if (sciErr.iErr || iTypeVarEight != sci_matrix && iTypeVarEight != sci_boolean)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: %s must be an integer scalar or a boolean.\n"), "eigs", 8, "opts.cholB");
+ return 1;
+ }
+
+ if (iTypeVarEight == sci_boolean)
+ {
+ iErr = getScalarBoolean(pvApiCtx, piAddressVarEight, &iCHOLB);
+ if (iErr)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: %s must be an integer scalar or a boolean.\n"), "eigs", 8, "opts.cholB");
+ return 1;
+ }
+
+ if (iCHOLB != 1 && iCHOLB != 0)
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+ return 1;
+ }
+ dblCHOLB = (double) iCHOLB;
+ }
+
+ if (iTypeVarEight == sci_matrix)
+ {
+ iErr = getScalarDouble(pvApiCtx, piAddressVarEight, &dblCHOLB);
+ if (iErr)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: %s must be an integer scalar or a boolean.\n"), "eigs", 8, "opts.cholB");
+ return 1;
+ }
+
+ if (dblCHOLB != 1 && dblCHOLB != 0)
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+ return 1;
+ }
+ }
+
+ if ( dblCHOLB ) // check that B is upper triangular with non zero element on the diagonal
+ {
+ if (!Bcomplex)
+ {
+ for (i = 0; i < N; i++)
+ {
+ for (j = 0; j <= i; j++)
+ {
+ if (i == j && Breal[i + j * N] == 0)
+ {
+ Scierror(999, _("%s: B is not positive definite. Try with sigma='SM' or sigma=scalar.\n"), "eigs");
+ return 0;
+ }
+ else
+ {
+ if ( j < i && Breal[i + j * N] != 0 )
+ {
+ Scierror(999, _("%s: If opts.cholB is true, B should be upper triangular.\n"), "eigs");
+ return 0;
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < N; i++)
+ {
+ for (j = 0; j <= i; j++)
+ {
+ if (i == j && Bcplx[i + i * N].r == 0 && Bcplx[i + i * N].i == 0)
+ {
+ Scierror(999, _("%s: B is not positive definite. Try with sigma='SM' or sigma=scalar.\n"), "eigs");
+ return 0;
+ }
+ else
+ {
+ if ( j < i && (Bcplx[i + j * N].r != 0 || Bcplx[i + j * N].i != 0) )
+ {
+ Scierror(999, _("%s: If opts.cholB is true, B should be upper triangular.\n"), "eigs");
+ return 0;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /****************************************
+ * RESID *
+ *****************************************/
+ sciErr = getVarAddressFromPosition(pvApiCtx, 9, &piAddressVarNine);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 9);
+ return 1;
+ }
+
+ sciErr = getVarType(pvApiCtx, piAddressVarNine, &iTypeVarNine);
+ if (sciErr.iErr || iTypeVarNine != sci_matrix)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"), "eigs", 9);
+ return 1;
+ }
+ else
+ {
+ sciErr = getVarDimension(pvApiCtx, piAddressVarNine, &iRowsNine, &iColsNine);
+ if (iRowsNine * iColsNine == 1 || iRowsNine * iColsNine != N)
+ {
+ Scierror(999, _("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+ return 1;
+ }
+ }
+
+ if (!Acomplex && !Bcomplex)
+ {
+ if (isVarComplex(pvApiCtx, piAddressVarNine))
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: Start vector %s must be real for real problems.\n"), "eigs", 9, "opts.resid");
+ return 1;
+ }
+ else
+ {
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddressVarNine, &iRowsNine, &iColsNine, &RESID);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), "eigs", 9);
+ return 1;
+ }
+ }
+ }
+ else
+ {
+ sciErr = getComplexZMatrixOfDouble(pvApiCtx, piAddressVarNine, &iRowsNine, &iColsNine, &RESIDC);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), "eigs", 9);
+ return 1;
+ }
+ }
+
+ /****************************************
+ * INFO *
+ *****************************************/
+ sciErr = getVarAddressFromPosition(pvApiCtx, 10, &piAddressVarTen);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Can not read input argument #%d.\n"), "eigs", 9);
+ return 1;
+ }
+
+ iErr = getScalarInteger32(pvApiCtx, piAddressVarTen, &iINFO);
+ if (iErr)
+ {
+ Scierror(999, _("%s: Wrong type for input argument #%d: An integer expected.\n"), "eigs", 1);
+ return 1;
+ }
+
+ // Initialization output arguments
+ if (nbOutputArgument(pvApiCtx) > 1)
+ {
+ RVEC = 1;
+ }
+
+ if (Acomplex || Bcomplex || !Asym)
+ {
+ eigenvalueC = (doublecomplex*)CALLOC((iNEV + 1), sizeof(doublecomplex));
+ if (RVEC)
+ {
+ eigenvectorC = (doublecomplex*)CALLOC(N * (iNEV + 1), sizeof(doublecomplex));
+ }
+ }
+ else
+ {
+ eigenvalue = (double*)CALLOC(iNEV, sizeof(double));
+ /* we should allocate eigenvector only if RVEC is true, but dseupd segfaults
+ if Z is not allocated even when RVEC is false, contrary to the docs.*/
+ eigenvector = (double*)CALLOC(iNEV * N, sizeof(double));
+ }
+
+ error = eigs(Areal, Acplx, N, Acomplex, Asym, Breal, Bcplx, Bcomplex, matB, iNEV, SIGMA, pstData, &dblMAXITER,
+ &dblTOL, dblNCV, RESID, RESIDC, &iINFO, &dblCHOLB, INFO_EUPD, eigenvalue, eigenvector, eigenvalueC, eigenvectorC, RVEC);
+
+ switch (error)
+ {
+ case -1 :
+ if (Asym && !Acomplex && !Bcomplex)
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: For real symmetric problems, NCV must be k < NCV <= N.\n"), "eigs", 7);
+ }
+ else
+ {
+ if (!Asym && !Acomplex && !Bcomplex)
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: For real non symmetric problems, NCV must be k + 2 < NCV <= N.\n"), "eigs", 7);
+ }
+ else
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: For complex problems, NCV must be k + 1 < NCV <= N.\n"), "eigs", 7);
+ }
+ }
+ ReturnArguments(pvApiCtx);
+ return 1;
+
+ case -2 :
+ if (Asym && !Acomplex && !Bcomplex)
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: For real symmetric problems, k must be an integer in the range 1 to N - 1.\n"), "eigs", 3);
+ }
+ else
+ {
+ Scierror(999, _("%s: Wrong value for input argument #%d: For real non symmetric or complex problems, k must be an integer in the range 1 to N - 2.\n"), "eigs", 3);
+ }
+ ReturnArguments(pvApiCtx);
+ return 1;
+
+ case -3 :
+ Scierror(999, _("%s: Error with input argument #%d: B is not positive definite. Try with sigma='SM' or sigma=scalar.\n"), "eigs", 2);
+ ReturnArguments(pvApiCtx);
+ return 0;
+
+ case -4 :
+ if (!Acomplex && !Bcomplex)
+ {
+ if (Asym)
+ {
+ Scierror(999, _("%s: Error with %s: info = %d \n"), "eigs", "DSAUPD", iINFO);
+ }
+ else
+ {
+ Scierror(999, _("%s: Error with %s: info = %d \n"), "eigs", "DNAUPD", iINFO);
+ }
+ }
+ else
+ {
+ Scierror(999, _("%s: Error with %s: info = %d \n"), "eigs", "ZNAUPD", iINFO);
+ }
+ ReturnArguments(pvApiCtx);
+ return 1;
+
+ case -5 :
+ if (!Acomplex && !Bcomplex)
+ {
+ if (Asym)
+ {
+ Scierror(999, _("%s: Error with %s: unknown mode returned.\n"), "eigs", "DSAUPD");
+ }
+ else
+ {
+ Scierror(999, _("%s: Error with %s: unknown mode returned.\n"), "eigs", "DNAUPD");
+ }
+ }
+ else
+ {
+ Scierror(999, _("%s: Error with %s: unknown mode returned.\n"), "eigs", "ZNAUPD");
+ }
+ ReturnArguments(pvApiCtx);
+ return 1;
+
+ case -6 :
+ if (!Acomplex && !Bcomplex)
+ {
+ if (Asym)
+ {
+ Scierror(999, _("%s: Error with %s: info = %d \n"), "eigs", "DSEUPD", INFO_EUPD);
+ }
+ else
+ {
+ Scierror(999, _("%s: Error with %s: info = %d \n"), "eigs", "DNEUPD", INFO_EUPD);
+ }
+ }
+ else
+ {
+ Scierror(999, _("%s: Error with %s: info = %d \n"), "eigs", "ZNEUPD", INFO_EUPD);
+ }
+ ReturnArguments(pvApiCtx);
+ FREE(mat_eigenvalue);
+ return 1;
+ }
+
+ if (nbOutputArgument(pvApiCtx) <= 1)
+ {
+ if (eigenvalue)
+ {
+ sciErr = createMatrixOfDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 1, iNEV, 1, eigenvalue);
+ FREE(eigenvalue);
+ FREE(eigenvector);
+ }
+ else if (eigenvalueC)
+ {
+ sciErr = createComplexZMatrixOfDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 1, iNEV, 1, eigenvalueC);
+ FREE(eigenvalueC);
+ }
+
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ return 1;
+ }
+
+ AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1;
+ }
+ else
+ {
+ // create a matrix which contains the eigenvalues
+ if (eigenvalue)
+ {
+ mat_eigenvalue = (double*)CALLOC(iNEV * iNEV, sizeof(double));
+ for (i = 0; i < iNEV; i++)
+ {
+ mat_eigenvalue[i * iNEV + i] = eigenvalue[i];
+ }
+ sciErr = createMatrixOfDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 1, iNEV, iNEV, mat_eigenvalue);
+ FREE(eigenvalue);
+ FREE(mat_eigenvalue);
+ }
+ else if (eigenvalueC)
+ {
+ mat_eigenvalueC = (doublecomplex*)CALLOC(iNEV * iNEV, sizeof(doublecomplex));
+ for (i = 0; i < iNEV; i++)
+ {
+ mat_eigenvalueC[i * iNEV + i] = eigenvalueC[i];
+ }
+ sciErr = createComplexZMatrixOfDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 1, iNEV, iNEV, mat_eigenvalueC);
+ FREE(eigenvalueC);
+ FREE(mat_eigenvalueC);
+ }
+
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ return 1;
+ }
+
+ if (eigenvector)
+ {
+ sciErr = createMatrixOfDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 2, N, iNEV, eigenvector);
+ FREE(eigenvector);
+ }
+ else if (eigenvectorC)
+ {
+ sciErr = createComplexZMatrixOfDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 2, N, iNEV, eigenvectorC);
+ FREE(eigenvectorC);
+ }
+
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(999, _("%s: Memory allocation error.\n"), fname);
+ return 1;
+ }
+
+ AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1;
+ AssignOutputVariable(pvApiCtx, 2) = nbInputArgument(pvApiCtx) + 2;
+ }
+
+ if (iTypeVarFour == sci_strings)
+ {
+ freeAllocatedSingleString(pstData);
+ }
+
+ if (matB != 0)
+ {
+ if (Acomplex && !Bcomplex)
+ {
+ FREE(Bcplx);
+ }
+ if (!Acomplex && Bcomplex)
+ {
+ FREE(Acplx);
+ }
+ }
+
+ ReturnArguments(pvApiCtx);
+ return 0;
+}
diff --git a/modules/arnoldi/sci_gateway/c/sci_znaupd.c b/modules/arnoldi/sci_gateway/c/sci_znaupd.c
new file mode 100755
index 000000000..ff203d37d
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/sci_znaupd.c
@@ -0,0 +1,418 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - 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
+ *
+ */
+
+#include <math.h>
+#include <string.h>
+#include "api_scilab.h"
+#include "core_math.h"
+#include "gw_arnoldi.h"
+#include "localization.h"
+#include "Scierror.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(znaupd)(int * ido, char * bmat, int * n, char * which,
+ int * nev, double * tol, doublecomplex * resid,
+ int * ncv, doublecomplex * v, int * ldv, int * iparam,
+ int * ipntr, doublecomplex * workd,
+ doublecomplex * workl, int * lworkl, double * rwork,
+ int * info);
+/*--------------------------------------------------------------------------*/
+int sci_znaupd(char *fname, unsigned long fname_len)
+{
+ SciErr sciErr;
+
+ int* piAddrpIDO = NULL;
+ int* pIDO = NULL;
+ int* piAddrpBMAT = NULL;
+ char* pBMAT = NULL;
+ int* piAddrpN = NULL;
+ int* pN = NULL;
+ int* piAddrpWHICH = NULL;
+ char* pWHICH = NULL;
+ int* piAddrpNEV = NULL;
+ int* pNEV = NULL;
+ int* piAddrpTOL = NULL;
+ double* pTOL = NULL;
+ int* piAddrpNCV = NULL;
+ int* pNCV = NULL;
+ int* piAddrpIPARAM = NULL;
+ int* pIPARAM = NULL;
+ int* piAddrpIPNTR = NULL;
+ int* pIPNTR = NULL;
+ int* piAddrpRWORK = NULL;
+ double* pRWORK = NULL;
+ int* piAddrpINFO = NULL;
+ int* pINFO = NULL;
+ int* piAddrpV = NULL;
+
+ doublecomplex* pV = NULL;
+ int* piAddrpRESID = NULL;
+ doublecomplex* pRESID = NULL;
+ int* piAddrpWORKD = NULL;
+ doublecomplex* pWORKD = NULL;
+ int* piAddrpWORKL = NULL;
+ doublecomplex* pWORKL = NULL;
+
+ int IDO, mIDO, nIDO;
+ int mBMAT, nBMAT;
+ int mN, nN;
+ int mWHICH, nWHICH;
+ int mNEV, nNEV;
+ int mTOL, nTOL;
+ int RESID, mRESID, nRESID;
+ int mNCV, nNCV;
+ int V, mV, nV;
+ int IPARAM, mIPARAM, nIPARAM;
+ int IPNTR, mIPNTR, nIPNTR;
+ int WORKD, mWORKD, nWORKD;
+ int WORKL, mWORKL, nWORKL;
+ int RWORK, mRWORK, nRWORK;
+ int INFO, mINFO, nINFO;
+
+ int minlhs = 1, minrhs = 15, maxlhs = 9, maxrhs = 15;
+ int LDV, LWORKL;
+ int sizeWORKL = 0;
+
+ CheckInputArgument(pvApiCtx, minrhs, maxrhs);
+ CheckOutputArgument(pvApiCtx, minlhs, maxlhs);
+
+ /* VARIABLE = NUMBER */
+ sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddrpIDO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 1.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpIDO, &mIDO, &nIDO, &pIDO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 1);
+ return 1;
+ }
+
+ IDO = 1;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 3, &piAddrpN);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 3.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpN, &mN, &nN, &pN);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 3);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 5, &piAddrpNEV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 5.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpNEV, &mNEV, &nNEV, &pNEV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 5);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 6, &piAddrpTOL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 6.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpTOL, &mTOL, &nTOL, &pTOL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 6);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 7, &piAddrpRESID);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 7.
+ sciErr = getComplexZMatrixOfDouble(pvApiCtx, piAddrpRESID, &mRESID, &nRESID, &pRESID);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 7);
+ return 1;
+ }
+
+ RESID = 7;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 8, &piAddrpNCV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 8.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpNCV, &mNCV, &nNCV, &pNCV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 8);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 9, &piAddrpV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 9.
+ sciErr = getComplexZMatrixOfDouble(pvApiCtx, piAddrpV, &mV, &nV, &pV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 9);
+ return 1;
+ }
+
+ V = 9;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 10, &piAddrpIPARAM);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 10.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpIPARAM, &mIPARAM, &nIPARAM, &pIPARAM);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 10);
+ return 1;
+ }
+
+ IPARAM = 10;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 11, &piAddrpIPNTR);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 11.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpIPNTR, &mIPNTR, &nIPNTR, &pIPNTR);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 11);
+ return 1;
+ }
+
+ IPNTR = 11;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 12, &piAddrpWORKD);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 12.
+ sciErr = getComplexZMatrixOfDouble(pvApiCtx, piAddrpWORKD, &mWORKD, &nWORKD, &pWORKD);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 12);
+ return 1;
+ }
+
+ WORKD = 12;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 13, &piAddrpWORKL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 13.
+ sciErr = getComplexZMatrixOfDouble(pvApiCtx, piAddrpWORKL, &mWORKL, &nWORKL, &pWORKL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 13);
+ return 1;
+ }
+
+ WORKL = 13;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 14, &piAddrpRWORK);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 14.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpRWORK, &mRWORK, &nRWORK, &pRWORK);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 14);
+ return 1;
+ }
+
+ RWORK = 14;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 15, &piAddrpINFO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 15.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpINFO, &mINFO, &nINFO, &pINFO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 15);
+ return 1;
+ }
+
+ INFO = 15;
+
+ LWORKL = mWORKL * nWORKL;
+ LDV = Max(1, pN[0]);
+
+ /* Don't call dnaupd if ido == 99 */
+ if (pIDO[0] == 99)
+ {
+ Scierror(999, _("%s: the computation is already terminated\n"), fname);
+ return 0;
+ }
+
+ /* Check some sizes */
+ if (mIPARAM*nIPARAM != 11)
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "IPARAM", 11);
+ return 0;
+ }
+
+ if (mIPNTR*nIPNTR != 14)
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "IPNTR", 14);
+ return 0;
+ }
+
+ if (mRESID*nRESID != pN[0])
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "RESID", pN[0]);
+ return 0;
+ }
+
+ if ((mV != pN[0]) || (nV != pNCV[0]))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"), fname, "V", pN[0], pNCV[0]);
+ return 0;
+ }
+
+ if (mWORKD * nWORKD < 3 * pN[0])
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "WORKD", 3 * pN[0]);
+ return 0;
+ }
+
+ sizeWORKL = 3 * pNCV[0] * pNCV[0] + 5 * pNCV[0];
+
+ if (mWORKL * nWORKL < sizeWORKL)
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "WORKL", sizeWORKL);
+ return 0;
+ }
+
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddrpBMAT);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 2.
+ if (getAllocatedSingleString(pvApiCtx, piAddrpBMAT, &pBMAT))
+ {
+ Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, 2);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 4, &piAddrpWHICH);
+ if (sciErr.iErr)
+ {
+ freeAllocatedSingleString(pBMAT);
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 4.
+ if (getAllocatedSingleString(pvApiCtx, piAddrpWHICH, &pWHICH))
+ {
+ freeAllocatedSingleString(pBMAT);
+ Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, 4);
+ return 1;
+ }
+
+ C2F(znaupd)(pIDO, pBMAT, pN,
+ pWHICH, pNEV, pTOL,
+ pRESID, pNCV, pV, &LDV,
+ pIPARAM, pIPNTR, pWORKD,
+ pWORKL, &LWORKL, pRWORK, pINFO);
+
+ freeAllocatedSingleString(pBMAT);
+ freeAllocatedSingleString(pWHICH);
+
+ if (pINFO[0] < 0)
+ {
+ C2F(errorinfo)("znaupd", pINFO, 6L);
+ return 0;
+ }
+
+ AssignOutputVariable(pvApiCtx, 1) = IDO;
+ AssignOutputVariable(pvApiCtx, 2) = RESID;
+ AssignOutputVariable(pvApiCtx, 3) = V;
+ AssignOutputVariable(pvApiCtx, 4) = IPARAM;
+ AssignOutputVariable(pvApiCtx, 5) = IPNTR;
+ AssignOutputVariable(pvApiCtx, 6) = WORKD;
+ AssignOutputVariable(pvApiCtx, 7) = WORKL;
+ AssignOutputVariable(pvApiCtx, 8) = RWORK;
+ AssignOutputVariable(pvApiCtx, 9) = INFO;
+
+ ReturnArguments(pvApiCtx);
+
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/arnoldi/sci_gateway/c/sci_zneupd.c b/modules/arnoldi/sci_gateway/c/sci_zneupd.c
new file mode 100755
index 000000000..3a01b5f80
--- /dev/null
+++ b/modules/arnoldi/sci_gateway/c/sci_zneupd.c
@@ -0,0 +1,553 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) ????-2008 - 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
+ *
+ */
+
+#include <math.h>
+#include <string.h>
+#include "api_scilab.h"
+#include "gw_arnoldi.h"
+#include "core_math.h"
+#include "localization.h"
+#include "Scierror.h"
+/*--------------------------------------------------------------------------*/
+extern int C2F(zneupd)(int * rvec, char * howmny, int * select,
+ doublecomplex * d, doublecomplex * z, int * ldz,
+ doublecomplex * sigma, doublecomplex * workev,
+ char * bmat, int * n, char * which, int * nev,
+ double * tol, doublecomplex * resid, int * ncv,
+ doublecomplex * v, int * ldv, int * iparam, int * ipntr,
+ doublecomplex * workd, doublecomplex * workl,
+ int * lworkl, double * rwork, int * info);
+/*--------------------------------------------------------------------------*/
+int sci_zneupd(char *fname, unsigned long fname_len)
+{
+ SciErr sciErr;
+
+ int* piAddrpRVEC = NULL;
+ int* pRVEC = NULL;
+ int* piAddrpHOWMANY = NULL;
+ char* pHOWMANY = NULL;
+ int* piAddrpSELECT = NULL;
+ int* pSELECT = NULL;
+ int* piAddrpBMAT = NULL;
+ char* pBMAT = NULL;
+ int* piAddrpN = NULL;
+ int* pN = NULL;
+ int* piAddrpWHICH = NULL;
+ char* pWHICH = NULL;
+ int* piAddrpNEV = NULL;
+ int* pNEV = NULL;
+ int* piAddrpTOL = NULL;
+ double* pTOL = NULL;
+ int* piAddrpNCV = NULL;
+ int* pNCV = NULL;
+ int* piAddrpIPARAM = NULL;
+ int* pIPARAM = NULL;
+ int* piAddrpIPNTR = NULL;
+ int* pIPNTR = NULL;
+ int* piAddrpRWORK = NULL;
+ double* pRWORK = NULL;
+ int* piAddrpINFO = NULL;
+ int* pINFO = NULL;
+
+ int* piAddrpD = NULL;
+ doublecomplex* pD = NULL;
+ int* piAddrpZ = NULL;
+ doublecomplex* pZ = NULL;
+ int* piAddrpSIGMA = NULL;
+ doublecomplex* pSIGMA = NULL;
+ int* piAddrpWORKev = NULL;
+ doublecomplex* pWORKev = NULL;
+ int* piAddrpRESID = NULL;
+ doublecomplex* pRESID = NULL;
+ int* piAddrpWORKD = NULL;
+ doublecomplex* pV = NULL;
+ int* piAddrpV = NULL;
+ doublecomplex* pWORKD = NULL;
+ int* piAddrpWORKL = NULL;
+ doublecomplex* pWORKL = NULL;
+
+ int mRVEC, nRVEC;
+ int mHOWMANY, nHOWMANY;
+ int mSELECT, nSELECT;
+ int D, mD, nD;
+ int Z, mZ, nZ;
+ int mSIGMA, nSIGMA;
+ int mWORKev, nWORKev;
+ int mBMAT, nBMAT;
+ int mN, nN;
+ int mWHICH, nWHICH;
+ int mNEV, nNEV;
+ int mTOL, nTOL;
+ int RESID, mRESID, nRESID;
+ int mNCV, nNCV;
+ int mV, nV;
+ int IPARAM, mIPARAM, nIPARAM;
+ int IPNTR, mIPNTR, nIPNTR;
+ int WORKD, mWORKD, nWORKD;
+ int WORKL, mWORKL, nWORKL;
+ int RWORK, mRWORK, nRWORK;
+ int INFO, mINFO, nINFO;
+
+ int minlhs = 1, minrhs = 21, maxlhs = 9, maxrhs = 21;
+ int LDZ, LDV, LWORKL;
+ int sizeWORKL = 0;
+
+ CheckInputArgument(pvApiCtx, minrhs, maxrhs);
+ CheckOutputArgument(pvApiCtx, minlhs, maxlhs);
+
+ /* VARIABLE = NUMBER */
+ sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddrpRVEC);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 1.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpRVEC, &mRVEC, &nRVEC, &pRVEC);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 1);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 3, &piAddrpSELECT);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 3.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpSELECT, &mSELECT, &nSELECT, &pSELECT);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 3);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 4, &piAddrpD);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 4.
+ sciErr = getComplexZMatrixOfDouble(pvApiCtx, piAddrpD, &mD, &nD, &pD);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 4);
+ return 1;
+ }
+ D = 4;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 5, &piAddrpZ);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 5.
+ sciErr = getComplexZMatrixOfDouble(pvApiCtx, piAddrpZ, &mZ, &nZ, &pZ);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 5);
+ return 1;
+ }
+ Z = 5;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 6, &piAddrpSIGMA);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 6.
+ sciErr = getComplexZMatrixOfDouble(pvApiCtx, piAddrpSIGMA, &mSIGMA, &nSIGMA, &pSIGMA);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 6);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 7, &piAddrpWORKev);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 7.
+ sciErr = getComplexZMatrixOfDouble(pvApiCtx, piAddrpWORKev, &mWORKev, &nWORKev, &pWORKev);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 7);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 9, &piAddrpN);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 9.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpN, &mN, &nN, &pN);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 9);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 11, &piAddrpNEV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 11.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpNEV, &mNEV, &nNEV, &pNEV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 11);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 12, &piAddrpTOL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 12.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpTOL, &mTOL, &nTOL, &pTOL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 12);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 13, &piAddrpRESID);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 13.
+ sciErr = getComplexZMatrixOfDouble(pvApiCtx, piAddrpRESID, &mRESID, &nRESID, &pRESID);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 13);
+ return 1;
+ }
+ RESID = 13;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 14, &piAddrpNCV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 14.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpNCV, &mNCV, &nNCV, &pNCV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 14);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 15, &piAddrpV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 15.
+ sciErr = getComplexZMatrixOfDouble(pvApiCtx, piAddrpV, &mV, &nV, &pV);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 15);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 16, &piAddrpIPARAM);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 16.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpIPARAM, &mIPARAM, &nIPARAM, &pIPARAM);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 16);
+ return 1;
+ }
+
+ IPARAM = 16;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 17, &piAddrpIPNTR);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 17.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpIPNTR, &mIPNTR, &nIPNTR, &pIPNTR);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 17);
+ return 1;
+ }
+
+ IPNTR = 17;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 18, &piAddrpWORKD);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 18.
+ sciErr = getComplexZMatrixOfDouble(pvApiCtx, piAddrpWORKD, &mWORKD, &nWORKD, &pWORKD);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 18);
+ return 1;
+ }
+ WORKD = 18;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 19, &piAddrpWORKL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 19.
+ sciErr = getComplexZMatrixOfDouble(pvApiCtx, piAddrpWORKL, &mWORKL, &nWORKL, &pWORKL);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 19);
+ return 1;
+ }
+ WORKL = 19;
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 20, &piAddrpRWORK);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 20.
+ sciErr = getMatrixOfDouble(pvApiCtx, piAddrpRWORK, &mRWORK, &nRWORK, &pRWORK);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 20);
+ return 1;
+ }
+
+ RWORK = 20;
+ sciErr = getVarAddressFromPosition(pvApiCtx, 21, &piAddrpINFO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 21.
+ sciErr = getMatrixOfDoubleAsInteger(pvApiCtx, piAddrpINFO, &mINFO, &nINFO, &pINFO);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 21);
+ return 1;
+ }
+
+ INFO = 21;
+
+ LWORKL = mWORKL * nWORKL;
+ LDV = Max(1, pN[0]);
+ LDZ = LDV;
+
+ /* Check some sizes */
+ if (mIPARAM*nIPARAM != 11)
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "IPARAM", 11);
+ return 1;
+ }
+
+ if (mIPNTR*nIPNTR != 14)
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "IPNTR", 14);
+ return 1;
+ }
+
+ if (mRESID*nRESID != pN[0])
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "RESID", pN[0]);
+ return 1;
+ }
+
+ if (mWORKD * nWORKD < 3 * pN[0])
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "WORKD", 3 * pN[0]);
+ return 1;
+ }
+
+ if (mSELECT*nSELECT != pNCV[0])
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "SELECT", pNCV[0]);
+ return 1;
+ }
+
+ if (mD*nD != (pNEV[0] + 1))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "D", pNEV[0] + 1);
+ return 1;
+ }
+
+ if ((mZ != pN[0]) || (nZ != pNEV[0]))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"), fname, "Z", pN[0], pNEV[0]);
+ return 1;
+ }
+
+ if (mWORKev*nWORKev != 2 * pNCV[0])
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "WORKev", 2 * pNCV[0]);
+ return 1;
+ }
+
+ if ((mV != pN[0]) || (nV != pNCV[0]))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: A matrix of size %dx%d expected.\n"), fname, "V", pN[0], pNCV[0]);
+ return 1;
+ }
+
+ sizeWORKL = 3 * pNCV[0] * pNCV[0] + 5 * pNCV[0];
+
+ if ((mWORKL * nWORKL < sizeWORKL))
+ {
+ Scierror(999, _("%s: Wrong size for input argument %s: An array of size %d expected.\n"), fname, "WORKL", sizeWORKL);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddrpHOWMANY);
+ if (sciErr.iErr)
+ {
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 2.
+ if (getAllocatedSingleString(pvApiCtx, piAddrpHOWMANY, &pHOWMANY))
+ {
+ Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, 2);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 8, &piAddrpBMAT);
+ if (sciErr.iErr)
+ {
+ freeAllocatedSingleString(pHOWMANY);
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 8.
+ if (getAllocatedSingleString(pvApiCtx, piAddrpBMAT, &pBMAT))
+ {
+ freeAllocatedSingleString(pHOWMANY);
+ Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, 8);
+ return 1;
+ }
+
+ sciErr = getVarAddressFromPosition(pvApiCtx, 10, &piAddrpWHICH);
+ if (sciErr.iErr)
+ {
+ freeAllocatedSingleString(pHOWMANY);
+ freeAllocatedSingleString(pBMAT);
+ printError(&sciErr, 0);
+ return 1;
+ }
+
+ // Retrieve a matrix of double at position 10.
+ if (getAllocatedSingleString(pvApiCtx, piAddrpWHICH, &pWHICH))
+ {
+ freeAllocatedSingleString(pHOWMANY);
+ freeAllocatedSingleString(pBMAT);
+ Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, 10);
+ return 1;
+ }
+
+ C2F(zneupd)(pRVEC, pHOWMANY, pSELECT, pD,
+ pZ, &LDZ, pSIGMA, pWORKev,
+ pBMAT, pN, pWHICH, pNEV,
+ pTOL, pRESID, pNCV, pV,
+ &LDV, pIPARAM, pIPNTR, pWORKD,
+ pWORKL, &LWORKL, pRWORK, pINFO);
+
+ freeAllocatedSingleString(pHOWMANY);
+ freeAllocatedSingleString(pBMAT);
+ freeAllocatedSingleString(pWHICH);
+
+ if (pINFO[0] < 0)
+ {
+ C2F(errorinfo)("zneupd", pINFO, 6L);
+ return 0;
+ }
+
+ AssignOutputVariable(pvApiCtx, 1) = D;
+ AssignOutputVariable(pvApiCtx, 2) = Z;
+ AssignOutputVariable(pvApiCtx, 3) = RESID;
+ AssignOutputVariable(pvApiCtx, 4) = IPARAM;
+ AssignOutputVariable(pvApiCtx, 5) = IPNTR;
+ AssignOutputVariable(pvApiCtx, 6) = WORKD;
+ AssignOutputVariable(pvApiCtx, 7) = WORKL;
+ AssignOutputVariable(pvApiCtx, 8) = RWORK;
+ AssignOutputVariable(pvApiCtx, 9) = INFO;
+
+ ReturnArguments(pvApiCtx);
+
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/arnoldi/src/c/.deps/.dirstamp b/modules/arnoldi/src/c/.deps/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/arnoldi/src/c/.deps/.dirstamp
diff --git a/modules/arnoldi/src/c/.deps/libsciarnoldi_la-eigs.Plo b/modules/arnoldi/src/c/.deps/libsciarnoldi_la-eigs.Plo
new file mode 100755
index 000000000..ae63f88b4
--- /dev/null
+++ b/modules/arnoldi/src/c/.deps/libsciarnoldi_la-eigs.Plo
@@ -0,0 +1,230 @@
+src/c/libsciarnoldi_la-eigs.lo: src/c/eigs.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/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/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 \
+ /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 includes/eigs.h \
+ ../../modules/core/includes/doublecomplex.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 \
+ ../../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/output_stream/includes/sciprint.h \
+ ../../modules/core/includes/BOOL.h includes/eigs_dependencies.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/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/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:
+
+/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:
+
+includes/eigs.h:
+
+../../modules/core/includes/doublecomplex.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:
+
+../../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/output_stream/includes/sciprint.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/eigs_dependencies.h:
diff --git a/modules/arnoldi/src/c/.deps/libsciarnoldi_la-eigs_dependencies.Plo b/modules/arnoldi/src/c/.deps/libsciarnoldi_la-eigs_dependencies.Plo
new file mode 100755
index 000000000..e6e9ef63a
--- /dev/null
+++ b/modules/arnoldi/src/c/.deps/libsciarnoldi_la-eigs_dependencies.Plo
@@ -0,0 +1,228 @@
+src/c/libsciarnoldi_la-eigs_dependencies.lo: src/c/eigs_dependencies.c \
+ /usr/include/stdc-predef.h includes/eigs_dependencies.h \
+ ../../modules/core/includes/doublecomplex.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/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/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 \
+ /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-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 \
+ ../../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/output_stream/includes/sciprint.h \
+ ../../modules/core/includes/BOOL.h
+
+/usr/include/stdc-predef.h:
+
+includes/eigs_dependencies.h:
+
+../../modules/core/includes/doublecomplex.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/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/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:
+
+/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-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:
+
+../../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/output_stream/includes/sciprint.h:
+
+../../modules/core/includes/BOOL.h:
diff --git a/modules/arnoldi/src/c/.dirstamp b/modules/arnoldi/src/c/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/arnoldi/src/c/.dirstamp
diff --git a/modules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs.o b/modules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs.o
new file mode 100755
index 000000000..902ed70bb
--- /dev/null
+++ b/modules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs.o
Binary files differ
diff --git a/modules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs_dependencies.o b/modules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs_dependencies.o
new file mode 100755
index 000000000..8ea106354
--- /dev/null
+++ b/modules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs_dependencies.o
Binary files differ
diff --git a/modules/arnoldi/src/c/DllmainArnoldi.c b/modules/arnoldi/src/c/DllmainArnoldi.c
new file mode 100755
index 000000000..1c6dceda6
--- /dev/null
+++ b/modules/arnoldi/src/c/DllmainArnoldi.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - 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")
+#pragma comment(lib,"../../bin/arpack.lib")
+#pragma comment(lib,"../../bin/blasplus.lib")
+#pragma comment(lib,"../../bin/lapack.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/arnoldi/src/c/arnoldi.rc b/modules/arnoldi/src/c/arnoldi.rc
new file mode 100755
index 000000000..098503597
--- /dev/null
+++ b/modules/arnoldi/src/c/arnoldi.rc
@@ -0,0 +1,101 @@
+// Microsoft Visual C++ generated resource script.
+//
+
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#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
+
+2 TEXTINCLUDE
+BEGIN
+ "#include ""windows.h""\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+1 VERSIONINFO
+ FILEVERSION 5,5,2,0
+ PRODUCTVERSION 5,5,2,0
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040c04b0"
+ BEGIN
+ VALUE "FileDescription", "arnoldi module"
+ VALUE "FileVersion", "5, 5, 2, 0"
+ VALUE "InternalName", "arnoldi"
+ VALUE "LegalCopyright", "Copyright (C) 2017"
+ VALUE "OriginalFilename", "arnoldi.dll"
+ VALUE "ProductName", "arnoldi module"
+ 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/arnoldi/src/c/eigs.c b/modules/arnoldi/src/c/eigs.c
new file mode 100755
index 000000000..7e08699ee
--- /dev/null
+++ b/modules/arnoldi/src/c/eigs.c
@@ -0,0 +1,835 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2012 -Scilab Enterprises - Adeline CARNIS
+*
+* 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 <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "eigs.h"
+#include "stack-c.h"
+#include "MALLOC.h"
+#include "sciprint.h"
+#include "eigs_dependencies.h"
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+// dgemv performs matrix-vector operations
+extern int C2F(dgemv) (char* trans, int* m, int* n, double* alpha, double* A, int* lda,
+ double* x, int* incx, double* beta, double* y, int* incy);
+extern int C2F(zgemv) (char* trans, int* m, int* n, doublecomplex* alpha, doublecomplex* A,
+ int* lda, doublecomplex* x, int* incx, doublecomplex* beta, doublecomplex* y, int* incy);
+
+// dgetrf computes an LU factorization of a general M by N matrix A (double) using partial pivoting with row interchanges
+extern int C2F(dgetrf)(int* m, int* n, double* A, int* lda, int* ipiv, int* info);
+
+// zgetrf computes an LU factorization of a general M by N matrix A (complex*16) using partial pivoting with row interchanges
+extern int C2F(zgetrf)(int* m, int* n, doublecomplex* A, int* lda, int* ipiv, int* info);
+// dgetrs solves a linear system using the factors computed by dgetrf
+extern int C2F(dgetrs) (char* trans, int* n, int* nrhs, double* A, int *lda, int* ipiv, double* B, int* ldb, int* info);
+// zgetrs solves a linear system using the factors computed by zgetrf
+extern int C2F(zgetrs) (char* trans, int* n, int* nrhs, doublecomplex* AC, int* lda, int* ipiv, doublecomplex* B, int* ldb, int* info);
+
+// dpotrf computes the cholesky factorization of a real symmetric positive definite matrix A
+extern int C2F(dpotrf)(char* uplo, int* n, double* A, int* lda, int* info);
+
+// zpotrf computes the cholesky factorization of a real hermitian positive definite matrix A
+extern int C2F(zpotrf)(char* uplo, int* n, doublecomplex* A, int* lda, int* info);
+
+// dtrsm solves a triangular linear system
+extern int C2F(dtrsm) (char* side, char* uplo, char* trans, char* diag, int* m, int* n, double* alpha, double* A, int* lda, double* B, int* ldb);
+// ztrsm solve a triangular linear system
+extern int C2F(ztrsm) (char* side, char* uplo, char* trans, char* diag, int* m, int* n, doublecomplex* alpha, doublecomplex* A, int* lda, doublecomplex* B, int* ldb);
+// dsyrk does a rank k symmetric update
+extern int C2F(dsyrk) (char* uplo, char* trans, int* n, int* k, double* alpha,
+ double* A, int* lda, double* beta, double* B, int* ldb);
+// ztrmm multiply by a triangular matrix
+extern int C2F(ztrmm) (char* side, char* uplo, char* trans, char* diag, int* m, int* n, doublecomplex* alphac,
+ doublecomplex* A, int* lda, doublecomplex* B, int* ldb);
+// ztrmv multiply a vector by a triangular matrix
+extern int C2F(ztrmv) (char* uplo, char* trans, char* diag, int* n, doublecomplex* A, int* lda, doublecomplex* x, int* incx);
+// dtrmv multiply a vector by a triangular matrix
+extern int C2F(dtrmv) (char* uplo, char* trans, char* diag, int* n, double* A, int* lda, double* x, int* incx);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(dsaupd)(int *ido, char *bmat, int *n, char *which, int *nev,
+ double *tol, double *resid, int *ncv, double *v,
+ int *ldv, int *iparam, int *ipntr, double *workd,
+ double *workl, int *lworkl, int *info);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(dseupd)(int *rvec, char *howmny, int *select, double *d,
+ double *z, int *ldz, double *sigma, char *bmat,
+ int *n, char *which, int *nev , double *tol,
+ double *resid, int *ncv, double *v , int *ldv,
+ int *iparam, int *ipntr, double *workd, double *workl,
+ int *lworkl, int *info);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(dnaupd)(int *ido, char *bmat, int *n, char *which, int *nev,
+ double *tol, double *resid, int *ncv, double *v,
+ int *ldv, int *iparam, int *ipntr, double *workd,
+ double *workl, int *lworkl, int *info);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(dneupd)(int *rvec, char *howmny, int *select, double *dr,
+ double *di, double *z, int *ldz, double *sigmar,
+ double *sigmai, double *workev, char *bmat, int *n,
+ char *which, int *nev, double *tol, double *resid,
+ int *ncv, double *v, int *ldv, int *iparam, int *ipntr,
+ double *workd, double *workl, int *lworkl, int *info);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(znaupd)(int * ido, char * bmat, int * n, char * which,
+ int * nev, double * tol, doublecomplex * resid,
+ int * ncv, doublecomplex * v, int * ldv, int * iparam,
+ int * ipntr, doublecomplex * workd,
+ doublecomplex * workl, int * lworkl, double * rwork,
+ int * info);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(zneupd)(int * rvec, char * howmny, int * select,
+ doublecomplex * d, doublecomplex * z, int * ldz,
+ doublecomplex * sigma, doublecomplex * workev,
+ char * bmat, int * n, char * which, int * nev,
+ double * tol, doublecomplex * resid, int * ncv,
+ doublecomplex * v, int * ldv, int * iparam, int * ipntr,
+ doublecomplex * workd, doublecomplex * workl,
+ int * lworkl, double * rwork, int * info);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(dsymv)(char* UPLO, int* N, double* ALPHA, double* A, int* LDA, double* X, int* INCX, double* BETA, double* Y, int* INCY);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(daxpy)(int* N, double* DA, double* DX, int* INCX, double* DY, int* INCY);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(zaxpy)(int* N, doublecomplex* ZA, doublecomplex* ZX, int* INCX, doublecomplex* ZY, int* INCY);
+/*--------------------------------------------------------------------------*/
+
+static double alpha = 1.;
+static double beta = 0.;
+
+static doublecomplex alphac = {1., 0.};
+static doublecomplex betac = {0., 0.};
+
+int eigs(double *AR, doublecomplex *AC, int N, int Acomplex, int Asym,
+ double* B, doublecomplex* BC, int Bcomplex, int matB, int nev,
+ doublecomplex SIGMA, char* which, double* maxiter, double* tol,
+ double* NCV, double* RESID, doublecomplex* RESIDC, int* INFO,
+ double* cholB, int INFO_EUPD, double* eigenvalue,
+ double* eigenvector, doublecomplex* eigenvalueC,
+ doublecomplex* eigenvectorC, int RVEC)
+
+{
+
+ // GENERAL VARIABLES
+ int i = 0;
+ int j = 0;
+ int k = 0;
+ int l = 0;
+ int INFO_CHOL = 0;
+ int INFO_LU = 0;
+ int INFO_INV = 0;
+ int iOne = 1;
+
+ // VARIABLES DSAUPD, DNAUPD, ZNAUPD
+ int LWORKL = 0;
+ int IDO = 0;
+ int LDV = Max(1, N);
+ int ncv = 0;
+
+ int IPARAM[11];
+ int IPNTR[14];
+
+ double* V = NULL;
+ doublecomplex* VC = NULL;
+
+ double* WORKD = NULL;
+ doublecomplex* WORKDC = NULL;
+
+ double* WORKL = NULL;
+ doublecomplex* WORKLC = NULL;
+
+ double* RWORK = NULL;
+
+ char* bmat = "I";
+
+ // VARIABLES DSEUPD, DNEUPD, ZNEUPD
+ char* HOWMNY = "A";
+
+ int* SELECT = NULL;
+
+ double* DI = NULL;
+ double* DR = NULL;
+ double* Z = NULL;
+
+ double* WORKEV = NULL;
+ doublecomplex* WORKEVC = NULL;
+
+ doublecomplex mSIGMA = { -SIGMA.r, -SIGMA.i };
+
+ double* R = NULL;
+ doublecomplex* RC = NULL;
+
+ double* AMSB = NULL;
+ doublecomplex* AMSBC = NULL;
+
+ int* IPVT = NULL;
+
+ double* temp = NULL;
+ doublecomplex* tempC = NULL;
+
+ int oldnev = nev;
+ int N2 = N * N;
+
+ IPARAM[0] = 1;
+ IPARAM[2] = (int) maxiter[0];
+ IPARAM[6] = 1; // by default mode = 1
+
+ // END VARIABLES
+
+ // MODE
+ if (!strcmp(which, "SM") || (SIGMA.r != 0 || SIGMA.i != 0))
+ {
+ IPARAM[6] = 3;
+ which = "LM";
+ }
+
+ // BMAT
+ if ((matB == 0) || (IPARAM[6] == 1)) // if B = [] or mode = 1 -> bmat = 'I' : standard eigenvalue problem
+ {
+ bmat = "I";
+ }
+ else // generalized eigenvalue problem
+ {
+ bmat = "G";
+ }
+
+ // NCV
+ if (NCV == NULL)
+ {
+ if (Asym == 0 && !Acomplex && !Bcomplex) // if dnaupd ncv = 2*nev+1
+ {
+ ncv = Max(2 * nev + 1, 20);
+ }
+ else // if dsaupd or znaupd ncv = 2*nev
+ {
+ ncv = Max(2 * nev, 20);
+ }
+ if (ncv > N)
+ {
+ ncv = N;
+ }
+ }
+ else
+ {
+ ncv = (int) NCV[0];
+ if (ncv <= nev || ncv > N) // Error
+ {
+ return -1;
+ }
+ }
+
+ // NEV
+ if ((!Acomplex && !Bcomplex && Asym == 1 && nev >= N) || ((Acomplex || Bcomplex || !Asym) && nev >= N - 1))
+ {
+ return -2;
+ }
+
+ if (matB != 0)
+ {
+ if (cholB[0]) // we already have the cholesky decomposition
+ {
+ R = B;
+ RC = BC;
+ }
+ else
+ {
+ if (IPARAM[6] == 1)
+ {
+ if (!Bcomplex) // B is real
+ {
+ R = (double *)malloc(N * N * sizeof(double));
+ memcpy(R, B, N * N * sizeof(double));
+ C2F(dpotrf) ("u", &N, R, &N, &INFO_CHOL); // Compute the upper triangular matrix R
+ if (INFO_CHOL != 0) // Errors
+ {
+ free(R);
+ return -3;
+ }
+ }
+ else // B is complex
+ {
+ RC = (doublecomplex *) malloc(N * N * sizeof(doublecomplex));
+ memcpy(RC, BC, N * N * sizeof(doublecomplex));
+ C2F(zpotrf) ("u", &N, RC, &N, &INFO_CHOL); // Computes the upper triangular matrix
+ if (INFO_CHOL != 0)
+ {
+ free(RC);
+ return -3;
+ }
+ }
+ }
+ }
+ }
+
+ // MAIN
+ if (!Acomplex && !Bcomplex) // A and B are not complex
+ {
+ if (IPARAM[6] == 3) // if mode = 3
+ {
+ AMSB = (double*)malloc(N * N * sizeof(double));
+ memcpy(AMSB, AR, N * N * sizeof(double));
+ if (SIGMA.r != 0)
+ {
+ // Compute LU decomposition AMSB = A - sigma*B
+ if (matB == 0) // if B = [] -> standard eigenvalue problem : A - sigma *I
+ {
+ for (i = 0 ; i < N ; i++)
+ {
+ AMSB[i + i * N] -= SIGMA.r;
+ }
+ }
+ else // generalized eigenvalue problem
+ {
+ if (cholB[0])
+ {
+ C2F(dsyrk) ("u", "t", &N, &N, &mSIGMA.r, R, &N, &alpha, AMSB, &N);
+ if (!Asym) //dsyrk does a symmetric update so we need to correct for the antisymmetric part
+ {
+ for (i = 0; i < N; i++)
+ {
+ for (j = 0; j < i; j++)
+ {
+ AMSB[i + j * N] = AMSB[j + i * N] + AR[i + j * N] - AR[j + i * N];
+ }
+ }
+ }
+ }
+ else
+ {
+ C2F(daxpy)(&N2, &mSIGMA.r, B, &iOne, AMSB, &iOne);
+ }
+ }
+ }
+
+ // LU decomposition
+ IPVT = (int*) calloc(N, sizeof(int));
+ C2F(dgetrf)(&N, &N, AMSB, &N, IPVT, &INFO_LU);
+ if (INFO_LU > 0)
+ {
+ free(IPVT);
+ free(AMSB);
+ return -7;
+ }
+ }
+
+ if (Asym) // DSAUPD
+ {
+ LWORKL = ncv * ncv + 8 * ncv;
+ WORKL = (double*) calloc(LWORKL, sizeof(double));
+
+ }
+ else // DNAUPD
+ {
+ LWORKL = 3 * ncv * (ncv + 2);
+ WORKL = (double*) calloc(LWORKL, sizeof(double));
+
+ }
+
+ WORKD = (double*) calloc(3 * N, sizeof(double));
+ V = (double*) calloc(N * ncv, sizeof(double));
+
+ if (IPARAM[6] == 1 && matB)
+ {
+ temp = (double*) malloc(N * sizeof(double));
+ }
+
+ while (IDO != 99)
+ {
+ if (Asym) // DSAUPD
+ {
+ C2F(dsaupd)(&IDO, bmat, &N, which, &nev, tol, RESID, &ncv, V, &LDV, IPARAM, IPNTR, WORKD, WORKL, &LWORKL, &INFO[0]);
+ }
+ else // DNAUPD
+ {
+ C2F(dnaupd)(&IDO, bmat, &N, which, &nev, tol, RESID, &ncv, V, &LDV, IPARAM, IPNTR, WORKD, WORKL, &LWORKL, &INFO[0]);
+ }
+
+ if (INFO[0] == -1) //non critical error
+ {
+ sciprint("%s: WARNING: Maximum number of iterations reached. Only %d eigenvalues converged.\n", "eigs", IPARAM[4]);
+ break;
+ }
+ else
+ {
+ if (INFO[0] < 0)
+ {
+ if (R != B)
+ {
+ free(R);
+ }
+ free(IPVT);
+ free(AMSB);
+ free(WORKD);
+ free(WORKL);
+ free(V);
+ free(temp);
+
+ return -4;
+ }
+ }
+
+ if (IDO == -1 || IDO == 1 || IDO == 2)
+ {
+ if (IPARAM[6] == 1) // mode = 1
+ {
+ if (IDO == 2)
+ {
+ memcpy(WORKD + IPNTR[1] - 1, WORKD + IPNTR[0] - 1, N * sizeof(double));
+ }
+ else //IDO=1 or IDO=-1
+ {
+ if (matB == 0) // B = [] -> standard eigenvalue problem
+ {
+ // OP = A*x
+ if (Asym)
+ {
+ C2F(dsymv) ("u", &N, &alpha, AR, &N, WORKD + IPNTR[0] - 1, &iOne, &beta, WORKD + IPNTR[1] - 1, &iOne);
+ }
+ else
+ {
+ C2F(dgemv) ("n", &N, &N, &alpha, AR, &N, WORKD + IPNTR[0] - 1, &iOne, &beta, WORKD + IPNTR[1] - 1, &iOne);
+ }
+ }
+ else // generalized eigenvalue problem
+ {
+ // OP = inv(Rprime)*A*inv(R)*x
+ memcpy(WORKD + IPNTR[1] - 1, WORKD + IPNTR[0] - 1, N * sizeof(double));
+ C2F(dtrsm) ("l", "u", "n", "n", &N, &iOne, &alpha, R, &N, WORKD + IPNTR[1] - 1, &N);
+ memcpy(temp, WORKD + IPNTR[1] - 1, N * sizeof(double));
+ if (Asym)
+ {
+ C2F(dsymv) ("u", &N, &alpha, AR, &N, temp, &iOne, &beta, WORKD + IPNTR[1] - 1, &iOne);
+ }
+ else
+ {
+ C2F(dgemv) ("n", &N, &N, &alpha, AR, &N, temp, &iOne, &beta, WORKD + IPNTR[1] - 1, &iOne);
+ }
+ C2F(dtrsm) ("l", "u", "t", "n", &N, &iOne, &alpha, R, &N, WORKD + IPNTR[1] - 1, &N);
+ }
+ }
+ }
+ else
+ {
+ if (IPARAM[6] == 3) // mode = 3
+ {
+ if (matB == 0) // B = [] -> standard eigenvalue problem
+ {
+ if (IDO == 2)
+ {
+ // y = B*x where B = I so workd[ipntr[1]-1:ipntr[1]+N-1] = workd[ipntr[0]-1:ipntr[0]+N-1]
+ memcpy(WORKD + IPNTR[1] - 1, WORKD + IPNTR[0] - 1, N * sizeof(double));
+ }
+ else
+ {
+ // workd[ipntr[1]-1:ipntr[1]+N-1] = inv(U)*inv(L)*inv(P)*workd[ipntr[0]-1:ipntr[0]+N-1]
+ memcpy(WORKD + IPNTR[1] - 1, WORKD + IPNTR[0] - 1, N * sizeof(double));
+ C2F(dgetrs) ("n", &N, &iOne, AMSB, &N, IPVT, WORKD + IPNTR[1] - 1, &N, &INFO_INV);
+ }
+ }
+ else // matB == 1 so B is not empty and bmat = 'G'-> generalized eigenvalue problem
+ {
+ if (IDO == 2 || IDO == -1)
+ {
+ if (cholB[0]) // workd[ipntr[1]-1:ipntr[1]+N-1] = Rprime * R * workd[ipntr[0]-1:ipntr[0]+N-1]
+ {
+ memcpy(WORKD + IPNTR[1] - 1, WORKD + IPNTR[0] - 1, N * sizeof(double));
+ C2F(dtrmv) ("u", "n", "n", &N, B, &N, WORKD + IPNTR[1] - 1, &iOne);
+ C2F(dtrmv) ("u", "t", "n", &N, B, &N, WORKD + IPNTR[1] - 1, &iOne);
+ }
+ else // workd[ipntr[1]-1:ipntr[1]+N-1] = B * workd[ipntr[0]-1:ipntr[0]+N-1]
+ {
+ C2F(dgemv) ("n", &N, &N, &alpha, B, &N, WORKD + IPNTR[0] - 1, &iOne, &beta, WORKD + IPNTR[1] - 1, &iOne);
+ }
+ }
+
+ if (IDO == -1)
+ {
+ // compute workd[ipntr[1]-1:ipntr[1]+N-1] = inv(U)*inv(L)*inv(P)*workd[ipntr[1]-1:ipntr[1]+N-1]
+ C2F(dgetrs) ("n", &N, &iOne, AMSB, &N, IPVT, WORKD + IPNTR[1] - 1, &N, &INFO_INV);
+ }
+ else
+ {
+ if (IDO == 1)
+ {
+ // computes workd[ipntr[1]-1:ipntr[1]+N-1] = inv(U)*inv(L)*inv(P)*workd[ipntr[2]-1:ipntr[2]+N-1]
+ memcpy(WORKD + IPNTR[1] - 1, WORKD + IPNTR[2] - 1, N * sizeof(double));
+ C2F(dgetrs) ("n", &N, &iOne, AMSB, &N, IPVT, WORKD + IPNTR[1] - 1, &N, &INFO_INV);
+ }
+ }
+ }
+ }
+ else
+ {
+ if (R != B)
+ {
+ free(R);
+ }
+ free(AMSB);
+ free(IPVT);
+ free(WORKD);
+ free(WORKL);
+ free(V);
+ free(temp);
+
+ return -5;
+ }
+ }
+ }
+ } // END WHILE
+ free(AMSB);
+ free(IPVT);
+ free(temp);
+ SELECT = (int *)calloc(ncv, sizeof(int));
+
+ if (Asym) // DSEUPD
+ {
+ C2F(dseupd) (&RVEC, HOWMNY, SELECT, eigenvalue, eigenvector, &LDV,
+ &SIGMA.r, bmat, &N, which, &nev, tol, RESID, &ncv, V,
+ &LDV, IPARAM, IPNTR, WORKD, WORKL, &LWORKL, &INFO_EUPD);
+
+ if (INFO_EUPD != 0)
+ {
+ if (R != B)
+ {
+ free(R);
+ }
+ free(WORKD);
+ free(WORKL);
+ free(V);
+ free(SELECT);
+ return -6;
+ }
+ else
+ {
+ if (RVEC)
+ {
+ if (matB && IPARAM[6] == 1)
+ {
+ // we need to revert back to the original problem
+ // since we really solved for (y,\lambda) in R^{-T}Ay=\lambda y
+ //with y = Rx, so that x = R^{-1}y
+ C2F(dtrsm) ("l", "u", "n", "n", &N, &nev, &alpha, R, &N, eigenvector, &N);
+ }
+ }
+ }
+ }
+ else // DNEUPD
+ {
+ DR = (double *)calloc((nev + 1), sizeof(double));
+ DI = (double *)calloc((nev + 1), sizeof(double));
+ WORKEV = (double *)calloc(3 * ncv, sizeof(double));
+
+ RVEC = RVEC || (IPARAM[6] == 3 && SIGMA.i != 0);
+
+ if (RVEC)
+ {
+ Z = (double *)calloc(N * (nev + 1), sizeof(double));
+ }
+
+ C2F(dneupd) (&RVEC, HOWMNY, SELECT, DR, DI, Z, &LDV, &SIGMA.r,
+ &SIGMA.i, WORKEV, bmat, &N, which, &nev, tol, RESID,
+ &ncv, V, &LDV, IPARAM, IPNTR, WORKD, WORKL, &LWORKL, &INFO_EUPD);
+
+ if (INFO_EUPD != 0)
+ {
+ if (R != B)
+ {
+ free(R);
+ }
+ free(WORKD);
+ free(WORKL);
+ free(V);
+ free(DR);
+ free(DI);
+ free(Z);
+ free(WORKEV);
+ free(SELECT);
+ return -6;
+ }
+ else
+ {
+ if (Z && matB && IPARAM[6] == 1)
+ {
+ // we need to revert back to the original problem
+ // since we really solved for (y,\lambda) in R^{-T}Ay=\lambda y
+ //with y = Rx, so that x = R^{-1}y
+ C2F(dtrsm) ("l", "u", "n", "n", &N, &nev, &alpha, R, &N, Z, &N);
+ }
+ //we use oldnev, because dneupd increases nev by one sometimes.
+ process_dneupd_data(DR, DI, Z, N, oldnev, AR, eigenvalueC,
+ eigenvectorC, (IPARAM[6] == 3) && (SIGMA.i != 0));
+
+ free(DR);
+ free(DI);
+ free(Z);
+ free(WORKEV);
+ }
+ }
+
+ free(V);
+ free(WORKD);
+ free(WORKL);
+ free(SELECT);
+ if (R != B)
+ {
+ free(R);
+ }
+ }
+ else // A or/and B complex
+ {
+ if (IPARAM[6] == 3) // mode = 3
+ {
+ AMSBC = (doublecomplex*)malloc(N * N * sizeof(doublecomplex));
+
+ if (SIGMA.r != 0 || SIGMA.i != 0)
+ {
+ if (matB == 0) // standard eigenvalue problem
+ {
+ memcpy(AMSBC, AC, N * N * sizeof(doublecomplex));
+ for (i = 0 ; i < N ; i++)
+ {
+ AMSBC[i + i * N].r -= SIGMA.r;
+ AMSBC[i + i * N].i -= SIGMA.i;
+ }
+ }
+ else // generalized eigenvalue problem
+ {
+ if (cholB[0])
+ {
+ memcpy(AMSBC, BC, N * N * sizeof(doublecomplex));
+ C2F(ztrmm)("l", "u", "c", "n", &N, &N, &mSIGMA, BC, &N, AMSBC, &N);
+ C2F(zaxpy)(&N2, &alphac, AC, &iOne, AMSBC, &iOne);
+ }
+ else
+ {
+ memcpy(AMSBC, AC, N * N * sizeof(doublecomplex));
+ C2F(zaxpy) (&N2, &mSIGMA, BC, &iOne, AMSBC, &iOne);
+ }
+ }
+ }
+ else
+ {
+ memcpy(AMSBC, AC, N * N * sizeof(doublecomplex));
+ }
+
+ // LU decomposition
+ IPVT = (int*) calloc(N, sizeof(int));
+ C2F(zgetrf) (&N, &N, AMSBC, &N, IPVT, &INFO_LU);
+ if (INFO_LU > 0)
+ {
+ free(IPVT);
+ free(AMSBC);
+ return(-7);
+ }
+ }
+ LWORKL = 3 * ncv * ncv + 5 * ncv;
+
+ VC = (doublecomplex*) calloc(N * ncv, sizeof(doublecomplex));
+ WORKLC = (doublecomplex*) calloc(LWORKL, sizeof(doublecomplex));
+ WORKDC = (doublecomplex*) calloc(3 * N, sizeof(doublecomplex));
+ RWORK = (double*) calloc(ncv, sizeof(double));
+ if (IPARAM[6] == 1 && matB)
+ {
+ tempC = (doublecomplex*) malloc(N * sizeof(doublecomplex));
+ }
+
+ while (IDO != 99)
+ {
+ C2F(znaupd)(&IDO, bmat, &N, which, &nev, tol, RESIDC, &ncv, VC, &LDV, IPARAM, IPNTR, WORKDC, WORKLC, &LWORKL, RWORK, &INFO[0]);
+
+ if (INFO[0] == -1) //non critical error
+ {
+ sciprint("%s: WARNING: Maximum number of iterations reached. Only %d eigenvalues converged.\n", "eigs", IPARAM[4]);
+ break;
+ }
+ else
+ {
+ if (INFO[0] < 0)
+ {
+ if (RC != BC)
+ {
+ free(RC);
+ }
+ free(WORKDC);
+ free(WORKLC);
+ free(VC);
+ free(RWORK);
+ return -4;
+ }
+ }
+
+ if (IDO == -1 || IDO == 1 || IDO == 2)
+ {
+ if (IPARAM[6] == 1) // mode = 1
+ {
+ if (IDO == 2)
+ {
+ memcpy(WORKDC + IPNTR[1] - 1, WORKDC + IPNTR[0] - 1, N * sizeof(doublecomplex));
+ }
+ else
+ {
+ if (matB == 0) // B = I
+ {
+ // OP = A*x
+ C2F(zgemv) ("n", &N, &N, &alphac, AC, &N, WORKDC + IPNTR[0] - 1, &iOne, &betac, WORKDC + IPNTR[1] - 1, &iOne);
+ }
+ else
+ {
+ // OP = inv(RC')*A*inv(RC)*x
+ memcpy(WORKDC + IPNTR[1] - 1, WORKDC + IPNTR[0] - 1, N * sizeof(doublecomplex));
+ C2F(ztrsm) ("l", "u", "n", "n", &N, &iOne, &alphac, RC, &N, WORKDC + IPNTR[1] - 1, &N);
+ memcpy(tempC, WORKDC + IPNTR[1] - 1, N * sizeof(doublecomplex));
+ C2F(zgemv) ("n", &N, &N, &alphac, AC, &N, tempC, &iOne, &betac, WORKDC + IPNTR[1] - 1, &iOne);
+ C2F(ztrsm) ("l", "u", "c", "n", &N, &iOne, &alphac, RC, &N, WORKDC + IPNTR[1] - 1, &N);
+ }
+ }
+ }
+ else
+ {
+ if (IPARAM[6] == 3) // if mode = 3
+ {
+ if (matB == 0) // B = [] -> matB is empty -> standard eigenvalue problem
+ {
+ if (IDO == 2)
+ {
+ // y = B*x where B = I so workd[ipntr[1]-1:ipntr[1]+N-1] = workd[ipntr[0]-1:ipntr[0]+N-1]
+ memcpy(WORKDC + IPNTR[1] - 1, WORKDC + IPNTR[0] - 1, N * sizeof(doublecomplex));
+ }
+ else
+ {
+ // workd[ipntr[1]-1:ipntr[1]+N-1] = inv(U)*inv(L)*inv(P)*workd[ipntr[0]-1:ipntr[0]+N-1]
+ memcpy(WORKDC + IPNTR[1] - 1, WORKDC + IPNTR[0] - 1, N * sizeof(doublecomplex));
+ C2F(zgetrs) ("n", &N, &iOne, AMSBC, &N, IPVT, WORKDC + IPNTR[1] - 1, &N, &INFO_INV);
+ }
+
+ }
+ else // matB == 1 so B is not empty and bmat = 'G'-> generalized eigenvalue problem
+ {
+ if (IDO == 2 || IDO == -1)
+ {
+ if (cholB[0]) // workd[ipntr[1]-1:ipntr[1]+N-1] = RCprime * RC * workd[ipntr[0]-1:ipntr[0]+N-1]
+ {
+ memcpy(WORKDC + IPNTR[1] - 1, WORKDC + IPNTR[0] - 1, N * sizeof(doublecomplex));
+ C2F(ztrmv) ("u", "n", "n", &N, BC, &N, WORKDC + IPNTR[1] - 1, &iOne);
+ C2F(ztrmv) ("u", "c", "n", &N, BC, &N, WORKDC + IPNTR[1] - 1, &iOne);
+ }
+ else // workd[ipntr[1]-1:ipntr[1]+N-1] = B *workd[ipntr[0]-1:ipntr[0]+N-1]
+ {
+ C2F(zgemv) ("n", &N, &N, &alphac, BC, &N, WORKDC + IPNTR[0] - 1, &iOne, &betac, WORKDC + IPNTR[1] - 1, &iOne);
+ }
+ }
+ if (IDO == -1)
+ {
+ // compute workd[ipntr[1]-1:ipntr[1]+N-1] = inv(U)*inv(L)*inv(P)*workd[ipntr[1]-1:ipntr[1]+N-1]
+ C2F(zgetrs) ("n", &N, &iOne, AMSBC, &N, IPVT, WORKDC + IPNTR[1] - 1, &N, &INFO_INV);
+ }
+ else
+ {
+ if (IDO == 1)
+ {
+ /* compute workd[ipntr[1]-1:ipntr[1]+N-1] = inv(U)*inv(L)*inv(P)*workd[ipntr[2]-1:ipntr[2]+N-1] */
+ memcpy(WORKDC + IPNTR[1] - 1, WORKDC + IPNTR[2] - 1, N * sizeof(doublecomplex));
+ C2F(zgetrs) ("n", &N, &iOne, AMSBC, &N, IPVT, WORKDC + IPNTR[1] - 1, &N, &INFO_INV);
+ }
+ }
+ } //END mode3
+ }
+ else
+ {
+ if (RC != BC)
+ {
+ free(RC);
+ }
+ free(WORKDC);
+ free(WORKLC);
+ free(VC);
+ free(RWORK);
+ free(tempC);
+
+ return -5;
+ }
+ }
+ }
+ } // END WHILE
+ free(tempC);
+ free(IPVT);
+ free(AMSBC);
+
+ SELECT = (int *)calloc(ncv, sizeof(int));
+ WORKEVC = (doublecomplex *) calloc(2 * ncv, sizeof(doublecomplex));
+
+ C2F(zneupd) (&RVEC, HOWMNY, SELECT, eigenvalueC, eigenvectorC, &LDV, &SIGMA, WORKEVC, bmat, &N,
+ which, &nev, tol, RESIDC, &ncv, VC, &LDV, IPARAM, IPNTR, WORKDC,
+ WORKLC, &LWORKL, RWORK, &INFO_EUPD);
+
+ if (INFO_EUPD != 0)
+ {
+ if (RC != BC)
+ {
+ free(RC);
+ }
+ free(WORKDC);
+ free(WORKLC);
+ free(VC);
+ free(SELECT);
+ free(WORKEVC);
+ free(RWORK);
+
+ return -6;
+ }
+ else
+ {
+ if (RVEC)
+ {
+ if (matB && IPARAM[6] == 1)
+ {
+ C2F(ztrsm) ("l", "u", "n", "n", &N, &nev, &alphac, RC, &N, eigenvectorC, &N);
+ }
+ }
+ }
+
+ free(SELECT);
+ free(WORKEVC);
+
+ free(VC);
+ free(WORKDC);
+ free(WORKLC);
+ free(RWORK);
+ if (RC != BC)
+ {
+ free(RC);
+ }
+ }
+
+ return 0;
+}
diff --git a/modules/arnoldi/src/c/eigs_dependencies.c b/modules/arnoldi/src/c/eigs_dependencies.c
new file mode 100755
index 000000000..a725b8f5f
--- /dev/null
+++ b/modules/arnoldi/src/c/eigs_dependencies.c
@@ -0,0 +1,109 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - Scilab Enterprises - Adeline CARNIS
+ *
+ * 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 "eigs_dependencies.h"
+
+extern int C2F(dgemv) (char* trans, int* m, int* n, double* alpha, double* A,
+ int* lda, double* x, int* incx, double* beta, double* y, int* incy);
+extern double C2F(ddot) (int *n, double* x, int* incx, double* y, int* incy);
+
+void process_dneupd_data(double* DR, double* DI, double* Z, int N, int nev, double* AR,
+ doublecomplex* eigenvalue, doublecomplex* eigenvector,
+ int sigma_imaginary)
+{
+ /* if sigma_imaginary there is an extra step to compute the eigenvalues
+ as explained in the dneupd user guide */
+
+ double* temp1 = NULL;
+ double* temp2 = NULL;
+
+ int i = 0;
+ int j = 0;
+
+ double alpha = 1;
+ double beta = 0;
+ int iOne = 1;
+ double real_part;
+ double imag_part;
+
+ if ( sigma_imaginary )
+ {
+ temp1 = (double*) malloc(N * sizeof(double));
+ temp2 = (double*) malloc(N * sizeof(double));
+
+ while (i < nev)
+ {
+ if (DI[i] == 0)
+ {
+ C2F(dgemv) ("n", &N, &N, &alpha, AR, &N, Z + N * i, &iOne, &beta, temp1, &iOne);
+ eigenvalue[i].r = C2F(ddot) (&N, Z + N * i, &iOne, temp1, &iOne);
+ eigenvalue[i].i = 0;
+ i = i + 1;
+ }
+ else
+ {
+ C2F(dgemv) ("n", &N, &N, &alpha, AR, &N, Z + N * i, &iOne, &beta, temp1, &iOne);
+ C2F(dgemv) ("n", &N, &N, &alpha, AR, &N, Z + N * (i + 1), &iOne, &beta, temp2, &iOne);
+ real_part = C2F(ddot) (&N, Z + N * i, &iOne, temp1, &iOne) + \
+ C2F(ddot) (&N, Z + N * (i + 1), &iOne, temp2, &iOne);
+ imag_part = C2F(ddot) (&N, Z + N * i, &iOne, temp2, &iOne) - \
+ C2F(ddot) (&N, Z + N * (i + 1), &iOne, temp1, &iOne);
+ eigenvalue[i].r = real_part;
+ eigenvalue[i].i = imag_part;
+ eigenvalue[i + 1].r = real_part;
+ eigenvalue[i + 1].i = -imag_part;
+ i = i + 2;
+ }
+ }
+ free(temp1);
+ free(temp2);
+ }
+ else
+ {
+ for (i = 0; i < nev + 1; i++)
+ {
+ eigenvalue[i].r = DR[i];
+ eigenvalue[i].i = DI[i];
+ }
+ }
+
+ if (eigenvector)
+ {
+ i = 0;
+
+ while (i < nev)
+ {
+ if (DI[i] != 0)
+ {
+ for (j = 0; j < N; j++)
+ {
+ eigenvector[i * N + j].r = Z[i * N + j];
+ eigenvector[i * N + j].i = Z[(i + 1) * N + j];
+ eigenvector[(i + 1) * N + j].r = Z[i * N + j];
+ eigenvector[(i + 1) * N + j].i = -Z[(i + 1) * N + j];
+ }
+
+ i = i + 2;
+ }
+ else
+ {
+ for (j = 0; j < N; j++)
+ {
+ eigenvector[i * N + j].r = Z[i * N + j];
+ eigenvector[i * N + j].i = 0;
+ }
+
+ i = i + 1;
+ }
+ }
+ }
+}
diff --git a/modules/arnoldi/src/c/libsciarnoldi_la-eigs.lo b/modules/arnoldi/src/c/libsciarnoldi_la-eigs.lo
new file mode 100755
index 000000000..ef269c5ba
--- /dev/null
+++ b/modules/arnoldi/src/c/libsciarnoldi_la-eigs.lo
@@ -0,0 +1,12 @@
+# src/c/libsciarnoldi_la-eigs.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/libsciarnoldi_la-eigs.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/arnoldi/src/c/libsciarnoldi_la-eigs_dependencies.lo b/modules/arnoldi/src/c/libsciarnoldi_la-eigs_dependencies.lo
new file mode 100755
index 000000000..27a44baa5
--- /dev/null
+++ b/modules/arnoldi/src/c/libsciarnoldi_la-eigs_dependencies.lo
@@ -0,0 +1,12 @@
+# src/c/libsciarnoldi_la-eigs_dependencies.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/libsciarnoldi_la-eigs_dependencies.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_11653.dia.ref b/modules/arnoldi/tests/nonreg_tests/bug_11653.dia.ref
new file mode 100755
index 000000000..97b52d4d0
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_11653.dia.ref
@@ -0,0 +1,108 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 11653 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=11653
+//
+// <-- Short Description -->
+// Optional booleans in eigs were doubles and are now booleans.
+// =============================================================================
+// REAL SYMMETRIC PROBLEM
+clear opts;
+n = 10;
+k = 6;
+A = diag(5*ones(n,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6*ones(n-1,1));
+A(1:$-3,4:$) = A(1:$-3,4:$) + diag(2*ones(n-3,1));
+A(4:$,1:$-3) = A(4:$,1:$-3) + diag(2*ones(n-3,1));
+A1 = sparse(A);
+opts.cholB = %t;
+d1 = eigs(A1, speye(n,n), k, 'LM', opts);
+d0 = spec(A);
+assert_checkalmostequal(gsort(d1,'g','i'), [d0(1);d0($-4:$)], [], %eps);
+d1 = eigs(A, eye(n,n), k, 'LM', opts);
+assert_checkalmostequal(gsort(real(d1),'g','i'), [d0(1);d0($-4:$)], [], %eps);
+// REAL NON SYMMETRIC PROBLEM
+B = diag(5*ones(n,1));
+B(1:$-1,2:$) = B(1:$-1,2:$) + diag(-6*ones(n-1,1));
+B(2:$,1:$-1) = B(2:$,1:$-1) + diag(6*ones(n-1,1));
+B(1:$-3,4:$) = B(1:$-3,4:$) + diag(-2*ones(n-3,1));
+B(4:$,1:$-3) = B(4:$,1:$-3) + diag(2*ones(n-3,1));
+B1 = sparse(B);
+d0 = spec(B);
+d1 = eigs(B1, speye(n,n), k, 'LM', opts);
+assert_checkalmostequal(abs(d1), gsort(abs(d0($-5:$)),'g','i'), [], %eps);
+d1 = eigs(B, eye(n,n), k, 'LM', opts);
+assert_checkalmostequal(abs(d1), gsort(abs(d0($-5:$)),'g','i'), [], %eps);
+// COMPLEX PROBLEM
+C = diag(5*ones(n,1)+%i*ones(n,1));
+C(1:$-1,2:$) = C(1:$-1,2:$) + diag(6*ones(n-1,1));
+C(2:$,1:$-1) = C(2:$,1:$-1) + diag(6*ones(n-1,1));
+C(1:$-3,4:$) = C(1:$-3,4:$) + diag(2*ones(n-3,1));
+C(4:$,1:$-3) = C(4:$,1:$-3) + diag(2*ones(n-3,1));
+C1 = sparse(C);
+d0= spec(C);
+d1 = eigs(C1, speye(n,n), k, 'LM', opts);
+d = gsort(abs(d0));
+assert_checkalmostequal(gsort(abs(d1)), d(1:k), [], %eps);
+d1 = eigs(C, eye(n,n), k, 'LM', opts);
+assert_checkalmostequal(gsort(abs(d1)), d(1:k), [], %eps);
+// FUNCTION :
+// REAL SYMMETRIC PROBLEM
+clear opts
+function y = fn(x)
+ y = A1 * x;
+endfunction
+opts.isreal = %t;
+opts.issym = %t;
+d1 = eigs(fn, n, [], k, 'LM', opts );
+d0 = spec(A);
+assert_checkalmostequal(gsort(d1,'g','i'), [d0(1);d0($-4:$)], [], %eps);
+clear fn
+function y = fn(x)
+ y = A * x;
+endfunction
+d1 = eigs(fn, n, [], k, 'LM', opts );
+assert_checkalmostequal(gsort(real(d1),'g','i'), [d0(1);d0($-4:$)], [], %eps);
+// REAL NON SYMMETRIC PROBLEM
+clear fn
+function y = fn(x)
+ y = B1 * x;
+endfunction
+opts.isreal = %t;
+opts.issym = %f;
+d1 = eigs(fn, n, [], k, 'LM', opts );
+d0 = spec(B);
+assert_checkalmostequal(abs(d1), gsort(abs(d0($-5:$)),'g','i'), [], %eps);
+clear fn
+//B collides with B inside of feigs, so we rename it ( global variables are evil!)
+globalB = B;
+function y = fn(x)
+ y = globalB * x;
+endfunction
+d1 = eigs(fn, n, [], k, 'LM', opts );
+assert_checkalmostequal(abs(d1), gsort(abs(d0($-5:$)),'g','i'), [], %eps);
+// COMPLEX PROBLEM
+clear fn
+function y = fn(x)
+ y = C1 * x;
+endfunction
+opts.isreal = %f;
+opts.issym = %f;
+d1 = eigs(fn, n, [], k, 'LM', opts );
+d0 = spec(C);
+d = gsort(abs(d0));
+assert_checkalmostequal(gsort(abs(d1)), d(1:k), [], %eps);
+clear fn
+function y = fn(x)
+ y = C * x;
+endfunction
+d1 = eigs(fn, n, [], k, 'LM', opts );
+assert_checkalmostequal(gsort(abs(d1)), d(1:k), [], %eps);
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_11653.tst b/modules/arnoldi/tests/nonreg_tests/bug_11653.tst
new file mode 100755
index 000000000..b9a88eaff
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_11653.tst
@@ -0,0 +1,136 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 11653 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=11653
+//
+// <-- Short Description -->
+// Optional booleans in eigs were doubles and are now booleans.
+// =============================================================================
+
+// REAL SYMMETRIC PROBLEM
+clear opts;
+n = 10;
+k = 6;
+A = diag(5*ones(n,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6*ones(n-1,1));
+A(1:$-3,4:$) = A(1:$-3,4:$) + diag(2*ones(n-3,1));
+A(4:$,1:$-3) = A(4:$,1:$-3) + diag(2*ones(n-3,1));
+A1 = sparse(A);
+
+opts.cholB = %t;
+d1 = eigs(A1, speye(n,n), k, 'LM', opts);
+d0 = spec(A);
+assert_checkalmostequal(gsort(d1,'g','i'), [d0(1);d0($-4:$)], [], %eps);
+
+d1 = eigs(A, eye(n,n), k, 'LM', opts);
+assert_checkalmostequal(gsort(real(d1),'g','i'), [d0(1);d0($-4:$)], [], %eps);
+
+// REAL NON SYMMETRIC PROBLEM
+B = diag(5*ones(n,1));
+B(1:$-1,2:$) = B(1:$-1,2:$) + diag(-6*ones(n-1,1));
+B(2:$,1:$-1) = B(2:$,1:$-1) + diag(6*ones(n-1,1));
+B(1:$-3,4:$) = B(1:$-3,4:$) + diag(-2*ones(n-3,1));
+B(4:$,1:$-3) = B(4:$,1:$-3) + diag(2*ones(n-3,1));
+B1 = sparse(B);
+d0 = spec(B);
+
+d1 = eigs(B1, speye(n,n), k, 'LM', opts);
+assert_checkalmostequal(abs(d1), gsort(abs(d0($-5:$)),'g','i'), [], %eps);
+
+d1 = eigs(B, eye(n,n), k, 'LM', opts);
+assert_checkalmostequal(abs(d1), gsort(abs(d0($-5:$)),'g','i'), [], %eps);
+
+
+// COMPLEX PROBLEM
+C = diag(5*ones(n,1)+%i*ones(n,1));
+C(1:$-1,2:$) = C(1:$-1,2:$) + diag(6*ones(n-1,1));
+C(2:$,1:$-1) = C(2:$,1:$-1) + diag(6*ones(n-1,1));
+C(1:$-3,4:$) = C(1:$-3,4:$) + diag(2*ones(n-3,1));
+C(4:$,1:$-3) = C(4:$,1:$-3) + diag(2*ones(n-3,1));
+C1 = sparse(C);
+d0= spec(C);
+
+d1 = eigs(C1, speye(n,n), k, 'LM', opts);
+d = gsort(abs(d0));
+assert_checkalmostequal(gsort(abs(d1)), d(1:k), [], %eps);
+
+d1 = eigs(C, eye(n,n), k, 'LM', opts);
+assert_checkalmostequal(gsort(abs(d1)), d(1:k), [], %eps);
+
+
+// FUNCTION :
+// REAL SYMMETRIC PROBLEM
+clear opts
+function y = fn(x)
+ y = A1 * x;
+endfunction
+
+opts.isreal = %t;
+opts.issym = %t;
+
+d1 = eigs(fn, n, [], k, 'LM', opts );
+d0 = spec(A);
+assert_checkalmostequal(gsort(d1,'g','i'), [d0(1);d0($-4:$)], [], %eps);
+
+clear fn
+function y = fn(x)
+ y = A * x;
+endfunction
+
+d1 = eigs(fn, n, [], k, 'LM', opts );
+assert_checkalmostequal(gsort(real(d1),'g','i'), [d0(1);d0($-4:$)], [], %eps);
+
+// REAL NON SYMMETRIC PROBLEM
+clear fn
+function y = fn(x)
+ y = B1 * x;
+endfunction
+
+opts.isreal = %t;
+opts.issym = %f;
+
+d1 = eigs(fn, n, [], k, 'LM', opts );
+d0 = spec(B);
+assert_checkalmostequal(abs(d1), gsort(abs(d0($-5:$)),'g','i'), [], %eps);
+
+clear fn
+//B collides with B inside of feigs, so we rename it ( global variables are evil!)
+globalB = B;
+function y = fn(x)
+ y = globalB * x;
+endfunction
+
+d1 = eigs(fn, n, [], k, 'LM', opts );
+assert_checkalmostequal(abs(d1), gsort(abs(d0($-5:$)),'g','i'), [], %eps);
+
+// COMPLEX PROBLEM
+clear fn
+function y = fn(x)
+ y = C1 * x;
+endfunction
+
+opts.isreal = %f;
+opts.issym = %f;
+
+d1 = eigs(fn, n, [], k, 'LM', opts );
+d0 = spec(C);
+d = gsort(abs(d0));
+assert_checkalmostequal(gsort(abs(d1)), d(1:k), [], %eps);
+
+clear fn
+function y = fn(x)
+ y = C * x;
+endfunction
+
+d1 = eigs(fn, n, [], k, 'LM', opts );
+assert_checkalmostequal(gsort(abs(d1)), d(1:k), [], %eps);
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_12120.dia.ref b/modules/arnoldi/tests/nonreg_tests/bug_12120.dia.ref
new file mode 100755
index 000000000..2c0980ed7
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_12120.dia.ref
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 12120 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12120
+//
+// <-- Short Description -->
+// eigs is broken for complex sparse matrices
+// =============================================================================
+A = %i * speye(10,10);
+a=eigs(A, [], 3, 'SM');
+assert_checkequal(size(a),[3, 1]);
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_12120.tst b/modules/arnoldi/tests/nonreg_tests/bug_12120.tst
new file mode 100755
index 000000000..b24163d20
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_12120.tst
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 12120 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12120
+//
+// <-- Short Description -->
+// eigs is broken for complex sparse matrices
+// =============================================================================
+
+A = %i * speye(10,10);
+a=eigs(A, [], 3, 'SM');
+assert_checkequal(size(a),[3, 1]);
+
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_12137.dia.ref b/modules/arnoldi/tests/nonreg_tests/bug_12137.dia.ref
new file mode 100755
index 000000000..5a849b106
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_12137.dia.ref
@@ -0,0 +1,34 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 12137 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12137
+//
+// <-- Short Description -->
+// eigs(A,B) returns incorrect result for sparse matrices
+// =============================================================================
+A=sparse(toeplitz([1 0 0 3 0 5 0 3 0 0 1]));
+B=[
+3., 0., 0., 2., 0., 0., 2., 0., 2., 0., 0. ;
+0., 5., 4., 0., 0., 0., 0., 0., 0., 0., 0. ;
+0., 4., 5., 0., 0., 0., 0., 0., 0., 0., 0. ;
+2., 0., 0., 3., 0., 0., 2., 0., 2., 0., 0. ;
+0., 0., 0., 0. , 5., 0., 0., 0., 0., 0., 4. ;
+0., 0., 0., 0., 0., 4., 0., 3., 0., 3., 0. ;
+2., 0., 0., 2., 0., 0., 3., 0., 2., 0., 0. ;
+0., 0., 0., 0., 0., 3., 0., 4., 0., 3., 0. ;
+2., 0., 0., 2., 0., 0., 2., 0., 3., 0., 0. ;
+0., 0., 0., 0., 0., 3., 0., 3., 0., 4., 0. ;
+0., 0., 0., 0., 4., 0., 0., 0., 0., 0., 5.];
+B=sparse(B);
+C=eigs(A,B,10);
+[a b] = spec(full(A), full(B));
+C1=gsort(a./b, "g", "i");
+C1(1)=[]; // remove the small value
+assert_checkalmostequal(C1, C);
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_12137.tst b/modules/arnoldi/tests/nonreg_tests/bug_12137.tst
new file mode 100755
index 000000000..4d593e1a5
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_12137.tst
@@ -0,0 +1,39 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 12137 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12137
+//
+// <-- Short Description -->
+// eigs(A,B) returns incorrect result for sparse matrices
+// =============================================================================
+
+A=sparse(toeplitz([1 0 0 3 0 5 0 3 0 0 1]));
+
+B=[
+3., 0., 0., 2., 0., 0., 2., 0., 2., 0., 0. ;
+0., 5., 4., 0., 0., 0., 0., 0., 0., 0., 0. ;
+0., 4., 5., 0., 0., 0., 0., 0., 0., 0., 0. ;
+2., 0., 0., 3., 0., 0., 2., 0., 2., 0., 0. ;
+0., 0., 0., 0. , 5., 0., 0., 0., 0., 0., 4. ;
+0., 0., 0., 0., 0., 4., 0., 3., 0., 3., 0. ;
+2., 0., 0., 2., 0., 0., 3., 0., 2., 0., 0. ;
+0., 0., 0., 0., 0., 3., 0., 4., 0., 3., 0. ;
+2., 0., 0., 2., 0., 0., 2., 0., 3., 0., 0. ;
+0., 0., 0., 0., 0., 3., 0., 3., 0., 4., 0. ;
+0., 0., 0., 0., 4., 0., 0., 0., 0., 0., 5.];
+B=sparse(B);
+C=eigs(A,B,10);
+
+[a b] = spec(full(A), full(B));
+C1=gsort(a./b, "g", "i");
+C1(1)=[]; // remove the small value
+assert_checkalmostequal(C1, C);
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_12138.dia.ref b/modules/arnoldi/tests/nonreg_tests/bug_12138.dia.ref
new file mode 100755
index 000000000..a40050a17
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_12138.dia.ref
@@ -0,0 +1,81 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 12138 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12138
+//
+// <-- Short Description -->
+// eigs(A,B) returns incorrect eigenvectors for dense matrices
+// =============================================================================
+//non symmetric case
+A = rand(10,10);
+[d v] = eigs(A);
+assert_checkalmostequal(norm(A*v-v*d),0,[], 1D-8);
+[d v] = eigs(A,[],8,'SM');
+assert_checkalmostequal(norm(A*v-v*d),0,[], 1D-8);
+[d v] = eigs(A,[],8,1);
+assert_checkalmostequal(norm(A*v-v*d),0,[], 1D-8);
+[d v] = eigs(A,[],8,%i);
+assert_checkalmostequal(norm(A*v-v*d),0,[], 1D-8);
+//symmetric case
+A=rand(10,10);
+A = A*A';
+[d v] = eigs(A);
+assert_checkalmostequal(norm(A*v-v*d),0,[], 1D-8);
+//general eigenvalue problem
+B = rand(10,10);
+B = B*B';
+A = rand(10,10);
+[d v] = eigs(A,B);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A,B,8,'SM');
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A,B,8, 1);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A,B, 8, %i);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+opts.cholB = %t;
+R = chol(B);
+[d v] = eigs(A, R, 8, 'LM', opts);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A, R, 8,'SM', opts);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A, R, 8, 1, opts);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A, R, 8, %i, opts);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+A=A*A';
+[d v] = eigs(A,B);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A,B,8,'SM');
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A,B,8,1);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A,B,8,%i);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+//complex case
+A1 = rand(10,10);
+A2 = rand(10,10);
+B1 = rand(10,10);
+B2 = rand(10,10);
+C1 = A1+%i*A2;
+[d v] = eigs(C1);
+assert_checkalmostequal(norm(C1*v-v*d),0,[],1D-8);
+[d v] = eigs(C1,[], 8,'SM');
+assert_checkalmostequal(norm(C1*v-v*d),0,[],1D-8);
+[d v] = eigs(C1, [],8, 1+%i);
+assert_checkalmostequal(norm(C1*v-v*d),0,[],1D-8);
+C2 = B1+%i*B2;
+C2=C2*C2';
+[d v] = eigs(C1, C2);
+assert_checkalmostequal(norm(C1*v-C2*v*d),0,[],1D-8);
+[d v] = eigs(C1, C2, 8, 'SM');
+assert_checkalmostequal(norm(C1*v-C2*v*d),0,[],1D-8);
+[d v] = eigs(C1, C2, 8, %i);
+assert_checkalmostequal(norm(C1*v-C2*v*d),0,[],1D-8);
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_12138.tst b/modules/arnoldi/tests/nonreg_tests/bug_12138.tst
new file mode 100755
index 000000000..c83c2519d
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_12138.tst
@@ -0,0 +1,90 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 12138 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12138
+//
+// <-- Short Description -->
+// eigs(A,B) returns incorrect eigenvectors for dense matrices
+// =============================================================================
+
+//non symmetric case
+A = rand(10,10);
+[d v] = eigs(A);
+assert_checkalmostequal(norm(A*v-v*d),0,[], 1D-8);
+[d v] = eigs(A,[],8,'SM');
+assert_checkalmostequal(norm(A*v-v*d),0,[], 1D-8);
+[d v] = eigs(A,[],8,1);
+assert_checkalmostequal(norm(A*v-v*d),0,[], 1D-8);
+[d v] = eigs(A,[],8,%i);
+assert_checkalmostequal(norm(A*v-v*d),0,[], 1D-8);
+
+//symmetric case
+A=rand(10,10);
+A = A*A';
+[d v] = eigs(A);
+assert_checkalmostequal(norm(A*v-v*d),0,[], 1D-8);
+
+//general eigenvalue problem
+B = rand(10,10);
+B = B*B';
+A = rand(10,10);
+[d v] = eigs(A,B);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A,B,8,'SM');
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A,B,8, 1);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A,B, 8, %i);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+
+opts.cholB = %t;
+R = chol(B);
+[d v] = eigs(A, R, 8, 'LM', opts);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A, R, 8,'SM', opts);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A, R, 8, 1, opts);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A, R, 8, %i, opts);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+
+A=A*A';
+[d v] = eigs(A,B);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A,B,8,'SM');
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A,B,8,1);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+[d v] = eigs(A,B,8,%i);
+assert_checkalmostequal(norm(A*v-B*v*d),0,[],1D-8);
+
+
+//complex case
+A1 = rand(10,10);
+A2 = rand(10,10);
+B1 = rand(10,10);
+B2 = rand(10,10);
+C1 = A1+%i*A2;
+[d v] = eigs(C1);
+assert_checkalmostequal(norm(C1*v-v*d),0,[],1D-8);
+[d v] = eigs(C1,[], 8,'SM');
+assert_checkalmostequal(norm(C1*v-v*d),0,[],1D-8);
+[d v] = eigs(C1, [],8, 1+%i);
+assert_checkalmostequal(norm(C1*v-v*d),0,[],1D-8);
+C2 = B1+%i*B2;
+C2=C2*C2';
+[d v] = eigs(C1, C2);
+assert_checkalmostequal(norm(C1*v-C2*v*d),0,[],1D-8);
+[d v] = eigs(C1, C2, 8, 'SM');
+assert_checkalmostequal(norm(C1*v-C2*v*d),0,[],1D-8);
+[d v] = eigs(C1, C2, 8, %i);
+assert_checkalmostequal(norm(C1*v-C2*v*d),0,[],1D-8);
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_12139.dia.ref b/modules/arnoldi/tests/nonreg_tests/bug_12139.dia.ref
new file mode 100755
index 000000000..6973e9e34
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_12139.dia.ref
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 12139 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12139
+//
+// <-- Short Description -->
+// eigs run out of memory for sparse matrices.
+// =============================================================================
+A = speye(100000,100000);
+assert_checkalmostequal(eigs(A), [1;1;1;1;1;1]);
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_12139.tst b/modules/arnoldi/tests/nonreg_tests/bug_12139.tst
new file mode 100755
index 000000000..99752c14c
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_12139.tst
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 12139 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12139
+//
+// <-- Short Description -->
+// eigs run out of memory for sparse matrices.
+// =============================================================================
+
+A = speye(100000,100000);
+assert_checkalmostequal(eigs(A), [1;1;1;1;1;1]);
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_12238.dia.ref b/modules/arnoldi/tests/nonreg_tests/bug_12238.dia.ref
new file mode 100755
index 000000000..cdd3de45c
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_12238.dia.ref
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 12238 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12238
+//
+// <-- Short Description -->
+// [d v] = eigs(A) is broken for sparse matrices
+// =============================================================================
+A = sparse(rand(10,10));
+[d v] = eigs(A);
+val=norm(A*v-v*d);
+assert_checkalmostequal(val,0,0,30*%eps);
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_12238.tst b/modules/arnoldi/tests/nonreg_tests/bug_12238.tst
new file mode 100755
index 000000000..1c2a5c28c
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_12238.tst
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 12238 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12238
+//
+// <-- Short Description -->
+// [d v] = eigs(A) is broken for sparse matrices
+// =============================================================================
+
+A = sparse(rand(10,10));
+[d v] = eigs(A);
+val=norm(A*v-v*d);
+
+assert_checkalmostequal(val,0,0,30*%eps);
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_12772.dia.ref b/modules/arnoldi/tests/nonreg_tests/bug_12772.dia.ref
new file mode 100755
index 000000000..a06a1d22e
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_12772.dia.ref
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 12772 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12772
+//
+// <-- Short Description -->
+// eigs() failed when trying to solve a sparse matrix eigen value problem.
+// =============================================================================
+C1 = -51*eye(10,10);
+C1(1:$-1, 2:$) = C1(1:$-1,2:$) + diag(100*ones(9,1));
+C1(2:$,1:$-1) = C1(2:$,1:$-1) + diag(100*ones(9,1));
+C1(10,9) = 116;
+C1(10,10) = -147;
+C1 = sparse(C1);
+[d, v] = eigs(C1,sparse(eye(10,10)), 1, 480);
+assert_checkalmostequal(C1*v, v*d, sqrt(%eps), 1.e-10);
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_12772.tst b/modules/arnoldi/tests/nonreg_tests/bug_12772.tst
new file mode 100755
index 000000000..45068c45b
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_12772.tst
@@ -0,0 +1,27 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 12772 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12772
+//
+// <-- Short Description -->
+// eigs() failed when trying to solve a sparse matrix eigen value problem.
+// =============================================================================
+
+C1 = -51*eye(10,10);
+C1(1:$-1, 2:$) = C1(1:$-1,2:$) + diag(100*ones(9,1));
+C1(2:$,1:$-1) = C1(2:$,1:$-1) + diag(100*ones(9,1));
+C1(10,9) = 116;
+C1(10,10) = -147;
+C1 = sparse(C1);
+
+[d, v] = eigs(C1,sparse(eye(10,10)), 1, 480);
+assert_checkalmostequal(C1*v, v*d, sqrt(%eps), 1.e-10);
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_12992.dia.ref b/modules/arnoldi/tests/nonreg_tests/bug_12992.dia.ref
new file mode 100755
index 000000000..d1b4a2946
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_12992.dia.ref
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 12992 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12992
+//
+// <-- Short Description -->
+// The sigma value was always equals to "LM".
+// =============================================================================
+A = [11,2,3,1,4; 2,9,3,5,2; 3,3,15,4,3; 1,5,4,12,4; 4,2,3,4,17];
+B = eye(5,5);
+k = 1;
+sigma = 'SM';
+cld = eigs(A, B, k, sigma);
+d0 = spec(A);
+assert_checkalmostequal(cld, d0(1), [], %eps);
+[d, v] = eigs(A, B, k, sigma);
+[d0, v0] = spec(A);
+assert_checkalmostequal(d, v0(1), [], %eps);
+assert_checkalmostequal(abs(v), abs(d0(:,1)), [], %eps)
+ ans =
+
+ T
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_12992.tst b/modules/arnoldi/tests/nonreg_tests/bug_12992.tst
new file mode 100755
index 000000000..86a00cdb8
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_12992.tst
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 12992 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=12992
+//
+// <-- Short Description -->
+// The sigma value was always equals to "LM".
+// =============================================================================
+
+A = [11,2,3,1,4; 2,9,3,5,2; 3,3,15,4,3; 1,5,4,12,4; 4,2,3,4,17];
+B = eye(5,5);
+k = 1;
+sigma = 'SM';
+cld = eigs(A, B, k, sigma);
+d0 = spec(A);
+assert_checkalmostequal(cld, d0(1), [], %eps);
+[d, v] = eigs(A, B, k, sigma);
+[d0, v0] = spec(A);
+assert_checkalmostequal(d, v0(1), [], %eps);
+assert_checkalmostequal(abs(v), abs(d0(:,1)), [], %eps)
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_13058.dia.ref b/modules/arnoldi/tests/nonreg_tests/bug_13058.dia.ref
new file mode 100755
index 000000000..c4f47b19d
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_13058.dia.ref
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 13058 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13058
+//
+// <-- Short Description -->
+// The release 3.1.4 of arpack ng library fixes this bug.
+// =============================================================================
+A = [2.486880466472303 2.008746355685131 1.655976676384840 1.571428571428571 1.469387755102041 1.635568513119533 1.927113702623907
+2.008746355685131 2.364431486880466 1.967930029154519 1.696793002915452 1.551020408163265 1.530612244897959 1.635568513119533
+1.655976676384840 1.967930029154519 2.405247813411079 1.947521865889213 1.758017492711370 1.551020408163265 1.469387755102041
+1.571428571428571 1.696793002915452 1.947521865889213 2.323615160349854 1.947521865889213 1.696793002915452 1.571428571428571
+1.469387755102041 1.551020408163265 1.758017492711370 1.947521865889213 2.405247813411079 1.967930029154519 1.655976676384840
+1.635568513119533 1.530612244897959 1.551020408163265 1.696793002915452 1.967930029154519 2.364431486880466 2.008746355685131
+1.927113702623907 1.635568513119533 1.469387755102041 1.571428571428571 1.655976676384840 2.008746355685131 2.486880466472303];
+d0 = spec(A);
+B = eye(7, 7);
+d1 = eigs(A, B, 4, "BE");
+assert_checkalmostequal(d1, [d0(1:2); d0($-1:$)], 1.e-12);
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_13058.tst b/modules/arnoldi/tests/nonreg_tests/bug_13058.tst
new file mode 100755
index 000000000..84e04ed11
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_13058.tst
@@ -0,0 +1,31 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// <-- Non-regression test for bug 13058 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=13058
+//
+// <-- Short Description -->
+// The release 3.1.4 of arpack ng library fixes this bug.
+// =============================================================================
+
+A = [2.486880466472303 2.008746355685131 1.655976676384840 1.571428571428571 1.469387755102041 1.635568513119533 1.927113702623907
+2.008746355685131 2.364431486880466 1.967930029154519 1.696793002915452 1.551020408163265 1.530612244897959 1.635568513119533
+1.655976676384840 1.967930029154519 2.405247813411079 1.947521865889213 1.758017492711370 1.551020408163265 1.469387755102041
+1.571428571428571 1.696793002915452 1.947521865889213 2.323615160349854 1.947521865889213 1.696793002915452 1.571428571428571
+1.469387755102041 1.551020408163265 1.758017492711370 1.947521865889213 2.405247813411079 1.967930029154519 1.655976676384840
+1.635568513119533 1.530612244897959 1.551020408163265 1.696793002915452 1.967930029154519 2.364431486880466 2.008746355685131
+1.927113702623907 1.635568513119533 1.469387755102041 1.571428571428571 1.655976676384840 2.008746355685131 2.486880466472303];
+
+d0 = spec(A);
+
+B = eye(7, 7);
+d1 = eigs(A, B, 4, "BE");
+assert_checkalmostequal(d1, [d0(1:2); d0($-1:$)], 1.e-12);
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_13381.dia.ref b/modules/arnoldi/tests/nonreg_tests/bug_13381.dia.ref
new file mode 100755
index 000000000..6552dfb3e
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_13381.dia.ref
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Pierre-Aime Agnel
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13381
+//
+// <-- Short Description -->
+// eigs failed due to a typo on varargin
+//
+// <-- CLI SHELL MODE -->
+function y = f(x)
+ A = diag(-10:10);
+ y = A*x;
+endfunction
+[d, v] = eigs(f, 21, eye(21, 21), 7);
+d2 = eigs(f, 21, eye(21, 21), 7);
+assert_checkfalse(isempty(v));
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_13381.tst b/modules/arnoldi/tests/nonreg_tests/bug_13381.tst
new file mode 100755
index 000000000..6ff2f22f3
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_13381.tst
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Pierre-Aime Agnel
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13381
+//
+// <-- Short Description -->
+// eigs failed due to a typo on varargin
+//
+// <-- CLI SHELL MODE -->
+
+function y = f(x)
+ A = diag(-10:10);
+ y = A*x;
+endfunction
+
+[d, v] = eigs(f, 21, eye(21, 21), 7);
+d2 = eigs(f, 21, eye(21, 21), 7);
+
+assert_checkfalse(isempty(v));
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_dsaupd.dia.ref b/modules/arnoldi/tests/nonreg_tests/bug_dsaupd.dia.ref
new file mode 100755
index 000000000..2d22910a4
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_dsaupd.dia.ref
@@ -0,0 +1,54 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Vincent COUVERT <vincent.couvert@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// Tests for function dsaupd (added after a bug in the gateway: PutLhsVar missing)
+stacksize(300000);
+N = 1000;
+A = sprand(N, N, 0.01);
+IDO = 0;
+BMAT = 'I'; //standard eigenvalue problem
+WHICH = "LM";
+NEV = 4; //NEVth eigen values are solved
+TOL = 1D-10;
+RESID = zeros(N,1); //
+NCV = 10;
+V = zeros(N, NCV);
+ISHIFT = 1;
+LEVEC = 0;
+MXITER = 100; //INPUT
+NB = 1;
+NCONV = 0;
+IUPD = 0;
+MODE = 1;
+NP = 100;
+NUMOP = 0;
+NUMOPB = 0;
+NUMREO = 0;
+IPARAM = [ISHIFT, LEVEC, MXITER, NB, NCONV, IUPD, MODE, NP, NUMOP, NUMOPB, NUMREO];
+IPNTR = zeros(1,14);
+WORKD = zeros(3, N);
+WORKL = zeros(1, NCV**2 + 8 * NCV);
+INFO = 0;
+i = 0;
+tic();
+[IDO,RESID,V,IPARAM,IPNTR,WORKD,WORKL,INFO] = dsaupd(IDO,BMAT,N,WHICH,NEV,TOL,RESID,NCV,V,IPARAM,IPNTR,WORKD,WORKL,INFO);
+while (IDO <> 99) & (IDO <> 3)
+ [IDO,RESID,V,IPARAM,IPNTR,WORKD,WORKL,INFO] = dsaupd(IDO,BMAT,N,WHICH,NEV,TOL,RESID,NCV,V,IPARAM,IPNTR,WORKD,WORKL,INFO);
+ if (IDO == 1) then
+ WORKD(IPNTR(2):(IPNTR(2)+N - 1)) = A * WORKD(IPNTR(1):(IPNTR(1)+N - 1));
+ elseif (IDO == 3) then
+ end;
+ i = i + 1;
+end;
+t1 = toc();
+printf("loop %d",i);
+loop 77b = rand(N,1);
+tic();
+for j = 1:i
+ b = A * b;
+end
+toc();
diff --git a/modules/arnoldi/tests/nonreg_tests/bug_dsaupd.tst b/modules/arnoldi/tests/nonreg_tests/bug_dsaupd.tst
new file mode 100755
index 000000000..7403fad05
--- /dev/null
+++ b/modules/arnoldi/tests/nonreg_tests/bug_dsaupd.tst
@@ -0,0 +1,70 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Vincent COUVERT <vincent.couvert@inria.fr>
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// Tests for function dsaupd (added after a bug in the gateway: PutLhsVar missing)
+
+stacksize(300000);
+
+N = 1000;
+
+A = sprand(N, N, 0.01);
+
+IDO = 0;
+BMAT = 'I'; //standard eigenvalue problem
+WHICH = "LM";
+NEV = 4; //NEVth eigen values are solved
+TOL = 1D-10;
+RESID = zeros(N,1); //
+NCV = 10;
+
+V = zeros(N, NCV);
+
+ISHIFT = 1;
+LEVEC = 0;
+MXITER = 100; //INPUT
+NB = 1;
+NCONV = 0;
+IUPD = 0;
+MODE = 1;
+NP = 100;
+NUMOP = 0;
+NUMOPB = 0;
+NUMREO = 0;
+
+IPARAM = [ISHIFT, LEVEC, MXITER, NB, NCONV, IUPD, MODE, NP, NUMOP, NUMOPB, NUMREO];
+
+IPNTR = zeros(1,14);
+WORKD = zeros(3, N);
+WORKL = zeros(1, NCV**2 + 8 * NCV);
+
+INFO = 0;
+
+i = 0;
+tic();
+
+[IDO,RESID,V,IPARAM,IPNTR,WORKD,WORKL,INFO] = dsaupd(IDO,BMAT,N,WHICH,NEV,TOL,RESID,NCV,V,IPARAM,IPNTR,WORKD,WORKL,INFO);
+
+while (IDO <> 99) & (IDO <> 3)
+ [IDO,RESID,V,IPARAM,IPNTR,WORKD,WORKL,INFO] = dsaupd(IDO,BMAT,N,WHICH,NEV,TOL,RESID,NCV,V,IPARAM,IPNTR,WORKD,WORKL,INFO);
+ if (IDO == 1) then
+ WORKD(IPNTR(2):(IPNTR(2)+N - 1)) = A * WORKD(IPNTR(1):(IPNTR(1)+N - 1));
+ elseif (IDO == 3) then
+ end;
+
+ i = i + 1;
+end;
+t1 = toc();
+printf("loop %d",i);
+
+b = rand(N,1);
+tic();
+for j = 1:i
+ b = A * b;
+end
+toc();
diff --git a/modules/arnoldi/tests/unit_tests/dnaupd.dia.ref b/modules/arnoldi/tests/unit_tests/dnaupd.dia.ref
new file mode 100755
index 000000000..1ee3d1ddc
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/dnaupd.dia.ref
@@ -0,0 +1,71 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - SE - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+nx = 10;
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+// Local Arrays
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+dr = zeros(nev + 1, 1);
+di = zeros(nev + 1, 1);
+z = zeros(nx, nev + 1);
+resid = zeros(nx, 1);
+v = zeros(nx, ncv);
+workd = zeros(3 * nx, 1);
+workev = zeros(3 * ncv, 1);
+workl = zeros(3 * ncv * ncv + 6 * ncv, 1);
+// Build the test matrix
+A = diag(10 * ones(nx, 1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx-1,1));
+tol = 0;
+ido = 0;
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+sigmar = 0; // the real part of the shift
+sigmai = 0; // the imaginary part of the shift
+info_dnaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine DNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+ [ido, resid, v, iparam, ipntr, workd, workl, info_dnaupd] = dnaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_dnaupd);
+ if(info_dnaupd < 0)
+ printf('\nError with dnaupd, info = %d\n',info_dnaupd);
+ printf('Check the documentation of dnaupd\n\n');
+ end
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx -1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+// Post-Process using DNEUPD.
+rvec = 1;
+howmany = 'A';
+info_dneupd = 0;
+[dr, di, z, resid, v, iparam, ipntr, workd, workl, info_dneupd] = dneupd(rvec, howmany, _select, dr, di, z, sigmar, sigmai, workev, ...
+bmat, nx, which, nev, tol, resid, ncv, v, ...
+iparam, ipntr, workd, workl, info_dneupd);
+d = complex(dr, di);
+d(nev+1) = [];
+d = diag(d);
+c1 = 1:2:nev + 1;
+c2 = 2:2:nev + 1;
+if(modulo(nev + 1, 2) == 1)
+ c1($) = [];
+end
+z(:,[c1, c2]) = [z(:,c1) + z(:,c2) * %i z(:,c1) - z(:,c2) * %i];
+z(:,$) = [];
+assert_checkalmostequal(A * z, z * d, sqrt(%eps), 1.e-10);
diff --git a/modules/arnoldi/tests/unit_tests/dnaupd.tst b/modules/arnoldi/tests/unit_tests/dnaupd.tst
new file mode 100755
index 000000000..b964e28e8
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/dnaupd.tst
@@ -0,0 +1,92 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - SE - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+nx = 10;
+
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+
+// Local Arrays
+
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+dr = zeros(nev + 1, 1);
+di = zeros(nev + 1, 1);
+z = zeros(nx, nev + 1);
+resid = zeros(nx, 1);
+v = zeros(nx, ncv);
+workd = zeros(3 * nx, 1);
+workev = zeros(3 * ncv, 1);
+workl = zeros(3 * ncv * ncv + 6 * ncv, 1);
+
+// Build the test matrix
+
+A = diag(10 * ones(nx, 1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx-1,1));
+
+tol = 0;
+ido = 0;
+
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+
+sigmar = 0; // the real part of the shift
+sigmai = 0; // the imaginary part of the shift
+info_dnaupd = 0;
+
+// M A I N L O O P (Reverse communication)
+
+while(ido <> 99)
+ // Repeatedly call the routine DNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+
+ [ido, resid, v, iparam, ipntr, workd, workl, info_dnaupd] = dnaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_dnaupd);
+
+ if(info_dnaupd < 0)
+ printf('\nError with dnaupd, info = %d\n',info_dnaupd);
+ printf('Check the documentation of dnaupd\n\n');
+ end
+
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx -1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+
+// Post-Process using DNEUPD.
+rvec = 1;
+howmany = 'A';
+info_dneupd = 0;
+
+[dr, di, z, resid, v, iparam, ipntr, workd, workl, info_dneupd] = dneupd(rvec, howmany, _select, dr, di, z, sigmar, sigmai, workev, ...
+bmat, nx, which, nev, tol, resid, ncv, v, ...
+iparam, ipntr, workd, workl, info_dneupd);
+
+d = complex(dr, di);
+d(nev+1) = [];
+d = diag(d);
+
+c1 = 1:2:nev + 1;
+c2 = 2:2:nev + 1;
+if(modulo(nev + 1, 2) == 1)
+ c1($) = [];
+end
+z(:,[c1, c2]) = [z(:,c1) + z(:,c2) * %i z(:,c1) - z(:,c2) * %i];
+z(:,$) = [];
+
+assert_checkalmostequal(A * z, z * d, sqrt(%eps), 1.e-10);
diff --git a/modules/arnoldi/tests/unit_tests/dneupd.dia.ref b/modules/arnoldi/tests/unit_tests/dneupd.dia.ref
new file mode 100755
index 000000000..8a58b9289
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/dneupd.dia.ref
@@ -0,0 +1,72 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - SE - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// The following sets dimensions for this problem.
+nx = 10;
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+// Local Arrays
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+dr = zeros(nev + 1, 1);
+di = zeros(nev + 1, 1);
+z = zeros(nx, nev + 1);
+resid = zeros(nx, 1);
+v = zeros(nx, ncv);
+workd = zeros(3 * nx, 1);
+workev = zeros(3 * ncv, 1);
+workl = zeros(3 * ncv * ncv + 6 * ncv, 1);
+// Build the test matrix
+A = diag(10 * ones(nx, 1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx-1,1));
+tol = 0;
+ido = 0;
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+sigmar = 0; // the real part of the shift
+sigmai = 0; // the imaginary part of the shift
+info_dnaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine DNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+ [ido, resid, v, iparam, ipntr, workd, workl, info_dnaupd] = dnaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_dnaupd);
+ if(info_dnaupd < 0)
+ printf('\nError with dnaupd, info = %d\n',info_dnaupd);
+ printf('Check the documentation of dnaupd\n\n');
+ end
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx -1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+// Post-Process using DNEUPD.
+rvec = 1;
+howmany = 'A';
+info_dneupd = 0;
+[dr, di, z, resid, v, iparam, ipntr, workd, workl, info_dneupd] = dneupd(rvec, howmany, _select, dr, di, z, sigmar, sigmai, workev, ...
+ bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, info_dneupd);
+d = complex(dr, di);
+d(nev+1) = [];
+d = diag(d);
+c1 = 1:2:nev + 1;
+c2 = 2:2:nev + 1;
+if(modulo(nev + 1, 2) == 1)
+ c1($) = [];
+end
+z(:,[c1, c2]) = [z(:,c1) + z(:,c2) * %i z(:,c1) - z(:,c2) * %i];
+z(:,$) = [];
+assert_checkalmostequal(A * z, z * d, sqrt(%eps), 1.e-10);
diff --git a/modules/arnoldi/tests/unit_tests/dneupd.tst b/modules/arnoldi/tests/unit_tests/dneupd.tst
new file mode 100755
index 000000000..18abaafae
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/dneupd.tst
@@ -0,0 +1,94 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - SE - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// The following sets dimensions for this problem.
+
+nx = 10;
+
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+
+// Local Arrays
+
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+dr = zeros(nev + 1, 1);
+di = zeros(nev + 1, 1);
+z = zeros(nx, nev + 1);
+resid = zeros(nx, 1);
+v = zeros(nx, ncv);
+workd = zeros(3 * nx, 1);
+workev = zeros(3 * ncv, 1);
+workl = zeros(3 * ncv * ncv + 6 * ncv, 1);
+
+// Build the test matrix
+
+A = diag(10 * ones(nx, 1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx-1,1));
+
+tol = 0;
+ido = 0;
+
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+
+sigmar = 0; // the real part of the shift
+sigmai = 0; // the imaginary part of the shift
+info_dnaupd = 0;
+
+// M A I N L O O P (Reverse communication)
+
+while(ido <> 99)
+ // Repeatedly call the routine DNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+
+ [ido, resid, v, iparam, ipntr, workd, workl, info_dnaupd] = dnaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_dnaupd);
+
+ if(info_dnaupd < 0)
+ printf('\nError with dnaupd, info = %d\n',info_dnaupd);
+ printf('Check the documentation of dnaupd\n\n');
+ end
+
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx -1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+
+// Post-Process using DNEUPD.
+rvec = 1;
+howmany = 'A';
+info_dneupd = 0;
+
+[dr, di, z, resid, v, iparam, ipntr, workd, workl, info_dneupd] = dneupd(rvec, howmany, _select, dr, di, z, sigmar, sigmai, workev, ...
+ bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, info_dneupd);
+
+d = complex(dr, di);
+d(nev+1) = [];
+d = diag(d);
+
+c1 = 1:2:nev + 1;
+c2 = 2:2:nev + 1;
+if(modulo(nev + 1, 2) == 1)
+ c1($) = [];
+end
+z(:,[c1, c2]) = [z(:,c1) + z(:,c2) * %i z(:,c1) - z(:,c2) * %i];
+z(:,$) = [];
+
+assert_checkalmostequal(A * z, z * d, sqrt(%eps), 1.e-10);
diff --git a/modules/arnoldi/tests/unit_tests/dsaupd.dia.ref b/modules/arnoldi/tests/unit_tests/dsaupd.dia.ref
new file mode 100755
index 000000000..d9685eaae
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/dsaupd.dia.ref
@@ -0,0 +1,61 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - SE - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+nx = 10;
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+// Local Arrays
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev, 1);
+z = zeros(nx, nev);
+resid = zeros(nx, 1);
+v = zeros(nx, ncv);
+workd = zeros(3 * nx, 1);
+workl = zeros(ncv * ncv + 8 * ncv, 1);
+// Build the symmetric test matrix
+A = diag(10 * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6 * ones(nx-1,1));
+tol = 0;
+ido = 0;
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+sigma = 0; // the real part of the shift
+info_dsaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine DSAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+ [ido, resid, v, iparam, ipntr, workd, workl, info_dsaupd] = dsaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_dsaupd);
+ if(info_dsaupd < 0)
+ printf('\nError with dsaupd, info = %d\n',info_dsaupd);
+ printf('Check the documentation of dsaupd\n\n');
+ end
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+// Post-Process using DSEUPD.
+rvec = 1;
+howmany = 'A';
+info_dseupd = 0;
+[d, z, resid, v, iparam, ipntr, workd, workl, info_dseupd] = dseupd(rvec, howmany, _select, d, z, sigma, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, info_dseupd);
+if(info_dseupd < 0)
+ printf('\nError with dseupd, info = %d\n', info_dseupd);
+ printf('Check the documentation of dseupd.\n\n');
+end
+assert_checkalmostequal(A * z, z * diag(d), sqrt(%eps), 1.e-10);
diff --git a/modules/arnoldi/tests/unit_tests/dsaupd.tst b/modules/arnoldi/tests/unit_tests/dsaupd.tst
new file mode 100755
index 000000000..73653b091
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/dsaupd.tst
@@ -0,0 +1,82 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - SE - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+nx = 10;
+
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+
+// Local Arrays
+
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev, 1);
+z = zeros(nx, nev);
+resid = zeros(nx, 1);
+v = zeros(nx, ncv);
+workd = zeros(3 * nx, 1);
+workl = zeros(ncv * ncv + 8 * ncv, 1);
+
+// Build the symmetric test matrix
+
+A = diag(10 * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6 * ones(nx-1,1));
+
+tol = 0;
+ido = 0;
+
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+
+sigma = 0; // the real part of the shift
+info_dsaupd = 0;
+
+// M A I N L O O P (Reverse communication)
+
+while(ido <> 99)
+ // Repeatedly call the routine DSAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+
+ [ido, resid, v, iparam, ipntr, workd, workl, info_dsaupd] = dsaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_dsaupd);
+
+ if(info_dsaupd < 0)
+ printf('\nError with dsaupd, info = %d\n',info_dsaupd);
+ printf('Check the documentation of dsaupd\n\n');
+ end
+
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+
+// Post-Process using DSEUPD.
+rvec = 1;
+howmany = 'A';
+info_dseupd = 0;
+
+[d, z, resid, v, iparam, ipntr, workd, workl, info_dseupd] = dseupd(rvec, howmany, _select, d, z, sigma, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, info_dseupd);
+
+if(info_dseupd < 0)
+ printf('\nError with dseupd, info = %d\n', info_dseupd);
+ printf('Check the documentation of dseupd.\n\n');
+end
+
+
+assert_checkalmostequal(A * z, z * diag(d), sqrt(%eps), 1.e-10);
diff --git a/modules/arnoldi/tests/unit_tests/dseupd.dia.ref b/modules/arnoldi/tests/unit_tests/dseupd.dia.ref
new file mode 100755
index 000000000..66890df24
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/dseupd.dia.ref
@@ -0,0 +1,57 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - SE - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+nx = 10;
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+// Local Arrays
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev, 1);
+z = zeros(nx, nev);
+resid = zeros(nx, 1);
+v = zeros(nx, ncv);
+workd = zeros(3 * nx, 1);
+workl = zeros(ncv * ncv + 8 * ncv, 1);
+// Build the symmetric test matrix
+A = diag(10 * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6 * ones(nx-1,1));
+tol = 0;
+ido = 0;
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+sigma = 0; // the real part of the shift
+info_dsaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine DSAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+ [ido, resid, v, iparam, ipntr, workd, workl, info_dsaupd] = dsaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_dsaupd);
+ if(info_dsaupd < 0)
+ printf('\nError with dsaupd, info = %d\n',info_dsaupd);
+ printf('Check the documentation of dsaupd\n\n');
+ end
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+// Post-Process using DSEUPD.
+rvec = 1;
+howmany = 'A';
+info_dseupd = 0;
+[d, z, resid, v, iparam, ipntr, workd, workl, info_dseupd] = dseupd(rvec, howmany, _select, d, z, sigma, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, info_dseupd);
+assert_checkalmostequal(A * z, z * diag(d), sqrt(%eps), 1.e-10);
diff --git a/modules/arnoldi/tests/unit_tests/dseupd.tst b/modules/arnoldi/tests/unit_tests/dseupd.tst
new file mode 100755
index 000000000..92369e1d3
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/dseupd.tst
@@ -0,0 +1,76 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - SE - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+nx = 10;
+
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+
+// Local Arrays
+
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev, 1);
+z = zeros(nx, nev);
+resid = zeros(nx, 1);
+v = zeros(nx, ncv);
+workd = zeros(3 * nx, 1);
+workl = zeros(ncv * ncv + 8 * ncv, 1);
+
+// Build the symmetric test matrix
+
+A = diag(10 * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6 * ones(nx-1,1));
+
+tol = 0;
+ido = 0;
+
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+
+sigma = 0; // the real part of the shift
+info_dsaupd = 0;
+
+// M A I N L O O P (Reverse communication)
+
+while(ido <> 99)
+ // Repeatedly call the routine DSAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+
+ [ido, resid, v, iparam, ipntr, workd, workl, info_dsaupd] = dsaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, info_dsaupd);
+
+ if(info_dsaupd < 0)
+ printf('\nError with dsaupd, info = %d\n',info_dsaupd);
+ printf('Check the documentation of dsaupd\n\n');
+ end
+
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+
+// Post-Process using DSEUPD.
+rvec = 1;
+howmany = 'A';
+info_dseupd = 0;
+
+[d, z, resid, v, iparam, ipntr, workd, workl, info_dseupd] = dseupd(rvec, howmany, _select, d, z, sigma, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, info_dseupd);
+
+assert_checkalmostequal(A * z, z * diag(d), sqrt(%eps), 1.e-10);
diff --git a/modules/arnoldi/tests/unit_tests/eigs.dia.ref b/modules/arnoldi/tests/unit_tests/eigs.dia.ref
new file mode 100755
index 000000000..dccdcc9d5
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/eigs.dia.ref
@@ -0,0 +1,835 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// unit tests for eigs function
+// =============================================================================
+// Interface
+// =========
+assert_checkfalse(execstr("eigs()" ,"errcatch") == 0);
+refMsg = msprintf(_("%s : Wrong number of input arguments : %d to %d expected.\n"), "eigs", 1, 6);
+assert_checkerror("eigs()", refMsg);
+assert_checkfalse(execstr("eigs(1)","errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1);
+assert_checkerror("eigs(1)", refMsg);
+assert_checkfalse(execstr("eigs([])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A full or sparse square matrix or a function expected"), "eigs", 1);
+assert_checkerror("eigs([])", refMsg);
+assert_checkfalse(execstr("eigs(%nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1);
+assert_checkerror("eigs(%nan)", refMsg);
+assert_checkfalse(execstr("eigs(%inf)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1);
+assert_checkerror("eigs(%inf)", refMsg);
+assert_checkfalse(execstr("eigs(%eps)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1);
+assert_checkerror("eigs(%eps)", refMsg);
+assert_checkfalse(execstr("eigs([%f %f])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A full or sparse square matrix or a function expected"), "eigs", 1);
+assert_checkerror("eigs([%f %f])", refMsg);
+assert_checkfalse(execstr("eigs(sparse([%f %f]))", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A full or sparse square matrix or a function expected"), "eigs", 1);
+assert_checkerror("eigs(sparse([%f %f]))", refMsg);
+assert_checkfalse(execstr("eigs([1 2])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1);
+assert_checkerror("eigs([1 2])", refMsg);
+assert_checkfalse(execstr("eigs([1; 2])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1);
+assert_checkerror("eigs([1; 2])", refMsg);
+assert_checkfalse(execstr("eigs(sparse([1 2]))", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1);
+assert_checkerror("eigs(sparse([1 2]))", refMsg);
+assert_checkfalse(execstr("eigs(sparse([1; 2]))", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1);
+assert_checkerror("eigs(sparse([1; 2]))", refMsg);
+n = 20;
+A = diag(10*ones(n,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6*ones(n-1,1));
+assert_checkfalse(execstr("eigs(A, %f)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: An empty matrix or full or sparse square matrix expected.\n"), "eigs", 2);
+assert_checkerror("eigs(A, %f)", refMsg);
+assert_checkfalse(execstr("eigs(A, %nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(A, %nan)", refMsg);
+assert_checkfalse(execstr("eigs(A, %inf)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(A, %inf)", refMsg);
+assert_checkfalse(execstr("eigs(A, %eps)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(A, %eps)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), %f)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: An empty matrix or full or sparse square matrix expected.\n"), "eigs", 2);
+assert_checkerror("eigs(sparse(A), %f)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), %nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(sparse(A), %nan)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), %inf)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(sparse(A), %inf)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), %eps)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(sparse(A), %eps)", refMsg);
+assert_checkfalse(execstr("eigs(A,[1 2])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(A,[1 2])", refMsg);
+assert_checkfalse(execstr("eigs(A,[1;2])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(A,[1;2])", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [1 2])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(sparse(A), [1 2])", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [1;2])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(sparse(A), [1;2])", refMsg);
+assert_checkfalse(execstr("eigs(A, [], [])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], [])", refMsg);
+assert_checkfalse(execstr("eigs(A, [], %f)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], %f)", refMsg);
+assert_checkfalse(execstr("eigs(A, [], 2*%i)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], 2*%i)", refMsg);
+assert_checkfalse(execstr("eigs(A, [], -15)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: k must be a positive integer.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], -15)", refMsg);
+assert_checkfalse(execstr("eigs(A, [], 5.6)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: k must be a positive integer.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], 5.6)", refMsg);
+assert_checkfalse(execstr("eigs(A, [], [1 2])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], [1 2])", refMsg);
+assert_checkfalse(execstr("eigs(A, [], %nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: k must be a positive integer.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], %nan)", refMsg);
+assert_checkfalse(execstr("eigs(A, [], %eps)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: k must be a positive integer.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], %eps)", refMsg);
+assert_checkfalse(execstr("eigs(A, [], %inf)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: k must be in the range 1 to N.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], %inf)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], %f)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3);
+assert_checkerror("eigs(sparse(A), [], %f)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 2*%i)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3);
+assert_checkerror("eigs(sparse(A), [], 2*%i)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], -15)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: k must be a positive integer.\n"), "eigs", 3);
+assert_checkerror("eigs(sparse(A), [], -15)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 5.6)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: k must be a positive integer.\n"), "eigs", 3);
+assert_checkerror("eigs(sparse(A), [], 5.6)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], [1 2])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3);
+assert_checkerror("eigs(sparse(A), [], [1 2])", refMsg);
+assert_checkfalse(execstr("eigs(A, [], 4, [])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 4);
+assert_checkerror("eigs(A, [], 4, [])", refMsg);
+assert_checkfalse(execstr("eigs(A, [], 4, %nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: sigma must be a real.\n"), "eigs", 4);
+assert_checkerror("eigs(A, [], 4, %nan)", refMsg);
+assert_checkfalse(execstr("eigs(A, [], 4, %f)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 4);
+assert_checkerror("eigs(A, [], 4, %f)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, [])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 4);
+assert_checkerror("eigs(sparse(A), [], 4, [])", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, %nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 4);
+assert_checkerror("eigs(sparse(A), [], 4, %nan)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, %f)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"), "eigs", 4);
+assert_checkerror("eigs(sparse(A), [], 4, %f)", refMsg);
+which = "ahh";
+assert_checkfalse(execstr("eigs(A, [], 4, which)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: Unrecognized sigma value.\n Sigma must be one of ''%s'', ''%s'', ''%s'', ''%s'' or ''%s''.\n"), "eigs", 4, "LM", "SM", "LA", "SA", "BE");
+assert_checkerror("eigs(A, [], 4, which)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: Unrecognized sigma value.\n Sigma must be one of ''%s'', ''%s'', ''%s'', ''%s'' or ''%s''.\n"), "eigs", 4, "LM", "SM", "LA", "SA", "BE");
+assert_checkerror("eigs(sparse(A), [], 4, which)", refMsg);
+which = "LM";
+assert_checkfalse(execstr("eigs(A, [], 4, which ,%nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A structure expected"), "eigs", 5);
+assert_checkerror("eigs(A, [], 4, which ,%nan)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,%nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A structure expected"), "eigs", 5);
+assert_checkerror("eigs(sparse(A), [], 4, which, %nan)", refMsg);
+opts.var = %nan;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument: If A is a matrix, use opts with tol, maxiter, ncv, resid, cholB"), "eigs");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument: If A is a matrix, use opts with tol, maxiter, ncv, resid, cholB"), "eigs");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+clear opts
+opts.maxiter = [];
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a scalar.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a scalar.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.maxiter = %nan;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer positive value.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer positive value.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(sparse(A), [], 4, which ,opts)", refMsg);
+opts.maxiter = %f;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a scalar.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a scalar.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.maxiter = "ahh";
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a scalar.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a scalar.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.maxiter = 5.1;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer positive value.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer positive value.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(sparse(A), [], 4, which ,opts)", refMsg);
+opts.maxiter = -5.1;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer positive value.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer positive value.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(sparse(A), [], 4, which ,opts)", refMsg);
+clear opts
+opts.tol = [];
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.tol = %nan;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.tol = %f;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.tol = "ahh";
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+clear opts
+opts.ncv = %nan;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.ncv = %f;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.ncv = "ahh";
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.ncv = %eps;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.ncv = -5.1;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.ncv = 5.1;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.ncv = n + 6;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: For real symmetric problems, NCV must be k < NCV <= N.\n"), "eigs", 7);
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: For real symmetric problems, NCV must be k < NCV <= N.\n"), "eigs", 7);
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+clear opts
+opts.cholB = %nan;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.cholB = "ahh";
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar or a boolean.\n"), "eigs", 8, "opts.cholB");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar or a boolean.\n"), "eigs", 8, "opts.cholB");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.cholB = %eps;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.cholB = -5.1;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.cholB = 5.1;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.cholB = [];
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar or a boolean.\n"), "eigs", 8, "opts.cholB");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar or a boolean.\n"), "eigs", 8, "opts.cholB");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+clear opts
+opts.resid = %nan;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.resid = %f;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"), "eigs", 9);
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"), "eigs", 9);
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.resid = "ahh";
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"), "eigs", 9);
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"), "eigs", 9);
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.resid = %eps;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.resid = [1 2];
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.resid = [1;2];
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+opts.resid = [];
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+clear opts
+opts.issym = %f;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument: If A is a matrix, use opts with tol, maxiter, ncv, resid, cholB"), "eigs");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+clear opts
+opts.isreal = %f;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument: If A is a matrix, use opts with tol, maxiter, ncv, resid, cholB"), "eigs");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+clear opts
+n = 20;
+k = 5;
+A = diag(10*ones(n,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6*ones(n-1,1));
+A = sparse(A);
+d1 = eigs(A, [], k);
+d0 = spec(full(A));
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+d1 = eigs(A, [], k, "LM");
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+d1 = eigs(A, [], k, "SM");
+assert_checkalmostequal(d1, d0(1:k), 1.e-10);
+d1 = eigs(A, [], k, "LA");
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+d1 = eigs(A, [], k, "SA");
+assert_checkalmostequal(d1, d0(k:-1:1), 1.e-10);
+d1 = eigs(A, [], k, "BE");
+assert_checkalmostequal(d1, [d0(1:2); d0($-2:$)], 1.e-10);
+d1 = eigs(A, [], k, 2);
+assert_checkalmostequal(d1, d0(3:3+k-1), 1.e-10);
+d1 = eigs(A, speye(n,n), k, "LM");
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+d1 = eigs(A, speye(n,n), k, 2);
+assert_checkalmostequal(d1, d0(3:3+k-1), 1.e-10);
+opts.cholB = %t;
+d1 = eigs(A, speye(n,n), k, "LM", opts);
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+opts.cholB = %t;
+d1 = eigs(A, speye(n,n), k, 2, opts);
+assert_checkalmostequal(eigs(A, [],k, 2), d0(3:3+k-1), 1.e-10);
+[d1, v1] = eigs(A, [], k, "LM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "SM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "LA");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "SA");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "BE");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+n = 20;
+k = 5;
+A = diag((1:n));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(n-1,1));
+A = sparse(A);
+d1 = eigs(A, [], k);
+d0 = gsort(spec(full(A)));
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+d1 = eigs(A, [], k, "LM");
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+d1 = eigs(A, [], k, "SM");
+assert_checkalmostequal(abs(d1), abs(d0($-k:$-1)), 1.e-10);
+d1 = eigs(A, [], k, "LR");
+assert_checkalmostequal(real(d1), real(d0(k+2-1:-1:2)), 1.e-10);
+d1 = eigs(A, [], k, "SR");
+assert_checkalmostequal(real(d1), gsort(real(d0([13 14 18 19 20]))), 1.e-10);
+d1 = eigs(A, [], k, "LI");
+assert_checkalmostequal(abs(imag(d1)), abs(imag(d0([3 4 2 1 18]))), 1.e-10);
+d1 = eigs(A, [], k, "SI");
+assert_checkalmostequal(abs(imag(d1)), abs(imag(d0([9 10 11 12 15]))), 1.e-10);
+d1 = eigs(A, [], k, 2);
+assert_checkalmostequal(abs(d1), abs(d0([19 20 12 11 15])), 1.e-10);
+d1 = eigs(A, speye(n,n), k, "LM");
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+d1 = eigs(A, speye(n,n), k, 2);
+assert_checkalmostequal(abs(d1), abs(d0([19 20 12 11 15])), 1.e-10);
+opts.cholB = %t;
+d1 = eigs(A, speye(n,n), k, "LM", opts);
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+opts.cholB = %t;
+d1 = eigs(A, speye(n,n), k, 2, opts);
+assert_checkalmostequal(abs(d1), abs(d0([19 20 12 11 15])), 1.e-10);
+[d1, v1] = eigs(A, [], k, "LM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "SM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "LR");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "SR");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "LI");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "SI");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+n = 20;
+k = 5;
+A = diag((1:n) + %i * ones(1,n));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(n-1,1));
+A = sparse(A);
+d1 = eigs(A, [], k);
+d0 = gsort(spec(full(A)));
+r = gsort(real(d0));
+im = gsort(imag(d0));
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+d1 = eigs(A, [], k, "LM");
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+//d1 = eigs(A, [], k, 'SM');
+//assert_checkalmostequal(abs(d1), abs(d0(1:k)), 1.e-14); // error -> impossible to invert complex sparse matrix
+d1 = eigs(A, [], k, "LR");
+assert_checkalmostequal(real(d1), real(d0(k:-1:1)), 1.e-10);
+d1 = eigs(A, [], k, "SR");
+assert_checkalmostequal(real(d1), r($-k+1:$), 1.e-10);
+d1 = eigs(A, [], k, "LI");
+assert_checkalmostequal(imag(d1), im(k:-1:1), 1.e-10);
+d1 = eigs(A, [], k, "SI");
+assert_checkalmostequal(imag(d1), im($-k+1:$), 1.e-10);
+d1 = eigs(A, speye(n,n), k, "LM");
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+opts.cholB = %t;
+d1 = eigs(A, speye(n,n), k, "LM", opts);
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+[d1, v1] = eigs(A, [], k, "LM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "LR");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "SR");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "LI");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "SI");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+n = 20;
+k = 5;
+A = diag(10*ones(n,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6*ones(n-1,1));
+d1 = eigs(A, [], k);
+d0 = spec(A);
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+d1 = eigs(A, [], k, "LM");
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+d1 = eigs(A, [], k, "SM");
+assert_checkalmostequal(d1, d0(1:k), 1.e-10);
+d1 = eigs(A, [], k, "LA");
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+d1 = eigs(A, [], k, "SA");
+assert_checkalmostequal(d1, d0(k:-1:1), 1.e-10);
+d1 = eigs(A, [], k, "BE");
+assert_checkalmostequal(d1, [d0(1:2); d0($-2:$)], 1.e-10);
+d1 = eigs(A, [], k, 2);
+assert_checkalmostequal(d1, d0(3:3+k-1), 1.e-10);
+d1 = eigs(A, eye(n,n), k, "LM");
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+d1 = eigs(A, eye(n,n), k, 2);
+assert_checkalmostequal(d1, d0(3:3+k-1), 1.e-10);
+opts.cholB = %t;
+d1 = eigs(A, eye(n,n), k, "LM", opts);
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+opts.cholB = %t;
+d1 = eigs(A, eye(n,n), k, 2, opts);
+assert_checkalmostequal(eigs(A, [],k, 2), d0(3:3+k-1), 1.e-10);
+[d1, v1] = eigs(A, [], k, "LM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "SM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "LA");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "SA");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "BE");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+n = 20;
+k = 5;
+A = diag((1:n));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(n-1,1));
+d1 = eigs(A, [], k);
+d0 = gsort(spec(A));
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+d1 = eigs(A, [], k, "LM");
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+d1 = eigs(A, [], k, "SM");
+assert_checkalmostequal(abs(d1), abs(d0($-k:$-1)), 1.e-10);
+d1 = eigs(A, [], k, "LR");
+assert_checkalmostequal(real(d1), real(d0(k+2-1:-1:2)), 1.e-10);
+d1 = eigs(A, [], k, "SR");
+assert_checkalmostequal(real(d1), gsort(real(d0([13 14 18 19 20]))), 1.e-10);
+d1 = eigs(A, [], k, "LI");
+assert_checkalmostequal(abs(imag(d1)), abs(imag(d0([3 4 2 1 18]))), 1.e-10);
+d1 = eigs(A, [], k, "SI");
+assert_checkalmostequal(abs(imag(d1)), abs(imag(d0([9 10 11 12 15]))), 1.e-10);
+d1 = eigs(A, [], k, 2);
+assert_checkalmostequal(abs(d1), abs(d0([19 20 12 11 15])), 1.e-10);
+d1 = eigs(A, eye(n,n), k, "LM");
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+d1 = eigs(A, eye(n,n), k, 2);
+assert_checkalmostequal(abs(d1), abs(d0([19 20 12 11 15])), 1.e-10);
+opts.cholB = %t;
+d1 = eigs(A, eye(n,n), k, "LM", opts);
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+opts.cholB = %t;
+d1 = eigs(A, eye(n,n), k, 2, opts);
+assert_checkalmostequal(abs(d1), abs(d0([19 20 12 11 15])), 1.e-10);
+[d1, v1] = eigs(A, [], k, "LM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "SM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "LR");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "SR");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "LI");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "SI");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+n = 20;
+k = 5;
+A = diag((1:n) + %i * ones(1,n));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(n-1,1));
+d1 = eigs(A, [], k);
+d0 = gsort(spec(A));
+r = gsort(real(d0));
+im = gsort(imag(d0));
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+d1 = eigs(A, [], k, "LM");
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+d1 = eigs(A, [], k, "SM");
+assert_checkalmostequal(abs(d1), abs(d0($-k+1:$)), 1.e-10);
+d1 = eigs(A, [], k, "LR");
+assert_checkalmostequal(real(d1), r(k:-1:1), 1.e-10);
+d1 = eigs(A, [], k, "SR");
+assert_checkalmostequal(real(d1), r($-k+1:$), 1.e-10);
+d1 = eigs(A, [], k, "LI");
+assert_checkalmostequal(imag(d1), im(k:-1:1), 1.e-10);
+d1 = eigs(A, [], k, "SI");
+assert_checkalmostequal(imag(d1), im($-k+1:$), 1.e-10);
+d1 = eigs(A, [], k, 2);
+assert_checkalmostequal(gsort(abs(d1)), gsort(abs(d0($-1:-1:$-k))), 1.e-10);
+d1 = eigs(A, eye(n,n), k, "LM");
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+opts.cholB = %t;
+d1 = eigs(A, eye(n,n), k, "LM", opts);
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+opts.cholB = %t;
+d1 = eigs(A, eye(n,n), k, 2, opts);
+assert_checkalmostequal(abs(eigs(A, [], k, 2)), abs(d1), 1.e-10);
+[d1, v1] = eigs(A, [], k, "LM");
+assert_checkalmostequal(A*v1, v1*d1, sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "LR");
+assert_checkalmostequal(A*v1, v1*d1, sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "SR");
+assert_checkalmostequal(A*v1, v1*d1, sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "LI");
+assert_checkalmostequal(A*v1, v1*d1, sqrt(%eps), 1.e-10);
+[d1, v1] = eigs(A, [], k, "SI");
+assert_checkalmostequal(A*v1, v1*d1, sqrt(%eps), 1.e-10);
+clear opts
+// Tests : A is a function
+// Sparse matrix tests
+n = 20;
+k = 5;
+A = diag(10*ones(n,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6*ones(n-1,1));
+A = sparse(A);
+function y = fn(x)
+ y = A * x;
+endfunction
+opts.isreal = %t;
+opts.issym = %t;
+d1 = eigs(fn, n, [], k, "LM", opts );
+d0 = spec(full(A));
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+clear fn
+function y = fn(x)
+ y = A \x;
+endfunction
+opts.isreal = %t;
+opts.issym = %t;
+d1 = eigs(fn, n, [], k, "SM", opts );
+assert_checkalmostequal(d1, d0(1:k), 1.e-10);
+clear fn
+function y = fn(x)
+ y = (A - 2 * speye(n,n)) \x;
+endfunction
+opts.isreal = %t;
+opts.issym = %t;
+d1 = eigs(fn, n, [], k, 2, opts);
+assert_checkalmostequal(d1, d0(3:3+k-1), 1.e-10);
+n = 20;
+k = 5;
+A = diag((1:n));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(n-1,1));
+A = sparse(A);
+clear fn
+function y = fn(x)
+ y = A * x;
+endfunction
+opts.isreal = %t;
+opts.issym = %f;
+d1 = eigs(fn, n, [], k, "LM", opts );
+d0 = gsort(spec(full(A)));
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+clear fn
+function y = fn(x)
+ y = A \x;
+endfunction
+opts.isreal = %t;
+opts.issym = %f;
+d1 = eigs(fn, n, [], k, "SM", opts );
+assert_checkalmostequal(abs(d1), abs(d0($-k:$-1)), 1.e-10);
+clear fn
+function y = fn(x)
+ y = (A - 2 * speye(n,n)) \x;
+endfunction
+opts.isreal = %t;
+opts.issym = %f;
+d1 = eigs(fn, n, [], k, 2, opts );
+assert_checkalmostequal(abs(d1), abs(d0([19 20 12 11 15])), 1.e-10);
+n = 20;
+k = 5;
+A = diag((1:n) + %i * ones(1,n));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(n-1,1));
+A = sparse(A);
+clear fn
+function y = fn(x)
+ y = A * x;
+endfunction
+opts.isreal = %f;
+opts.issym = %f;
+d1 = eigs(fn, n, [], k, "LM", opts );
+d0 = gsort(spec(full(A)));
+r = gsort(real(d0));
+im = gsort(imag(d0));
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+clear fn
+function y = fn(x)
+ y = A \x;
+endfunction
+opts.isreal = %f;
+opts.issym = %f;
+d1 = eigs(fn, n, [], k, "SM", opts );
+assert_checkalmostequal(abs(d1), abs(d0($-k+1:$)), 1.e-10);
+clear fn
+function y = fn(x)
+ y = (A - 2 * speye(n,n)) \x;
+endfunction
+opts.isreal = %f;
+opts.issym = %f;
+d1 = eigs(fn, n, [], k, 2, opts );
+assert_checkalmostequal(gsort(abs(d1)), gsort(abs(d0($-1:-1:$-k))), 1.e-10);
+clear opts
+// Full matrix tests
+n = 20;
+k = 5;
+A = diag(10*ones(n,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6*ones(n-1,1));
+clear fn
+function y = fn(x)
+ y = A * x;
+endfunction
+opts.isreal = %t;
+opts.issym = %t;
+d1 = eigs(fn, n, [], k, "LM", opts );
+d0 = spec(A);
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+clear fn
+function y = fn(x)
+ y = A \x;
+endfunction
+opts.isreal = %t;
+opts.issym = %t;
+d1 = eigs(fn, n, [], k, "SM", opts );
+assert_checkalmostequal(d1, d0(1:k), 1.e-10);
+clear fn
+function y = fn(x)
+ y = (A - 2 * speye(n,n)) \x;
+endfunction
+opts.isreal = %t;
+opts.issym = %t;
+d1 = eigs(fn, n, [], k, 2, opts);
+assert_checkalmostequal(d1, d0(3:3+k-1), 1.e-10);
+n = 20;
+k = 5;
+A = diag((1:n));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(n-1,1));
+clear fn
+function y = fn(x)
+ y = A * x;
+endfunction
+opts.isreal = %t;
+opts.issym = %f;
+d1 = eigs(fn, n, [], k, "LM", opts );
+d0 = gsort(spec(A));
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+clear fn
+function y = fn(x)
+ y = A \x;
+endfunction
+opts.isreal = %t;
+opts.issym = %f;
+d1 = eigs(fn, n, [], k, "SM", opts );
+assert_checkalmostequal(abs(d1), abs(d0($-k:$-1)), 1.e-10);
+clear fn
+function y = fn(x)
+ y = (A - 2 * speye(n,n)) \x;
+endfunction
+opts.isreal = %t;
+opts.issym = %f;
+d1 = eigs(fn, n, [], k, 2, opts );
+assert_checkalmostequal(abs(d1), abs(d0([19 20 12 11 15])), 1.e-10);
+n = 20;
+k = 5;
+A = diag((1:n) + %i * ones(1,n));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(n-1,1));
+clear fn
+function y = fn(x)
+ y = A * x;
+endfunction
+opts.isreal = %f;
+opts.issym = %f;
+d1 = eigs(fn, n, [], k, "LM", opts );
+d0 = gsort(spec(A));
+r = gsort(real(d0));
+im = gsort(imag(d0));
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+clear fn
+function y = fn(x)
+ y = A \x;
+endfunction
+opts.isreal = %f;
+opts.issym = %f;
+d1 = eigs(fn, n, [], k, "SM", opts );
+assert_checkalmostequal(abs(d1), abs(d0($-k+1:$)), 1.e-10);
+clear fn
+function y = fn(x)
+ y = (A - 2 * speye(n,n)) \x;
+endfunction
+opts.isreal = %f;
+opts.issym = %f;
+d1 = eigs(fn, n, [], k, 2, opts );
+assert_checkalmostequal(gsort(abs(d1)), gsort(abs(d0($-1:-1:$-k))), 1.e-10);
diff --git a/modules/arnoldi/tests/unit_tests/eigs.tst b/modules/arnoldi/tests/unit_tests/eigs.tst
new file mode 100755
index 000000000..3c8cd4080
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/eigs.tst
@@ -0,0 +1,1131 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Adeline CARNIS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+
+// unit tests for eigs function
+// =============================================================================
+
+// Interface
+// =========
+assert_checkfalse(execstr("eigs()" ,"errcatch") == 0);
+refMsg = msprintf(_("%s : Wrong number of input arguments : %d to %d expected.\n"), "eigs", 1, 6);
+assert_checkerror("eigs()", refMsg);
+
+assert_checkfalse(execstr("eigs(1)","errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1);
+assert_checkerror("eigs(1)", refMsg);
+
+assert_checkfalse(execstr("eigs([])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A full or sparse square matrix or a function expected"), "eigs", 1);
+assert_checkerror("eigs([])", refMsg);
+
+assert_checkfalse(execstr("eigs(%nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1);
+assert_checkerror("eigs(%nan)", refMsg);
+
+assert_checkfalse(execstr("eigs(%inf)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1);
+assert_checkerror("eigs(%inf)", refMsg);
+
+assert_checkfalse(execstr("eigs(%eps)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1);
+assert_checkerror("eigs(%eps)", refMsg);
+
+assert_checkfalse(execstr("eigs([%f %f])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A full or sparse square matrix or a function expected"), "eigs", 1);
+assert_checkerror("eigs([%f %f])", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse([%f %f]))", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A full or sparse square matrix or a function expected"), "eigs", 1);
+assert_checkerror("eigs(sparse([%f %f]))", refMsg);
+
+assert_checkfalse(execstr("eigs([1 2])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1);
+assert_checkerror("eigs([1 2])", refMsg);
+
+assert_checkfalse(execstr("eigs([1; 2])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1);
+assert_checkerror("eigs([1; 2])", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse([1 2]))", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1);
+assert_checkerror("eigs(sparse([1 2]))", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse([1; 2]))", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A square matrix expected.\n"), "eigs", 1);
+assert_checkerror("eigs(sparse([1; 2]))", refMsg);
+
+
+n = 20;
+A = diag(10*ones(n,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6*ones(n-1,1));
+
+assert_checkfalse(execstr("eigs(A, %f)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: An empty matrix or full or sparse square matrix expected.\n"), "eigs", 2);
+assert_checkerror("eigs(A, %f)", refMsg);
+
+assert_checkfalse(execstr("eigs(A, %nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(A, %nan)", refMsg);
+
+assert_checkfalse(execstr("eigs(A, %inf)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(A, %inf)", refMsg);
+
+assert_checkfalse(execstr("eigs(A, %eps)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(A, %eps)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), %f)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: An empty matrix or full or sparse square matrix expected.\n"), "eigs", 2);
+assert_checkerror("eigs(sparse(A), %f)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), %nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(sparse(A), %nan)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), %inf)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(sparse(A), %inf)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), %eps)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(sparse(A), %eps)", refMsg);
+
+assert_checkfalse(execstr("eigs(A,[1 2])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(A,[1 2])", refMsg);
+
+assert_checkfalse(execstr("eigs(A,[1;2])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(A,[1;2])", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [1 2])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(sparse(A), [1 2])", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [1;2])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: B must have the same size as A.\n"), "eigs", 2);
+assert_checkerror("eigs(sparse(A), [1;2])", refMsg);
+
+
+assert_checkfalse(execstr("eigs(A, [], [])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], [])", refMsg);
+
+assert_checkfalse(execstr("eigs(A, [], %f)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], %f)", refMsg);
+
+assert_checkfalse(execstr("eigs(A, [], 2*%i)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], 2*%i)", refMsg);
+
+assert_checkfalse(execstr("eigs(A, [], -15)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: k must be a positive integer.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], -15)", refMsg);
+
+assert_checkfalse(execstr("eigs(A, [], 5.6)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: k must be a positive integer.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], 5.6)", refMsg);
+
+assert_checkfalse(execstr("eigs(A, [], [1 2])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], [1 2])", refMsg);
+
+assert_checkfalse(execstr("eigs(A, [], %nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: k must be a positive integer.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], %nan)", refMsg);
+
+assert_checkfalse(execstr("eigs(A, [], %eps)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: k must be a positive integer.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], %eps)", refMsg);
+
+assert_checkfalse(execstr("eigs(A, [], %inf)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: k must be in the range 1 to N.\n"), "eigs", 3);
+assert_checkerror("eigs(A, [], %inf)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], %f)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3);
+assert_checkerror("eigs(sparse(A), [], %f)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 2*%i)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3);
+assert_checkerror("eigs(sparse(A), [], 2*%i)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], -15)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: k must be a positive integer.\n"), "eigs", 3);
+assert_checkerror("eigs(sparse(A), [], -15)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 5.6)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: k must be a positive integer.\n"), "eigs", 3);
+assert_checkerror("eigs(sparse(A), [], 5.6)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], [1 2])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 3);
+assert_checkerror("eigs(sparse(A), [], [1 2])", refMsg);
+
+assert_checkfalse(execstr("eigs(A, [], 4, [])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 4);
+assert_checkerror("eigs(A, [], 4, [])", refMsg);
+
+assert_checkfalse(execstr("eigs(A, [], 4, %nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: sigma must be a real.\n"), "eigs", 4);
+assert_checkerror("eigs(A, [], 4, %nan)", refMsg);
+
+assert_checkfalse(execstr("eigs(A, [], 4, %f)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 4);
+assert_checkerror("eigs(A, [], 4, %f)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, [])", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 4);
+assert_checkerror("eigs(sparse(A), [], 4, [])", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, %nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"), "eigs", 4);
+assert_checkerror("eigs(sparse(A), [], 4, %nan)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, %f)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: a real scalar or a string expected.\n"), "eigs", 4);
+assert_checkerror("eigs(sparse(A), [], 4, %f)", refMsg);
+
+which = "ahh";
+assert_checkfalse(execstr("eigs(A, [], 4, which)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: Unrecognized sigma value.\n Sigma must be one of ''%s'', ''%s'', ''%s'', ''%s'' or ''%s''.\n"), "eigs", 4, "LM", "SM", "LA", "SA", "BE");
+assert_checkerror("eigs(A, [], 4, which)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: Unrecognized sigma value.\n Sigma must be one of ''%s'', ''%s'', ''%s'', ''%s'' or ''%s''.\n"), "eigs", 4, "LM", "SM", "LA", "SA", "BE");
+assert_checkerror("eigs(sparse(A), [], 4, which)", refMsg);
+
+which = "LM";
+assert_checkfalse(execstr("eigs(A, [], 4, which ,%nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A structure expected"), "eigs", 5);
+assert_checkerror("eigs(A, [], 4, which ,%nan)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,%nan)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A structure expected"), "eigs", 5);
+assert_checkerror("eigs(sparse(A), [], 4, which, %nan)", refMsg);
+
+opts.var = %nan;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument: If A is a matrix, use opts with tol, maxiter, ncv, resid, cholB"), "eigs");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument: If A is a matrix, use opts with tol, maxiter, ncv, resid, cholB"), "eigs");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+clear opts
+opts.maxiter = [];
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a scalar.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a scalar.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.maxiter = %nan;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer positive value.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer positive value.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(sparse(A), [], 4, which ,opts)", refMsg);
+
+opts.maxiter = %f;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a scalar.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a scalar.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.maxiter = "ahh";
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a scalar.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a scalar.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.maxiter = 5.1;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer positive value.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer positive value.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(sparse(A), [], 4, which ,opts)", refMsg);
+
+opts.maxiter = -5.1;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer positive value.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer positive value.\n"), "eigs", 5, "opts.maxiter");
+assert_checkerror("eigs(sparse(A), [], 4, which ,opts)", refMsg);
+
+clear opts
+opts.tol = [];
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+
+
+opts.tol = %nan;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.tol = %f;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.tol = "ahh";
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be a real scalar.\n"), "eigs", 6, "opts.tol");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+clear opts
+opts.ncv = %nan;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.ncv = %f;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.ncv = "ahh";
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.ncv = %eps;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.ncv = -5.1;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.ncv = 5.1;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar.\n"), "eigs", 7, "opts.ncv");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.ncv = n + 6;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: For real symmetric problems, NCV must be k < NCV <= N.\n"), "eigs", 7);
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: For real symmetric problems, NCV must be k < NCV <= N.\n"), "eigs", 7);
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+clear opts
+opts.cholB = %nan;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.cholB = "ahh";
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar or a boolean.\n"), "eigs", 8, "opts.cholB");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar or a boolean.\n"), "eigs", 8, "opts.cholB");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.cholB = %eps;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.cholB = -5.1;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.cholB = 5.1;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong value for input argument #%d: %s must be %s or %s.\n"), "eigs", 8, "opts.cholB", "%f", "%t");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+
+
+opts.cholB = [];
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar or a boolean.\n"), "eigs", 8, "opts.cholB");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: %s must be an integer scalar or a boolean.\n"), "eigs", 8, "opts.cholB");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+clear opts
+opts.resid = %nan;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.resid = %f;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"), "eigs", 9);
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"), "eigs", 9);
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.resid = "ahh";
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"), "eigs", 9);
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument #%d: A real or complex matrix expected.\n"), "eigs", 9);
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.resid = %eps;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.resid = [1 2];
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.resid = [1;2];
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+opts.resid = [];
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+assert_checkfalse(execstr("eigs(sparse(A), [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong dimension for input argument #%d: Start vector %s must be N by 1.\n"), "eigs", 9, "opts.resid");
+assert_checkerror("eigs(sparse(A), [], 4, which, opts)", refMsg);
+
+clear opts
+opts.issym = %f;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument: If A is a matrix, use opts with tol, maxiter, ncv, resid, cholB"), "eigs");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+clear opts
+opts.isreal = %f;
+assert_checkfalse(execstr("eigs(A, [], 4, which ,opts)", "errcatch") == 0);
+refMsg = msprintf(_("%s: Wrong type for input argument: If A is a matrix, use opts with tol, maxiter, ncv, resid, cholB"), "eigs");
+assert_checkerror("eigs(A, [], 4, which, opts)", refMsg);
+
+clear opts
+n = 20;
+k = 5;
+A = diag(10*ones(n,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6*ones(n-1,1));
+A = sparse(A);
+
+d1 = eigs(A, [], k);
+d0 = spec(full(A));
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+
+d1 = eigs(A, [], k, "LM");
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+
+d1 = eigs(A, [], k, "SM");
+assert_checkalmostequal(d1, d0(1:k), 1.e-10);
+
+d1 = eigs(A, [], k, "LA");
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+
+d1 = eigs(A, [], k, "SA");
+assert_checkalmostequal(d1, d0(k:-1:1), 1.e-10);
+
+d1 = eigs(A, [], k, "BE");
+assert_checkalmostequal(d1, [d0(1:2); d0($-2:$)], 1.e-10);
+
+d1 = eigs(A, [], k, 2);
+assert_checkalmostequal(d1, d0(3:3+k-1), 1.e-10);
+
+d1 = eigs(A, speye(n,n), k, "LM");
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+
+d1 = eigs(A, speye(n,n), k, 2);
+assert_checkalmostequal(d1, d0(3:3+k-1), 1.e-10);
+
+opts.cholB = %t;
+d1 = eigs(A, speye(n,n), k, "LM", opts);
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+
+opts.cholB = %t;
+d1 = eigs(A, speye(n,n), k, 2, opts);
+assert_checkalmostequal(eigs(A, [],k, 2), d0(3:3+k-1), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "LM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "SM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "LA");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "SA");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "BE");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+
+n = 20;
+k = 5;
+A = diag((1:n));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(n-1,1));
+A = sparse(A);
+
+d1 = eigs(A, [], k);
+d0 = gsort(spec(full(A)));
+
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+
+d1 = eigs(A, [], k, "LM");
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+
+d1 = eigs(A, [], k, "SM");
+assert_checkalmostequal(abs(d1), abs(d0($-k:$-1)), 1.e-10);
+
+d1 = eigs(A, [], k, "LR");
+assert_checkalmostequal(real(d1), real(d0(k+2-1:-1:2)), 1.e-10);
+
+d1 = eigs(A, [], k, "SR");
+assert_checkalmostequal(real(d1), gsort(real(d0([13 14 18 19 20]))), 1.e-10);
+
+d1 = eigs(A, [], k, "LI");
+assert_checkalmostequal(abs(imag(d1)), abs(imag(d0([3 4 2 1 18]))), 1.e-10);
+
+d1 = eigs(A, [], k, "SI");
+assert_checkalmostequal(abs(imag(d1)), abs(imag(d0([9 10 11 12 15]))), 1.e-10);
+
+d1 = eigs(A, [], k, 2);
+assert_checkalmostequal(abs(d1), abs(d0([19 20 12 11 15])), 1.e-10);
+
+d1 = eigs(A, speye(n,n), k, "LM");
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+
+d1 = eigs(A, speye(n,n), k, 2);
+assert_checkalmostequal(abs(d1), abs(d0([19 20 12 11 15])), 1.e-10);
+
+opts.cholB = %t;
+d1 = eigs(A, speye(n,n), k, "LM", opts);
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+
+opts.cholB = %t;
+d1 = eigs(A, speye(n,n), k, 2, opts);
+assert_checkalmostequal(abs(d1), abs(d0([19 20 12 11 15])), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "LM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "SM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "LR");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "SR");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "LI");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "SI");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+n = 20;
+k = 5;
+A = diag((1:n) + %i * ones(1,n));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(n-1,1));
+A = sparse(A);
+
+d1 = eigs(A, [], k);
+d0 = gsort(spec(full(A)));
+r = gsort(real(d0));
+im = gsort(imag(d0));
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+
+d1 = eigs(A, [], k, "LM");
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+
+//d1 = eigs(A, [], k, 'SM');
+//assert_checkalmostequal(abs(d1), abs(d0(1:k)), 1.e-14); // error -> impossible to invert complex sparse matrix
+
+d1 = eigs(A, [], k, "LR");
+assert_checkalmostequal(real(d1), real(d0(k:-1:1)), 1.e-10);
+
+d1 = eigs(A, [], k, "SR");
+assert_checkalmostequal(real(d1), r($-k+1:$), 1.e-10);
+
+d1 = eigs(A, [], k, "LI");
+assert_checkalmostequal(imag(d1), im(k:-1:1), 1.e-10);
+
+d1 = eigs(A, [], k, "SI");
+assert_checkalmostequal(imag(d1), im($-k+1:$), 1.e-10);
+
+d1 = eigs(A, speye(n,n), k, "LM");
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+
+opts.cholB = %t;
+d1 = eigs(A, speye(n,n), k, "LM", opts);
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "LM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "LR");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "SR");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "LI");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "SI");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+
+n = 20;
+k = 5;
+A = diag(10*ones(n,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6*ones(n-1,1));
+
+d1 = eigs(A, [], k);
+d0 = spec(A);
+
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+
+d1 = eigs(A, [], k, "LM");
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+
+d1 = eigs(A, [], k, "SM");
+assert_checkalmostequal(d1, d0(1:k), 1.e-10);
+
+d1 = eigs(A, [], k, "LA");
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+
+d1 = eigs(A, [], k, "SA");
+assert_checkalmostequal(d1, d0(k:-1:1), 1.e-10);
+
+d1 = eigs(A, [], k, "BE");
+assert_checkalmostequal(d1, [d0(1:2); d0($-2:$)], 1.e-10);
+
+d1 = eigs(A, [], k, 2);
+assert_checkalmostequal(d1, d0(3:3+k-1), 1.e-10);
+
+d1 = eigs(A, eye(n,n), k, "LM");
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+
+d1 = eigs(A, eye(n,n), k, 2);
+assert_checkalmostequal(d1, d0(3:3+k-1), 1.e-10);
+
+opts.cholB = %t;
+d1 = eigs(A, eye(n,n), k, "LM", opts);
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+
+opts.cholB = %t;
+d1 = eigs(A, eye(n,n), k, 2, opts);
+assert_checkalmostequal(eigs(A, [],k, 2), d0(3:3+k-1), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "LM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "SM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "LA");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "SA");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "BE");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+n = 20;
+k = 5;
+A = diag((1:n));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(n-1,1));
+
+d1 = eigs(A, [], k);
+d0 = gsort(spec(A));
+
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+
+d1 = eigs(A, [], k, "LM");
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+
+d1 = eigs(A, [], k, "SM");
+assert_checkalmostequal(abs(d1), abs(d0($-k:$-1)), 1.e-10);
+
+d1 = eigs(A, [], k, "LR");
+assert_checkalmostequal(real(d1), real(d0(k+2-1:-1:2)), 1.e-10);
+
+d1 = eigs(A, [], k, "SR");
+assert_checkalmostequal(real(d1), gsort(real(d0([13 14 18 19 20]))), 1.e-10);
+
+d1 = eigs(A, [], k, "LI");
+assert_checkalmostequal(abs(imag(d1)), abs(imag(d0([3 4 2 1 18]))), 1.e-10);
+
+d1 = eigs(A, [], k, "SI");
+assert_checkalmostequal(abs(imag(d1)), abs(imag(d0([9 10 11 12 15]))), 1.e-10);
+
+d1 = eigs(A, [], k, 2);
+assert_checkalmostequal(abs(d1), abs(d0([19 20 12 11 15])), 1.e-10);
+
+d1 = eigs(A, eye(n,n), k, "LM");
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+
+d1 = eigs(A, eye(n,n), k, 2);
+assert_checkalmostequal(abs(d1), abs(d0([19 20 12 11 15])), 1.e-10);
+
+opts.cholB = %t;
+d1 = eigs(A, eye(n,n), k, "LM", opts);
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+
+opts.cholB = %t;
+d1 = eigs(A, eye(n,n), k, 2, opts);
+assert_checkalmostequal(abs(d1), abs(d0([19 20 12 11 15])), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "LM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "SM");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "LR");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "SR");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "LI");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "SI");
+assert_checkalmostequal(A*v1, v1*d1,sqrt(%eps), 1.e-10);
+
+
+n = 20;
+k = 5;
+A = diag((1:n) + %i * ones(1,n));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(n-1,1));
+
+d1 = eigs(A, [], k);
+d0 = gsort(spec(A));
+r = gsort(real(d0));
+im = gsort(imag(d0));
+
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+
+d1 = eigs(A, [], k, "LM");
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+
+d1 = eigs(A, [], k, "SM");
+assert_checkalmostequal(abs(d1), abs(d0($-k+1:$)), 1.e-10);
+
+d1 = eigs(A, [], k, "LR");
+assert_checkalmostequal(real(d1), r(k:-1:1), 1.e-10);
+
+d1 = eigs(A, [], k, "SR");
+assert_checkalmostequal(real(d1), r($-k+1:$), 1.e-10);
+
+d1 = eigs(A, [], k, "LI");
+assert_checkalmostequal(imag(d1), im(k:-1:1), 1.e-10);
+
+d1 = eigs(A, [], k, "SI");
+assert_checkalmostequal(imag(d1), im($-k+1:$), 1.e-10);
+
+d1 = eigs(A, [], k, 2);
+assert_checkalmostequal(gsort(abs(d1)), gsort(abs(d0($-1:-1:$-k))), 1.e-10);
+
+d1 = eigs(A, eye(n,n), k, "LM");
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+
+opts.cholB = %t;
+d1 = eigs(A, eye(n,n), k, "LM", opts);
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+
+opts.cholB = %t;
+d1 = eigs(A, eye(n,n), k, 2, opts);
+assert_checkalmostequal(abs(eigs(A, [], k, 2)), abs(d1), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "LM");
+assert_checkalmostequal(A*v1, v1*d1, sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "LR");
+assert_checkalmostequal(A*v1, v1*d1, sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "SR");
+assert_checkalmostequal(A*v1, v1*d1, sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "LI");
+assert_checkalmostequal(A*v1, v1*d1, sqrt(%eps), 1.e-10);
+
+[d1, v1] = eigs(A, [], k, "SI");
+assert_checkalmostequal(A*v1, v1*d1, sqrt(%eps), 1.e-10);
+
+clear opts
+// Tests : A is a function
+// Sparse matrix tests
+n = 20;
+k = 5;
+A = diag(10*ones(n,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6*ones(n-1,1));
+A = sparse(A);
+
+function y = fn(x)
+ y = A * x;
+endfunction
+
+opts.isreal = %t;
+opts.issym = %t;
+
+d1 = eigs(fn, n, [], k, "LM", opts );
+d0 = spec(full(A));
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+
+clear fn
+function y = fn(x)
+ y = A \x;
+endfunction
+
+opts.isreal = %t;
+opts.issym = %t;
+
+d1 = eigs(fn, n, [], k, "SM", opts );
+assert_checkalmostequal(d1, d0(1:k), 1.e-10);
+
+clear fn
+function y = fn(x)
+ y = (A - 2 * speye(n,n)) \x;
+endfunction
+
+opts.isreal = %t;
+opts.issym = %t;
+
+d1 = eigs(fn, n, [], k, 2, opts);
+assert_checkalmostequal(d1, d0(3:3+k-1), 1.e-10);
+
+n = 20;
+k = 5;
+A = diag((1:n));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(n-1,1));
+A = sparse(A);
+
+clear fn
+function y = fn(x)
+ y = A * x;
+endfunction
+
+opts.isreal = %t;
+opts.issym = %f;
+
+d1 = eigs(fn, n, [], k, "LM", opts );
+d0 = gsort(spec(full(A)));
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+
+clear fn
+function y = fn(x)
+ y = A \x;
+endfunction
+
+opts.isreal = %t;
+opts.issym = %f;
+
+d1 = eigs(fn, n, [], k, "SM", opts );
+assert_checkalmostequal(abs(d1), abs(d0($-k:$-1)), 1.e-10);
+
+clear fn
+function y = fn(x)
+ y = (A - 2 * speye(n,n)) \x;
+endfunction
+
+opts.isreal = %t;
+opts.issym = %f;
+
+d1 = eigs(fn, n, [], k, 2, opts );
+assert_checkalmostequal(abs(d1), abs(d0([19 20 12 11 15])), 1.e-10);
+
+
+n = 20;
+k = 5;
+A = diag((1:n) + %i * ones(1,n));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(n-1,1));
+A = sparse(A);
+
+clear fn
+function y = fn(x)
+ y = A * x;
+endfunction
+
+opts.isreal = %f;
+opts.issym = %f;
+
+d1 = eigs(fn, n, [], k, "LM", opts );
+d0 = gsort(spec(full(A)));
+r = gsort(real(d0));
+im = gsort(imag(d0));
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+
+clear fn
+function y = fn(x)
+ y = A \x;
+endfunction
+
+opts.isreal = %f;
+opts.issym = %f;
+
+d1 = eigs(fn, n, [], k, "SM", opts );
+assert_checkalmostequal(abs(d1), abs(d0($-k+1:$)), 1.e-10);
+
+clear fn
+function y = fn(x)
+ y = (A - 2 * speye(n,n)) \x;
+endfunction
+
+opts.isreal = %f;
+opts.issym = %f;
+
+d1 = eigs(fn, n, [], k, 2, opts );
+assert_checkalmostequal(gsort(abs(d1)), gsort(abs(d0($-1:-1:$-k))), 1.e-10);
+
+
+
+clear opts
+// Full matrix tests
+n = 20;
+k = 5;
+A = diag(10*ones(n,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(6*ones(n-1,1));
+
+clear fn
+function y = fn(x)
+ y = A * x;
+endfunction
+
+opts.isreal = %t;
+opts.issym = %t;
+
+d1 = eigs(fn, n, [], k, "LM", opts );
+d0 = spec(A);
+assert_checkalmostequal(d1, d0(($-k+1):$), 1.e-10);
+
+clear fn
+function y = fn(x)
+ y = A \x;
+endfunction
+
+opts.isreal = %t;
+opts.issym = %t;
+
+d1 = eigs(fn, n, [], k, "SM", opts );
+assert_checkalmostequal(d1, d0(1:k), 1.e-10);
+
+clear fn
+function y = fn(x)
+ y = (A - 2 * speye(n,n)) \x;
+endfunction
+
+opts.isreal = %t;
+opts.issym = %t;
+
+d1 = eigs(fn, n, [], k, 2, opts);
+assert_checkalmostequal(d1, d0(3:3+k-1), 1.e-10);
+
+n = 20;
+k = 5;
+A = diag((1:n));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(n-1,1));
+
+clear fn
+function y = fn(x)
+ y = A * x;
+endfunction
+
+opts.isreal = %t;
+opts.issym = %f;
+
+d1 = eigs(fn, n, [], k, "LM", opts );
+d0 = gsort(spec(A));
+assert_checkalmostequal(abs(d1), abs(d0(k+2-1:-1:2)), 1.e-10);
+
+clear fn
+function y = fn(x)
+ y = A \x;
+endfunction
+
+opts.isreal = %t;
+opts.issym = %f;
+
+d1 = eigs(fn, n, [], k, "SM", opts );
+assert_checkalmostequal(abs(d1), abs(d0($-k:$-1)), 1.e-10);
+
+clear fn
+function y = fn(x)
+ y = (A - 2 * speye(n,n)) \x;
+endfunction
+
+opts.isreal = %t;
+opts.issym = %f;
+
+d1 = eigs(fn, n, [], k, 2, opts );
+assert_checkalmostequal(abs(d1), abs(d0([19 20 12 11 15])), 1.e-10);
+
+
+n = 20;
+k = 5;
+A = diag((1:n) + %i * ones(1,n));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6*ones(n-1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6*ones(n-1,1));
+
+clear fn
+function y = fn(x)
+ y = A * x;
+endfunction
+
+opts.isreal = %f;
+opts.issym = %f;
+
+d1 = eigs(fn, n, [], k, "LM", opts );
+d0 = gsort(spec(A));
+r = gsort(real(d0));
+im = gsort(imag(d0));
+assert_checkalmostequal(abs(d1), abs(d0(k:-1:1)), 1.e-10);
+
+clear fn
+function y = fn(x)
+ y = A \x;
+endfunction
+
+opts.isreal = %f;
+opts.issym = %f;
+
+d1 = eigs(fn, n, [], k, "SM", opts );
+assert_checkalmostequal(abs(d1), abs(d0($-k+1:$)), 1.e-10);
+
+clear fn
+function y = fn(x)
+ y = (A - 2 * speye(n,n)) \x;
+endfunction
+
+opts.isreal = %f;
+opts.issym = %f;
+
+d1 = eigs(fn, n, [], k, 2, opts );
+assert_checkalmostequal(gsort(abs(d1)), gsort(abs(d0($-1:-1:$-k))), 1.e-10);
diff --git a/modules/arnoldi/tests/unit_tests/znaupd-win.dia.ref b/modules/arnoldi/tests/unit_tests/znaupd-win.dia.ref
new file mode 100755
index 000000000..d75f28712
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/znaupd-win.dia.ref
@@ -0,0 +1,59 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - SE - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- WINDOWS ONLY -->
+nx = 10;
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+// Local Arrays
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev + 1, 1) + 0 * %i;
+z = zeros(nx, nev) + 0* %i;
+resid = zeros(nx, 1) + 0 * %i;
+v = zeros(nx, ncv) + 0 * %i;
+workd = zeros(3 * nx, 1) + 0 * %i;
+workev = zeros(2 * ncv, 1) + 0 * %i;
+rwork = zeros(ncv, 1);
+workl = zeros(3 * ncv * ncv + 5 *ncv, 1) + 0 * %i;
+// Build the complex test matrix
+A = diag(10 * ones(nx,1) + %i * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx - 1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx - 1,1));
+tol = 0;
+ido = 0;
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+sigma = complex(0);
+info_znaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine ZNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+ [ido, resid, v, iparam, ipntr, workd, workl, rwork, info_znaupd] = znaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, rwork, info_znaupd);
+ if(info_znaupd < 0)
+ printf('\nError with znaupd, info = %d\n', info_znaupd);
+ printf('Check the documentation of znaupd\n\n');
+ end
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+// Post-Process using ZNEUPD.
+rvec = 1;
+howmany = 'A';
+info_zneupd = 0;
+[d, z, resid, iparam, ipntr, workd, workl, rwork, info_zneupd] = zneupd(rvec, howmany, _select, d, z, sigma, workev, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, rwork, info_zneupd);
+assert_checkalmostequal(A * z, z * diag(d(1:3)), sqrt(%eps), 1.e-10);
diff --git a/modules/arnoldi/tests/unit_tests/znaupd-win.tst b/modules/arnoldi/tests/unit_tests/znaupd-win.tst
new file mode 100755
index 000000000..80faf85af
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/znaupd-win.tst
@@ -0,0 +1,74 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - SE - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- WINDOWS ONLY -->
+nx = 10;
+
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+
+// Local Arrays
+
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev + 1, 1) + 0 * %i;
+z = zeros(nx, nev) + 0* %i;
+resid = zeros(nx, 1) + 0 * %i;
+v = zeros(nx, ncv) + 0 * %i;
+workd = zeros(3 * nx, 1) + 0 * %i;
+workev = zeros(2 * ncv, 1) + 0 * %i;
+rwork = zeros(ncv, 1);
+workl = zeros(3 * ncv * ncv + 5 *ncv, 1) + 0 * %i;
+
+// Build the complex test matrix
+A = diag(10 * ones(nx,1) + %i * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx - 1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx - 1,1));
+
+tol = 0;
+ido = 0;
+
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+
+sigma = complex(0);
+info_znaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine ZNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+
+ [ido, resid, v, iparam, ipntr, workd, workl, rwork, info_znaupd] = znaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, rwork, info_znaupd);
+
+ if(info_znaupd < 0)
+ printf('\nError with znaupd, info = %d\n', info_znaupd);
+ printf('Check the documentation of znaupd\n\n');
+ end
+
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+
+// Post-Process using ZNEUPD.
+
+rvec = 1;
+howmany = 'A';
+info_zneupd = 0;
+
+[d, z, resid, iparam, ipntr, workd, workl, rwork, info_zneupd] = zneupd(rvec, howmany, _select, d, z, sigma, workev, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, rwork, info_zneupd);
+
+assert_checkalmostequal(A * z, z * diag(d(1:3)), sqrt(%eps), 1.e-10);
diff --git a/modules/arnoldi/tests/unit_tests/znaupd.dia.ref b/modules/arnoldi/tests/unit_tests/znaupd.dia.ref
new file mode 100755
index 000000000..5b691200b
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/znaupd.dia.ref
@@ -0,0 +1,60 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - SE - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- LINUX ONLY -->
+nx = 10;
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+// Local Arrays
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev + 1, 1) + 0 * %i;
+z = zeros(nx, nev) + 0* %i;
+resid = zeros(nx, 1) + 0 * %i;
+v = zeros(nx, ncv) + 0 * %i;
+workd = zeros(3 * nx, 1) + 0 * %i;
+workev = zeros(2 * ncv, 1) + 0 * %i;
+rwork = zeros(ncv, 1);
+workl = zeros(3 * ncv * ncv + 5 *ncv, 1) + 0 * %i;
+// Build the complex test matrix
+A = diag(10 * ones(nx,1) + %i * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx - 1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx - 1,1));
+tol = 0;
+ido = 0;
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+sigma = complex(0);
+info_znaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine ZNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+ [ido, resid, v, iparam, ipntr, workd, workl, rwork, info_znaupd] = znaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, rwork, info_znaupd);
+ if(info_znaupd < 0)
+ printf('\nError with znaupd, info = %d\n', info_znaupd);
+ printf('Check the documentation of znaupd\n\n');
+ end
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+// Post-Process using ZNEUPD.
+rvec = 1;
+howmany = 'A';
+info_zneupd = 0;
+[d, z, resid, iparam, ipntr, workd, workl, rwork, info_zneupd] = zneupd(rvec, howmany, _select, d, z, sigma, workev, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, rwork, info_zneupd);
+assert_checkalmostequal(A * z, z * diag(d(1:3)), sqrt(%eps), 1.e-10);
diff --git a/modules/arnoldi/tests/unit_tests/znaupd.tst b/modules/arnoldi/tests/unit_tests/znaupd.tst
new file mode 100755
index 000000000..4bc06776e
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/znaupd.tst
@@ -0,0 +1,76 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - SE - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+// <-- LINUX ONLY -->
+nx = 10;
+
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+
+// Local Arrays
+
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev + 1, 1) + 0 * %i;
+z = zeros(nx, nev) + 0* %i;
+resid = zeros(nx, 1) + 0 * %i;
+v = zeros(nx, ncv) + 0 * %i;
+workd = zeros(3 * nx, 1) + 0 * %i;
+workev = zeros(2 * ncv, 1) + 0 * %i;
+rwork = zeros(ncv, 1);
+workl = zeros(3 * ncv * ncv + 5 *ncv, 1) + 0 * %i;
+
+// Build the complex test matrix
+A = diag(10 * ones(nx,1) + %i * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx - 1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx - 1,1));
+
+tol = 0;
+ido = 0;
+
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+
+sigma = complex(0);
+info_znaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine ZNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+
+ [ido, resid, v, iparam, ipntr, workd, workl, rwork, info_znaupd] = znaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, rwork, info_znaupd);
+
+ if(info_znaupd < 0)
+ printf('\nError with znaupd, info = %d\n', info_znaupd);
+ printf('Check the documentation of znaupd\n\n');
+ end
+
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+
+// Post-Process using ZNEUPD.
+
+rvec = 1;
+howmany = 'A';
+info_zneupd = 0;
+
+[d, z, resid, iparam, ipntr, workd, workl, rwork, info_zneupd] = zneupd(rvec, howmany, _select, d, z, sigma, workev, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, rwork, info_zneupd);
+
+assert_checkalmostequal(A * z, z * diag(d(1:3)), sqrt(%eps), 1.e-10);
diff --git a/modules/arnoldi/tests/unit_tests/zneupd-win.dia.ref b/modules/arnoldi/tests/unit_tests/zneupd-win.dia.ref
new file mode 100755
index 000000000..d75f28712
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/zneupd-win.dia.ref
@@ -0,0 +1,59 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - SE - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- WINDOWS ONLY -->
+nx = 10;
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+// Local Arrays
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev + 1, 1) + 0 * %i;
+z = zeros(nx, nev) + 0* %i;
+resid = zeros(nx, 1) + 0 * %i;
+v = zeros(nx, ncv) + 0 * %i;
+workd = zeros(3 * nx, 1) + 0 * %i;
+workev = zeros(2 * ncv, 1) + 0 * %i;
+rwork = zeros(ncv, 1);
+workl = zeros(3 * ncv * ncv + 5 *ncv, 1) + 0 * %i;
+// Build the complex test matrix
+A = diag(10 * ones(nx,1) + %i * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx - 1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx - 1,1));
+tol = 0;
+ido = 0;
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+sigma = complex(0);
+info_znaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine ZNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+ [ido, resid, v, iparam, ipntr, workd, workl, rwork, info_znaupd] = znaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, rwork, info_znaupd);
+ if(info_znaupd < 0)
+ printf('\nError with znaupd, info = %d\n', info_znaupd);
+ printf('Check the documentation of znaupd\n\n');
+ end
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+// Post-Process using ZNEUPD.
+rvec = 1;
+howmany = 'A';
+info_zneupd = 0;
+[d, z, resid, iparam, ipntr, workd, workl, rwork, info_zneupd] = zneupd(rvec, howmany, _select, d, z, sigma, workev, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, rwork, info_zneupd);
+assert_checkalmostequal(A * z, z * diag(d(1:3)), sqrt(%eps), 1.e-10);
diff --git a/modules/arnoldi/tests/unit_tests/zneupd-win.tst b/modules/arnoldi/tests/unit_tests/zneupd-win.tst
new file mode 100755
index 000000000..80faf85af
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/zneupd-win.tst
@@ -0,0 +1,74 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - SE - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- WINDOWS ONLY -->
+nx = 10;
+
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+
+// Local Arrays
+
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev + 1, 1) + 0 * %i;
+z = zeros(nx, nev) + 0* %i;
+resid = zeros(nx, 1) + 0 * %i;
+v = zeros(nx, ncv) + 0 * %i;
+workd = zeros(3 * nx, 1) + 0 * %i;
+workev = zeros(2 * ncv, 1) + 0 * %i;
+rwork = zeros(ncv, 1);
+workl = zeros(3 * ncv * ncv + 5 *ncv, 1) + 0 * %i;
+
+// Build the complex test matrix
+A = diag(10 * ones(nx,1) + %i * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx - 1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx - 1,1));
+
+tol = 0;
+ido = 0;
+
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+
+sigma = complex(0);
+info_znaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine ZNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+
+ [ido, resid, v, iparam, ipntr, workd, workl, rwork, info_znaupd] = znaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, rwork, info_znaupd);
+
+ if(info_znaupd < 0)
+ printf('\nError with znaupd, info = %d\n', info_znaupd);
+ printf('Check the documentation of znaupd\n\n');
+ end
+
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+
+// Post-Process using ZNEUPD.
+
+rvec = 1;
+howmany = 'A';
+info_zneupd = 0;
+
+[d, z, resid, iparam, ipntr, workd, workl, rwork, info_zneupd] = zneupd(rvec, howmany, _select, d, z, sigma, workev, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, rwork, info_zneupd);
+
+assert_checkalmostequal(A * z, z * diag(d(1:3)), sqrt(%eps), 1.e-10);
diff --git a/modules/arnoldi/tests/unit_tests/zneupd.dia.ref b/modules/arnoldi/tests/unit_tests/zneupd.dia.ref
new file mode 100755
index 000000000..5b691200b
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/zneupd.dia.ref
@@ -0,0 +1,60 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - SE - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- CLI SHELL MODE -->
+// <-- LINUX ONLY -->
+nx = 10;
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+// Local Arrays
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev + 1, 1) + 0 * %i;
+z = zeros(nx, nev) + 0* %i;
+resid = zeros(nx, 1) + 0 * %i;
+v = zeros(nx, ncv) + 0 * %i;
+workd = zeros(3 * nx, 1) + 0 * %i;
+workev = zeros(2 * ncv, 1) + 0 * %i;
+rwork = zeros(ncv, 1);
+workl = zeros(3 * ncv * ncv + 5 *ncv, 1) + 0 * %i;
+// Build the complex test matrix
+A = diag(10 * ones(nx,1) + %i * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx - 1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx - 1,1));
+tol = 0;
+ido = 0;
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+sigma = complex(0);
+info_znaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine ZNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+ [ido, resid, v, iparam, ipntr, workd, workl, rwork, info_znaupd] = znaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, rwork, info_znaupd);
+ if(info_znaupd < 0)
+ printf('\nError with znaupd, info = %d\n', info_znaupd);
+ printf('Check the documentation of znaupd\n\n');
+ end
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+// Post-Process using ZNEUPD.
+rvec = 1;
+howmany = 'A';
+info_zneupd = 0;
+[d, z, resid, iparam, ipntr, workd, workl, rwork, info_zneupd] = zneupd(rvec, howmany, _select, d, z, sigma, workev, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, rwork, info_zneupd);
+assert_checkalmostequal(A * z, z * diag(d(1:3)), sqrt(%eps), 1.e-10);
diff --git a/modules/arnoldi/tests/unit_tests/zneupd.tst b/modules/arnoldi/tests/unit_tests/zneupd.tst
new file mode 100755
index 000000000..4bc06776e
--- /dev/null
+++ b/modules/arnoldi/tests/unit_tests/zneupd.tst
@@ -0,0 +1,76 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - SE - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- CLI SHELL MODE -->
+// <-- LINUX ONLY -->
+nx = 10;
+
+nev = 3;
+ncv = 6;
+bmat = 'I';
+which = 'LM';
+
+// Local Arrays
+
+iparam = zeros(11, 1);
+ipntr = zeros(14, 1);
+_select = zeros(ncv, 1);
+d = zeros(nev + 1, 1) + 0 * %i;
+z = zeros(nx, nev) + 0* %i;
+resid = zeros(nx, 1) + 0 * %i;
+v = zeros(nx, ncv) + 0 * %i;
+workd = zeros(3 * nx, 1) + 0 * %i;
+workev = zeros(2 * ncv, 1) + 0 * %i;
+rwork = zeros(ncv, 1);
+workl = zeros(3 * ncv * ncv + 5 *ncv, 1) + 0 * %i;
+
+// Build the complex test matrix
+A = diag(10 * ones(nx,1) + %i * ones(nx,1));
+A(1:$-1,2:$) = A(1:$-1,2:$) + diag(6 * ones(nx - 1,1));
+A(2:$,1:$-1) = A(2:$,1:$-1) + diag(-6 * ones(nx - 1,1));
+
+tol = 0;
+ido = 0;
+
+ishfts = 1;
+maxitr = 300;
+mode1 = 1;
+
+iparam(1) = ishfts;
+iparam(3) = maxitr;
+iparam(7) = mode1;
+
+sigma = complex(0);
+info_znaupd = 0;
+// M A I N L O O P (Reverse communication)
+while(ido <> 99)
+ // Repeatedly call the routine ZNAUPD and take actions indicated by parameter IDO until
+ // either convergence is indicated or maxitr has been exceeded.
+
+ [ido, resid, v, iparam, ipntr, workd, workl, rwork, info_znaupd] = znaupd(ido, bmat, nx, which, nev, tol, resid, ncv, v, iparam, ipntr, workd, workl, rwork, info_znaupd);
+
+ if(info_znaupd < 0)
+ printf('\nError with znaupd, info = %d\n', info_znaupd);
+ printf('Check the documentation of znaupd\n\n');
+ end
+
+ if(ido == -1 | ido == 1)
+ // Perform matrix vector multiplication
+ workd(ipntr(2):ipntr(2) + nx - 1) = A * workd(ipntr(1):ipntr(1) + nx - 1);
+ end
+end
+
+// Post-Process using ZNEUPD.
+
+rvec = 1;
+howmany = 'A';
+info_zneupd = 0;
+
+[d, z, resid, iparam, ipntr, workd, workl, rwork, info_zneupd] = zneupd(rvec, howmany, _select, d, z, sigma, workev, bmat, nx, which, nev, tol, resid, ncv, v, ...
+ iparam, ipntr, workd, workl, rwork, info_zneupd);
+
+assert_checkalmostequal(A * z, z * diag(d(1:3)), sqrt(%eps), 1.e-10);