histogram - fixed missing cases which have the maximum value
[pspp] / src / math / histogram.c
index 9158590dd75c3a140244292004087a773eddec3c..e46986d2e0dff4ef6ba4a445cbc9c12aa34b7d0b 100644 (file)
@@ -45,8 +45,17 @@ static void
 acc (struct statistic *s, const struct ccase *cx UNUSED, double c, double cc UNUSED, double y)
 {
   struct histogram *hist = UP_CAST (s, struct histogram, parent);
+  gsl_histogram *gslh = hist->gsl_hist;
 
-  gsl_histogram_accumulate (hist->gsl_hist, y, c);
+  /* Include cases which are just on the boundary */
+  if (y == gsl_histogram_max (gslh))
+    {
+      double lower, upper;
+      gsl_histogram_get_range (gslh, gsl_histogram_bins (gslh)-1, &lower, &upper);
+      gsl_histogram_accumulate (gslh, lower + (upper - lower)/2.0, c);
+    }
+  else
+    gsl_histogram_accumulate (hist->gsl_hist, y, c);
 }
 
 static void