diff options
author | Shashank | 2017-05-29 12:40:26 +0530 |
---|---|---|
committer | Shashank | 2017-05-29 12:40:26 +0530 |
commit | 0345245e860375a32c9a437c4a9d9cae807134e9 (patch) | |
tree | ad51ecbfa7bcd3cc5f09834f1bb8c08feaa526a4 /modules/arnoldi | |
download | scilab_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')
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 Binary files differnew file mode 100755 index 000000000..8fa14c69f --- /dev/null +++ b/modules/arnoldi/.libs/libsciarnoldi.so.5.5.2 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>NUL 2>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>NUL 2>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>NUL 2>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>NUL 2>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 < + NEV < 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) <= TOL*ABS(RITZ(I)). + If TOL <= 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 <= NCV - NEV and NCV <= 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 <= 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 < NP <= 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 >= 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 <- inv[A - sigma * M] * v or w <- 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 > NEV + + 2. However, it is recommended that NCV >= 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 >= 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 < NEV < + 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) <= TOL * ABS(RITZ(I)). If TOL + <= 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 < NP <= + 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> + < x,OPy > = + < OPx,y > where <z,w > = 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 ===> OP = A and B = + I. + </para> + </listitem> + <listitem> + <para> + Mode 2: A * x = lambda * M * x, A symmetric, M symmetric positive + definite ===> OP = inv[M] * A and B = M. ===> (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 ===> OP = (inv[K - sigma * M]) * M and B = M. ===> + Shift-and-Invert mode + </para> + </listitem> + <listitem> + <para> + Mode 4: K * x = lambda * KG * x, K symmetric positive semi-definite, + KG symmetric indefinite ===> OP = (inv[K - sigma * KG]) * K and B = K. + ===> Buckling mode + </para> + </listitem> + <listitem> + <para> + Mode 5: A * x = lambda * M * x, A symmetric, M symmetric positive + semi-definite ===> OP = inv[A - sigma * M] * [A + sigma * M] and B = M. + ===> Cayley transformed mode + </para> + </listitem> + </itemizedlist> + <para> + NOTE: The action of w <- inv[A - sigma * M] * v or w <- 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 > NEV. + However, it is recommended that NCV >= 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 < NEV < + 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 <= NCV - NEV and NCV <= 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 < NP < + 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 >= 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>===> OP = A and B = I.</para> + </listitem> + <listitem> + <para>Mode 2: A * x = lambda * M * x, M hermitian positive definite </para> + <para>===> OP = inv[M] * A and B = M. </para> + <para>===> (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>===> OP = inv[A - sigma * M] * M and B = M. </para> + <para> + ===> shift-and-invert mode If OP * x = amu * x, then lambda = + sigma + 1/amu. + </para> + </listitem> + </itemizedlist> + <para> + NOTE: The action of w <- inv[A - sigma * M] * v or w <- 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 > + 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 >= 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 < + NEV < 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) <= TOL*ABS(RITZ(I)). + If TOL <= 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 <= NCV - NEV and NCV <= 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 <= 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 < NP <= 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 >= 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 <- inv[A - sigma * M] * v or w <- 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 > NEV + + 2. However, it is recommended that NCV >= 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 >= 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 < NEV < + 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) <= TOL * ABS(RITZ(I)). If TOL + <= 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 < NP <= + 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> + < x,OPy > = + < OPx,y > where <z,w > = 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 ===> OP = A and B = + I. + </para> + </listitem> + <listitem> + <para> + Mode 2: A * x = lambda * M * x, A symmetric, M symmetric positive + definite ===> OP = inv[M] * A and B = M. ===> (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 ===> OP = (inv[K - sigma * M]) * M and B = M. ===> + Shift-and-Invert mode + </para> + </listitem> + <listitem> + <para> + Mode 4: K * x = lambda * KG * x, K symmetric positive semi-definite, + KG symmetric indefinite ===> OP = (inv[K - sigma * KG]) * K and B = K. + ===> Buckling mode + </para> + </listitem> + <listitem> + <para> + Mode 5: A * x = lambda * M * x, A symmetric, M symmetric positive + semi-definite ===> OP = inv[A - sigma * M] * [A + sigma * M] and B = M. + ===> Cayley transformed mode + </para> + </listitem> + </itemizedlist> + <para> + NOTE: The action of w <- inv[A - sigma * M] * v or w <- 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 > NEV. + However, it is recommended that NCV >= 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 < NEV < + 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 <= NCV - NEV and NCV <= 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 < NP < + 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 >= 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>===> OP = A and B = I.</para> + </listitem> + <listitem> + <para>Mode 2: A * x = lambda * M * x, M hermitian positive definite </para> + <para>===> OP = inv[M] * A and B = M. </para> + <para>===> (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>===> OP = inv[A - sigma * M] * M and B = M. </para> + <para> + ===> shift-and-invert mode If OP * x = amu * x, then lambda = + sigma + 1/amu. + </para> + </listitem> + </itemizedlist> + <para> + NOTE: The action of w <- inv[A - sigma * M] * v or w <- 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 > + 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 >= 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 Binary files differnew file mode 100755 index 000000000..b2d76ccd0 --- /dev/null +++ b/modules/arnoldi/macros/eigs.bin 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 Binary files differnew file mode 100755 index 000000000..f52cc96f8 --- /dev/null +++ b/modules/arnoldi/macros/lib 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 Binary files differnew file mode 100755 index 000000000..1812098de --- /dev/null +++ b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-gw_arnoldi.o 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 Binary files differnew file mode 100755 index 000000000..305630bc4 --- /dev/null +++ b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dnaupd.o 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 Binary files differnew file mode 100755 index 000000000..b0893e97a --- /dev/null +++ b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dneupd.o 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 Binary files differnew file mode 100755 index 000000000..a8565b2d9 --- /dev/null +++ b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dsaupd.o 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 Binary files differnew file mode 100755 index 000000000..9856e4a18 --- /dev/null +++ b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_dseupd.o 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 Binary files differnew file mode 100755 index 000000000..5414ca9fb --- /dev/null +++ b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_eigs.o 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 Binary files differnew file mode 100755 index 000000000..f47ec9c91 --- /dev/null +++ b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_znaupd.o 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 Binary files differnew file mode 100755 index 000000000..c4c66ab43 --- /dev/null +++ b/modules/arnoldi/sci_gateway/c/.libs/libsciarnoldi_la-sci_zneupd.o 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 Binary files differnew file mode 100755 index 000000000..902ed70bb --- /dev/null +++ b/modules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs.o diff --git a/modules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs_dependencies.o b/modules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs_dependencies.o Binary files differnew file mode 100755 index 000000000..8ea106354 --- /dev/null +++ b/modules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs_dependencies.o 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); |