| /********************************************************************** |
| * File: statistc.h (Formerly stats.h) |
| * Description: Class description for STATS class. |
| * Author: Ray Smith |
| * Created: Mon Feb 04 16:19:07 GMT 1991 |
| * |
| * (C) Copyright 1991, Hewlett-Packard Ltd. |
| ** Licensed under the Apache License, Version 2.0 (the "License"); |
| ** you may not use this file except in compliance with the License. |
| ** You may obtain a copy of the License at |
| ** http://www.apache.org/licenses/LICENSE-2.0 |
| ** Unless required by applicable law or agreed to in writing, software |
| ** distributed under the License is distributed on an "AS IS" BASIS, |
| ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| ** See the License for the specific language governing permissions and |
| ** limitations under the License. |
| * |
| **********************************************************************/ |
| |
| #ifndef STATISTC_H |
| #define STATISTC_H |
| |
| #include <stdio.h> |
| #ifndef GRAPHICS_DISABLED |
| #include "scrollview.h" |
| #endif |
| #include "host.h" |
| |
| class DLLSYM STATS //statistics package |
| { |
| inT32 rangemin; //min of range |
| inT32 rangemax; //max of range |
| inT32 total_count; //no of samples |
| inT32 *buckets; //array of cells |
| |
| public: |
| STATS( //constructor |
| inT32 min, //min of range |
| inT32 max); //max of range |
| STATS(); //empty for arrays |
| |
| ~STATS (); //destructor |
| |
| bool set_range( //change range |
| inT32 min, //min of range |
| inT32 max); //max of range |
| |
| void clear(); //empty buckets |
| |
| void add( //add sample |
| inT32 value, //bucket |
| inT32 count); //no to add |
| |
| inT32 mode(); //get mode of samples |
| |
| float mean(); //get mean of samples |
| |
| float sd(); //standard deviation |
| |
| float ile( //percentile |
| float frac); //[0,1] for percentil |
| |
| inT32 min_bucket(); //Find min |
| |
| inT32 max_bucket(); //Find max |
| |
| float median(); //get median of samples |
| |
| void smooth( //apply blurring |
| inT32 factor); //filter to stats |
| inT32 cluster( //cluster samples |
| float lower, //thresholds |
| float upper, |
| float multiple, //distance threshold |
| inT32 max_clusters, //max no to make |
| STATS *clusters); //array of clusters |
| |
| inT32 pile_count( //access function |
| inT32 value //pile to count |
| ) { |
| return value > rangemin ? (value < rangemax |
| ? buckets[value - |
| rangemin] : buckets[rangemax - |
| rangemin - |
| 1]) : buckets[0]; |
| } |
| |
| inT32 get_total() { //access function |
| return total_count; //total of all piles |
| } |
| |
| BOOL8 local_min( //test local minness |
| inT32 x); |
| |
| void print( //print summary/table |
| FILE *fp, //file to print on |
| BOOL8 dump); //dump whole table |
| |
| void short_print( //print summary/table |
| FILE *fp, //file to print on |
| BOOL8 dump); //dump whole table |
| |
| #ifndef GRAPHICS_DISABLED |
| void plot( //draw histogram rect |
| ScrollView* window, //window to draw in |
| float xorigin, //origin of histo |
| float yorigin, //gram |
| float xscale, //size of one unit |
| float yscale, //size of one uint |
| ScrollView::Color colour); //colour to draw in |
| |
| void plotline( //draw histogram line |
| ScrollView* window, //window to draw in |
| float xorigin, //origin of histo |
| float yorigin, //gram |
| float xscale, //size of one unit |
| float yscale, //size of one uint |
| ScrollView::Color colour); //colour to draw in |
| #endif |
| }; |
| DLLSYM inT32 choose_nth_item( //fast median |
| inT32 index, //index to choose |
| float *array, //array of items |
| inT32 count //no of items |
| ); |
| DLLSYM inT32 choose_nth_item ( //fast median |
| inT32 index, //index to choose |
| void *array, //array of items |
| inT32 count, //no of items |
| size_t size, //element size |
| //comparator |
| int (*compar) (const void *, const void *) |
| ); |
| void swap_entries( //swap in place |
| void *array, //array of entries |
| size_t size, //size of entry |
| inT32 index1, //entries to swap |
| inT32 index2); |
| #endif |