diff options
author | torset | 2009-02-06 14:44:22 +0000 |
---|---|---|
committer | torset | 2009-02-06 14:44:22 +0000 |
commit | f737d894588ca911f4316540c3c57b81c28a799c (patch) | |
tree | 4fd86a0fdff67d5125629424f27fd76285ea7c05 /src | |
parent | aa569c84c88bfcb86a4561e1a928ffc3276336a5 (diff) | |
download | scilab2c-f737d894588ca911f4316540c3c57b81c28a799c.tar.gz scilab2c-f737d894588ca911f4316540c3c57b81c28a799c.tar.bz2 scilab2c-f737d894588ca911f4316540c3c57b81c28a799c.zip |
Modify without lapack part
Diffstat (limited to 'src')
-rw-r--r-- | src/matrixOperations/chol/dchola.c | 7 | ||||
-rw-r--r-- | src/matrixOperations/chol/schola.c | 20 | ||||
-rw-r--r-- | src/matrixOperations/chol/testDoubleChol.c | 4 | ||||
-rw-r--r-- | src/matrixOperations/chol/testFloatChol.c | 6 |
4 files changed, 27 insertions, 10 deletions
diff --git a/src/matrixOperations/chol/dchola.c b/src/matrixOperations/chol/dchola.c index a35f90b2..a627b236 100644 --- a/src/matrixOperations/chol/dchola.c +++ b/src/matrixOperations/chol/dchola.c @@ -58,5 +58,12 @@ void dchola(double * in, int size, double *out){ out[i*size+i]=sqrt(in[i*size+i]-accu); } + /*Zeros in the lower triangular part*/ + for (i=0;i<size;i++){ + for (j=i+1;j<size;j++){ + out[j+i*size]=0; + } + } + #endif } diff --git a/src/matrixOperations/chol/schola.c b/src/matrixOperations/chol/schola.c index 79c739b9..bc61ec7e 100644 --- a/src/matrixOperations/chol/schola.c +++ b/src/matrixOperations/chol/schola.c @@ -11,7 +11,7 @@ */ -#ifdef WITHOUT_LAPACK +#ifndef WITHOUT_LAPACK #include "lapack.h" #else #include "sqrt.h" @@ -26,32 +26,35 @@ void schola(float * in, int size, float *out){ param U : output upper triangular matrix */ -#ifdef WITHOUT_LAPACK +#ifndef WITHOUT_LAPACK /*We have to use a double, copy of in, cause dpotrf works only with double, not with float*/ double* tmp; int i=0,j=0,info=0; - tmp=malloc((unsigned int)(size*size)*sizeof(float)); + tmp=malloc((unsigned int)(size*size)*sizeof(double)); for (i=0;i<size*size;i++) tmp[i]=(double)in[i]; C2F(dpotrf)("U", &size, tmp, &size, &info); for (i=0;i<size*size;i++) out[i]=(float)tmp[i]; + free(tmp); + + /*Zeros in the lower triangular part*/ for (i=0;i<size;i++){ for (j=i+1;j<size;j++){ out[j+i*size]=0; } } - free(tmp); + #else /* Do not use Lapack functions*/ int i=0, j=0, k=0; float tmp=0, accu=0; - + printf("passe\n"); for (i=0;i<size;i++){ accu=0; for (j=0;j<i;j++){ @@ -64,6 +67,13 @@ void schola(float * in, int size, float *out){ } out[i*size+i]=ssqrts(in[i*size+i]-accu); } + + /*Zeros in the lower triangular part*/ + for (i=0;i<size;i++){ + for (j=i+1;j<size;j++){ + out[j+i*size]=0; + } + } #endif diff --git a/src/matrixOperations/chol/testDoubleChol.c b/src/matrixOperations/chol/testDoubleChol.c index b96888ff..aecd97db 100644 --- a/src/matrixOperations/chol/testDoubleChol.c +++ b/src/matrixOperations/chol/testDoubleChol.c @@ -57,11 +57,11 @@ static void dcholaTest(void){ static void zcholsTest(void){ doubleComplex in; - double out; + doubleComplex out; in=DoubleComplex(3,1); printf("\n >>> ZCholS <<<\n"); out=zchols(in); - printf("result : %f\n",out); + printf("result : %f\n",zreals(out)); } diff --git a/src/matrixOperations/chol/testFloatChol.c b/src/matrixOperations/chol/testFloatChol.c index eea75ea4..884d0478 100644 --- a/src/matrixOperations/chol/testFloatChol.c +++ b/src/matrixOperations/chol/testFloatChol.c @@ -44,11 +44,11 @@ static void scholaTest(void){ static void ccholsTest(void){ floatComplex in; - float out; + floatComplex out; in=FloatComplex(3,1); - printf("\n >>> ZCholS <<<\n"); + printf("\n >>> CCholS <<<\n"); out=cchols(in); - printf("result : %f\n",out); + printf("result : %f\n",creals(out)); } |