summaryrefslogtreecommitdiff
path: root/src/matrixOperations/division
diff options
context:
space:
mode:
Diffstat (limited to 'src/matrixOperations/division')
-rw-r--r--src/matrixOperations/division/Makefile.am2
-rw-r--r--src/matrixOperations/division/Makefile.in2
-rw-r--r--src/matrixOperations/division/cldiva.c2
-rw-r--r--src/matrixOperations/division/crdiva.c2
-rw-r--r--src/matrixOperations/division/dldiva.c6
-rw-r--r--src/matrixOperations/division/drdiva.c21
-rw-r--r--src/matrixOperations/division/sldiva.c2
-rw-r--r--src/matrixOperations/division/srdiva.c2
-rw-r--r--src/matrixOperations/division/testMatrixLDivision.c61
-rw-r--r--src/matrixOperations/division/testMatrixRDivision.c33
-rw-r--r--src/matrixOperations/division/zldiva.c7
-rw-r--r--src/matrixOperations/division/zrdiva.c10
12 files changed, 99 insertions, 51 deletions
diff --git a/src/matrixOperations/division/Makefile.am b/src/matrixOperations/division/Makefile.am
index a021eecb..22a49a1b 100644
--- a/src/matrixOperations/division/Makefile.am
+++ b/src/matrixOperations/division/Makefile.am
@@ -12,6 +12,7 @@
libMatrixDivision_la_CFLAGS = -I $(top_builddir)/type \
-I $(top_builddir)/matrixOperations/includes \
+ -I $(top_builddir)/auxiliaryFunctions/includes \
-I $(top_builddir)/elementaryFunctions/includes
instdir = $(top_builddir)/lib
@@ -43,6 +44,7 @@ check_LDADD = $(top_builddir)/type/libDoubleComplex.la \
check_INCLUDES = -I $(top_builddir)/type \
-I $(top_builddir)/matrixOperations/includes \
+ -I $(top_builddir)/auxiliaryFunctions/includes \
-I $(top_builddir)/elementaryFunctions/includes
testMatrixLDivision_SOURCES = testMatrixLDivision.c
diff --git a/src/matrixOperations/division/Makefile.in b/src/matrixOperations/division/Makefile.in
index 7ae2546a..1910c826 100644
--- a/src/matrixOperations/division/Makefile.in
+++ b/src/matrixOperations/division/Makefile.in
@@ -212,6 +212,7 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
libMatrixDivision_la_CFLAGS = -I $(top_builddir)/type \
-I $(top_builddir)/matrixOperations/includes \
+ -I $(top_builddir)/auxiliaryFunctions/includes \
-I $(top_builddir)/elementaryFunctions/includes
instdir = $(top_builddir)/lib
@@ -237,6 +238,7 @@ check_LDADD = $(top_builddir)/type/libDoubleComplex.la \
check_INCLUDES = -I $(top_builddir)/type \
-I $(top_builddir)/matrixOperations/includes \
+ -I $(top_builddir)/auxiliaryFunctions/includes \
-I $(top_builddir)/elementaryFunctions/includes
testMatrixLDivision_SOURCES = testMatrixLDivision.c
diff --git a/src/matrixOperations/division/cldiva.c b/src/matrixOperations/division/cldiva.c
index 170380ca..26b2d188 100644
--- a/src/matrixOperations/division/cldiva.c
+++ b/src/matrixOperations/division/cldiva.c
@@ -54,7 +54,7 @@ void cldiva ( floatComplex* in1, int lines1, int columns1 ,
zldiva( dblin1 , lines1 , columns1 , dblin2 , lines2 , columns2 , dblout );
- for ( i = 0 ; i < Min(lines2,columns2) * lines1 ; i++ )
+ for ( i = 0 ; i < min(lines2,columns2) * lines1 ; i++ )
{
out[i] = FloatComplex ((float) zreals ( dblout[i]) , (float) zimags ( dblout[i])) ;
diff --git a/src/matrixOperations/division/crdiva.c b/src/matrixOperations/division/crdiva.c
index 70699ebf..57bc5630 100644
--- a/src/matrixOperations/division/crdiva.c
+++ b/src/matrixOperations/division/crdiva.c
@@ -53,7 +53,7 @@ void crdiva ( floatComplex* in1, int lines1, int columns1 ,
zrdiva( dblin1 , lines1 , columns1 , dblin2 , lines2 , columns2 , dblout );
- for ( i = 0 ; i < Min(lines2,columns2) * lines1 ; i++ )
+ for ( i = 0 ; i < min(lines2,columns2) * lines1 ; i++ )
{
out[i] = FloatComplex ((float) zreals ( dblout[i]) , (float) zimags ( dblout[i])) ;
diff --git a/src/matrixOperations/division/dldiva.c b/src/matrixOperations/division/dldiva.c
index 88b52f64..86d155fc 100644
--- a/src/matrixOperations/division/dldiva.c
+++ b/src/matrixOperations/division/dldiva.c
@@ -44,14 +44,14 @@ void dldiva (double* in1, int lines1, int columns1 ,
int *pJpvt = NULL;
int *pIwork = NULL;
- iWork = Max(4 * columns1, Max(Min(lines1, columns1) + 3 * lines1 + 1, 2 * Min(lines1, columns1) + columns2));
+ iWork = max(4 * columns1, max(min(lines1, columns1) + 3 * lines1 + 1, 2 * min(lines1, columns1) + columns2));
/* Array allocations*/
pAf = (double*)malloc(sizeof(double) * (unsigned int) lines1 * (unsigned int) columns1);
- pXb = (double*)malloc(sizeof(double) * (unsigned int) Max(lines1,columns1) * (unsigned int) columns1);
+ pXb = (double*)malloc(sizeof(double) * (unsigned int) max(lines1,columns1) * (unsigned int) columns1);
pRank = (int*)malloc(sizeof(int));
pIpiv = (int*)malloc(sizeof(int) *(unsigned int) columns1);
@@ -91,7 +91,7 @@ void dldiva (double* in1, int lines1, int columns1 ,
{
dblRcond = sqrt(dblEps);
cNorm = 'F';
- iMax = Max(lines1, columns1);
+ iMax = max(lines1, columns1);
C2F(dlacpy)(&cNorm, &lines1, &columns2, in2, &lines2, pXb, &iMax);
memset(pJpvt, 0x00,(unsigned int) sizeof(int) * (unsigned int) columns1);
C2F(dgelsy)( &lines1, &columns1, &columns2, in1, &lines1, pXb, &iMax,
diff --git a/src/matrixOperations/division/drdiva.c b/src/matrixOperations/division/drdiva.c
index bf94533d..e062ad58 100644
--- a/src/matrixOperations/division/drdiva.c
+++ b/src/matrixOperations/division/drdiva.c
@@ -43,13 +43,13 @@ void drdiva ( double * in1, int lines1, int columns1,
int *pJpvt = NULL;
int *pIwork = NULL;
- iWork = Max(4 * columns2, Max(Min(lines2, columns2) + 3 * lines2 + 1, 2 * Min(lines2, columns2) + lines1));
+ iWork = max(4 * columns2, max(min(lines2, columns2) + 3 * lines2 + 1, 2 * min(lines2, columns2) + lines1));
/* Array allocations*/
pAf = (double*)malloc(sizeof(double) * (unsigned int)columns2 * (unsigned int)lines2);
pAt = (double*)malloc(sizeof(double) * (unsigned int)columns2 *(unsigned int) lines2);
- pBt = (double*)malloc(sizeof(double) * (unsigned int)Max(lines2,columns2) * (unsigned int)lines1);
+ pBt = (double*)malloc(sizeof(double) * (unsigned int)max(lines2,columns2) * (unsigned int)lines1);
pRank = (int*)malloc(sizeof(int));
pIpiv = (int*)malloc(sizeof(int) * (unsigned int)columns2);
@@ -91,7 +91,7 @@ void drdiva ( double * in1, int lines1, int columns1,
{
dblRcond = sqrt(dblEps);
cNorm = 'F';
- iMax = Max(lines2, columns2);
+ iMax = max(lines2, columns2);
memset(pJpvt, 0x00, (unsigned int)sizeof(int) * (unsigned int)lines2);
dgelsy_(&columns2, &lines2, &lines1, pAt, &columns2, pBt, &iMax,
pJpvt, &dblRcond, &pRank[0], pDwork, &iWork, &iInfo);
@@ -111,7 +111,7 @@ void drdiva ( double * in1, int lines1, int columns1,
for(i = 0 ; i < lines1 ; i++)
{
ij = i + j * lines1;
- ji = j + i * Max(lines2, columns2);
+ ji = j + i * max(lines2, columns2);
out[ij] = pBt[ji];
}
}
@@ -130,16 +130,3 @@ void drdiva ( double * in1, int lines1, int columns1,
}
-int Max(int _dblVar1, int _dblVar2)
-{
- if(_dblVar1 > _dblVar2)
- return _dblVar1;
- return _dblVar2;
-}
-
-int Min(int _dblVar1, int _dblVar2)
-{
- if(_dblVar1 < _dblVar2)
- return _dblVar1;
- return _dblVar2;
-}
diff --git a/src/matrixOperations/division/sldiva.c b/src/matrixOperations/division/sldiva.c
index b75eb44f..bba5c85e 100644
--- a/src/matrixOperations/division/sldiva.c
+++ b/src/matrixOperations/division/sldiva.c
@@ -52,7 +52,7 @@ void sldiva ( float* in1, int lines1, int columns1 ,
dldiva( dblin1 , lines1 , columns1 , dblin2 , lines2 , columns2 , dblout );
- for ( i = 0 ; i < Min(lines2,columns2) * lines1 ; i++ )
+ for ( i = 0 ; i < min(lines2,columns2) * lines1 ; i++ )
{
out[i] = (float) dblout[i] ;
diff --git a/src/matrixOperations/division/srdiva.c b/src/matrixOperations/division/srdiva.c
index 343ba9c9..3aaa67df 100644
--- a/src/matrixOperations/division/srdiva.c
+++ b/src/matrixOperations/division/srdiva.c
@@ -52,7 +52,7 @@ void srdiva ( float* in1, int lines1, int columns1 ,
drdiva( dblin1 , lines1 , columns1 , dblin2 , lines2 , columns2 , dblout );
- for ( i = 0 ; i < Min(lines2,columns2) * lines1 ; i++ )
+ for ( i = 0 ; i < min(lines2,columns2) * lines1 ; i++ )
{
out[i] = (float) dblout[i] ;
diff --git a/src/matrixOperations/division/testMatrixLDivision.c b/src/matrixOperations/division/testMatrixLDivision.c
index 193eada6..43e3d561 100644
--- a/src/matrixOperations/division/testMatrixLDivision.c
+++ b/src/matrixOperations/division/testMatrixLDivision.c
@@ -297,11 +297,14 @@ static void dldivaTest ( void )
static void cldivaTest (void )
{
int i = 0 ;
-
+
float tin1[] = { 10.0f , 9.0f , 2.0f ,4.0f};
float tin2[] = { 1.0f , 2.0f};
-
+
+ /* float tin1[] = { 4.0f , 3.0f , 8.0f , 9.0f } ;
+ float tin2[] = { 1.0f , 3.0f , 2.0f , 4.0f } ;
+ */
floatComplex* in1 ;
floatComplex* in2 ;
floatComplex* out ;
@@ -314,6 +317,12 @@ static void cldivaTest (void )
Result[0] = FloatComplex ( 0 , 0 );
Result[1] = FloatComplex ( 0.5f , 0 );
+ /*
+ Result[0] = FloatComplex ( -1.25f , 0 );
+ Result[1] = FloatComplex ( 0.75f , 0 );
+ Result[2] = FloatComplex ( -1.16666666f , 0 );
+ Result[3] = FloatComplex ( 0.833333333333f , 0 );*/
+
cldiva ( in1 , ZLINES , ZCOLUMNS1 , in2 ,ZLINES , ZCOLUMNS2 , out) ;
for ( i = 0 ; i < (ZCOLUMNS1*ZCOLUMNS2 ) ; i++ )
@@ -323,9 +332,17 @@ static void cldivaTest (void )
fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
- assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 1e-06 );
- assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 1e-06 ) ;
- }
+ if ( creals(out[i]) < 1e-06 && creals (Result[i]) < 1e-08 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 1e-16 );
+
+
+ if ( cimags(out[i]) < 1e-06 && cimags (Result[i]) < 1e-08 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 1e-16 ) ;
+}
}
@@ -343,6 +360,10 @@ static void zldivaTest (void )
double tin1[] = { 10 , 9 , 2 ,4};
double tin2[] = { 1 , 2};
+/*
+ double tin1[] = { 4 , 3 , 8 , 9 } ;
+ double tin2[] = { 1 , 3 , 2 , 4 } ;
+*/
doubleComplex* in1 ;
@@ -356,6 +377,11 @@ static void zldivaTest (void )
Result[0] = DoubleComplex ( 0 , 0 );
Result[1] = DoubleComplex ( 0.5 , 0 );
+ /*
+ Result[0] = DoubleComplex ( -1.25 , 0 );
+ Result[1] = DoubleComplex ( 0.75 , 0 );
+ Result[2] = DoubleComplex ( -1.16666666 , 0 );
+ Result[3] = DoubleComplex ( 0.833333333333 , 0 ); */
zldiva ( in1 , ZLINES , ZCOLUMNS1 , in2 ,ZLINES , ZCOLUMNS2 , out) ;
@@ -366,9 +392,20 @@ static void zldivaTest (void )
fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) ,
fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])));
- assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 1e-17 );
- assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 1e-17 ) ;
- }
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+ if ( zreals(out[i]) < 1e-16 && zreals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 1e-16 );
+
+
+ if ( zimags(out[i]) < 1e-16 && zimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 1e-16 ) ;
+
+ }
}
@@ -386,14 +423,14 @@ static int testLDiva (void) {
printf("\n\n\n\t>>>> Double real Tests\n");
dldivaTest();
-
- printf("\n\t>>>> Float complex Tests\n");
- cldivaTest();
+
printf("\n\t>>>> Double complex Tests\n");
zldivaTest();
-
+ printf("\n\t>>>> Float complex Tests\n");
+ cldivaTest();
+
return 0;
}
diff --git a/src/matrixOperations/division/testMatrixRDivision.c b/src/matrixOperations/division/testMatrixRDivision.c
index c2296111..884bbc35 100644
--- a/src/matrixOperations/division/testMatrixRDivision.c
+++ b/src/matrixOperations/division/testMatrixRDivision.c
@@ -291,9 +291,18 @@ static void crdivaTest (void )
fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
- assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 1e-06 );
- assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 1e-06 ) ;
- }
+ if ( creals(out[i]) < 1e-06 && creals (Result[i]) < 1e-08 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 1e-16 );
+
+
+ if ( cimags(out[i]) < 1e-06 && cimags (Result[i]) < 1e-08 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 1e-16 ) ;
+
+ }
}
@@ -416,15 +425,25 @@ static void zrdivaTest ( void ){
zrdiva ( in1 , ZLINES1 , ZCOLUMNS , in2 ,ZLINES2 , ZCOLUMNS , out) ;
- for ( i = 0 ; i < (ZLINES2*ZCOLUMNS ) ; i++ )
+ for ( i = 0 ; i < (ZLINES2*ZCOLUMNS ) ; i++ )
{
printf ( "\t\t %d out : %e + %e * i result : %e + %e * i assert : %e + %e \n" ,
i ,zreals(out[i]) , zimags(out[i]) , zreals (Result[i]) , zimags (Result[i]),
fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) ,
fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])));
+
+ /* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
+
+ if ( zreals(out[i]) < 1e-16 && zreals (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 1e-16 );
+
- assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 1e-17 );
- assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 1e-17 ) ;
+ if ( zimags(out[i]) < 1e-16 && zimags (Result[i]) < 1e-18 )
+ assert ( 1 ) ;
+ else
+ assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 1e-16 ) ;
}
}
@@ -441,7 +460,7 @@ static int testRDiva (void) {
printf("\n\n\n\n\t>>>> Double real Tests\n");
drdivaTest();
- printf("\n\t>>>> Double complex Tests\n");
+ printf("\n\t>>>> Float complex Tests\n");
crdivaTest();
printf("\n\t>>>> Double complex Tests\n");
diff --git a/src/matrixOperations/division/zldiva.c b/src/matrixOperations/division/zldiva.c
index cc4cd479..c2586a6d 100644
--- a/src/matrixOperations/division/zldiva.c
+++ b/src/matrixOperations/division/zldiva.c
@@ -1,3 +1,4 @@
+
/*
* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
* Copyright (C) 2008-2008 - INRIA - Allan SIMON
@@ -45,7 +46,7 @@ void zldiva( doubleComplex* in1, int lines1, int columns1 ,
int *pIpiv = NULL;
int *pJpvt = NULL;
- iWork = Max(2*columns2, Min(lines2, columns2) + Max(2 * Min(lines2, columns2), Max(lines2 + 1, Min(lines2, columns2) + lines1)));
+ iWork = max(2*columns2, min(lines2, columns2) + max(2 * min(lines2, columns2), max(lines2 + 1, min(lines2, columns2) + lines1)));
@@ -53,7 +54,7 @@ void zldiva( doubleComplex* in1, int lines1, int columns1 ,
pAf = (doubleComplex*)malloc(sizeof(doubleComplex) *(unsigned int) lines1 *(unsigned int)columns1);
- pXb = (doubleComplex*)malloc(sizeof(doubleComplex) *(unsigned int) Max(lines1,columns1) *(unsigned int) columns2);
+ pXb = (doubleComplex*)malloc(sizeof(doubleComplex) *(unsigned int) max(lines1,columns1) *(unsigned int) columns2);
pIpiv = (int*)malloc(sizeof(int) * (unsigned int)columns1);
@@ -93,7 +94,7 @@ void zldiva( doubleComplex* in1, int lines1, int columns1 ,
{
dblRcond = sqrt(dblEps);
cNorm = 'F';
- iMax = Max(lines1, columns1);
+ iMax = max(lines1, columns1);
C2F(zlacpy)(&cNorm, &lines1, &columns2, in2, &lines1, pXb, &iMax);
memset(pJpvt, 0x00,(unsigned int) sizeof(int) * (unsigned int)columns1);
C2F(zgelsy)( &lines1, &columns1, &columns2, in1, &lines1, pXb, &iMax,
diff --git a/src/matrixOperations/division/zrdiva.c b/src/matrixOperations/division/zrdiva.c
index a456ce32..903873d4 100644
--- a/src/matrixOperations/division/zrdiva.c
+++ b/src/matrixOperations/division/zrdiva.c
@@ -46,7 +46,7 @@ void zrdiva( doubleComplex* in1, int lines1, int columns1 ,
int *pJpvt = NULL;
double *pRwork = NULL;
- iWork = Max(2*columns2, Min(lines2, columns2) + Max(2 * Min(lines2, columns2), Max(lines2 + 1, Min(lines2, columns2) + lines1)));
+ iWork = max(2*columns2, min(lines2, columns2) + max(2 * min(lines2, columns2), max(lines2 + 1, min(lines2, columns2) + lines1)));
@@ -55,7 +55,7 @@ void zrdiva( doubleComplex* in1, int lines1, int columns1 ,
poAf = (doubleComplex*)malloc(sizeof(doubleComplex) *(unsigned int) lines2 *(unsigned int) columns2);
poAt = (doubleComplex*)malloc(sizeof(doubleComplex) * (unsigned int)lines2 *(unsigned int) columns2);
- poBt = (doubleComplex*)malloc(sizeof(doubleComplex) *(unsigned int) Max(lines2, columns2) *(unsigned int) lines1);
+ poBt = (doubleComplex*)malloc(sizeof(doubleComplex) *(unsigned int) max(lines2, columns2) *(unsigned int) lines1);
pRank = (int*)malloc(sizeof(int));
pIpiv = (int*)malloc(sizeof(int) *(unsigned int) columns2);
@@ -79,7 +79,7 @@ void zrdiva( doubleComplex* in1, int lines1, int columns1 ,
{
for(i = 0 ; i < columns2 ; i++)
{
- ij = i + j * Max(lines2, columns2);
+ ij = i + j * max(lines2, columns2);
ji = j + i * lines1;
poBt[ij] = DoubleComplex (zreals ( in1[ji] ) , - zimags ( in1[ji] ) );
@@ -113,7 +113,7 @@ void zrdiva( doubleComplex* in1, int lines1, int columns1 ,
{
dblRcond = sqrt(dblEps);
cNorm = 'F';
- iMax = Max(lines2, columns2);
+ iMax = max(lines2, columns2);
memset(pJpvt, 0x00,(unsigned int) sizeof(int) *(unsigned int) lines2);
C2F(zgelsy)(&columns2, &lines2, &lines1, poAt, &columns2, poBt, &iMax,
@@ -133,7 +133,7 @@ void zrdiva( doubleComplex* in1, int lines1, int columns1 ,
for(i = 0 ; i < lines1 ; i++)
{
ij = i + j * lines1;
- ji = j + i * Max(lines2, columns2);
+ ji = j + i * max(lines2, columns2);
out[ij] = DoubleComplex ( zreals( poBt[ji]) , -zimags ( poBt[ji]));
printf ( "\n\t\t\t<debug>%e + %e\n " , zreals( poBt[ji]) , -zimags ( poBt[ji]));
}