summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortorset2009-02-06 14:44:22 +0000
committertorset2009-02-06 14:44:22 +0000
commitf737d894588ca911f4316540c3c57b81c28a799c (patch)
tree4fd86a0fdff67d5125629424f27fd76285ea7c05 /src
parentaa569c84c88bfcb86a4561e1a928ffc3276336a5 (diff)
downloadscilab2c-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.c7
-rw-r--r--src/matrixOperations/chol/schola.c20
-rw-r--r--src/matrixOperations/chol/testDoubleChol.c4
-rw-r--r--src/matrixOperations/chol/testFloatChol.c6
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));
}