summaryrefslogtreecommitdiff
path: root/modules/arnoldi/src
diff options
context:
space:
mode:
authorShashank2017-05-29 12:40:26 +0530
committerShashank2017-05-29 12:40:26 +0530
commit0345245e860375a32c9a437c4a9d9cae807134e9 (patch)
treead51ecbfa7bcd3cc5f09834f1bb8c08feaa526a4 /modules/arnoldi/src
downloadscilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.tar.gz
scilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.tar.bz2
scilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.zip
CMSCOPE changed
Diffstat (limited to 'modules/arnoldi/src')
-rwxr-xr-xmodules/arnoldi/src/c/.deps/.dirstamp0
-rwxr-xr-xmodules/arnoldi/src/c/.deps/libsciarnoldi_la-eigs.Plo230
-rwxr-xr-xmodules/arnoldi/src/c/.deps/libsciarnoldi_la-eigs_dependencies.Plo228
-rwxr-xr-xmodules/arnoldi/src/c/.dirstamp0
-rwxr-xr-xmodules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs.obin0 -> 66592 bytes
-rwxr-xr-xmodules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs_dependencies.obin0 -> 12048 bytes
-rwxr-xr-xmodules/arnoldi/src/c/DllmainArnoldi.c36
-rwxr-xr-xmodules/arnoldi/src/c/arnoldi.rc101
-rwxr-xr-xmodules/arnoldi/src/c/eigs.c835
-rwxr-xr-xmodules/arnoldi/src/c/eigs_dependencies.c109
-rwxr-xr-xmodules/arnoldi/src/c/libsciarnoldi_la-eigs.lo12
-rwxr-xr-xmodules/arnoldi/src/c/libsciarnoldi_la-eigs_dependencies.lo12
12 files changed, 1563 insertions, 0 deletions
diff --git a/modules/arnoldi/src/c/.deps/.dirstamp b/modules/arnoldi/src/c/.deps/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/arnoldi/src/c/.deps/.dirstamp
diff --git a/modules/arnoldi/src/c/.deps/libsciarnoldi_la-eigs.Plo b/modules/arnoldi/src/c/.deps/libsciarnoldi_la-eigs.Plo
new file mode 100755
index 000000000..ae63f88b4
--- /dev/null
+++ b/modules/arnoldi/src/c/.deps/libsciarnoldi_la-eigs.Plo
@@ -0,0 +1,230 @@
+src/c/libsciarnoldi_la-eigs.lo: src/c/eigs.c /usr/include/stdc-predef.h \
+ /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h includes/eigs.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ ../../modules/output_stream/includes/sciprint.h \
+ ../../modules/core/includes/BOOL.h includes/eigs_dependencies.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+includes/eigs.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+../../modules/output_stream/includes/sciprint.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/eigs_dependencies.h:
diff --git a/modules/arnoldi/src/c/.deps/libsciarnoldi_la-eigs_dependencies.Plo b/modules/arnoldi/src/c/.deps/libsciarnoldi_la-eigs_dependencies.Plo
new file mode 100755
index 000000000..e6e9ef63a
--- /dev/null
+++ b/modules/arnoldi/src/c/.deps/libsciarnoldi_la-eigs_dependencies.Plo
@@ -0,0 +1,228 @@
+src/c/libsciarnoldi_la-eigs_dependencies.lo: src/c/eigs_dependencies.c \
+ /usr/include/stdc-predef.h includes/eigs_dependencies.h \
+ ../../modules/core/includes/doublecomplex.h /usr/include/string.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/stack-c.h \
+ ../../modules/core/includes/core_math.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \
+ ../../modules/core/includes/stack-def.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/core/includes/stackTypeVariable.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/core/includes/doublecomplex.h \
+ ../../modules/core/includes/stack1.h \
+ ../../modules/core/includes/scisparse.h \
+ ../../modules/core/includes/stack2.h \
+ ../../modules/core/includes/stack3.h \
+ ../../modules/core/includes/stack-optional.h \
+ ../../modules/core/includes/sci_types.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h \
+ ../../modules/output_stream/includes/sciprint.h \
+ ../../modules/core/includes/BOOL.h
+
+/usr/include/stdc-predef.h:
+
+includes/eigs_dependencies.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/stack-c.h:
+
+../../modules/core/includes/core_math.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+../../modules/core/includes/stack-def.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/stackTypeVariable.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/core/includes/doublecomplex.h:
+
+../../modules/core/includes/stack1.h:
+
+../../modules/core/includes/scisparse.h:
+
+../../modules/core/includes/stack2.h:
+
+../../modules/core/includes/stack3.h:
+
+../../modules/core/includes/stack-optional.h:
+
+../../modules/core/includes/sci_types.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+../../modules/output_stream/includes/sciprint.h:
+
+../../modules/core/includes/BOOL.h:
diff --git a/modules/arnoldi/src/c/.dirstamp b/modules/arnoldi/src/c/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/arnoldi/src/c/.dirstamp
diff --git a/modules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs.o b/modules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs.o
new file mode 100755
index 000000000..902ed70bb
--- /dev/null
+++ b/modules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs.o
Binary files differ
diff --git a/modules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs_dependencies.o b/modules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs_dependencies.o
new file mode 100755
index 000000000..8ea106354
--- /dev/null
+++ b/modules/arnoldi/src/c/.libs/libsciarnoldi_la-eigs_dependencies.o
Binary files differ
diff --git a/modules/arnoldi/src/c/DllmainArnoldi.c b/modules/arnoldi/src/c/DllmainArnoldi.c
new file mode 100755
index 000000000..1c6dceda6
--- /dev/null
+++ b/modules/arnoldi/src/c/DllmainArnoldi.c
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2007-2008 - INRIA - Allan CORNET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+/*--------------------------------------------------------------------------*/
+#include <windows.h>
+/*--------------------------------------------------------------------------*/
+#pragma comment(lib,"../../bin/libintl.lib")
+#pragma comment(lib,"../../bin/arpack.lib")
+#pragma comment(lib,"../../bin/blasplus.lib")
+#pragma comment(lib,"../../bin/lapack.lib")
+/*--------------------------------------------------------------------------*/
+int WINAPI DllMain (HINSTANCE hInstance , DWORD reason, PVOID pvReserved)
+{
+ switch (reason)
+ {
+ case DLL_PROCESS_ATTACH:
+ break;
+ case DLL_PROCESS_DETACH:
+ break;
+ case DLL_THREAD_ATTACH:
+ break;
+ case DLL_THREAD_DETACH:
+ break;
+ }
+ return 1;
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/arnoldi/src/c/arnoldi.rc b/modules/arnoldi/src/c/arnoldi.rc
new file mode 100755
index 000000000..098503597
--- /dev/null
+++ b/modules/arnoldi/src/c/arnoldi.rc
@@ -0,0 +1,101 @@
+// Microsoft Visual C++ generated resource script.
+//
+
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include <windows.h>
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// French (France) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)
+#ifdef _WIN32
+LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include ""windows.h""\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+1 VERSIONINFO
+ FILEVERSION 5,5,2,0
+ PRODUCTVERSION 5,5,2,0
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040c04b0"
+ BEGIN
+ VALUE "FileDescription", "arnoldi module"
+ VALUE "FileVersion", "5, 5, 2, 0"
+ VALUE "InternalName", "arnoldi"
+ VALUE "LegalCopyright", "Copyright (C) 2017"
+ VALUE "OriginalFilename", "arnoldi.dll"
+ VALUE "ProductName", "arnoldi module"
+ VALUE "ProductVersion", "5, 5, 2, 0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x40c, 1200
+ END
+END
+
+#endif // French (France) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/modules/arnoldi/src/c/eigs.c b/modules/arnoldi/src/c/eigs.c
new file mode 100755
index 000000000..7e08699ee
--- /dev/null
+++ b/modules/arnoldi/src/c/eigs.c
@@ -0,0 +1,835 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2012 -Scilab Enterprises - Adeline CARNIS
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+/*--------------------------------------------------------------------------*/
+#include <string.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "eigs.h"
+#include "stack-c.h"
+#include "MALLOC.h"
+#include "sciprint.h"
+#include "eigs_dependencies.h"
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+// dgemv performs matrix-vector operations
+extern int C2F(dgemv) (char* trans, int* m, int* n, double* alpha, double* A, int* lda,
+ double* x, int* incx, double* beta, double* y, int* incy);
+extern int C2F(zgemv) (char* trans, int* m, int* n, doublecomplex* alpha, doublecomplex* A,
+ int* lda, doublecomplex* x, int* incx, doublecomplex* beta, doublecomplex* y, int* incy);
+
+// dgetrf computes an LU factorization of a general M by N matrix A (double) using partial pivoting with row interchanges
+extern int C2F(dgetrf)(int* m, int* n, double* A, int* lda, int* ipiv, int* info);
+
+// zgetrf computes an LU factorization of a general M by N matrix A (complex*16) using partial pivoting with row interchanges
+extern int C2F(zgetrf)(int* m, int* n, doublecomplex* A, int* lda, int* ipiv, int* info);
+// dgetrs solves a linear system using the factors computed by dgetrf
+extern int C2F(dgetrs) (char* trans, int* n, int* nrhs, double* A, int *lda, int* ipiv, double* B, int* ldb, int* info);
+// zgetrs solves a linear system using the factors computed by zgetrf
+extern int C2F(zgetrs) (char* trans, int* n, int* nrhs, doublecomplex* AC, int* lda, int* ipiv, doublecomplex* B, int* ldb, int* info);
+
+// dpotrf computes the cholesky factorization of a real symmetric positive definite matrix A
+extern int C2F(dpotrf)(char* uplo, int* n, double* A, int* lda, int* info);
+
+// zpotrf computes the cholesky factorization of a real hermitian positive definite matrix A
+extern int C2F(zpotrf)(char* uplo, int* n, doublecomplex* A, int* lda, int* info);
+
+// dtrsm solves a triangular linear system
+extern int C2F(dtrsm) (char* side, char* uplo, char* trans, char* diag, int* m, int* n, double* alpha, double* A, int* lda, double* B, int* ldb);
+// ztrsm solve a triangular linear system
+extern int C2F(ztrsm) (char* side, char* uplo, char* trans, char* diag, int* m, int* n, doublecomplex* alpha, doublecomplex* A, int* lda, doublecomplex* B, int* ldb);
+// dsyrk does a rank k symmetric update
+extern int C2F(dsyrk) (char* uplo, char* trans, int* n, int* k, double* alpha,
+ double* A, int* lda, double* beta, double* B, int* ldb);
+// ztrmm multiply by a triangular matrix
+extern int C2F(ztrmm) (char* side, char* uplo, char* trans, char* diag, int* m, int* n, doublecomplex* alphac,
+ doublecomplex* A, int* lda, doublecomplex* B, int* ldb);
+// ztrmv multiply a vector by a triangular matrix
+extern int C2F(ztrmv) (char* uplo, char* trans, char* diag, int* n, doublecomplex* A, int* lda, doublecomplex* x, int* incx);
+// dtrmv multiply a vector by a triangular matrix
+extern int C2F(dtrmv) (char* uplo, char* trans, char* diag, int* n, double* A, int* lda, double* x, int* incx);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(dsaupd)(int *ido, char *bmat, int *n, char *which, int *nev,
+ double *tol, double *resid, int *ncv, double *v,
+ int *ldv, int *iparam, int *ipntr, double *workd,
+ double *workl, int *lworkl, int *info);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(dseupd)(int *rvec, char *howmny, int *select, double *d,
+ double *z, int *ldz, double *sigma, char *bmat,
+ int *n, char *which, int *nev , double *tol,
+ double *resid, int *ncv, double *v , int *ldv,
+ int *iparam, int *ipntr, double *workd, double *workl,
+ int *lworkl, int *info);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(dnaupd)(int *ido, char *bmat, int *n, char *which, int *nev,
+ double *tol, double *resid, int *ncv, double *v,
+ int *ldv, int *iparam, int *ipntr, double *workd,
+ double *workl, int *lworkl, int *info);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(dneupd)(int *rvec, char *howmny, int *select, double *dr,
+ double *di, double *z, int *ldz, double *sigmar,
+ double *sigmai, double *workev, char *bmat, int *n,
+ char *which, int *nev, double *tol, double *resid,
+ int *ncv, double *v, int *ldv, int *iparam, int *ipntr,
+ double *workd, double *workl, int *lworkl, int *info);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(znaupd)(int * ido, char * bmat, int * n, char * which,
+ int * nev, double * tol, doublecomplex * resid,
+ int * ncv, doublecomplex * v, int * ldv, int * iparam,
+ int * ipntr, doublecomplex * workd,
+ doublecomplex * workl, int * lworkl, double * rwork,
+ int * info);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(zneupd)(int * rvec, char * howmny, int * select,
+ doublecomplex * d, doublecomplex * z, int * ldz,
+ doublecomplex * sigma, doublecomplex * workev,
+ char * bmat, int * n, char * which, int * nev,
+ double * tol, doublecomplex * resid, int * ncv,
+ doublecomplex * v, int * ldv, int * iparam, int * ipntr,
+ doublecomplex * workd, doublecomplex * workl,
+ int * lworkl, double * rwork, int * info);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(dsymv)(char* UPLO, int* N, double* ALPHA, double* A, int* LDA, double* X, int* INCX, double* BETA, double* Y, int* INCY);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(daxpy)(int* N, double* DA, double* DX, int* INCX, double* DY, int* INCY);
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+extern int C2F(zaxpy)(int* N, doublecomplex* ZA, doublecomplex* ZX, int* INCX, doublecomplex* ZY, int* INCY);
+/*--------------------------------------------------------------------------*/
+
+static double alpha = 1.;
+static double beta = 0.;
+
+static doublecomplex alphac = {1., 0.};
+static doublecomplex betac = {0., 0.};
+
+int eigs(double *AR, doublecomplex *AC, int N, int Acomplex, int Asym,
+ double* B, doublecomplex* BC, int Bcomplex, int matB, int nev,
+ doublecomplex SIGMA, char* which, double* maxiter, double* tol,
+ double* NCV, double* RESID, doublecomplex* RESIDC, int* INFO,
+ double* cholB, int INFO_EUPD, double* eigenvalue,
+ double* eigenvector, doublecomplex* eigenvalueC,
+ doublecomplex* eigenvectorC, int RVEC)
+
+{
+
+ // GENERAL VARIABLES
+ int i = 0;
+ int j = 0;
+ int k = 0;
+ int l = 0;
+ int INFO_CHOL = 0;
+ int INFO_LU = 0;
+ int INFO_INV = 0;
+ int iOne = 1;
+
+ // VARIABLES DSAUPD, DNAUPD, ZNAUPD
+ int LWORKL = 0;
+ int IDO = 0;
+ int LDV = Max(1, N);
+ int ncv = 0;
+
+ int IPARAM[11];
+ int IPNTR[14];
+
+ double* V = NULL;
+ doublecomplex* VC = NULL;
+
+ double* WORKD = NULL;
+ doublecomplex* WORKDC = NULL;
+
+ double* WORKL = NULL;
+ doublecomplex* WORKLC = NULL;
+
+ double* RWORK = NULL;
+
+ char* bmat = "I";
+
+ // VARIABLES DSEUPD, DNEUPD, ZNEUPD
+ char* HOWMNY = "A";
+
+ int* SELECT = NULL;
+
+ double* DI = NULL;
+ double* DR = NULL;
+ double* Z = NULL;
+
+ double* WORKEV = NULL;
+ doublecomplex* WORKEVC = NULL;
+
+ doublecomplex mSIGMA = { -SIGMA.r, -SIGMA.i };
+
+ double* R = NULL;
+ doublecomplex* RC = NULL;
+
+ double* AMSB = NULL;
+ doublecomplex* AMSBC = NULL;
+
+ int* IPVT = NULL;
+
+ double* temp = NULL;
+ doublecomplex* tempC = NULL;
+
+ int oldnev = nev;
+ int N2 = N * N;
+
+ IPARAM[0] = 1;
+ IPARAM[2] = (int) maxiter[0];
+ IPARAM[6] = 1; // by default mode = 1
+
+ // END VARIABLES
+
+ // MODE
+ if (!strcmp(which, "SM") || (SIGMA.r != 0 || SIGMA.i != 0))
+ {
+ IPARAM[6] = 3;
+ which = "LM";
+ }
+
+ // BMAT
+ if ((matB == 0) || (IPARAM[6] == 1)) // if B = [] or mode = 1 -> bmat = 'I' : standard eigenvalue problem
+ {
+ bmat = "I";
+ }
+ else // generalized eigenvalue problem
+ {
+ bmat = "G";
+ }
+
+ // NCV
+ if (NCV == NULL)
+ {
+ if (Asym == 0 && !Acomplex && !Bcomplex) // if dnaupd ncv = 2*nev+1
+ {
+ ncv = Max(2 * nev + 1, 20);
+ }
+ else // if dsaupd or znaupd ncv = 2*nev
+ {
+ ncv = Max(2 * nev, 20);
+ }
+ if (ncv > N)
+ {
+ ncv = N;
+ }
+ }
+ else
+ {
+ ncv = (int) NCV[0];
+ if (ncv <= nev || ncv > N) // Error
+ {
+ return -1;
+ }
+ }
+
+ // NEV
+ if ((!Acomplex && !Bcomplex && Asym == 1 && nev >= N) || ((Acomplex || Bcomplex || !Asym) && nev >= N - 1))
+ {
+ return -2;
+ }
+
+ if (matB != 0)
+ {
+ if (cholB[0]) // we already have the cholesky decomposition
+ {
+ R = B;
+ RC = BC;
+ }
+ else
+ {
+ if (IPARAM[6] == 1)
+ {
+ if (!Bcomplex) // B is real
+ {
+ R = (double *)malloc(N * N * sizeof(double));
+ memcpy(R, B, N * N * sizeof(double));
+ C2F(dpotrf) ("u", &N, R, &N, &INFO_CHOL); // Compute the upper triangular matrix R
+ if (INFO_CHOL != 0) // Errors
+ {
+ free(R);
+ return -3;
+ }
+ }
+ else // B is complex
+ {
+ RC = (doublecomplex *) malloc(N * N * sizeof(doublecomplex));
+ memcpy(RC, BC, N * N * sizeof(doublecomplex));
+ C2F(zpotrf) ("u", &N, RC, &N, &INFO_CHOL); // Computes the upper triangular matrix
+ if (INFO_CHOL != 0)
+ {
+ free(RC);
+ return -3;
+ }
+ }
+ }
+ }
+ }
+
+ // MAIN
+ if (!Acomplex && !Bcomplex) // A and B are not complex
+ {
+ if (IPARAM[6] == 3) // if mode = 3
+ {
+ AMSB = (double*)malloc(N * N * sizeof(double));
+ memcpy(AMSB, AR, N * N * sizeof(double));
+ if (SIGMA.r != 0)
+ {
+ // Compute LU decomposition AMSB = A - sigma*B
+ if (matB == 0) // if B = [] -> standard eigenvalue problem : A - sigma *I
+ {
+ for (i = 0 ; i < N ; i++)
+ {
+ AMSB[i + i * N] -= SIGMA.r;
+ }
+ }
+ else // generalized eigenvalue problem
+ {
+ if (cholB[0])
+ {
+ C2F(dsyrk) ("u", "t", &N, &N, &mSIGMA.r, R, &N, &alpha, AMSB, &N);
+ if (!Asym) //dsyrk does a symmetric update so we need to correct for the antisymmetric part
+ {
+ for (i = 0; i < N; i++)
+ {
+ for (j = 0; j < i; j++)
+ {
+ AMSB[i + j * N] = AMSB[j + i * N] + AR[i + j * N] - AR[j + i * N];
+ }
+ }
+ }
+ }
+ else
+ {
+ C2F(daxpy)(&N2, &mSIGMA.r, B, &iOne, AMSB, &iOne);
+ }
+ }
+ }
+
+ // LU decomposition
+ IPVT = (int*) calloc(N, sizeof(int));
+ C2F(dgetrf)(&N, &N, AMSB, &N, IPVT, &INFO_LU);
+ if (INFO_LU > 0)
+ {
+ free(IPVT);
+ free(AMSB);
+ return -7;
+ }
+ }
+
+ if (Asym) // DSAUPD
+ {
+ LWORKL = ncv * ncv + 8 * ncv;
+ WORKL = (double*) calloc(LWORKL, sizeof(double));
+
+ }
+ else // DNAUPD
+ {
+ LWORKL = 3 * ncv * (ncv + 2);
+ WORKL = (double*) calloc(LWORKL, sizeof(double));
+
+ }
+
+ WORKD = (double*) calloc(3 * N, sizeof(double));
+ V = (double*) calloc(N * ncv, sizeof(double));
+
+ if (IPARAM[6] == 1 && matB)
+ {
+ temp = (double*) malloc(N * sizeof(double));
+ }
+
+ while (IDO != 99)
+ {
+ if (Asym) // DSAUPD
+ {
+ C2F(dsaupd)(&IDO, bmat, &N, which, &nev, tol, RESID, &ncv, V, &LDV, IPARAM, IPNTR, WORKD, WORKL, &LWORKL, &INFO[0]);
+ }
+ else // DNAUPD
+ {
+ C2F(dnaupd)(&IDO, bmat, &N, which, &nev, tol, RESID, &ncv, V, &LDV, IPARAM, IPNTR, WORKD, WORKL, &LWORKL, &INFO[0]);
+ }
+
+ if (INFO[0] == -1) //non critical error
+ {
+ sciprint("%s: WARNING: Maximum number of iterations reached. Only %d eigenvalues converged.\n", "eigs", IPARAM[4]);
+ break;
+ }
+ else
+ {
+ if (INFO[0] < 0)
+ {
+ if (R != B)
+ {
+ free(R);
+ }
+ free(IPVT);
+ free(AMSB);
+ free(WORKD);
+ free(WORKL);
+ free(V);
+ free(temp);
+
+ return -4;
+ }
+ }
+
+ if (IDO == -1 || IDO == 1 || IDO == 2)
+ {
+ if (IPARAM[6] == 1) // mode = 1
+ {
+ if (IDO == 2)
+ {
+ memcpy(WORKD + IPNTR[1] - 1, WORKD + IPNTR[0] - 1, N * sizeof(double));
+ }
+ else //IDO=1 or IDO=-1
+ {
+ if (matB == 0) // B = [] -> standard eigenvalue problem
+ {
+ // OP = A*x
+ if (Asym)
+ {
+ C2F(dsymv) ("u", &N, &alpha, AR, &N, WORKD + IPNTR[0] - 1, &iOne, &beta, WORKD + IPNTR[1] - 1, &iOne);
+ }
+ else
+ {
+ C2F(dgemv) ("n", &N, &N, &alpha, AR, &N, WORKD + IPNTR[0] - 1, &iOne, &beta, WORKD + IPNTR[1] - 1, &iOne);
+ }
+ }
+ else // generalized eigenvalue problem
+ {
+ // OP = inv(Rprime)*A*inv(R)*x
+ memcpy(WORKD + IPNTR[1] - 1, WORKD + IPNTR[0] - 1, N * sizeof(double));
+ C2F(dtrsm) ("l", "u", "n", "n", &N, &iOne, &alpha, R, &N, WORKD + IPNTR[1] - 1, &N);
+ memcpy(temp, WORKD + IPNTR[1] - 1, N * sizeof(double));
+ if (Asym)
+ {
+ C2F(dsymv) ("u", &N, &alpha, AR, &N, temp, &iOne, &beta, WORKD + IPNTR[1] - 1, &iOne);
+ }
+ else
+ {
+ C2F(dgemv) ("n", &N, &N, &alpha, AR, &N, temp, &iOne, &beta, WORKD + IPNTR[1] - 1, &iOne);
+ }
+ C2F(dtrsm) ("l", "u", "t", "n", &N, &iOne, &alpha, R, &N, WORKD + IPNTR[1] - 1, &N);
+ }
+ }
+ }
+ else
+ {
+ if (IPARAM[6] == 3) // mode = 3
+ {
+ if (matB == 0) // B = [] -> standard eigenvalue problem
+ {
+ if (IDO == 2)
+ {
+ // y = B*x where B = I so workd[ipntr[1]-1:ipntr[1]+N-1] = workd[ipntr[0]-1:ipntr[0]+N-1]
+ memcpy(WORKD + IPNTR[1] - 1, WORKD + IPNTR[0] - 1, N * sizeof(double));
+ }
+ else
+ {
+ // workd[ipntr[1]-1:ipntr[1]+N-1] = inv(U)*inv(L)*inv(P)*workd[ipntr[0]-1:ipntr[0]+N-1]
+ memcpy(WORKD + IPNTR[1] - 1, WORKD + IPNTR[0] - 1, N * sizeof(double));
+ C2F(dgetrs) ("n", &N, &iOne, AMSB, &N, IPVT, WORKD + IPNTR[1] - 1, &N, &INFO_INV);
+ }
+ }
+ else // matB == 1 so B is not empty and bmat = 'G'-> generalized eigenvalue problem
+ {
+ if (IDO == 2 || IDO == -1)
+ {
+ if (cholB[0]) // workd[ipntr[1]-1:ipntr[1]+N-1] = Rprime * R * workd[ipntr[0]-1:ipntr[0]+N-1]
+ {
+ memcpy(WORKD + IPNTR[1] - 1, WORKD + IPNTR[0] - 1, N * sizeof(double));
+ C2F(dtrmv) ("u", "n", "n", &N, B, &N, WORKD + IPNTR[1] - 1, &iOne);
+ C2F(dtrmv) ("u", "t", "n", &N, B, &N, WORKD + IPNTR[1] - 1, &iOne);
+ }
+ else // workd[ipntr[1]-1:ipntr[1]+N-1] = B * workd[ipntr[0]-1:ipntr[0]+N-1]
+ {
+ C2F(dgemv) ("n", &N, &N, &alpha, B, &N, WORKD + IPNTR[0] - 1, &iOne, &beta, WORKD + IPNTR[1] - 1, &iOne);
+ }
+ }
+
+ if (IDO == -1)
+ {
+ // compute workd[ipntr[1]-1:ipntr[1]+N-1] = inv(U)*inv(L)*inv(P)*workd[ipntr[1]-1:ipntr[1]+N-1]
+ C2F(dgetrs) ("n", &N, &iOne, AMSB, &N, IPVT, WORKD + IPNTR[1] - 1, &N, &INFO_INV);
+ }
+ else
+ {
+ if (IDO == 1)
+ {
+ // computes workd[ipntr[1]-1:ipntr[1]+N-1] = inv(U)*inv(L)*inv(P)*workd[ipntr[2]-1:ipntr[2]+N-1]
+ memcpy(WORKD + IPNTR[1] - 1, WORKD + IPNTR[2] - 1, N * sizeof(double));
+ C2F(dgetrs) ("n", &N, &iOne, AMSB, &N, IPVT, WORKD + IPNTR[1] - 1, &N, &INFO_INV);
+ }
+ }
+ }
+ }
+ else
+ {
+ if (R != B)
+ {
+ free(R);
+ }
+ free(AMSB);
+ free(IPVT);
+ free(WORKD);
+ free(WORKL);
+ free(V);
+ free(temp);
+
+ return -5;
+ }
+ }
+ }
+ } // END WHILE
+ free(AMSB);
+ free(IPVT);
+ free(temp);
+ SELECT = (int *)calloc(ncv, sizeof(int));
+
+ if (Asym) // DSEUPD
+ {
+ C2F(dseupd) (&RVEC, HOWMNY, SELECT, eigenvalue, eigenvector, &LDV,
+ &SIGMA.r, bmat, &N, which, &nev, tol, RESID, &ncv, V,
+ &LDV, IPARAM, IPNTR, WORKD, WORKL, &LWORKL, &INFO_EUPD);
+
+ if (INFO_EUPD != 0)
+ {
+ if (R != B)
+ {
+ free(R);
+ }
+ free(WORKD);
+ free(WORKL);
+ free(V);
+ free(SELECT);
+ return -6;
+ }
+ else
+ {
+ if (RVEC)
+ {
+ if (matB && IPARAM[6] == 1)
+ {
+ // we need to revert back to the original problem
+ // since we really solved for (y,\lambda) in R^{-T}Ay=\lambda y
+ //with y = Rx, so that x = R^{-1}y
+ C2F(dtrsm) ("l", "u", "n", "n", &N, &nev, &alpha, R, &N, eigenvector, &N);
+ }
+ }
+ }
+ }
+ else // DNEUPD
+ {
+ DR = (double *)calloc((nev + 1), sizeof(double));
+ DI = (double *)calloc((nev + 1), sizeof(double));
+ WORKEV = (double *)calloc(3 * ncv, sizeof(double));
+
+ RVEC = RVEC || (IPARAM[6] == 3 && SIGMA.i != 0);
+
+ if (RVEC)
+ {
+ Z = (double *)calloc(N * (nev + 1), sizeof(double));
+ }
+
+ C2F(dneupd) (&RVEC, HOWMNY, SELECT, DR, DI, Z, &LDV, &SIGMA.r,
+ &SIGMA.i, WORKEV, bmat, &N, which, &nev, tol, RESID,
+ &ncv, V, &LDV, IPARAM, IPNTR, WORKD, WORKL, &LWORKL, &INFO_EUPD);
+
+ if (INFO_EUPD != 0)
+ {
+ if (R != B)
+ {
+ free(R);
+ }
+ free(WORKD);
+ free(WORKL);
+ free(V);
+ free(DR);
+ free(DI);
+ free(Z);
+ free(WORKEV);
+ free(SELECT);
+ return -6;
+ }
+ else
+ {
+ if (Z && matB && IPARAM[6] == 1)
+ {
+ // we need to revert back to the original problem
+ // since we really solved for (y,\lambda) in R^{-T}Ay=\lambda y
+ //with y = Rx, so that x = R^{-1}y
+ C2F(dtrsm) ("l", "u", "n", "n", &N, &nev, &alpha, R, &N, Z, &N);
+ }
+ //we use oldnev, because dneupd increases nev by one sometimes.
+ process_dneupd_data(DR, DI, Z, N, oldnev, AR, eigenvalueC,
+ eigenvectorC, (IPARAM[6] == 3) && (SIGMA.i != 0));
+
+ free(DR);
+ free(DI);
+ free(Z);
+ free(WORKEV);
+ }
+ }
+
+ free(V);
+ free(WORKD);
+ free(WORKL);
+ free(SELECT);
+ if (R != B)
+ {
+ free(R);
+ }
+ }
+ else // A or/and B complex
+ {
+ if (IPARAM[6] == 3) // mode = 3
+ {
+ AMSBC = (doublecomplex*)malloc(N * N * sizeof(doublecomplex));
+
+ if (SIGMA.r != 0 || SIGMA.i != 0)
+ {
+ if (matB == 0) // standard eigenvalue problem
+ {
+ memcpy(AMSBC, AC, N * N * sizeof(doublecomplex));
+ for (i = 0 ; i < N ; i++)
+ {
+ AMSBC[i + i * N].r -= SIGMA.r;
+ AMSBC[i + i * N].i -= SIGMA.i;
+ }
+ }
+ else // generalized eigenvalue problem
+ {
+ if (cholB[0])
+ {
+ memcpy(AMSBC, BC, N * N * sizeof(doublecomplex));
+ C2F(ztrmm)("l", "u", "c", "n", &N, &N, &mSIGMA, BC, &N, AMSBC, &N);
+ C2F(zaxpy)(&N2, &alphac, AC, &iOne, AMSBC, &iOne);
+ }
+ else
+ {
+ memcpy(AMSBC, AC, N * N * sizeof(doublecomplex));
+ C2F(zaxpy) (&N2, &mSIGMA, BC, &iOne, AMSBC, &iOne);
+ }
+ }
+ }
+ else
+ {
+ memcpy(AMSBC, AC, N * N * sizeof(doublecomplex));
+ }
+
+ // LU decomposition
+ IPVT = (int*) calloc(N, sizeof(int));
+ C2F(zgetrf) (&N, &N, AMSBC, &N, IPVT, &INFO_LU);
+ if (INFO_LU > 0)
+ {
+ free(IPVT);
+ free(AMSBC);
+ return(-7);
+ }
+ }
+ LWORKL = 3 * ncv * ncv + 5 * ncv;
+
+ VC = (doublecomplex*) calloc(N * ncv, sizeof(doublecomplex));
+ WORKLC = (doublecomplex*) calloc(LWORKL, sizeof(doublecomplex));
+ WORKDC = (doublecomplex*) calloc(3 * N, sizeof(doublecomplex));
+ RWORK = (double*) calloc(ncv, sizeof(double));
+ if (IPARAM[6] == 1 && matB)
+ {
+ tempC = (doublecomplex*) malloc(N * sizeof(doublecomplex));
+ }
+
+ while (IDO != 99)
+ {
+ C2F(znaupd)(&IDO, bmat, &N, which, &nev, tol, RESIDC, &ncv, VC, &LDV, IPARAM, IPNTR, WORKDC, WORKLC, &LWORKL, RWORK, &INFO[0]);
+
+ if (INFO[0] == -1) //non critical error
+ {
+ sciprint("%s: WARNING: Maximum number of iterations reached. Only %d eigenvalues converged.\n", "eigs", IPARAM[4]);
+ break;
+ }
+ else
+ {
+ if (INFO[0] < 0)
+ {
+ if (RC != BC)
+ {
+ free(RC);
+ }
+ free(WORKDC);
+ free(WORKLC);
+ free(VC);
+ free(RWORK);
+ return -4;
+ }
+ }
+
+ if (IDO == -1 || IDO == 1 || IDO == 2)
+ {
+ if (IPARAM[6] == 1) // mode = 1
+ {
+ if (IDO == 2)
+ {
+ memcpy(WORKDC + IPNTR[1] - 1, WORKDC + IPNTR[0] - 1, N * sizeof(doublecomplex));
+ }
+ else
+ {
+ if (matB == 0) // B = I
+ {
+ // OP = A*x
+ C2F(zgemv) ("n", &N, &N, &alphac, AC, &N, WORKDC + IPNTR[0] - 1, &iOne, &betac, WORKDC + IPNTR[1] - 1, &iOne);
+ }
+ else
+ {
+ // OP = inv(RC')*A*inv(RC)*x
+ memcpy(WORKDC + IPNTR[1] - 1, WORKDC + IPNTR[0] - 1, N * sizeof(doublecomplex));
+ C2F(ztrsm) ("l", "u", "n", "n", &N, &iOne, &alphac, RC, &N, WORKDC + IPNTR[1] - 1, &N);
+ memcpy(tempC, WORKDC + IPNTR[1] - 1, N * sizeof(doublecomplex));
+ C2F(zgemv) ("n", &N, &N, &alphac, AC, &N, tempC, &iOne, &betac, WORKDC + IPNTR[1] - 1, &iOne);
+ C2F(ztrsm) ("l", "u", "c", "n", &N, &iOne, &alphac, RC, &N, WORKDC + IPNTR[1] - 1, &N);
+ }
+ }
+ }
+ else
+ {
+ if (IPARAM[6] == 3) // if mode = 3
+ {
+ if (matB == 0) // B = [] -> matB is empty -> standard eigenvalue problem
+ {
+ if (IDO == 2)
+ {
+ // y = B*x where B = I so workd[ipntr[1]-1:ipntr[1]+N-1] = workd[ipntr[0]-1:ipntr[0]+N-1]
+ memcpy(WORKDC + IPNTR[1] - 1, WORKDC + IPNTR[0] - 1, N * sizeof(doublecomplex));
+ }
+ else
+ {
+ // workd[ipntr[1]-1:ipntr[1]+N-1] = inv(U)*inv(L)*inv(P)*workd[ipntr[0]-1:ipntr[0]+N-1]
+ memcpy(WORKDC + IPNTR[1] - 1, WORKDC + IPNTR[0] - 1, N * sizeof(doublecomplex));
+ C2F(zgetrs) ("n", &N, &iOne, AMSBC, &N, IPVT, WORKDC + IPNTR[1] - 1, &N, &INFO_INV);
+ }
+
+ }
+ else // matB == 1 so B is not empty and bmat = 'G'-> generalized eigenvalue problem
+ {
+ if (IDO == 2 || IDO == -1)
+ {
+ if (cholB[0]) // workd[ipntr[1]-1:ipntr[1]+N-1] = RCprime * RC * workd[ipntr[0]-1:ipntr[0]+N-1]
+ {
+ memcpy(WORKDC + IPNTR[1] - 1, WORKDC + IPNTR[0] - 1, N * sizeof(doublecomplex));
+ C2F(ztrmv) ("u", "n", "n", &N, BC, &N, WORKDC + IPNTR[1] - 1, &iOne);
+ C2F(ztrmv) ("u", "c", "n", &N, BC, &N, WORKDC + IPNTR[1] - 1, &iOne);
+ }
+ else // workd[ipntr[1]-1:ipntr[1]+N-1] = B *workd[ipntr[0]-1:ipntr[0]+N-1]
+ {
+ C2F(zgemv) ("n", &N, &N, &alphac, BC, &N, WORKDC + IPNTR[0] - 1, &iOne, &betac, WORKDC + IPNTR[1] - 1, &iOne);
+ }
+ }
+ if (IDO == -1)
+ {
+ // compute workd[ipntr[1]-1:ipntr[1]+N-1] = inv(U)*inv(L)*inv(P)*workd[ipntr[1]-1:ipntr[1]+N-1]
+ C2F(zgetrs) ("n", &N, &iOne, AMSBC, &N, IPVT, WORKDC + IPNTR[1] - 1, &N, &INFO_INV);
+ }
+ else
+ {
+ if (IDO == 1)
+ {
+ /* compute workd[ipntr[1]-1:ipntr[1]+N-1] = inv(U)*inv(L)*inv(P)*workd[ipntr[2]-1:ipntr[2]+N-1] */
+ memcpy(WORKDC + IPNTR[1] - 1, WORKDC + IPNTR[2] - 1, N * sizeof(doublecomplex));
+ C2F(zgetrs) ("n", &N, &iOne, AMSBC, &N, IPVT, WORKDC + IPNTR[1] - 1, &N, &INFO_INV);
+ }
+ }
+ } //END mode3
+ }
+ else
+ {
+ if (RC != BC)
+ {
+ free(RC);
+ }
+ free(WORKDC);
+ free(WORKLC);
+ free(VC);
+ free(RWORK);
+ free(tempC);
+
+ return -5;
+ }
+ }
+ }
+ } // END WHILE
+ free(tempC);
+ free(IPVT);
+ free(AMSBC);
+
+ SELECT = (int *)calloc(ncv, sizeof(int));
+ WORKEVC = (doublecomplex *) calloc(2 * ncv, sizeof(doublecomplex));
+
+ C2F(zneupd) (&RVEC, HOWMNY, SELECT, eigenvalueC, eigenvectorC, &LDV, &SIGMA, WORKEVC, bmat, &N,
+ which, &nev, tol, RESIDC, &ncv, VC, &LDV, IPARAM, IPNTR, WORKDC,
+ WORKLC, &LWORKL, RWORK, &INFO_EUPD);
+
+ if (INFO_EUPD != 0)
+ {
+ if (RC != BC)
+ {
+ free(RC);
+ }
+ free(WORKDC);
+ free(WORKLC);
+ free(VC);
+ free(SELECT);
+ free(WORKEVC);
+ free(RWORK);
+
+ return -6;
+ }
+ else
+ {
+ if (RVEC)
+ {
+ if (matB && IPARAM[6] == 1)
+ {
+ C2F(ztrsm) ("l", "u", "n", "n", &N, &nev, &alphac, RC, &N, eigenvectorC, &N);
+ }
+ }
+ }
+
+ free(SELECT);
+ free(WORKEVC);
+
+ free(VC);
+ free(WORKDC);
+ free(WORKLC);
+ free(RWORK);
+ if (RC != BC)
+ {
+ free(RC);
+ }
+ }
+
+ return 0;
+}
diff --git a/modules/arnoldi/src/c/eigs_dependencies.c b/modules/arnoldi/src/c/eigs_dependencies.c
new file mode 100755
index 000000000..a725b8f5f
--- /dev/null
+++ b/modules/arnoldi/src/c/eigs_dependencies.c
@@ -0,0 +1,109 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - Scilab Enterprises - Adeline CARNIS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "eigs_dependencies.h"
+
+extern int C2F(dgemv) (char* trans, int* m, int* n, double* alpha, double* A,
+ int* lda, double* x, int* incx, double* beta, double* y, int* incy);
+extern double C2F(ddot) (int *n, double* x, int* incx, double* y, int* incy);
+
+void process_dneupd_data(double* DR, double* DI, double* Z, int N, int nev, double* AR,
+ doublecomplex* eigenvalue, doublecomplex* eigenvector,
+ int sigma_imaginary)
+{
+ /* if sigma_imaginary there is an extra step to compute the eigenvalues
+ as explained in the dneupd user guide */
+
+ double* temp1 = NULL;
+ double* temp2 = NULL;
+
+ int i = 0;
+ int j = 0;
+
+ double alpha = 1;
+ double beta = 0;
+ int iOne = 1;
+ double real_part;
+ double imag_part;
+
+ if ( sigma_imaginary )
+ {
+ temp1 = (double*) malloc(N * sizeof(double));
+ temp2 = (double*) malloc(N * sizeof(double));
+
+ while (i < nev)
+ {
+ if (DI[i] == 0)
+ {
+ C2F(dgemv) ("n", &N, &N, &alpha, AR, &N, Z + N * i, &iOne, &beta, temp1, &iOne);
+ eigenvalue[i].r = C2F(ddot) (&N, Z + N * i, &iOne, temp1, &iOne);
+ eigenvalue[i].i = 0;
+ i = i + 1;
+ }
+ else
+ {
+ C2F(dgemv) ("n", &N, &N, &alpha, AR, &N, Z + N * i, &iOne, &beta, temp1, &iOne);
+ C2F(dgemv) ("n", &N, &N, &alpha, AR, &N, Z + N * (i + 1), &iOne, &beta, temp2, &iOne);
+ real_part = C2F(ddot) (&N, Z + N * i, &iOne, temp1, &iOne) + \
+ C2F(ddot) (&N, Z + N * (i + 1), &iOne, temp2, &iOne);
+ imag_part = C2F(ddot) (&N, Z + N * i, &iOne, temp2, &iOne) - \
+ C2F(ddot) (&N, Z + N * (i + 1), &iOne, temp1, &iOne);
+ eigenvalue[i].r = real_part;
+ eigenvalue[i].i = imag_part;
+ eigenvalue[i + 1].r = real_part;
+ eigenvalue[i + 1].i = -imag_part;
+ i = i + 2;
+ }
+ }
+ free(temp1);
+ free(temp2);
+ }
+ else
+ {
+ for (i = 0; i < nev + 1; i++)
+ {
+ eigenvalue[i].r = DR[i];
+ eigenvalue[i].i = DI[i];
+ }
+ }
+
+ if (eigenvector)
+ {
+ i = 0;
+
+ while (i < nev)
+ {
+ if (DI[i] != 0)
+ {
+ for (j = 0; j < N; j++)
+ {
+ eigenvector[i * N + j].r = Z[i * N + j];
+ eigenvector[i * N + j].i = Z[(i + 1) * N + j];
+ eigenvector[(i + 1) * N + j].r = Z[i * N + j];
+ eigenvector[(i + 1) * N + j].i = -Z[(i + 1) * N + j];
+ }
+
+ i = i + 2;
+ }
+ else
+ {
+ for (j = 0; j < N; j++)
+ {
+ eigenvector[i * N + j].r = Z[i * N + j];
+ eigenvector[i * N + j].i = 0;
+ }
+
+ i = i + 1;
+ }
+ }
+ }
+}
diff --git a/modules/arnoldi/src/c/libsciarnoldi_la-eigs.lo b/modules/arnoldi/src/c/libsciarnoldi_la-eigs.lo
new file mode 100755
index 000000000..ef269c5ba
--- /dev/null
+++ b/modules/arnoldi/src/c/libsciarnoldi_la-eigs.lo
@@ -0,0 +1,12 @@
+# src/c/libsciarnoldi_la-eigs.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libsciarnoldi_la-eigs.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/arnoldi/src/c/libsciarnoldi_la-eigs_dependencies.lo b/modules/arnoldi/src/c/libsciarnoldi_la-eigs_dependencies.lo
new file mode 100755
index 000000000..27a44baa5
--- /dev/null
+++ b/modules/arnoldi/src/c/libsciarnoldi_la-eigs_dependencies.lo
@@ -0,0 +1,12 @@
+# src/c/libsciarnoldi_la-eigs_dependencies.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libsciarnoldi_la-eigs_dependencies.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+