diff options
Diffstat (limited to 'src/c/statisticsFunctions/variancef')
10 files changed, 69 insertions, 72 deletions
diff --git a/src/c/statisticsFunctions/variancef/ccolumnvariancefa.c b/src/c/statisticsFunctions/variancef/ccolumnvariancefa.c index bda397d9..4b00a087 100644 --- a/src/c/statisticsFunctions/variancef/ccolumnvariancefa.c +++ b/src/c/statisticsFunctions/variancef/ccolumnvariancefa.c @@ -12,8 +12,9 @@ #include "variancef.h" +#include "matrixTranspose.h" -void ccolumnvariancea(floatComplex *in1, int lines, int columns,floatComplex *in2, floatComplex* out){ +void ccolumnvariancefa(floatComplex *in1, int lines, int columns,floatComplex *in2, floatComplex* out){ int i = 0 ; diff --git a/src/c/statisticsFunctions/variancef/cvariancefa.c b/src/c/statisticsFunctions/variancef/cvariancefa.c index 71f29be8..4f4871c6 100644 --- a/src/c/statisticsFunctions/variancef/cvariancefa.c +++ b/src/c/statisticsFunctions/variancef/cvariancefa.c @@ -19,18 +19,17 @@ floatComplex cvariancefa(floatComplex *in1, int size, floatComplex *in2) int i = 0 ; floatComplex temp = FloatComplex (0.0f, 0.0f ); floatComplex accumulate =FloatComplex (0.0f, 0.0f ); - float accumulateFre = 0.0f; + floatComplex accumulateFre = FloatComplex (0.0f, 0.0f ); floatComplex meanf = cmeanfa (in1 , size , in2); - //printf("\n\tComplex meanf result : %lf \t+ %lf i " ,creals( meanf) ,cimags( meanf)) ; + for(i = 0 ; i < size ; ++i) { temp = cpows ( cdiffs (in1[i] , meanf ) ,FloatComplex (2.0f, 0.0f ) ); temp = cmuls( in2[i] , temp); - //printf("\n\tComplex accumulate : %lf \t+ %lf i " ,creals(temp) ,cimags(temp)) ; + accumulate = cadds( temp , accumulate); - accumulateFre += creals(in2[i]); + accumulateFre = cadds (in2[i] ,accumulateFre ); } -//printf("\n\tComplex division result : %lf \t+ %lf i / %lf " ,creals(accumulate) ,cimags(accumulate),accumulateFre) ; - return FloatComplex( creals(accumulate) /(accumulateFre -1), cimags(accumulate) /(accumulateFre -1)); + return crdivs (accumulate , cdiffs (accumulateFre ,FloatComplex(1.0f,0.0f)) ); } diff --git a/src/c/statisticsFunctions/variancef/dcolumnvariancefa.c b/src/c/statisticsFunctions/variancef/dcolumnvariancefa.c index 39a32565..686e6de4 100644 --- a/src/c/statisticsFunctions/variancef/dcolumnvariancefa.c +++ b/src/c/statisticsFunctions/variancef/dcolumnvariancefa.c @@ -11,6 +11,7 @@ */ #include "variancef.h" +#include "matrixTranspose.h" void dcolumnvariancefa(double *in1, int lines, int columns, double *in2, double* out){ diff --git a/src/c/statisticsFunctions/variancef/dvariancefa.c b/src/c/statisticsFunctions/variancef/dvariancefa.c index 7ca40663..32bd38ca 100644 --- a/src/c/statisticsFunctions/variancef/dvariancefa.c +++ b/src/c/statisticsFunctions/variancef/dvariancefa.c @@ -23,7 +23,7 @@ double dvariancefa(double *in1, int size , double * in2) for(i = 0 ; i < size ; ++i) { - temp = spows ( (in1[i] - meanf ) ,2 ); + temp = dpows ( (in1[i] - meanf ) ,2 ); temp *= in2[i]; accumulate += temp ; diff --git a/src/c/statisticsFunctions/variancef/srowvariancefa.c b/src/c/statisticsFunctions/variancef/srowvariancefa.c index 26f55336..36c4783d 100644 --- a/src/c/statisticsFunctions/variancef/srowvariancefa.c +++ b/src/c/statisticsFunctions/variancef/srowvariancefa.c @@ -10,12 +10,12 @@ * */ -#include "variance.h" +#include "variancef.h" -void srowvariancea(float *in, int lines, int columns, float* out){ +void srowvariancefa(float *in1, int lines, int columns, float *in2, float* out){ int i = 0 ; for ( i = 0; i < columns ; i++) - out[i] = svariancefa ( in + i*lines , lines ) ; + out[i] = svariancefa ( in1 + i*lines , lines,in2 + i*lines ) ; } diff --git a/src/c/statisticsFunctions/variancef/testDoubleVariancef.c b/src/c/statisticsFunctions/variancef/testDoubleVariancef.c index 2e7ecac3..1102ae18 100644 --- a/src/c/statisticsFunctions/variancef/testDoubleVariancef.c +++ b/src/c/statisticsFunctions/variancef/testDoubleVariancef.c @@ -21,16 +21,14 @@ #define ERROR(x) printf("diff = %e\n", x) static int dvariancefsTest(void) { - double value1 = 3.0; - double value2 = 1.123456789f; - double coef1 = 56.0 ; - double coef2 = 2.0 ; + printf("\n>>>> variancef Double Scalar Test\n"); - printf("result : %lf " ,dvariancefs(value1,coef1)) ; + printf("result : %e " ,dvariancefs(value1,coef1)) ; - assert( ( dvariancefs(value1,coef1) ) == 0.0 ); - assert( ( dvariancefs(value2,coef2) ) == 0.0 ); + assert( ( dvariancefs(3.0,56.0) ) == 0.0 ); + assert( ( dvariancefs( 1.123456789 ,2.0) ) == 0.0 ); + return 0; } @@ -52,14 +50,14 @@ static int dvariancefaTest(void) { 7.0}; printf("\n>>>> variancef Double Array Test\n"); - printf("result1 : %lf " ,dvariancefa(table1, 3, coef1)) ; - printf("result2 : %lf " ,dvariancefa(table2, 5, coef2)) ; + printf("result1 : %e " ,dvariancefa(table1, 3, coef1)) ; + printf("result2 : %e " ,dvariancefa(table2, 5, coef2)) ; assert((dvariancefa(table1, 3, coef1) - 8.000000000 )/ dvariancefa(table1, 3 ,coef1) < 1e-6); assert((dvariancefa(table2, 5, coef2) - 1.916666666 )/ dvariancefa(table2, 5 ,coef2) < 1e-6); return 0; } - +/* static int dcolumnvariancefaTest(void) { int i = 0; double table1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0}; @@ -73,7 +71,7 @@ static int dcolumnvariancefaTest(void) { double columnMeanmedTable2_5_2[5] = {0}; printf("\n>>>> Column Variancef Double Array Test\n"); - /* + [ 1 2 3 ] [10 11 12 ] [ 4 5 6 ].*[ 1 2 3 ] => [ 68 32 146 ] [ 7 8 9 ] [ 5 6 7 ] @@ -82,15 +80,15 @@ static int dcolumnvariancefaTest(void) { assert( ( fabs(columnMeanmedTable1_3_3[0] ) - ( 68.0 / 33.0 ) ) / fabs ( columnMeanmedTable1_3_3[0] ) < 1e-6 ); assert( ( fabs(columnMeanmedTable1_3_3[1] ) - ( 32.0 / 6.0 ) ) / fabs ( columnMeanmedTable1_3_3[1] ) < 1e-6 ); assert( ( fabs(columnMeanmedTable1_3_3[2] ) - ( 146.0 / 18.0 ) ) / fabs ( columnMeanmedTable1_3_3[2] ) < 1e-6 ); -*/ - /* + + [ 1 2 3 4 5 6 7 8 9 ] => [ 45 ] - */ + dcolumnvariancefa(table1, 1, 9, coef1 ,columnMeanmedTable1_1_9); - printf("result qui foire : %lf\n " ,columnMeanmedTable1_1_9[0]) ; + printf("result qui foire : %e\n " ,columnMeanmedTable1_1_9[0]) ; assert( ( fabs(columnMeanmedTable1_1_9[0] ) - ( 1.146666666f ) ) / fabs ( columnMeanmedTable1_1_9[0] ) < 1e-6 ); - /* + [ 1 ] [ 2 ] [ 3 ] @@ -135,10 +133,10 @@ static int dcolumnvariancefaTest(void) { for ( i = 0 ; i < 5 ; ++i) { printf("columnMeanmedTable2_5_2[%d] = %e\n", i, columnMeanmedTable2_5_2[i]); } -*/ + return 0; } - +*/ /* static int srowvariancefaTest(void) { int i = 0; @@ -209,16 +207,12 @@ static int srowvariancefaTest(void) { */ static int zvariancefsTest(void) { - doubleComplex value1 = DoubleComplex(3.0, 3.0); - doubleComplex coef1 = DoubleComplex(3.0, 0.0); - doubleComplex value2 = DoubleComplex(1.123456789, 1.123456789); - doubleComplex coef2 = DoubleComplex(9.0, 0.0); printf("\n>>>> Mean Double Complex Scalar Test\n"); - assert( zreals(zvariancefs(value1,coef1)) == 0.0 ); - assert( zimags(zvariancefs(value1,coef1)) == 0.0 ); - assert( zreals(zvariancefs(value2,coef2)) == 0.0 ); - assert( zimags(zvariancefs(value2,coef2)) == 0.0 ); + assert( zreals(zvariancefs(DoubleComplex(3.0, 0.0),DoubleComplex(3.0, 0.0))) == 0.0 ); + assert( zimags(zvariancefs(DoubleComplex(3.0, 0.0),DoubleComplex(3.0, 0.0))) == 0.0 ); + assert( zreals(zvariancefs(DoubleComplex(1.123456789, 1.123456789),DoubleComplex(9.0, 0.0))) == 0.0 ); + assert( zimags(zvariancefs(DoubleComplex(1.123456789, 1.123456789),DoubleComplex(9.0, 0.0))) == 0.0 ); return 0; } @@ -238,7 +232,7 @@ static int zvariancefaTest(void) { printf("\n>>>> Mean Double Complex Array Test\n"); result = zvariancefa(table1, 9, coef1); - /*printf("\nresult : %lf \t+ %lf i " ,zreals(result) ,zimags(result)) ;*/ + /*printf("\nresult : %e \t+ %e i " ,zreals(result) ,zimags(result)) ;*/ assert( fabs(zreals(result) - ( 1.3834586f ) ) / fabs ( zreals(result) ) < 1e-6 ); assert( fabs(zimags(result) - ( 9.6090226f ) ) / fabs ( zimags(result) ) < 1e-6 ); diff --git a/src/c/statisticsFunctions/variancef/testFloatVariancef.c b/src/c/statisticsFunctions/variancef/testFloatVariancef.c index c4b58c66..4363052e 100644 --- a/src/c/statisticsFunctions/variancef/testFloatVariancef.c +++ b/src/c/statisticsFunctions/variancef/testFloatVariancef.c @@ -20,17 +20,22 @@ #define ERROR(x) printf("diff = %e\n", x) + + #define VALUE1 3.0f + #define VALUE2 1.123456789f + #define COEF1 56.0f + #define COEF2 2.0f + + static int svariancefsTest(void) { - float value1 = 3.0f; - float value2 = 1.123456789f; - float coef1 = 56.0f ; - float coef2 = 2.0f ; printf("\n>>>> variancef Float Scalar Test\n"); - printf("result : %lf " ,svariancefs(value1,coef1)) ; + printf("result : %e " ,svariancefs(VALUE1,COEF1)) ; + + assert( ( svariancefs(VALUE1,COEF1) ) == 0.0f ); + assert( ( svariancefs(VALUE2,COEF2) ) == 0.0f ); + - assert( ( svariancefs(value1,coef1) ) == 0.0f ); - assert( ( svariancefs(value2,coef2) ) == 0.0f ); return 0; } @@ -52,14 +57,14 @@ static int svariancefaTest(void) { 7.0f}; printf("\n>>>> variancef Float Array Test\n"); - printf("result : %lf " ,svariancefa(table1, 3, coef1)) ; - printf("result : %lf " ,svariancefa(table2, 5, coef2)) ; + printf("result : %e " ,svariancefa(table1, 3, coef1)) ; + printf("result : %e " ,svariancefa(table2, 5, coef2)) ; assert(svariancefa(table1, 3, coef1) == 8.0f); assert((svariancefa(table2, 5, coef2) - 1.916666666 )/ svariancefa(table2, 5 ,coef2) < 1e-6); return 0; } - +/* static int scolumnvariancefaTest(void) { int i = 0; float table1[9] = {1.0f, 4.0f, 7.0f, 2.0f , 5.0f, 8.0f, 3.0f, 6.0f, 9.0f}; @@ -73,7 +78,7 @@ static int scolumnvariancefaTest(void) { float columnMeanmedTable2_5_2[5] = {0}; printf("\n>>>> Column Variancef Float Array Test\n"); - /* + [ 1 2 3 ] [10 11 12 ] [ 4 5 6 ].*[ 1 2 3 ] => [ 68 32 146 ] [ 7 8 9 ] [ 5 6 7 ] @@ -82,15 +87,15 @@ static int scolumnvariancefaTest(void) { assert( ( fabs(columnMeanmedTable1_3_3[0] ) - ( 68.0f / 33.0f ) ) / fabs ( columnMeanmedTable1_3_3[0] ) < 1e-6 ); assert( ( fabs(columnMeanmedTable1_3_3[1] ) - ( 32.0f / 6.0f ) ) / fabs ( columnMeanmedTable1_3_3[1] ) < 1e-6 ); assert( ( fabs(columnMeanmedTable1_3_3[2] ) - ( 146.0f / 18.0f ) ) / fabs ( columnMeanmedTable1_3_3[2] ) < 1e-6 ); -*/ - /* + + [ 1 2 3 4 5 6 7 8 9 ] => [ 45 ] - */ + scolumnvariancefa(table1, 1, 9, coef1 ,columnMeanmedTable1_1_9); - printf("result qui foire : %lf\n " ,columnMeanmedTable1_1_9[0]) ; + printf("result qui foire : %e\n " ,columnMeanmedTable1_1_9[0]) ; assert( ( fabs(columnMeanmedTable1_1_9[0] ) - ( 1.146666666f ) ) / fabs ( columnMeanmedTable1_1_9[0] ) < 1e-6 ); - /* + [ 1 ] [ 2 ] [ 3 ] @@ -135,10 +140,10 @@ static int scolumnvariancefaTest(void) { for ( i = 0 ; i < 5 ; ++i) { printf("columnMeanmedTable2_5_2[%d] = %e\n", i, columnMeanmedTable2_5_2[i]); } -*/ + return 0; } - +*/ /* static int srowvariancefaTest(void) { int i = 0; @@ -209,16 +214,13 @@ static int srowvariancefaTest(void) { */ static int cvariancefsTest(void) { - floatComplex value1 = FloatComplex(3.0f, 3.0f); - floatComplex coef1 = FloatComplex(3.0f, 0.0f); - floatComplex value2 = FloatComplex(1.123456789, 1.123456789); - floatComplex coef2 = FloatComplex(9.0f, 0.0f); + printf("\n>>>> Mean Float Complex Scalar Test\n"); - assert( creals(cvariancefs(value1,coef1)) == 0.0f ); - assert( cimags(cvariancefs(value1,coef1)) == 0.0f ); - assert( creals(cvariancefs(value2,coef2)) == 0.0f ); - assert( cimags(cvariancefs(value2,coef2)) == 0.0f ); + assert( creals(cvariancefs(FloatComplex(3.0f, 3.0f),FloatComplex(3.0f, 0.0f);)) == 0.0f ); + assert( cimags(cvariancefs(FloatComplex(3.0f, 3.0f),FloatComplex(3.0f, 0.0f);)) == 0.0f ); + assert( creals(cvariancefs(FloatComplex(1.123456789f, 1.123456789f),FloatComplex(1.123456789f, 1.123456789f))) == 0.0f ); + assert( cimags(cvariancefs(FloatComplex(1.123456789f, 1.123456789f),FloatComplex(1.123456789f, 1.123456789f))) == 0.0f ); return 0; } diff --git a/src/c/statisticsFunctions/variancef/zcolumnvariancefa.c b/src/c/statisticsFunctions/variancef/zcolumnvariancefa.c index 40a86bdc..47fee75b 100644 --- a/src/c/statisticsFunctions/variancef/zcolumnvariancefa.c +++ b/src/c/statisticsFunctions/variancef/zcolumnvariancefa.c @@ -12,8 +12,9 @@ #include "variancef.h" +#include "matrixTranspose.h" -void zcolumnvariancea(doubleComplex *in1, int lines, int columns,doubleComplex *in2 , doubleComplex* out){ +void zcolumnvariancefa(doubleComplex *in1, int lines, int columns,doubleComplex *in2 , doubleComplex* out){ int i = 0 ; diff --git a/src/c/statisticsFunctions/variancef/zrowvariancefa.c b/src/c/statisticsFunctions/variancef/zrowvariancefa.c index 644b2ec7..b39b2ee7 100644 --- a/src/c/statisticsFunctions/variancef/zrowvariancefa.c +++ b/src/c/statisticsFunctions/variancef/zrowvariancefa.c @@ -12,7 +12,7 @@ #include "variancef.h" -void zrowvariancea(doubleComplex *in1, int lines, int columns,doubleComplex *in2, doubleComplex* out){ +void zrowvariancefa(doubleComplex *in1, int lines, int columns,doubleComplex *in2, doubleComplex* out){ int i = 0 ; diff --git a/src/c/statisticsFunctions/variancef/zvariancefa.c b/src/c/statisticsFunctions/variancef/zvariancefa.c index 6093bacf..6de6f11a 100644 --- a/src/c/statisticsFunctions/variancef/zvariancefa.c +++ b/src/c/statisticsFunctions/variancef/zvariancefa.c @@ -19,18 +19,17 @@ doubleComplex zvariancefa(doubleComplex *in1, int size, doubleComplex *in2) int i = 0 ; doubleComplex temp = DoubleComplex (0.0, 0.0 ); doubleComplex accumulate =DoubleComplex (0.0, 0.0 ); - double accumulateFre = 0.0; + doubleComplex accumulateFre = DoubleComplex (0.0, 0.0 ); doubleComplex meanf = zmeanfa (in1 , size , in2); - //printf("\n\tComplex meanf result : %lf \t+ %lf i " ,zreals( meanf) ,zimags( meanf)) ; for(i = 0 ; i < size ; ++i) { temp = zpows ( zdiffs (in1[i] , meanf ) ,DoubleComplex (2.0, 0.0 ) ); temp = zmuls( in2[i] , temp); - //printf("\n\tComplex accumulate : %lf \t+ %lf i " ,zreals(temp) ,zimags(temp)) ; + accumulate = zadds( temp , accumulate); - accumulateFre += zreals(in2[i]); + accumulateFre = zadds(in2[i ] ,accumulateFre ); } -//printf("\n\tComplex division result : %lf \t+ %lf i / %lf " ,zreals(accumulate) ,zimags(accumulate),accumulateFre) ; - return DoubleComplex( zreals(accumulate) /(accumulateFre -1), zimags(accumulate) /(accumulateFre -1)); + + return zrdivs(accumulate, zdiffs(accumulateFre ,DoubleComplex(1.0,0.0) )); } |