diff options
Diffstat (limited to 'src/statisticsFunctions/variance/cvariancea.c')
-rw-r--r-- | src/statisticsFunctions/variance/cvariancea.c | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/src/statisticsFunctions/variance/cvariancea.c b/src/statisticsFunctions/variance/cvariancea.c index 5eb30567..9d43928d 100644 --- a/src/statisticsFunctions/variance/cvariancea.c +++ b/src/statisticsFunctions/variance/cvariancea.c @@ -16,35 +16,21 @@ floatComplex cvariancea(floatComplex *in, int size) { int i = 0 ; - /*here sumcis used to compensate the possible round off error to a less - important degree */ - floatComplex sum = FloatComplex ( 0 , 0 ) ; floatComplex temp = FloatComplex ( 0 , 0 ) ; - floatComplex sumc = FloatComplex ( 0 , 0 ) ; floatComplex variance = FloatComplex ( 0 , 0 ); floatComplex mean = cmeana ( in , size ) ; for ( i = 0 ; i < size ; i++) { - temp = cdiffs( in[i] , mean ) ; - sum = cadds ( sum , cpows ( temp , FloatComplex ( 2.0f, 0) ) ); - sumc = cadds ( sumc , temp ); - printf ( "%d r : %e i : %e\n" , i , creals(in[i]) , cimags (in[i])); - } - printf ( "\n\n" ) ; - /*we don't use sumc if equal to 0 otherwise we would have "nan" */ - if ( fabs ( creals ( sumc)) > 1e-08 || fabs ( cimags ( sumc)) > 1e-08 ) - { - variance = cpows ( sumc ,FloatComplex (2.0f , 0)) ; - variance = crdivs ( variance , FloatComplex ((float) size , 0 ) ) ; - variance = cdiffs ( sum , variance ); - variance = crdivs (variance , FloatComplex ((float) (size - 1),0 )); + sum = cadds ( sum , cpows ( temp , FloatComplex ( 2, 0) ) ); } - else - variance = crdivs (sum , FloatComplex ((float) (size - 1),0 )); + + variance = crdivs (sum , FloatComplex ( (float)(size - 1),0 )); return variance ; + + } |