-\r
-\r
-void \r
-vectorNumericStatistics (std::vector<double> vec, const int nPoints, double& min, double& max, double& mean, double& mode, double& median, double& stddev)\r
-{\r
- if (nPoints <= 0)\r
- return;\r
- \r
- mean = 0;\r
- min = vec[0];\r
- max = vec[0];\r
- int i;\r
- for (i = 0; i < nPoints; i++) {\r
- double v = vec[i];\r
- if (v > max)\r
- max = v;\r
- if (v < min)\r
- min = v;\r
- mean += v;\r
- }\r
- mean /= nPoints;\r
- \r
- static const int nbin = 1024;\r
- int hist[ nbin ] = {0};\r
- double spread = max - min;\r
- mode = 0;\r
- stddev = 0;\r
- for (i = 0; i < nPoints; i++) {\r
- double v = vec[i];\r
- int b = static_cast<int>((((v - min) / spread) * (nbin - 1)) + 0.5);\r
- hist[b]++;\r
- double diff = (v - mean);\r
- stddev += diff * diff;\r
- }\r
- stddev = sqrt (stddev / nPoints);\r
- \r
- int max_binindex = 0;\r
- int max_bin = -1;\r
- for (int ibin = 0; ibin < nbin; ibin++) {\r
- if (hist[ibin] > max_bin) {\r
- max_bin = hist[ibin];\r
- max_binindex = ibin;\r
- }\r
- }\r
- \r
- mode = (max_binindex * spread / (nbin - 1)) + min;\r
- \r
- std::sort(vec.begin(), vec.end());\r
- \r
- if (nPoints % 2) // Odd\r
- median = vec[((nPoints - 1) / 2)];\r
- else // Even\r
- median = (vec[ (nPoints / 2) - 1 ] + vec[ nPoints / 2 ]) / 2;\r
-}\r
+
+
+void
+vectorNumericStatistics (std::vector<double> vec, const int nPoints, double& min, double& max, double& mean, double& mode, double& median, double& stddev)
+{
+ if (nPoints <= 0)
+ return;
+
+ mean = 0;
+ min = vec[0];
+ max = vec[0];
+ int i;
+ for (i = 0; i < nPoints; i++) {
+ double v = vec[i];
+ if (v > max)
+ max = v;
+ if (v < min)
+ min = v;
+ mean += v;
+ }
+ mean /= nPoints;
+
+ static const int nbin = 1024;
+ int hist[ nbin ] = {0};
+ double spread = max - min;
+ mode = 0;
+ stddev = 0;
+ for (i = 0; i < nPoints; i++) {
+ double v = vec[i];
+ int b = static_cast<int>((((v - min) / spread) * (nbin - 1)) + 0.5);
+ hist[b]++;
+ double diff = (v - mean);
+ stddev += diff * diff;
+ }
+ stddev = sqrt (stddev / nPoints);
+
+ int max_binindex = 0;
+ int max_bin = -1;
+ for (int ibin = 0; ibin < nbin; ibin++) {
+ if (hist[ibin] > max_bin) {
+ max_bin = hist[ibin];
+ max_binindex = ibin;
+ }
+ }
+
+ mode = (max_binindex * spread / (nbin - 1)) + min;
+
+ std::sort(vec.begin(), vec.end());
+
+ if (nPoints % 2) // Odd
+ median = vec[((nPoints - 1) / 2)];
+ else // Even
+ median = (vec[ (nPoints / 2) - 1 ] + vec[ nPoints / 2 ]) / 2;
+}