00001
00020 #ifndef STATISTC_H
00021 #define STATISTC_H
00022
00023 #include <stdio.h>
00024 #include "grphics.h"
00025
00030 class DLLSYM STATS
00031 {
00032 INT32 rangemin;
00033 INT32 rangemax;
00034 INT32 total_count;
00035 INT32 *buckets;
00036
00037 public:
00038 STATS(
00039 INT32 min,
00040 INT32 max);
00041 STATS();
00042
00043 ~STATS ();
00044
00045 bool set_range(
00046 INT32 min,
00047 INT32 max);
00048
00049 void clear();
00050
00051 void add(
00052 INT32 value,
00053 INT32 count);
00054
00055 INT32 mode();
00056
00057 float mean();
00058
00059 float sd();
00060
00061 float ile(
00062 float frac);
00063
00064 INT32 min_bucket();
00065
00066 INT32 max_bucket();
00067
00068 float median();
00069
00070 void smooth(
00071 INT32 factor);
00072 INT32 cluster(
00073 float lower,
00074 float upper,
00075 float multiple,
00076 INT32 max_clusters,
00077 STATS *clusters);
00078
00079 INT32 pile_count(
00080 INT32 value
00081 ) {
00082 return value > rangemin ? (value < rangemax
00083 ? buckets[value -
00084 rangemin] : buckets[rangemax -
00085 rangemin -
00086 1]) : buckets[0];
00087 }
00088
00089 INT32 get_total() {
00090 return total_count;
00091 }
00092
00093 BOOL8 local_min(
00094 INT32 x);
00095
00096 void print(
00097 FILE *fp,
00098 BOOL8 dump);
00099
00100 void short_print(
00101 FILE *fp,
00102 BOOL8 dump);
00103
00104 void plot(
00105 WINDOW window,
00106 float xorigin,
00107 float yorigin,
00108 float xscale,
00109 float yscale,
00110 COLOUR colour);
00111
00112 void plotline(
00113 WINDOW window,
00114 float xorigin,
00115 float yorigin,
00116 float xscale,
00117 float yscale,
00118 COLOUR colour);
00119 };
00120 DLLSYM INT32 choose_nth_item(
00121 INT32 index,
00122 float *array,
00123 INT32 count
00124 );
00125 DLLSYM INT32 choose_nth_item (
00126 INT32 index,
00127 void *array,
00128 INT32 count,
00129 size_t size,
00130
00131 int (*compar) (const void *, const void *)
00132 );
00133 void swap_entries(
00134 void *array,
00135 size_t size,
00136 INT32 index1,
00137 INT32 index2);
00138 #endif