X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fmath%2Fhistogram.c;fp=src%2Fmath%2Fhistogram.c;h=6097a470f656555c0c10d4fc29a2f7e3ccde916d;hb=dcf9b154cbcaa35c3d8459a201b77eec8bcb30bd;hp=0000000000000000000000000000000000000000;hpb=c514f5f05cc4f060959c392a0eb3e9f046e919d2;p=pspp-builds.git diff --git a/src/math/histogram.c b/src/math/histogram.c new file mode 100644 index 00000000..6097a470 --- /dev/null +++ b/src/math/histogram.c @@ -0,0 +1,53 @@ +/* PSPP - computes sample statistics. + Copyright (C) 2004 Free Software Foundation, Inc. + Written by John Darrington + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ + +#include +#include +#include +#include +#include "histogram.h" +#include "chart-geometry.h" + + +gsl_histogram * +histogram_create(double bins, double x_min, double x_max) +{ + int n; + double bin_width ; + double bin_width_2 ; + double upper_limit, lower_limit; + + gsl_histogram *hist = gsl_histogram_alloc(bins); + + bin_width = chart_rounded_tick((x_max - x_min)/ bins); + bin_width_2 = bin_width / 2.0; + + n = ceil( x_max / (bin_width_2) ) ; + if ( ! (n % 2 ) ) n++; + upper_limit = n * bin_width_2; + + n = floor( x_min / (bin_width_2) ) ; + if ( ! (n % 2 ) ) n--; + lower_limit = n * bin_width_2; + + gsl_histogram_set_ranges_uniform(hist, lower_limit, upper_limit); + + return hist; +} +