00001 #ifndef STATISTICS_H_IS_INCLUDED
00002 #define STATISTICS_H_IS_INCLUDED
00003
00004
00005
00006
00007
00008
00009
00010
00011 namespace mlib {
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 template <class T>
00031 void
00032 statistics(
00033 CARRAY<T> &list,
00034 bool print,
00035 double *average,
00036 double* std_d,
00037 T* _max,
00038 T* _min)
00039 {
00040 double sum=0;
00041 double sqr_sum=0;
00042 T max=0;
00043 T min=DBL_MAX;
00044
00045 for(int i=0;i<list.num();i++)
00046 {
00047 sum+=list[i];
00048 sqr_sum+=(list[i]*list[i]);
00049 if(list[i]>max) max=list[i];
00050 if(list[i]<min) min=list[i];
00051 }
00052 double avg = sum/list.num();
00053 double std = sqrt(sqr_sum/list.num() - avg*avg);
00054
00055 if(print)
00056 cerr << "Statistics ------ # of samples = " << list.num()<<
00057 ", Average = " << avg << ", Std D= " << std<< ", Max= " << max<< ", Min= " <<min<<endl;
00058
00059 if(average) *average=avg;
00060 if(std_d) *std_d=std;
00061 if(_max) *_max = max;
00062 if(_min) *_min = min;
00063 }
00064
00065 }
00066
00067 #endif // STATISTICS_H_IS_INCLUDED
00068
00069