diff --git a/mathext/math.go b/mathext/math.go index 6c5c69f..37575d2 100644 --- a/mathext/math.go +++ b/mathext/math.go @@ -22,6 +22,31 @@ func Max[T langext.OrderedConstraint](v1 T, v2 T) T { } } +func Max3[T langext.OrderedConstraint](v1 T, v2 T, v3 T) T { + result := v1 + if v2 > result { + result = v2 + } + if v3 > result { + result = v3 + } + return result +} + +func Max4[T langext.OrderedConstraint](v1 T, v2 T, v3 T, v4 T) T { + result := v1 + if v2 > result { + result = v2 + } + if v3 > result { + result = v3 + } + if v4 > result { + result = v4 + } + return result +} + func Min[T langext.OrderedConstraint](v1 T, v2 T) T { if v1 < v2 { return v1 @@ -30,6 +55,31 @@ func Min[T langext.OrderedConstraint](v1 T, v2 T) T { } } +func Min3[T langext.OrderedConstraint](v1 T, v2 T, v3 T) T { + result := v1 + if v2 < result { + result = v2 + } + if v3 < result { + result = v3 + } + return result +} + +func Min4[T langext.OrderedConstraint](v1 T, v2 T, v3 T, v4 T) T { + result := v1 + if v2 < result { + result = v2 + } + if v3 < result { + result = v3 + } + if v4 < result { + result = v4 + } + return result +} + func Abs[T langext.NumberConstraint](v T) T { if v < 0 { return -v