/* Copyright (C) 1997,1998,1999,2000,2001 Franz Josef Och mkcls - a program for making word classes . 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef STATVAR_H #define STATVAR_H #include #include #include "Array.h" #include "mystl.h" #include "myleda.h" #include extern double compareStatVarQuantil; int compareStatVar(const void *p,const void *j); class StatV { protected: int n; double sum; double squareSum; double smallest,biggest; public: const char *title; StatV() : n(0),sum(0),squareSum(0),smallest(1e100),biggest(-1e100),title("") {} virtual void addValue(double a) { n++; sum+=a; squareSum+=a*a; if(smallest>a) smallest=a; if(biggest values; short sortedFlag; public: StatVar() : values(10,0.0,1),sortedFlag(0) {} virtual ~StatVar(){} double quantil(double percent=0.5); inline double value(int i) {return values[i];} void printValues(ostream &strm); virtual void addValue(double a) { sortedFlag=0; values[n]=a; StatV::addValue(a); } double getSigmaSmaller(); double getSigmaBigger(); }; #endif