diff options
author | torset | 2009-02-16 15:32:57 +0000 |
---|---|---|
committer | torset | 2009-02-16 15:32:57 +0000 |
commit | 739d517eb539f48f60a629fbce38b8cec6727542 (patch) | |
tree | 90c2a1e848f4f97d15ff42b02ffc76d72d19e87d | |
parent | a2330cb1c117d440f91b801cfcb2831b2348828f (diff) | |
download | scilab2c-739d517eb539f48f60a629fbce38b8cec6727542.tar.gz scilab2c-739d517eb539f48f60a629fbce38b8cec6727542.tar.bz2 scilab2c-739d517eb539f48f60a629fbce38b8cec6727542.zip |
Update Matrix Pow
-rw-r--r-- | scilab2c/src/matrixOperations/powm/Makefile.am | 35 | ||||
-rw-r--r-- | scilab2c/src/matrixOperations/powm/Makefile.in | 64 | ||||
-rw-r--r-- | scilab2c/src/matrixOperations/powm/cpowma.c | 25 | ||||
-rwxr-xr-x | scilab2c/src/matrixOperations/powm/testDoubleMatrixPow | 4 | ||||
-rw-r--r-- | scilab2c/src/matrixOperations/powm/testDoublePowm.c | 30 | ||||
-rw-r--r-- | scilab2c/src/matrixOperations/powm/zpowma.c | 22 |
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); } |