Files
obitools4/pkg/obistats/minmax.go
2024-09-03 06:08:07 -03:00

46 lines
677 B
Go

package obistats
func Max[T int64 | int32 | int16 | int8 | int | float32 | float64](data []T) T {
m := data[0]
for _, v := range data {
if v > m {
m = v
}
}
return m
}
func Min[T int64 | int32 | int16 | int8 | int | uint64 | uint32 | uint16 | uint8 | uint | float32 | float64](data []T) T {
m := data[0]
for _, v := range data {
if v < m {
m = v
}
}
return m
}
func Mode[T int64 | int32 | int16 | int8 | int | uint64 | uint32 | uint16 | uint8 | uint](data []T) T {
ds := make(map[T]int)
for _, v := range data {
ds[v]++
}
md := T(0)
maxocc := 0
for v, occ := range ds {
if occ > maxocc {
maxocc = occ
md = v
}
}
return md
}