From: Friedrich Beckmann Date: Mon, 15 Feb 2016 18:26:43 +0000 (+0100) Subject: histogram - fixed missing cases which have the maximum value X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pspp;a=commitdiff_plain;h=ca4012bcf0f8790ceb8539b55bbc296d0802d5d7 histogram - fixed missing cases which have the maximum value The histogram uses gsl_histogram routines which exclude values from the last bin when the value is exactly the maximum value, i.e. the upper value of the last bin. This results in excluded cases in the histogram. This fixes bug #47139: https://savannah.gnu.org/bugs/?47139 --- diff --git a/src/math/histogram.c b/src/math/histogram.c index 9158590dd7..e46986d2e0 100644 --- a/src/math/histogram.c +++ b/src/math/histogram.c @@ -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