go-ml.dev/pkg/base@v0.0.0-20200610162856-60c38abac71b/fu/floats32.go (about) 1 package fu 2 3 import "math" 4 5 func Meanr(a []float32) float32 { 6 var c float64 7 for _, x := range a { 8 c += float64(x) 9 } 10 return float32(c / float64(len(a))) 11 } 12 13 func Mse(a, b []float32) float32 { 14 var c float64 15 for i, x := range a { 16 q := float64(x - b[i]) 17 c += q * q 18 } 19 return float32(c / float64(len(a))) 20 } 21 22 func Flatnr(a [][]float32) []float32 { 23 n := 0 24 for _, x := range a { 25 n += len(x) 26 } 27 r := make([]float32, n) 28 i := 0 29 for _, x := range a { 30 copy(r[i:i+len(x)], x) 31 i += len(x) 32 } 33 return r 34 } 35 36 func MinMaxr(a []float32) (float32, float32) { 37 min := a[0] 38 max := a[0] 39 for _, x := range a[1:] { 40 if x > max { 41 max = x 42 } else if x < min { 43 min = x 44 } 45 } 46 return min, max 47 } 48 49 func Avgr(a []float32) float32 { 50 var c float64 51 for _, x := range a { 52 c += float64(x) 53 } 54 return float32(c / float64(len(a))) 55 } 56 57 func Absr(a float32) float32 { 58 if a >= 0 { 59 return a 60 } 61 return -a 62 } 63 64 func Sigmar(a []float32) float64 { 65 return math.Sqrt(Varr(a)) 66 } 67 68 func Varr(a []float32) float64 { 69 var m float64 70 for _, x := range a { 71 m += float64(x) 72 } 73 m /= float64(len(a)) 74 var s float64 75 for _, x := range a { 76 q := float64(x) - m 77 s += q * q 78 } 79 s /= float64(len(a)) 80 return s 81 }