summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortorset2009-02-16 15:32:57 +0000
committertorset2009-02-16 15:32:57 +0000
commit739d517eb539f48f60a629fbce38b8cec6727542 (patch)
tree90c2a1e848f4f97d15ff42b02ffc76d72d19e87d
parenta2330cb1c117d440f91b801cfcb2831b2348828f (diff)
downloadscilab2c-739d517eb539f48f60a629fbce38b8cec6727542.tar.gz
scilab2c-739d517eb539f48f60a629fbce38b8cec6727542.tar.bz2
scilab2c-739d517eb539f48f60a629fbce38b8cec6727542.zip
Update Matrix Pow
-rw-r--r--scilab2c/src/matrixOperations/powm/Makefile.am35
-rw-r--r--scilab2c/src/matrixOperations/powm/Makefile.in64
-rw-r--r--scilab2c/src/matrixOperations/powm/cpowma.c25
-rwxr-xr-xscilab2c/src/matrixOperations/powm/testDoubleMatrixPow4
-rw-r--r--scilab2c/src/matrixOperations/powm/testDoublePowm.c30
-rw-r--r--scilab2c/src/matrixOperations/powm/zpowma.c22
6 files changed, 144 insertions, 36 deletions
diff --git a/scilab2c/src/matrixOperations/powm/Makefile.am b/scilab2c/src/matrixOperations/powm/Makefile.am
index f3a82b6a..0eec598f 100644
--- a/scilab2c/src/matrixOperations/powm/Makefile.am
+++ b/scilab2c/src/matrixOperations/powm/Makefile.am
@@ -13,6 +13,8 @@
libMatrixPow_la_CFLAGS = -I $(top_builddir)/type \
-I $(top_builddir)/includes \
-I $(top_builddir)/operations/includes\
+ -I $(top_builddir)/auxiliaryFunctions/includes\
+ -I $(top_builddir)/elementaryFunctions/includes\
-I $(top_builddir)/matrixOperations/includes
@@ -23,24 +25,51 @@ pkglib_LTLIBRARIES = libMatrixPow.la
HEAD = ../includes/matrixPow.h
libMatrixPow_la_SOURCES = $(HEAD) \
+ spowma.c\
dpowma.c\
- spowma.c
+ cpowma.c\
+ zpowma.c
check_PROGRAMS = testDoubleMatrixPow
check_LDADD = $(top_builddir)/type/libDoubleComplex.la \
$(top_builddir)/type/libFloatComplex.la \
$(top_builddir)/lib/lapack/libscilapack.la \
- $(top_builddir)/matrixOperations/eye/libMatrixEye.la \
+ $(top_builddir)/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/auxiliaryFunctions/frexp/libFrexp.la \
+ $(top_builddir)/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/elementaryFunctions/lnp1m1/libLnp1m1.la\
+ $(top_builddir)/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/matrixOperations/inversion/libMatrixInversion.la \
$(top_builddir)/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/matrixOperations/cat/libMatrixConcatenation.la \
+ $(top_builddir)/matrixOperations/expm/libMatrixExponential.la \
+ $(top_builddir)/matrixOperations/logm/libLogm.la \
+ $(top_builddir)/matrixOperations/infiniteNorm/libMatrixInfiniteNorm.la \
+ $(top_builddir)/matrixOperations/eye/libMatrixEye.la \
$(top_builddir)/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/matrixOperations/division/libMatrixDivision.la \
$(top_builddir)/operations/addition/libAddition.la \
+ $(top_builddir)/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/operations/division/libDivision.la \
$(top_builddir)/lib/blas/libsciblas.la \
- $(top_builddir)/operations/multiplication/libMultiplication.la \
libMatrixPow.la
check_INCLUDES = -I $(top_builddir)/type \
-I $(top_builddir)/includes \
+ -I $(top_builddir)/auxiliaryFunctions/includes\
+ -I $(top_builddir)/elementaryFunctions/includes\
-I $(top_builddir)/operations/includes\
-I $(top_builddir)/matrixOperations/includes
diff --git a/scilab2c/src/matrixOperations/powm/Makefile.in b/scilab2c/src/matrixOperations/powm/Makefile.in
index 9f4da1fa..32b7f77b 100644
--- a/scilab2c/src/matrixOperations/powm/Makefile.in
+++ b/scilab2c/src/matrixOperations/powm/Makefile.in
@@ -55,7 +55,8 @@ LTLIBRARIES = $(pkglib_LTLIBRARIES)
libMatrixPow_la_LIBADD =
am__objects_1 =
am_libMatrixPow_la_OBJECTS = $(am__objects_1) \
- libMatrixPow_la-dpowma.lo libMatrixPow_la-spowma.lo
+ libMatrixPow_la-spowma.lo libMatrixPow_la-dpowma.lo \
+ libMatrixPow_la-cpowma.lo libMatrixPow_la-zpowma.lo
libMatrixPow_la_OBJECTS = $(am_libMatrixPow_la_OBJECTS)
libMatrixPow_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(libMatrixPow_la_CFLAGS) \
@@ -199,28 +200,57 @@ top_srcdir = @top_srcdir@
libMatrixPow_la_CFLAGS = -I $(top_builddir)/type \
-I $(top_builddir)/includes \
-I $(top_builddir)/operations/includes\
+ -I $(top_builddir)/auxiliaryFunctions/includes\
+ -I $(top_builddir)/elementaryFunctions/includes\
-I $(top_builddir)/matrixOperations/includes
instdir = $(top_builddir)/lib
pkglib_LTLIBRARIES = libMatrixPow.la
HEAD = ../includes/matrixPow.h
libMatrixPow_la_SOURCES = $(HEAD) \
+ spowma.c\
dpowma.c\
- spowma.c
+ cpowma.c\
+ zpowma.c
check_LDADD = $(top_builddir)/type/libDoubleComplex.la \
$(top_builddir)/type/libFloatComplex.la \
$(top_builddir)/lib/lapack/libscilapack.la \
- $(top_builddir)/matrixOperations/eye/libMatrixEye.la \
+ $(top_builddir)/auxiliaryFunctions/abs/libAbs.la \
+ $(top_builddir)/auxiliaryFunctions/sign/libSign.la \
+ $(top_builddir)/auxiliaryFunctions/pythag/libPythag.la \
+ $(top_builddir)/auxiliaryFunctions/frexp/libFrexp.la \
+ $(top_builddir)/auxiliaryFunctions/conj/libConj.la \
+ $(top_builddir)/elementaryFunctions/sqrt/libSqrt.la \
+ $(top_builddir)/elementaryFunctions/exp/libExp.la \
+ $(top_builddir)/elementaryFunctions/cos/libCos.la \
+ $(top_builddir)/elementaryFunctions/pow/libPow.la \
+ $(top_builddir)/elementaryFunctions/log/libLog.la \
+ $(top_builddir)/elementaryFunctions/log1p/libLog1p.la \
+ $(top_builddir)/elementaryFunctions/lnp1m1/libLnp1m1.la\
+ $(top_builddir)/elementaryFunctions/cosh/libCosh.la \
+ $(top_builddir)/elementaryFunctions/sin/libSin.la \
+ $(top_builddir)/elementaryFunctions/sinh/libSinh.la \
+ $(top_builddir)/matrixOperations/inversion/libMatrixInversion.la \
$(top_builddir)/matrixOperations/transpose/libMatrixTranspose.la \
+ $(top_builddir)/matrixOperations/cat/libMatrixConcatenation.la \
+ $(top_builddir)/matrixOperations/expm/libMatrixExponential.la \
+ $(top_builddir)/matrixOperations/logm/libLogm.la \
+ $(top_builddir)/matrixOperations/infiniteNorm/libMatrixInfiniteNorm.la \
+ $(top_builddir)/matrixOperations/eye/libMatrixEye.la \
$(top_builddir)/matrixOperations/multiplication/libMatrixMultiplication.la \
+ $(top_builddir)/matrixOperations/division/libMatrixDivision.la \
$(top_builddir)/operations/addition/libAddition.la \
- $(top_builddir)/lib/blas/libsciblas.la \
$(top_builddir)/operations/multiplication/libMultiplication.la \
+ $(top_builddir)/operations/subtraction/libSubtraction.la \
+ $(top_builddir)/operations/division/libDivision.la \
+ $(top_builddir)/lib/blas/libsciblas.la \
libMatrixPow.la
check_INCLUDES = -I $(top_builddir)/type \
-I $(top_builddir)/includes \
+ -I $(top_builddir)/auxiliaryFunctions/includes\
+ -I $(top_builddir)/elementaryFunctions/includes\
-I $(top_builddir)/operations/includes\
-I $(top_builddir)/matrixOperations/includes
@@ -306,8 +336,10 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixPow_la-cpowma.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixPow_la-dpowma.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixPow_la-spowma.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libMatrixPow_la-zpowma.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleMatrixPow-testDoublePowm.Po@am__quote@
.c.o:
@@ -331,6 +363,13 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+libMatrixPow_la-spowma.lo: spowma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -MT libMatrixPow_la-spowma.lo -MD -MP -MF $(DEPDIR)/libMatrixPow_la-spowma.Tpo -c -o libMatrixPow_la-spowma.lo `test -f 'spowma.c' || echo '$(srcdir)/'`spowma.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libMatrixPow_la-spowma.Tpo $(DEPDIR)/libMatrixPow_la-spowma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='spowma.c' object='libMatrixPow_la-spowma.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -c -o libMatrixPow_la-spowma.lo `test -f 'spowma.c' || echo '$(srcdir)/'`spowma.c
+
libMatrixPow_la-dpowma.lo: dpowma.c
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -MT libMatrixPow_la-dpowma.lo -MD -MP -MF $(DEPDIR)/libMatrixPow_la-dpowma.Tpo -c -o libMatrixPow_la-dpowma.lo `test -f 'dpowma.c' || echo '$(srcdir)/'`dpowma.c
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libMatrixPow_la-dpowma.Tpo $(DEPDIR)/libMatrixPow_la-dpowma.Plo
@@ -338,12 +377,19 @@ libMatrixPow_la-dpowma.lo: dpowma.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -c -o libMatrixPow_la-dpowma.lo `test -f 'dpowma.c' || echo '$(srcdir)/'`dpowma.c
-libMatrixPow_la-spowma.lo: spowma.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -MT libMatrixPow_la-spowma.lo -MD -MP -MF $(DEPDIR)/libMatrixPow_la-spowma.Tpo -c -o libMatrixPow_la-spowma.lo `test -f 'spowma.c' || echo '$(srcdir)/'`spowma.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libMatrixPow_la-spowma.Tpo $(DEPDIR)/libMatrixPow_la-spowma.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='spowma.c' object='libMatrixPow_la-spowma.lo' libtool=yes @AMDEPBACKSLASH@
+libMatrixPow_la-cpowma.lo: cpowma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -MT libMatrixPow_la-cpowma.lo -MD -MP -MF $(DEPDIR)/libMatrixPow_la-cpowma.Tpo -c -o libMatrixPow_la-cpowma.lo `test -f 'cpowma.c' || echo '$(srcdir)/'`cpowma.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libMatrixPow_la-cpowma.Tpo $(DEPDIR)/libMatrixPow_la-cpowma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cpowma.c' object='libMatrixPow_la-cpowma.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -c -o libMatrixPow_la-spowma.lo `test -f 'spowma.c' || echo '$(srcdir)/'`spowma.c
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -c -o libMatrixPow_la-cpowma.lo `test -f 'cpowma.c' || echo '$(srcdir)/'`cpowma.c
+
+libMatrixPow_la-zpowma.lo: zpowma.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -MT libMatrixPow_la-zpowma.lo -MD -MP -MF $(DEPDIR)/libMatrixPow_la-zpowma.Tpo -c -o libMatrixPow_la-zpowma.lo `test -f 'zpowma.c' || echo '$(srcdir)/'`zpowma.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libMatrixPow_la-zpowma.Tpo $(DEPDIR)/libMatrixPow_la-zpowma.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='zpowma.c' object='libMatrixPow_la-zpowma.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libMatrixPow_la_CFLAGS) $(CFLAGS) -c -o libMatrixPow_la-zpowma.lo `test -f 'zpowma.c' || echo '$(srcdir)/'`zpowma.c
testDoubleMatrixPow-testDoublePowm.o: testDoublePowm.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleMatrixPow_CFLAGS) $(CFLAGS) -MT testDoubleMatrixPow-testDoublePowm.o -MD -MP -MF $(DEPDIR)/testDoubleMatrixPow-testDoublePowm.Tpo -c -o testDoubleMatrixPow-testDoublePowm.o `test -f 'testDoublePowm.c' || echo '$(srcdir)/'`testDoublePowm.c
diff --git a/scilab2c/src/matrixOperations/powm/cpowma.c b/scilab2c/src/matrixOperations/powm/cpowma.c
new file mode 100644
index 00000000..51095302
--- /dev/null
+++ b/scilab2c/src/matrixOperations/powm/cpowma.c
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Arnaud TORSET
+ *
+ * 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-en.txt
+ *
+ */
+
+#include "matrixPow.h"
+#include "logm.h"
+#include "matrixExponential.h"
+#include "multiplication.h"
+
+void cpowma(floatComplex* in, int rows, floatComplex expand, floatComplex* out){
+ int i=0;
+ /* use the formula a^b=exp(b*ln(a)) */
+ clogma(in,rows,out);
+ for(i=0;i<rows*rows;i++) out[i]= cmuls(expand,out[i]);
+ cexpma(out,out,(int)rows);
+
+}
diff --git a/scilab2c/src/matrixOperations/powm/testDoubleMatrixPow b/scilab2c/src/matrixOperations/powm/testDoubleMatrixPow
index 1318fa40..6f6ae5e1 100755
--- a/scilab2c/src/matrixOperations/powm/testDoubleMatrixPow
+++ b/scilab2c/src/matrixOperations/powm/testDoubleMatrixPow
@@ -32,12 +32,12 @@ DUALCASE=1; export DUALCASE # for MKS sh
# if CDPATH is set.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-relink_command="(cd /goinfre/torset/scilab2c-src/src/matrixOperations/powm; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \"\${LD_LIBRARY_PATH+set}\" || unset LD_LIBRARY_PATH || { LD_LIBRARY_PATH=; export LD_LIBRARY_PATH; }; }; PATH=\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games\"; export PATH; /usr/lib/gcc-snapshot/bin/gcc -I ../../type -I ../../includes -I ../../operations/includes -I ../../matrixOperations/includes -g -O2 -Wall -Wextra -pedantic -Wconversion -Wformat -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes -Wmissing-declarations -Werror -o \$progdir/\$file testDoubleMatrixPow-testDoublePowm.o ../../type/.libs/libDoubleComplex.so ../../type/.libs/libFloatComplex.so ../../lib/lapack/.libs/libscilapack.so ../../matrixOperations/eye/.libs/libMatrixEye.so ../../matrixOperations/transpose/.libs/libMatrixTranspose.so ../../matrixOperations/multiplication/.libs/libMatrixMultiplication.so ../../operations/addition/.libs/libAddition.so ../../lib/blas/.libs/libsciblas.so ../../operations/multiplication/.libs/libMultiplication.so ./.libs/libMatrixPow.so -lm -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/type/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/lib/lapack/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/matrixOperations/eye/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/matrixOperations/transpose/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/matrixOperations/multiplication/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/operations/addition/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/lib/blas/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/operations/multiplication/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/matrixOperations/powm/.libs -Wl,--rpath -Wl,/usr/local/lib/sci2clibrary ) "
+relink_command="(cd /goinfre/torset/scilab2c-src/src/matrixOperations/powm; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; { test -z \"\${LD_LIBRARY_PATH+set}\" || unset LD_LIBRARY_PATH || { LD_LIBRARY_PATH=; export LD_LIBRARY_PATH; }; }; PATH=\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games\"; export PATH; /usr/lib/gcc-snapshot/bin/gcc -I ../../type -I ../../includes -I ../../auxiliaryFunctions/includes -I ../../elementaryFunctions/includes -I ../../operations/includes -I ../../matrixOperations/includes -g -O2 -Wall -Wextra -pedantic -Wconversion -Wformat -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes -Wmissing-declarations -Werror -o \$progdir/\$file testDoubleMatrixPow-testDoublePowm.o ../../type/.libs/libDoubleComplex.so ../../type/.libs/libFloatComplex.so ../../lib/lapack/.libs/libscilapack.so ../../auxiliaryFunctions/abs/.libs/libAbs.so ../../auxiliaryFunctions/sign/.libs/libSign.so ../../auxiliaryFunctions/pythag/.libs/libPythag.so ../../auxiliaryFunctions/frexp/.libs/libFrexp.so ../../auxiliaryFunctions/conj/.libs/libConj.so ../../elementaryFunctions/sqrt/.libs/libSqrt.so ../../elementaryFunctions/exp/.libs/libExp.so ../../elementaryFunctions/cos/.libs/libCos.so ../../elementaryFunctions/pow/.libs/libPow.so ../../elementaryFunctions/log/.libs/libLog.so ../../elementaryFunctions/log1p/.libs/libLog1p.so ../../elementaryFunctions/lnp1m1/.libs/libLnp1m1.so ../../elementaryFunctions/cosh/.libs/libCosh.so ../../elementaryFunctions/sin/.libs/libSin.so ../../elementaryFunctions/sinh/.libs/libSinh.so ../../matrixOperations/inversion/.libs/libMatrixInversion.so ../../matrixOperations/transpose/.libs/libMatrixTranspose.so ../../matrixOperations/cat/.libs/libMatrixConcatenation.so ../../matrixOperations/expm/.libs/libMatrixExponential.so ../../matrixOperations/logm/.libs/libLogm.so ../../matrixOperations/infiniteNorm/.libs/libMatrixInfiniteNorm.so ../../matrixOperations/eye/.libs/libMatrixEye.so ../../matrixOperations/multiplication/.libs/libMatrixMultiplication.so ../../matrixOperations/division/.libs/libMatrixDivision.so ../../operations/addition/.libs/libAddition.so ../../operations/multiplication/.libs/libMultiplication.so ../../operations/subtraction/.libs/libSubtraction.so ../../operations/division/.libs/libDivision.so ../../lib/blas/.libs/libsciblas.so ./.libs/libMatrixPow.so -lm -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/type/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/lib/lapack/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/auxiliaryFunctions/abs/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/auxiliaryFunctions/sign/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/auxiliaryFunctions/pythag/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/auxiliaryFunctions/frexp/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/auxiliaryFunctions/conj/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/elementaryFunctions/sqrt/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/elementaryFunctions/exp/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/elementaryFunctions/cos/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/elementaryFunctions/pow/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/elementaryFunctions/log/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/elementaryFunctions/log1p/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/elementaryFunctions/lnp1m1/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/elementaryFunctions/cosh/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/elementaryFunctions/sin/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/elementaryFunctions/sinh/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/matrixOperations/inversion/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/matrixOperations/transpose/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/matrixOperations/cat/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/matrixOperations/expm/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/matrixOperations/logm/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/matrixOperations/infiniteNorm/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/matrixOperations/eye/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/matrixOperations/multiplication/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/matrixOperations/division/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/operations/addition/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/operations/multiplication/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/operations/subtraction/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/operations/division/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/lib/blas/.libs -Wl,--rpath -Wl,/goinfre/torset/scilab2c-src/src/matrixOperations/powm/.libs -Wl,--rpath -Wl,/usr/local/lib/sci2clibrary ) "
# This environment variable determines our operation mode.
if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
# install mode needs the following variable:
- notinst_deplibs=' ../../type/libDoubleComplex.la ../../type/libFloatComplex.la ../../lib/lapack/libscilapack.la ../../matrixOperations/eye/libMatrixEye.la ../../matrixOperations/transpose/libMatrixTranspose.la ../../matrixOperations/multiplication/libMatrixMultiplication.la ../../operations/addition/libAddition.la ../../lib/blas/libsciblas.la ../../operations/multiplication/libMultiplication.la libMatrixPow.la'
+ notinst_deplibs=' ../../type/libDoubleComplex.la ../../type/libFloatComplex.la ../../lib/lapack/libscilapack.la ../../auxiliaryFunctions/abs/libAbs.la ../../auxiliaryFunctions/sign/libSign.la ../../auxiliaryFunctions/pythag/libPythag.la ../../auxiliaryFunctions/frexp/libFrexp.la ../../auxiliaryFunctions/conj/libConj.la ../../elementaryFunctions/sqrt/libSqrt.la ../../elementaryFunctions/exp/libExp.la ../../elementaryFunctions/cos/libCos.la ../../elementaryFunctions/pow/libPow.la ../../elementaryFunctions/log/libLog.la ../../elementaryFunctions/log1p/libLog1p.la ../../elementaryFunctions/lnp1m1/libLnp1m1.la ../../elementaryFunctions/cosh/libCosh.la ../../elementaryFunctions/sin/libSin.la ../../elementaryFunctions/sinh/libSinh.la ../../matrixOperations/inversion/libMatrixInversion.la ../../matrixOperations/transpose/libMatrixTranspose.la ../../matrixOperations/cat/libMatrixConcatenation.la ../../matrixOperations/expm/libMatrixExponential.la ../../matrixOperations/logm/libLogm.la ../../matrixOperations/infiniteNorm/libMatrixInfiniteNorm.la ../../matrixOperations/eye/libMatrixEye.la ../../matrixOperations/multiplication/libMatrixMultiplication.la ../../matrixOperations/division/libMatrixDivision.la ../../operations/addition/libAddition.la ../../operations/multiplication/libMultiplication.la ../../operations/subtraction/libSubtraction.la ../../operations/division/libDivision.la ../../lib/blas/libsciblas.la libMatrixPow.la'
else
# When we are sourced in execute mode, $file and $echo are already set.
if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
diff --git a/scilab2c/src/matrixOperations/powm/testDoublePowm.c b/scilab2c/src/matrixOperations/powm/testDoublePowm.c
index f985145a..6fdbec10 100644
--- a/scilab2c/src/matrixOperations/powm/testDoublePowm.c
+++ b/scilab2c/src/matrixOperations/powm/testDoublePowm.c
@@ -12,6 +12,8 @@
#include "matrixPow.h"
#include <stdio.h>
+#include <assert.h>
+#include <math.h>
static void dpowmaTest(void){
@@ -25,26 +27,36 @@ static void dpowmaTest(void){
}
-/*
-FIXME
+/* FIXME : assert à10^-12 */
static void zpowmaTest(void){
- double inR[4]={1,5,4,2};
- double inI[4]={2,1,-1,3};
- doubleComplex *in,out[4];
+ double inR[9]={1,2,3,4,5,6,7,8,9};
+ double inI[9]={1,2,3,4,5,6,7,8,9};
+ double resultR[9]={- 4.7115011361608578610571,- 2.0782061409646632732517,0.5550888542315330909105,
+ - 2.3202132490900626571317,- 2.4412168031527574640904,- 2.5622203572154611528333,
+ 0.0710746379807356554181,- 2.80422746534086453352,- 5.6795295686624518438634};
+ double resultI[9]={- 12.188702380084603049681,- 4.0827818504168584823333,4.0231386792508754268738,
+ - 3.0919079733956360556135,- 2.5964710348850239540752,- 2.1010340963744131848046,
+ 6.0048864332933264975622,- 1.1101602193531934226201,- 8.2252068719997026846613};
+ doubleComplex *in,out[9];
int i;
- in=DoubleComplexMatrix(inR,inI,4);
+ in=DoubleComplexMatrix(inR,inI,9);
+
+ zpowma(in, 3, DoubleComplex(1,1), out);
- zpowma(in, 2, DoubleComplex(2,0), out);
+ for (i=0;i<9;i++) printf("out[%d] = %f+%f*i\n",i,zreals(out[i]),zimags(out[i]));
- for (i=0;i<4;i++) printf("out[%d] = %f+%f*i\n",i,zreals(out[i]),zimags(out[i]));
+ for (i=0;i<9;i++){
+ assert( (fabs(zreals(out[i])-resultR[i])/ fabs(zreals(out[i])) ) <1e-12);
+ assert( (fabs(zimags(out[i])-resultI[i])/ fabs(zimags(out[i])) ) <1e-13);
+ }
}
-*/
int main(void){
dpowmaTest();
+ zpowmaTest();
return 0;
}
diff --git a/scilab2c/src/matrixOperations/powm/zpowma.c b/scilab2c/src/matrixOperations/powm/zpowma.c
index 39b0fd5f..c8cac267 100644
--- a/scilab2c/src/matrixOperations/powm/zpowma.c
+++ b/scilab2c/src/matrixOperations/powm/zpowma.c
@@ -11,19 +11,15 @@
*/
#include "matrixPow.h"
-#include "lapack.h"
-#include "eye.h"
-#include "matrixMultiplication.h"
+#include "logm.h"
+#include "matrixExponential.h"
+#include "multiplication.h"
-
-void zpowma(doubleComplex* in, int size, doubleComplex expand, doubleComplex* out){
-
-#ifndef WITHOUT_BLAS
-
-
-#else
-
-
-#endif
+void zpowma(doubleComplex* in, int rows, doubleComplex expand, doubleComplex* out){
+ int i=0;
+ /* use the formula a^b=exp(b*ln(a)) */
+ zlogma(in,rows,out);
+ for(i=0;i<rows*rows;i++) out[i]= zmuls(expand,out[i]);
+ zexpma(out,out,(int)rows);
}