started stats on fields.

This commit is contained in:
didier.amyot committed 2014-05-20 09:13:24 -04:00
1 parent 2add8284e6
commit 37209f6779
11 files changed
+122 -11

No files matched your search

+18 -3
View File
@@ -2,6 +2,7 @@ package main
import (
"fmt"
"math"
)
var _ = fmt.Print
@@ -10,6 +11,12 @@ const initialLength int = 1024
const verySmall float64 = -100000
const veryBig float64 = 100000
type Stats struct {
Mean float64 `json:"mean"`
Var float64 `json:"var"`
Std float64 `json:"std"`
}
type StatAggregator struct {
sum float64
sumOfTheSquares float64
@@ -19,8 +26,6 @@ type StatAggregator struct {
max float64
}
type Stats struct{}
func NewStatAggregator() *StatAggregator {
return &StatAggregator{0, 0, 0, make([]float64, initialLength), veryBig, verySmall}
}
@@ -37,5 +42,15 @@ func (this *StatAggregator) AddStats(dataChannel chan float64, output chan *Stat
this.max = datum
}
}
output <- nil
output <- this.getFinalStats()
}
func (this *StatAggregator) getFinalStats() *Stats {
stats := new(Stats)
stats.Mean = this.sum / float64(this.n)
stats.Var = this.sumOfTheSquares/float64(this.n) - stats.Mean*stats.Mean
stats.Std = math.Sqrt(stats.Var)
return stats
}