X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fmath%2Fpercentiles.h;h=ff46bea6dce45611b88c621df4f7e86a30d97534;hb=8b71948cd57dbd2787cb4c50525b957e9be8a62b;hp=87ef708af2af7a3c2d3168bbc3d2437ceec2a3e5;hpb=f5c108becd49d78f4898cab11352291f5689d24e;p=pspp-builds.git diff --git a/src/math/percentiles.h b/src/math/percentiles.h index 87ef708a..ff46bea6 100644 --- a/src/math/percentiles.h +++ b/src/math/percentiles.h @@ -1,29 +1,25 @@ -/* PSPP - A program for statistical analysis . -*-c-*- +/* PSPP - a program for statistical analysis. + Copyright (C) 2004, 2008, 2009 Free Software Foundation, Inc. -Copyright (C) 2004 Free Software Foundation, Inc. + 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 3 of the License, or + (at your option) any later version. -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. -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, see . */ -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. */ +#ifndef __PERCENTILES_H__ +#define __PERCENTILES_H__ -#ifndef PERCENTILES_H -#define PERCENTILES_H +#include - -#include - -struct weighted_value ; +#include "order-stats.h" /* The algorithm used to calculate percentiles */ enum pc_alg { @@ -35,48 +31,33 @@ enum pc_alg { PC_AEMPIRICAL } ; - - extern const char *const ptile_alg_desc[]; +struct percentile +{ + struct order_stats parent; + double ptile; + double w; -struct percentile { - - /* The break point of the percentile */ - double p; + /* Mutable */ + double g1; + double g1_star; - /* The value of the percentile */ - double v; + double g2; + double g2_star; }; - -/* Calculate the percentiles of the break points in pc_bp, - placing the values in pc_val. - wv is a sorted array of weighted values of the data set. +/* Create the Pth percentile. + W is the total sum of weights in the data set */ -void ptiles(struct hsh_table *pc_hash, - const struct weighted_value **wv, - int n_data, - double w, - enum pc_alg algorithm); - - -/* Calculate Tukey's Hinges and the Whiskers for the box plot*/ -void tukey_hinges(const struct weighted_value **wv, - int n_data, - double w, - double hinges[3]); - - +struct percentile *percentile_create (double p, double W); -/* Hash utility functions */ -int ptile_compare(const struct percentile *p1, - const struct percentile *p2, - void *aux); +/* Return the value of the percentile */ +double percentile_calculate (const struct percentile *ptl, enum pc_alg alg); -unsigned ptile_hash(const struct percentile *p, void *aux); +void percentile_dump (const struct percentile *ptl); #endif