45 bqueue(
void) : first(0), last(0), sumofqueue(0), maxsize(0), queuesize(0),expComputed(
false) { }
51 if (queuesize==maxsize) {
53 sumofqueue -= elems[last];
54 if ((++last) == maxsize) last = 0;
59 if ((++first) == maxsize) {first = 0;last = 0;}
63 void pop() {sumofqueue-=elems[last]; queuesize--;
if ((++last) == maxsize) last = 0;}
65 uint64_t
getsum()
const {
return sumofqueue;}
66 unsigned int getavg()
const {
return (
unsigned int)(sumofqueue/((uint64_t)queuesize));}
70 for(
int i=0;i<elems.size();i++) {
73 return tmp/elems.size();
75 int isvalid()
const {
return (queuesize==maxsize);}
79 first=0; maxsize=
size; queuesize = 0;last = 0;
80 for(
int i=0;i<
size;i++) elems[i]=0;
84 if(expComputed)
return value;
87 for(
int i = first;i<maxsize;i++) {
88 value+=a*((double)elems[i]);
91 for(
int i = 0;i<last;i++) {
92 value+=a*((double)elems[i]);
95 value = value*(1-exp)/(1-a);
101 void fastclear() {first = 0; last = 0; queuesize=0; sumofqueue=0;}
103 int size(
void) {
return queuesize; }
105 void clear(
bool dealloc =
false) { elems.clear(dealloc); first = 0; maxsize=0; queuesize=0;sumofqueue=0;}