package mathext import "gogs.mikescher.com/BlackForestBytes/goext/langext" func Sum[T langext.NumberConstraint](v []T) T { total := T(0) for _, v := range v { total += v } return total } func Mean[T langext.FloatConstraint](v []T) T { return Sum(v) / T(len(v)) } func Median[T langext.FloatConstraint](v []T) T { if len(v)%2 == 1 { return v[len(v)/2] } else { return (v[len(v)/2-1] + v[len(v)/2]) / T(2) } } func ArrMin[T langext.OrderedConstraint](v []T) T { r := v[0] for _, val := range v { if val < r { r = val } } return r } func ArrMax[T langext.OrderedConstraint](v []T) T { r := v[0] for _, val := range v { if val > r { r = val } } return r }