00001
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #include "Average.hpp"
00032
00034
00036
00037 using namespace std;
00038 using namespace H;
00039
00041
00043
00045
00047
00051 Average::Average(int Size) {
00052 mValues.resize(Size);
00053 mHeadIdx = 0;
00054 mSum = 0.0;
00055 mFillState = 0;
00056 }
00057
00061 Average::~Average() {
00062 }
00063
00065
00067
00072 void Average::push(double Value) {
00073 if (mFillState == mValues.size()) {
00074 mSum += Value - mValues[mHeadIdx];
00075 mValues[mHeadIdx] = Value;
00076 } else {
00077 ++ mFillState;
00078 mSum += Value;
00079 mValues[mHeadIdx] = Value;
00080 }
00081 mHeadIdx = (mHeadIdx + 1) % mValues.size();
00082 }
00083
00088 double Average::average(void) {
00089 if (mFillState == 0)
00090 return 0.0;
00091 else
00092 return mSum / double(mFillState);
00093 }