// senf::StatisticAccumulator<T>
template <class T>
-prefix_ senf::StatisticAccumulator<T>::StatisticAccumulator( T defaultvalue)
- : defaultvalue_(defaultvalue),
- sum_squared_(defaultvalue*defaultvalue),
- sum_(defaultvalue),
- min_(defaultvalue),
- max_(defaultvalue),
- last_avg_(float(defaultvalue)),
+prefix_ senf::StatisticAccumulator<T>::StatisticAccumulator( )
+ : sum_squared_(0),
+ sum_(0),
+ min_(0),
+ max_(0),
+ last_avg_(0),
count_(0)
{
}
}
template <class T>
+prefix_ void senf::StatisticAccumulator<T>::setLastAvg( T value)
+{
+ last_avg_ = value;
+}
+
+template <class T>
prefix_ void senf::StatisticAccumulator<T>::accumulate( T value)
{
if (count_ == 0) {
template <class T>
prefix_ void senf::StatisticAccumulator<T>::clear()
{
- last_avg_ = avg();
- count_ = 0;
- sum_squared_ = defaultvalue_*defaultvalue_;
- sum_ = min_ = max_ = defaultvalue_;
+ if( count_ > 0){
+ last_avg_ = avg();
+ count_ = 0;
+ sum_squared_ = 0;
+ sum_ = min_ = max_ = 0;
+ }
+}
+
+template <class T>
+prefix_ void senf::StatisticAccumulator<T>::data( StatisticsData &data_) const
+{
+ if( count_ == 0){
+ data_.min = data_.avg = data_.max = last_avg_;
+ data_.stddev = 0.0;
+ data_.count = 0;
+ }
+ else{
+ data_.min = (float) min_;
+ data_.avg = avg();
+ data_.max = (float) max_;
+ data_.stddev = stddev();
+ data_.count = count_;
+ }
}