Skip to content

Instantly share code, notes, and snippets.

@kuloud
Created November 1, 2016 05:59
Show Gist options
  • Select an option

  • Save kuloud/a3c4ab71e89df9b0725fa2ed97ad6f54 to your computer and use it in GitHub Desktop.

Select an option

Save kuloud/a3c4ab71e89df9b0725fa2ed97ad6f54 to your computer and use it in GitHub Desktop.
buffer for double
/**
buffer for double
*/
type DoubleBuffer struct {
index int32
buffer []float64
isFull bool
}
func NewDoubleBuffer(size int32) *DoubleBuffer {
return &DoubleBuffer{
buffer:make([]float64, size),
}
}
func (b *DoubleBuffer) Reset() {
b.index = 0
b.isFull = false
}
func (b *DoubleBuffer) IsFull() bool {
return b.isFull
}
func (b *DoubleBuffer) GetAverage() float64 {
entriesNum := 0
if b.isFull {
entriesNum = len(b.buffer)
} else {
entriesNum = int(b.index)
}
if entriesNum == 0 {
return 0
}
sum := 0.0
for i := 0; i < entriesNum; i++ {
sum += b.buffer[i]
}
return sum / float64(entriesNum)
}
func (b *DoubleBuffer) Put(v float64) {
if int32(len(b.buffer)) == b.index {
b.index = 0
}
b.buffer[b.index] = v
b.index++
if b.index == int32(len(b.buffer)) {
b.isFull = true
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment