summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortorset2009-01-08 13:14:48 +0000
committertorset2009-01-08 13:14:48 +0000
commit358db0aa0a237174aea50aaebc032091298ca32c (patch)
tree6c582d39d7ce355fc0d2723f449753ad645cf8dc
parentc14e7f10ea0293d31fa99857d949b98cec106a4c (diff)
downloadscilab2c-358db0aa0a237174aea50aaebc032091298ca32c.tar.gz
scilab2c-358db0aa0a237174aea50aaebc032091298ca32c.tar.bz2
scilab2c-358db0aa0a237174aea50aaebc032091298ca32c.zip
update logm
-rw-r--r--src/matrixOperations/logm/Makefile.am44
-rw-r--r--src/matrixOperations/logm/Makefile.in96
-rw-r--r--src/matrixOperations/logm/clogma.c75
-rw-r--r--src/matrixOperations/logm/dlogma.c26
-rw-r--r--src/matrixOperations/logm/slogma.c13
-rw-r--r--src/matrixOperations/logm/testDoubleLogm.c4
-rw-r--r--src/matrixOperations/logm/zlogma.c121
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);
+
+
}