-
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathmath.go
More file actions
33 lines (24 loc) · 539 Bytes
/
math.go
File metadata and controls
33 lines (24 loc) · 539 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package main
import (
"math"
"sort"
)
func absoluteDeviation(values []float64) []float64 {
medianValue := median(values)
deviation := make([]float64, len(values))
for i := range values {
deviation[i] = math.Abs(values[i] - medianValue)
}
return deviation
}
func median(values []float64) float64 {
sort.Float64s(values)
if len(values) == 1 {
return values[0]
}
// If even, take an average
if len(values)%2 == 0 {
return 0.5*values[len(values)/2] + 0.5*values[len(values)/2-1]
}
return values[len(values)/2-1]
}