ev/pkg/math/math.go

37 lines
520 B
Go
Raw Normal View History

2022-08-04 14:37:51 -06:00
package math
type signed interface {
~int | ~int8 | ~int16 | ~int32 | ~int64
}
type unsigned interface {
~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr
}
type integer interface {
signed | unsigned
}
type float interface {
~float32 | ~float64
}
type ordered interface {
integer | float | ~string
}
func Abs[T signed](i T) T {
if i > 0 {
return i
}
return -i
}
func Max[T ordered](i, j T) T {
if i > j {
return i
}
return j
}
func Min[T ordered](i, j T) T {
if i < j {
return i
}
return j
}