summaryrefslogtreecommitdiff
path: root/src/matrixOperations
diff options
context:
space:
mode:
Diffstat (limited to 'src/matrixOperations')
-rw-r--r--src/matrixOperations/chol/cchola.c1
-rw-r--r--src/matrixOperations/chol/schola.c2
-rw-r--r--src/matrixOperations/chol/testDoubleChol.c1
-rw-r--r--src/matrixOperations/determ/cdeterma.c2
-rw-r--r--src/matrixOperations/determ/ddeterma.c2
-rw-r--r--src/matrixOperations/determ/sdeterma.c2
-rw-r--r--src/matrixOperations/determ/zdeterma.c2
-rw-r--r--src/matrixOperations/division/cldivma.c2
-rw-r--r--src/matrixOperations/division/srdivma.c2
-rw-r--r--src/matrixOperations/division/testMatrixRDivision.c3
-rw-r--r--src/matrixOperations/inversion/dinverma.c3
-rw-r--r--src/matrixOperations/inversion/zinverma.c3
-rw-r--r--src/matrixOperations/logm/clogma.c4
-rw-r--r--src/matrixOperations/logm/dlogma.c2
-rw-r--r--src/matrixOperations/logm/slogma.c5
-rw-r--r--src/matrixOperations/logm/testDoubleLogm.c3
-rw-r--r--src/matrixOperations/logm/zlogma.c8
17 files changed, 42 insertions, 5 deletions
diff --git a/src/matrixOperations/chol/cchola.c b/src/matrixOperations/chol/cchola.c
index a00718c1..4ebf473e 100644
--- a/src/matrixOperations/chol/cchola.c
+++ b/src/matrixOperations/chol/cchola.c
@@ -54,6 +54,7 @@ void cchola(floatComplex * in, int size, floatComplex *out){
out[j+i*size]=FloatComplex(0,0);
}
}
+ free(tmp);
#else
/* Do not use Lapack functions*/
diff --git a/src/matrixOperations/chol/schola.c b/src/matrixOperations/chol/schola.c
index 1c9e9a6e..79c739b9 100644
--- a/src/matrixOperations/chol/schola.c
+++ b/src/matrixOperations/chol/schola.c
@@ -46,7 +46,7 @@ void schola(float * in, int size, float *out){
out[j+i*size]=0;
}
}
-
+ free(tmp);
#else
/* Do not use Lapack functions*/
int i=0, j=0, k=0;
diff --git a/src/matrixOperations/chol/testDoubleChol.c b/src/matrixOperations/chol/testDoubleChol.c
index bf58480c..b96888ff 100644
--- a/src/matrixOperations/chol/testDoubleChol.c
+++ b/src/matrixOperations/chol/testDoubleChol.c
@@ -91,6 +91,7 @@ static void zcholaTest(void){
if (zimags(out[i])>1e-16)
assert( (fabs(zimags(out[i])-resI[i]) / fabs(zimags(out[i]))) <1e-15);
}
+ free(out);
}
diff --git a/src/matrixOperations/determ/cdeterma.c b/src/matrixOperations/determ/cdeterma.c
index 343b0a83..f55a6703 100644
--- a/src/matrixOperations/determ/cdeterma.c
+++ b/src/matrixOperations/determ/cdeterma.c
@@ -138,6 +138,8 @@ floatComplex cdeterma(floatComplex *in, int size){
for (i=0;i<size;i++){
out = cmuls(out,inCopy[i*size+i]);
}
+ free(inCopy);
+ break;
}
#endif
diff --git a/src/matrixOperations/determ/ddeterma.c b/src/matrixOperations/determ/ddeterma.c
index 75ee6ed9..4c1703e1 100644
--- a/src/matrixOperations/determ/ddeterma.c
+++ b/src/matrixOperations/determ/ddeterma.c
@@ -84,6 +84,8 @@ double ddeterma(double * in, int size){
for (i=0;i<size;i++){
out *= inCopy[i*size+i];
}
+ free(inCopy);
+ break;
}
#endif
diff --git a/src/matrixOperations/determ/sdeterma.c b/src/matrixOperations/determ/sdeterma.c
index bef0d728..cdb4d1f7 100644
--- a/src/matrixOperations/determ/sdeterma.c
+++ b/src/matrixOperations/determ/sdeterma.c
@@ -84,6 +84,8 @@ float sdeterma(float * in, int size){
for (i=0;i<size;i++){
out *= inCopy[i*size+i];
}
+ free(inCopy);
+ break;
}
diff --git a/src/matrixOperations/determ/zdeterma.c b/src/matrixOperations/determ/zdeterma.c
index 73ab692a..a1d8b879 100644
--- a/src/matrixOperations/determ/zdeterma.c
+++ b/src/matrixOperations/determ/zdeterma.c
@@ -127,6 +127,8 @@ doubleComplex zdeterma(doubleComplex * in, int size){
for (i=0;i<size;i++){
out = zmuls(out,inCopy[i*size+i]);
}
+ free(inCopy);
+ break;
}
#endif
return out;
diff --git a/src/matrixOperations/division/cldivma.c b/src/matrixOperations/division/cldivma.c
index b912a7de..9e95b468 100644
--- a/src/matrixOperations/division/cldivma.c
+++ b/src/matrixOperations/division/cldivma.c
@@ -10,7 +10,7 @@
*
*/
-
+/******FIXME********/
/**** WARNING NOT WORK AT ALL FOR THE MOMENT ***/
/**** Because of problem of conversion float-> double ****/
#include "matrixDivision.h"
diff --git a/src/matrixOperations/division/srdivma.c b/src/matrixOperations/division/srdivma.c
index a4ecad61..f1706ccd 100644
--- a/src/matrixOperations/division/srdivma.c
+++ b/src/matrixOperations/division/srdivma.c
@@ -10,7 +10,7 @@
*
*/
-
+/****FIXME****/
/**** WARNING NOT WORK AT ALL FOR THE MOMENT ***/
/**** Because of problem of conversion float-> double ****/
#include "matrixDivision.h"
diff --git a/src/matrixOperations/division/testMatrixRDivision.c b/src/matrixOperations/division/testMatrixRDivision.c
index 87c58461..2fb086a7 100644
--- a/src/matrixOperations/division/testMatrixRDivision.c
+++ b/src/matrixOperations/division/testMatrixRDivision.c
@@ -451,6 +451,9 @@ static void zrdivmaTest ( void ){
assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 1e-15 ) ;
}
+
+ free(Result);
+ free(out);
}
static int testRDivma (void) {
diff --git a/src/matrixOperations/inversion/dinverma.c b/src/matrixOperations/inversion/dinverma.c
index 56161942..6f2508fd 100644
--- a/src/matrixOperations/inversion/dinverma.c
+++ b/src/matrixOperations/inversion/dinverma.c
@@ -30,6 +30,9 @@ void dinverma ( double* in, double* out, int leadDimIn )
dgetrf_ ( &leadDimIn, &leadDimIn, out, &leadDimIn, vectPivot, &info );
dgetri_ ( &leadDimIn, out, &leadDimIn , vectPivot, work , &leadDimIn , &info );
+
+ free(vectPivot);
+ free(work);
}
diff --git a/src/matrixOperations/inversion/zinverma.c b/src/matrixOperations/inversion/zinverma.c
index 8bb69661..bc9d80b1 100644
--- a/src/matrixOperations/inversion/zinverma.c
+++ b/src/matrixOperations/inversion/zinverma.c
@@ -30,6 +30,7 @@ void zinverma ( doubleComplex* in, doubleComplex* out, int leadDimIn )
zgetrf_ ( &leadDimIn, &leadDimIn, out, &leadDimIn, vectPivot, &info );
zgetri_ ( &leadDimIn, out, &leadDimIn , vectPivot, work , &leadDimIn , &info );
-
+ free(vectPivot);
+ free(work);
}
diff --git a/src/matrixOperations/logm/clogma.c b/src/matrixOperations/logm/clogma.c
index ebad5814..f2614b0e 100644
--- a/src/matrixOperations/logm/clogma.c
+++ b/src/matrixOperations/logm/clogma.c
@@ -30,6 +30,10 @@ void clogma (floatComplex* in, int size, floatComplex* out){
for(i=0;i<size*size;i++)
out[i]=FloatComplex( (float)zreals(outCopy[i]),(float)zimags(outCopy[i]));
+
+
+ free(inCopy);
+ free(outCopy);
}
diff --git a/src/matrixOperations/logm/dlogma.c b/src/matrixOperations/logm/dlogma.c
index 0cee3c09..8a4986b5 100644
--- a/src/matrixOperations/logm/dlogma.c
+++ b/src/matrixOperations/logm/dlogma.c
@@ -23,4 +23,6 @@ void dlogma (double* in, int size, doubleComplex* out){
for (i=0;i<size*size;i++) inCpx[i] = DoubleComplex(in[i],0);
zlogma(inCpx, size, out);
+
+ free(inCpx);
}
diff --git a/src/matrixOperations/logm/slogma.c b/src/matrixOperations/logm/slogma.c
index 319c82f2..930bf752 100644
--- a/src/matrixOperations/logm/slogma.c
+++ b/src/matrixOperations/logm/slogma.c
@@ -26,5 +26,8 @@ void slogma (float* in, int size, floatComplex* out){
zlogma(inCpx, size, outCopy);
for(i=0;i<size*size;i++)
- out[i]=FloatComplex( (float)zreals(outCopy[i]),(float)zimags(outCopy[i]));
+ out[i]=FloatComplex( (float)zreals(outCopy[i]),(float)zimags(outCopy[i]));
+
+ free(inCpx);
+ free(outCopy);
}
diff --git a/src/matrixOperations/logm/testDoubleLogm.c b/src/matrixOperations/logm/testDoubleLogm.c
index 44deb745..8b31b857 100644
--- a/src/matrixOperations/logm/testDoubleLogm.c
+++ b/src/matrixOperations/logm/testDoubleLogm.c
@@ -31,6 +31,9 @@ static void zlogmaTest(void){
zlogma(in,3,out);
for(i=0;i<9;i++) printf("out[%d] = %f + %f *i\n",i,zreals(out[i]),zimags(out[i]));
+
+ free(in);
+ free(out);
}
static int logmTest(void){
diff --git a/src/matrixOperations/logm/zlogma.c b/src/matrixOperations/logm/zlogma.c
index 8fb2fa38..37516822 100644
--- a/src/matrixOperations/logm/zlogma.c
+++ b/src/matrixOperations/logm/zlogma.c
@@ -103,5 +103,13 @@ void zlogma (doubleComplex* in, int size, doubleComplex* out){
/* Vp * diag(log(diag(vp))*inv(Vp) */
zmulma(tmp, size, size, eigenvectors, size, size, out);
+
+ free(eigenvalues);
+ free(eigenvectors);
+ free(tmp);
+ free(pdblWork);
+ free(pdblRWork);
+ free(inCopy);
+
}