00001 #include <numeric> 00002 #include <cmath> 00003 00008 template< class CONT> 00009 double stat_mean( const CONT & cont) { 00010 double sum = accumulate (cont.begin(), cont.end(), 0.); 00011 return sum / cont.size(); 00012 } 00013 00019 template< class CONT> 00020 double stat_RMS( const CONT & cont) { 00021 00022 typename CONT::const_iterator i; 00023 00024 int N = cont.size(); 00025 if (N > 1) { 00026 double sum=0., sum2=0.; 00027 for (i=cont.begin(); i!=cont.end(); i++) { 00028 sum += *i; 00029 sum2 += (*i) * (*i); 00030 } 00031 return sqrt( std::max( 0., (sum2 - sum*sum/N) / (N-1))) ; 00032 } 00033 else return 0.; 00034 }