31 lines
471 B
Go
31 lines
471 B
Go
package utilities
|
|
|
|
import (
|
|
"golang.org/x/exp/constraints"
|
|
"math/bits"
|
|
)
|
|
|
|
func Min[T constraints.Ordered](v0 T, values ...T) (result T) {
|
|
result = v0
|
|
for _, v := range values {
|
|
if v < result {
|
|
result = v
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
func Max[T constraints.Ordered](v0 T, values ...T) (result T) {
|
|
result = v0
|
|
for _, v := range values {
|
|
if v > result {
|
|
result = v
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
func Log2[T constraints.Integer](v T) (result int) {
|
|
return bits.Len64(uint64(v))
|
|
}
|