X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2FStatisticAccumulator.ct;h=9e5d106de941ac9780e049a0794fb24f8487c002;hb=93d9568d448749dc187e7622b733a4a3caa319df;hp=c0b83ae21c7e7541a36768f09ab805d65149b438;hpb=2ed56fbec2aa25bf4a8b13e6a06ec90e9dcc1fec;p=senf.git diff --git a/senf/Utils/StatisticAccumulator.ct b/senf/Utils/StatisticAccumulator.ct index c0b83ae..9e5d106 100644 --- a/senf/Utils/StatisticAccumulator.ct +++ b/senf/Utils/StatisticAccumulator.ct @@ -32,13 +32,12 @@ // senf::StatisticAccumulator template -prefix_ senf::StatisticAccumulator::StatisticAccumulator( T defaultvalue) - : defaultvalue_(defaultvalue), - sum_squared_(defaultvalue*defaultvalue), - sum_(defaultvalue), - min_(defaultvalue), - max_(defaultvalue), - last_avg_(float(defaultvalue)), +prefix_ senf::StatisticAccumulator::StatisticAccumulator( ) + : sum_squared_(0), + sum_(0), + min_(0), + max_(0), + last_avg_(0), count_(0) { } @@ -82,10 +81,29 @@ prefix_ void senf::StatisticAccumulator::accumulate( T value) template prefix_ void senf::StatisticAccumulator::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 +prefix_ void senf::StatisticAccumulator::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_; + } }