diff options
author | torset | 2009-01-08 13:14:48 +0000 |
---|---|---|
committer | torset | 2009-01-08 13:14:48 +0000 |
commit | 358db0aa0a237174aea50aaebc032091298ca32c (patch) | |
tree | 6c582d39d7ce355fc0d2723f449753ad645cf8dc | |
parent | c14e7f10ea0293d31fa99857d949b98cec106a4c (diff) | |
download | scilab2c-358db0aa0a237174aea50aaebc032091298ca32c.tar.gz scilab2c-358db0aa0a237174aea50aaebc032091298ca32c.tar.bz2 scilab2c-358db0aa0a237174aea50aaebc032091298ca32c.zip |
update logm
-rw-r--r-- | src/matrixOperations/logm/Makefile.am | 44 | ||||
-rw-r--r-- | src/matrixOperations/logm/Makefile.in | 96 | ||||
-rw-r--r-- | src/matrixOperations/logm/clogma.c | 75 | ||||
-rw-r--r-- | src/matrixOperations/logm/dlogma.c | 26 | ||||
-rw-r--r-- | src/matrixOperations/logm/slogma.c | 13 | ||||
-rw-r--r-- | src/matrixOperations/logm/testDoubleLogm.c | 4 | ||||
-rw-r--r-- | src/matrixOperations/logm/zlogma.c | 121 |
7 files changed, 164 insertions, 215 deletions
diff --git a/src/matrixOperations/logm/Makefile.am b/src/matrixOperations/logm/Makefile.am index 848783e5..df939f92 100644 --- a/src/matrixOperations/logm/Makefile.am +++ b/src/matrixOperations/logm/Makefile.am @@ -26,18 +26,15 @@ instdir = $(top_builddir)/lib pkglib_LTLIBRARIES = libLogm.la -HEAD = ../includes/logm.h \ - logm_internal.h +HEAD = ../includes/logm.h libLogm_la_SOURCES = $(HEAD) \ - zlogma.c\ - wbdiag.c \ - cbal.c \ - corth.c \ - cortr.c \ - comqr3.c - + zlogma.c \ + clogma.c \ + slogma.c \ + dlogma.c + ############# ## CHECK ## ############# @@ -46,31 +43,22 @@ check_PROGRAMS = testDoubleLogm check_LDADD = $(top_builddir)/type/libDoubleComplex.la \ $(top_builddir)/type/libFloatComplex.la \ - $(top_builddir)/matrixOperations/inversion/libMatrixInversion.la\ - $(top_builddir)/elementaryFunctions/sqrt/libSqrt.la \ $(top_builddir)/lib/lapack/libscilapack.la \ $(top_builddir)/lib/blas/libsciblas.la \ - $(top_builddir)/auxiliaryFunctions/abs/libAbs.la \ - $(top_builddir)/auxiliaryFunctions/sign/libSign.la \ - $(top_builddir)/auxiliaryFunctions/conj/libConj.la \ - $(top_builddir)/auxiliaryFunctions/pythag/libPythag.la \ - $(top_builddir)/operations/addition/libAddition.la \ - $(top_builddir)/operations/multiplication/libMultiplication.la \ - $(top_builddir)/operations/division/libDivision.la \ - $(top_builddir)/operations/subtraction/libSubtraction.la \ - $(top_builddir)/matrixOperations/transpose/libMatrixTranspose.la\ - $(top_builddir)/matrixOperations/multiplication/libMatrixMultiplication.la\ $(top_builddir)/elementaryFunctions/log/libLog.la \ + $(top_builddir)/elementaryFunctions/sqrt/libSqrt.la \ $(top_builddir)/elementaryFunctions/log1p/libLog1p.la \ $(top_builddir)/elementaryFunctions/lnp1m1/libLnp1m1.la \ - $(top_builddir)/elementaryFunctions/pow/libPow.la \ - $(top_builddir)/elementaryFunctions/exp/libExp.la \ - $(top_builddir)/elementaryFunctions/sin/libSin.la \ - $(top_builddir)/elementaryFunctions/cos/libCos.la \ - $(top_builddir)/elementaryFunctions/sinh/libSinh.la \ - $(top_builddir)/elementaryFunctions/cosh/libCosh.la \ + $(top_builddir)/auxiliaryFunctions/abs/libAbs.la \ + $(top_builddir)/auxiliaryFunctions/pythag/libPythag.la \ + $(top_builddir)/auxiliaryFunctions/sign/libSign.la \ + $(top_builddir)/operations/multiplication/libMultiplication.la \ + $(top_builddir)/operations/addition/libAddition.la \ + $(top_builddir)/matrixOperations/multiplication/libMatrixMultiplication.la \ + $(top_builddir)/matrixOperations/transpose/libMatrixTranspose.la \ + $(top_builddir)/matrixOperations/inversion/libMatrixInversion.la \ $(top_builddir)/matrixOperations/logm/libLogm.la - + check_INCLUDES = -I ./includes \ -I $(top_builddir)/type \ diff --git a/src/matrixOperations/logm/Makefile.in b/src/matrixOperations/logm/Makefile.in index 33a55edc..e662a1a0 100644 --- a/src/matrixOperations/logm/Makefile.in +++ b/src/matrixOperations/logm/Makefile.in @@ -55,8 +55,7 @@ LTLIBRARIES = $(pkglib_LTLIBRARIES) libLogm_la_LIBADD = am__objects_1 = am_libLogm_la_OBJECTS = $(am__objects_1) libLogm_la-zlogma.lo \ - libLogm_la-wbdiag.lo libLogm_la-cbal.lo libLogm_la-corth.lo \ - libLogm_la-cortr.lo libLogm_la-comqr3.lo + libLogm_la-clogma.lo libLogm_la-slogma.lo libLogm_la-dlogma.lo libLogm_la_OBJECTS = $(am_libLogm_la_OBJECTS) libLogm_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libLogm_la_CFLAGS) \ @@ -203,42 +202,29 @@ libLogm_la_CFLAGS = -I ./includes \ instdir = $(top_builddir)/lib pkglib_LTLIBRARIES = libLogm.la -HEAD = ../includes/logm.h \ - logm_internal.h - +HEAD = ../includes/logm.h libLogm_la_SOURCES = $(HEAD) \ - zlogma.c\ - wbdiag.c \ - cbal.c \ - corth.c \ - cortr.c \ - comqr3.c + zlogma.c \ + clogma.c \ + slogma.c \ + dlogma.c check_LDADD = $(top_builddir)/type/libDoubleComplex.la \ $(top_builddir)/type/libFloatComplex.la \ - $(top_builddir)/matrixOperations/inversion/libMatrixInversion.la\ - $(top_builddir)/elementaryFunctions/sqrt/libSqrt.la \ $(top_builddir)/lib/lapack/libscilapack.la \ $(top_builddir)/lib/blas/libsciblas.la \ - $(top_builddir)/auxiliaryFunctions/abs/libAbs.la \ - $(top_builddir)/auxiliaryFunctions/sign/libSign.la \ - $(top_builddir)/auxiliaryFunctions/conj/libConj.la \ - $(top_builddir)/auxiliaryFunctions/pythag/libPythag.la \ - $(top_builddir)/operations/addition/libAddition.la \ - $(top_builddir)/operations/multiplication/libMultiplication.la \ - $(top_builddir)/operations/division/libDivision.la \ - $(top_builddir)/operations/subtraction/libSubtraction.la \ - $(top_builddir)/matrixOperations/transpose/libMatrixTranspose.la\ - $(top_builddir)/matrixOperations/multiplication/libMatrixMultiplication.la\ $(top_builddir)/elementaryFunctions/log/libLog.la \ + $(top_builddir)/elementaryFunctions/sqrt/libSqrt.la \ $(top_builddir)/elementaryFunctions/log1p/libLog1p.la \ $(top_builddir)/elementaryFunctions/lnp1m1/libLnp1m1.la \ - $(top_builddir)/elementaryFunctions/pow/libPow.la \ - $(top_builddir)/elementaryFunctions/exp/libExp.la \ - $(top_builddir)/elementaryFunctions/sin/libSin.la \ - $(top_builddir)/elementaryFunctions/cos/libCos.la \ - $(top_builddir)/elementaryFunctions/sinh/libSinh.la \ - $(top_builddir)/elementaryFunctions/cosh/libCosh.la \ + $(top_builddir)/auxiliaryFunctions/abs/libAbs.la \ + $(top_builddir)/auxiliaryFunctions/pythag/libPythag.la \ + $(top_builddir)/auxiliaryFunctions/sign/libSign.la \ + $(top_builddir)/operations/multiplication/libMultiplication.la \ + $(top_builddir)/operations/addition/libAddition.la \ + $(top_builddir)/matrixOperations/multiplication/libMatrixMultiplication.la \ + $(top_builddir)/matrixOperations/transpose/libMatrixTranspose.la \ + $(top_builddir)/matrixOperations/inversion/libMatrixInversion.la \ $(top_builddir)/matrixOperations/logm/libLogm.la check_INCLUDES = -I ./includes \ @@ -331,11 +317,9 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLogm_la-cbal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLogm_la-comqr3.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLogm_la-corth.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLogm_la-cortr.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLogm_la-wbdiag.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLogm_la-clogma.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLogm_la-dlogma.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLogm_la-slogma.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libLogm_la-zlogma.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testDoubleLogm-testDoubleLogm.Po@am__quote@ @@ -367,40 +351,26 @@ libLogm_la-zlogma.lo: zlogma.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) $(libLogm_la_CFLAGS) $(CFLAGS) -c -o libLogm_la-zlogma.lo `test -f 'zlogma.c' || echo '$(srcdir)/'`zlogma.c -libLogm_la-wbdiag.lo: wbdiag.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -MT libLogm_la-wbdiag.lo -MD -MP -MF $(DEPDIR)/libLogm_la-wbdiag.Tpo -c -o libLogm_la-wbdiag.lo `test -f 'wbdiag.c' || echo '$(srcdir)/'`wbdiag.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libLogm_la-wbdiag.Tpo $(DEPDIR)/libLogm_la-wbdiag.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='wbdiag.c' object='libLogm_la-wbdiag.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) $(libLogm_la_CFLAGS) $(CFLAGS) -c -o libLogm_la-wbdiag.lo `test -f 'wbdiag.c' || echo '$(srcdir)/'`wbdiag.c - -libLogm_la-cbal.lo: cbal.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -MT libLogm_la-cbal.lo -MD -MP -MF $(DEPDIR)/libLogm_la-cbal.Tpo -c -o libLogm_la-cbal.lo `test -f 'cbal.c' || echo '$(srcdir)/'`cbal.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libLogm_la-cbal.Tpo $(DEPDIR)/libLogm_la-cbal.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cbal.c' object='libLogm_la-cbal.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) $(libLogm_la_CFLAGS) $(CFLAGS) -c -o libLogm_la-cbal.lo `test -f 'cbal.c' || echo '$(srcdir)/'`cbal.c - -libLogm_la-corth.lo: corth.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -MT libLogm_la-corth.lo -MD -MP -MF $(DEPDIR)/libLogm_la-corth.Tpo -c -o libLogm_la-corth.lo `test -f 'corth.c' || echo '$(srcdir)/'`corth.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libLogm_la-corth.Tpo $(DEPDIR)/libLogm_la-corth.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='corth.c' object='libLogm_la-corth.lo' libtool=yes @AMDEPBACKSLASH@ +libLogm_la-clogma.lo: clogma.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -MT libLogm_la-clogma.lo -MD -MP -MF $(DEPDIR)/libLogm_la-clogma.Tpo -c -o libLogm_la-clogma.lo `test -f 'clogma.c' || echo '$(srcdir)/'`clogma.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libLogm_la-clogma.Tpo $(DEPDIR)/libLogm_la-clogma.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='clogma.c' object='libLogm_la-clogma.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) $(libLogm_la_CFLAGS) $(CFLAGS) -c -o libLogm_la-corth.lo `test -f 'corth.c' || echo '$(srcdir)/'`corth.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -c -o libLogm_la-clogma.lo `test -f 'clogma.c' || echo '$(srcdir)/'`clogma.c -libLogm_la-cortr.lo: cortr.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -MT libLogm_la-cortr.lo -MD -MP -MF $(DEPDIR)/libLogm_la-cortr.Tpo -c -o libLogm_la-cortr.lo `test -f 'cortr.c' || echo '$(srcdir)/'`cortr.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libLogm_la-cortr.Tpo $(DEPDIR)/libLogm_la-cortr.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cortr.c' object='libLogm_la-cortr.lo' libtool=yes @AMDEPBACKSLASH@ +libLogm_la-slogma.lo: slogma.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -MT libLogm_la-slogma.lo -MD -MP -MF $(DEPDIR)/libLogm_la-slogma.Tpo -c -o libLogm_la-slogma.lo `test -f 'slogma.c' || echo '$(srcdir)/'`slogma.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libLogm_la-slogma.Tpo $(DEPDIR)/libLogm_la-slogma.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='slogma.c' object='libLogm_la-slogma.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) $(libLogm_la_CFLAGS) $(CFLAGS) -c -o libLogm_la-cortr.lo `test -f 'cortr.c' || echo '$(srcdir)/'`cortr.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -c -o libLogm_la-slogma.lo `test -f 'slogma.c' || echo '$(srcdir)/'`slogma.c -libLogm_la-comqr3.lo: comqr3.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -MT libLogm_la-comqr3.lo -MD -MP -MF $(DEPDIR)/libLogm_la-comqr3.Tpo -c -o libLogm_la-comqr3.lo `test -f 'comqr3.c' || echo '$(srcdir)/'`comqr3.c -@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libLogm_la-comqr3.Tpo $(DEPDIR)/libLogm_la-comqr3.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='comqr3.c' object='libLogm_la-comqr3.lo' libtool=yes @AMDEPBACKSLASH@ +libLogm_la-dlogma.lo: dlogma.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -MT libLogm_la-dlogma.lo -MD -MP -MF $(DEPDIR)/libLogm_la-dlogma.Tpo -c -o libLogm_la-dlogma.lo `test -f 'dlogma.c' || echo '$(srcdir)/'`dlogma.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libLogm_la-dlogma.Tpo $(DEPDIR)/libLogm_la-dlogma.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dlogma.c' object='libLogm_la-dlogma.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) $(libLogm_la_CFLAGS) $(CFLAGS) -c -o libLogm_la-comqr3.lo `test -f 'comqr3.c' || echo '$(srcdir)/'`comqr3.c +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libLogm_la_CFLAGS) $(CFLAGS) -c -o libLogm_la-dlogma.lo `test -f 'dlogma.c' || echo '$(srcdir)/'`dlogma.c testDoubleLogm-testDoubleLogm.o: testDoubleLogm.c @am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(testDoubleLogm_CFLAGS) $(CFLAGS) -MT testDoubleLogm-testDoubleLogm.o -MD -MP -MF $(DEPDIR)/testDoubleLogm-testDoubleLogm.Tpo -c -o testDoubleLogm-testDoubleLogm.o `test -f 'testDoubleLogm.c' || echo '$(srcdir)/'`testDoubleLogm.c diff --git a/src/matrixOperations/logm/clogma.c b/src/matrixOperations/logm/clogma.c index f64e574c..ebad5814 100644 --- a/src/matrixOperations/logm/clogma.c +++ b/src/matrixOperations/logm/clogma.c @@ -13,80 +13,23 @@ #include <malloc.h> #include "logm.h" -#include "schur.h" -#include "log.h" -#include "multiplication.h" -#include "tranpose.h" -#include "inverse.h" - -static void bdiag(floatComplex *in, int size, double n, floatComplex *out1, floatComplex *out2){ - -} - void clogma (floatComplex* in, int size, floatComplex* out){ - doubleComplex *out1, *out2, *dtmp; - int i=0, egaux=0; - float eps = 2.220e-16; - int select, sdim, lwork, bwork, info = 0; - doubleComplex *eigenvalues, *work, *rwork; - - - out1=malloc((uint)(size*size)*sizeof(doubleComplex)); - out2=malloc((uint)(size*size)*sizeof(doubleComplex)); - dtmp=malloc((uint)(size*size)*sizeof(doubleComplex)); - eigenvalues=malloc((uint)size*sizeof(doubleComplex)); - work=malloc((uint)(pow(2,size))*sizeof(doubleComplex)); - rwork=malloc((uint)size*sizeof(doubleComplex)); - - ctransposea(in,size,size,tmp);/*pb entre float et double*/ - - for (i=0;i<size*size;i++){ - if (in[i]!=tmp[i]) break; - } - if (i==size*size) egaux =1; - - - if (egaux){ - /*Hermitian matrix*/ - for (i=0;i<size*size,i++) - out1[i]=DoubleComplex((double)creals(in[i]),(double)cimags(in[i]));; - - C2F(zgees)("V","S", &select, &size, out1, &size, &sdim, eigenvalues, out2, &size, work, &lwork, rwork, &bwork, &info); - - for (i=0;i<size;i++){ - for (j=0;j<size;j++){ - tmp[i*size+j]=0; - if (i==j) dtmp[i*size+j]=zlogs(out2[i*size+j]); - } - } - - zmulma(out1,size,size,dtmp,size,size,out2); - ztransposea(out1,size,size,dtmp); + doubleComplex *inCopy, *outCopy; + int i=0; - cmula(out2,size,size,tmp,size,size,out1); - for (i=0;i<size*size,i++) - out[i]=FloatComplex((float)zreals(in[i]),(float)zimags(in[i]));; - } - else - { - /*General Matrix*/ - bdiag(in, size, eps, out1, out2); + inCopy = malloc((uint)(size*size)*sizeof(doubleComplex)); + outCopy = malloc((uint)(size*size)*sizeof(doubleComplex)); + for(i=0;i<size*size;i++) + inCopy[i]=DoubleComplex ((double)creals(in[i]), (double)cimags(in[i])); - for (i=0;i<size;i++){ - for (j=0;j<size;j++){ - tmp[i*size+j]=0; - if (i==j) tmp[i*size+j]=clogs(out2[i*size+j]); - } - } - out2 = cmulma(out1,tmp); - tmp = cinversea(out1,size,size,out1); + zlogma(inCopy,size,outCopy); - out= cmula(out2,tmp); - } + for(i=0;i<size*size;i++) + out[i]=FloatComplex( (float)zreals(outCopy[i]),(float)zimags(outCopy[i])); } diff --git a/src/matrixOperations/logm/dlogma.c b/src/matrixOperations/logm/dlogma.c new file mode 100644 index 00000000..0cee3c09 --- /dev/null +++ b/src/matrixOperations/logm/dlogma.c @@ -0,0 +1,26 @@ +/* + * 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 <malloc.h> +#include "logm.h" + + +void dlogma (double* in, int size, doubleComplex* out){ + doubleComplex *inCpx; + int i; + + inCpx=malloc((uint)(size*size)*sizeof(doubleComplex)); + + for (i=0;i<size*size;i++) inCpx[i] = DoubleComplex(in[i],0); + + zlogma(inCpx, size, out); +} diff --git a/src/matrixOperations/logm/slogma.c b/src/matrixOperations/logm/slogma.c index 09d0979e..319c82f2 100644 --- a/src/matrixOperations/logm/slogma.c +++ b/src/matrixOperations/logm/slogma.c @@ -15,11 +15,16 @@ void slogma (float* in, int size, floatComplex* out){ - floatComplex *inCpx; + doubleComplex *inCpx, *outCopy; int i; - inCpx=malloc((uint)(size*size)*sizeof(floatComplex)); - for (i=0;i<size*size) inCpx[i] = FloatComplex(in[i],0); + inCpx=malloc((uint)(size*size)*sizeof(doubleComplex)); + outCopy=malloc((uint)(size*size)*sizeof(doubleComplex)); - clogma(inCpx, size, out); + for (i=0;i<size*size;i++) inCpx[i] = DoubleComplex(in[i],0); + + zlogma(inCpx, size, outCopy); + + for(i=0;i<size*size;i++) + out[i]=FloatComplex( (float)zreals(outCopy[i]),(float)zimags(outCopy[i])); } diff --git a/src/matrixOperations/logm/testDoubleLogm.c b/src/matrixOperations/logm/testDoubleLogm.c index 6fe3d563..0a4e3405 100644 --- a/src/matrixOperations/logm/testDoubleLogm.c +++ b/src/matrixOperations/logm/testDoubleLogm.c @@ -30,8 +30,8 @@ static void zlogmaTest(void){ for(i=0;i<9;i++) in[i]=DoubleComplex(inD[i],0); - wbdiag(in,3,out); - + zlogma(in,3,out); + for(i=0;i<9;i++) printf("out[%d] = %f + %f *i\n",i,zreals(out[i]),zimags(out[i])); } static int logmTest(void){ diff --git a/src/matrixOperations/logm/zlogma.c b/src/matrixOperations/logm/zlogma.c index 2bbb4488..8fb2fa38 100644 --- a/src/matrixOperations/logm/zlogma.c +++ b/src/matrixOperations/logm/zlogma.c @@ -13,78 +13,95 @@ #include <stdio.h> #include <malloc.h> #include "lapack.h" -#include "pow.h" #include "logm.h" #include "log.h" #include "matrixMultiplication.h" #include "matrixTranspose.h" #include "matrixInversion.h" -#include "logm_internal.h" +#include "max.h" void zlogma (doubleComplex* in, int size, doubleComplex* out){ - doubleComplex *out1, *out2, *tmp, *inCopy; - int i=0, j=0, egaux=0; - int mon_select, sdim, lwork, bwork, info = 0; - doubleComplex *eigenvalues, *work, *rwork; + + /* Algo : */ + /* trouver les valeurs propres vp */ + /* en déduire les vecteurs propres Vp */ + /* utiliser la formule suivante + * logm = Vp * diag(log(diag(vp)) * inv(Vp) */ + int i; + doubleComplex *eigenvalues, *eigenvectors, *tmp; + int symetrique = 0; + int info = 0; /* Used by LAPACK */ + int iWorkSize = 0; /* Used by LAPACK */ + doubleComplex *pdblWork = NULL; /* Used by LAPACK */ + doubleComplex *pdblRWork = NULL; /* Used by LAPACK */ + doubleComplex * pdblLeftvectors = NULL; /* Used by LAPACK */ + doubleComplex * inCopy = NULL; /* Used by LAPACK */ - inCopy=malloc((uint)(size*size)*sizeof(doubleComplex)); - out1=malloc((uint)(size*size)*sizeof(doubleComplex)); - out2=malloc((uint)(size*size)*sizeof(doubleComplex)); - tmp=malloc((uint)(size*size)*sizeof(doubleComplex)); - eigenvalues=malloc((uint)size*sizeof(doubleComplex)); - work=malloc((uint)(dpows(2,size))*sizeof(doubleComplex)); - rwork=malloc((uint)size*sizeof(doubleComplex)); - for (i=0;i<size*size;i++) inCopy[i]=in[i]; - ztransposea(in,size,size,tmp); - /* Check if in and transpose(in) are equals */ - for (i=0;i<size*size;i++){ - if ( (zreals(in[i])!=zreals(tmp[i])) || (zimags(in[i])!=zimags(tmp[i])) ) break; - } - if (i==size*size) egaux =1; - for (i=0;i<size*size;i++) out1[i]=in[i]; + /* Data initialization */ + eigenvalues = malloc((uint)(size*size)*sizeof(doubleComplex)); + eigenvectors = malloc((uint)(size*size)*sizeof(doubleComplex)); + tmp = malloc((uint)(size*size)*sizeof(doubleComplex)); + iWorkSize = max(1,2*size); + pdblWork = malloc((uint)(iWorkSize)*sizeof(doubleComplex)); + pdblRWork = malloc((uint)(2*size)*sizeof(doubleComplex)); + inCopy = malloc((uint)(size*size)*sizeof(doubleComplex)); + + /* Copy in in inCopy */ + for (i=0;i<size*size;i++) + inCopy[i] = in[i]; + - if (egaux){ - /*Hermitian matrix*/ - - - C2F(zgees)("V","S", &mon_select, &size, out1, &size, &sdim, eigenvalues, out2, &size, work, &lwork, rwork, &bwork, &info); - for (i=0;i<size;i++){ - for (j=0;j<size;j++){ - tmp[i*size+j]=DoubleComplex(0,0); - if (i==j) tmp[i*size+j]=zlogs(out2[i*size+j]); - } - } - zmulma(out1,size,size,tmp,size,size,out2); - ztransposea(out1,size,size,tmp); - + + /* regarde si in est symetrique */ + ztransposea(in,size,size,tmp); + for (i=0;i<size*size;i++){ + if ( (zreals(in[i])!=zreals(tmp[i])) || (zimags(in[i])!=zimags(tmp[i])) ) break; } - else - { - /*General Matrix*/ - /* A faire - wbdiag (appel à bdiag dans le script mais le bdiag de scilab - appelle sci_bdiag qui lui appelle wbdiag car input complexe) - */ - wbdiag(out1,size,out2); + if (i==size*size) symetrique = 1; - for (i=0;i<size;i++){ - for (j=0;j<size;j++){ - tmp[i*size+j]=DoubleComplex(0,0); - if (i==j) tmp[i*size+j]=zlogs(out2[i*size+j]); - } + /* trouver les valeurs propres vp ainsi que les vecteurs propres*/ + if (symetrique){ + C2F(zheev)( "V", "U", &size, inCopy, &size, eigenvalues, + pdblWork, &iWorkSize, pdblRWork, &info ); + eigenvectors = inCopy; + } + else { + C2F(zgeev)( "N", "V", &size, inCopy, &size, eigenvalues, + pdblLeftvectors, &size, eigenvectors, &size, pdblWork, &iWorkSize, + pdblRWork, &info ); + for(i=0;i<size;i++) { + eigenvalues[i*size+i] = eigenvalues[i]; + if ((i*size+i)!=i) eigenvalues[i] = DoubleComplex(0,0); } + } + + + /* utiliser la formule suivante + * logm = Vp * diag(log(diag(vp)) * inv(Vp) */ - zmulma(out1,size,size,tmp,size,size,out2); - zinverma(out1,tmp,size); - + + /* diag(log(diag(vp)) */ + for (i=0;i<size*size;i++){ + if ((i%(size+1))==0) /* teste si i est sur la diagonale */ + eigenvalues[i] = zlogs(eigenvalues[i]); + else eigenvalues[i] = DoubleComplex(0,0); } - zmulma(out2,size,size,tmp,size,size,out); + /* Vp * diag(log(diag(vp)) */ + zmulma(eigenvectors, size, size, eigenvalues, size, size, tmp); + + /* inv(Vp) */ + zinverma(eigenvectors, eigenvectors, size); + + /* Vp * diag(log(diag(vp))*inv(Vp) */ + zmulma(tmp, size, size, eigenvectors, size, size, out); + + } |