GRASS Programmer's Manual
6.4.2(2012)
|
00001 #include <stdio.h> 00002 #include <math.h> 00003 00004 00005 double *omnibus_moments(double *x, int n) 00006 { 00007 double diff, mean = 0., fssm, tssm, sum_cube = 0., sum_four = 0., 00008 sum_sq = 0.; 00009 static double y[2]; 00010 int i; 00011 00012 for (i = 0; i < n; ++i) 00013 mean += x[i]; 00014 00015 mean /= n; 00016 00017 for (i = 0; i < n; ++i) { 00018 diff = x[i] - mean; 00019 sum_sq += diff * diff; 00020 sum_cube += diff * diff * diff; 00021 sum_four += diff * diff * diff * diff; 00022 } 00023 00024 /* 00025 fprintf (stdout,"n %d x-bar %g sum^2 %g sum^3 %g sum^4 %g \n",n,mean,sum_sq,sum_cube,sum_four); 00026 */ 00027 tssm = sqrt((double)n) * sum_cube / pow(sum_sq, 1.5); 00028 fssm = n * sum_four / (sum_sq * sum_sq); 00029 00030 #ifdef NOISY 00031 fprintf(stdout, 00032 " TESTS OF COMPOSITE DISTRIBUTIONAL HYPOTHESES\n"); 00033 fprintf(stdout, " TEST1 TSM =%10.4f FSM =%10.4f\n", tssm, fssm); 00034 #endif /* NOISY */ 00035 00036 y[0] = tssm; 00037 y[1] = fssm; 00038 00039 return y; 00040 }