mirror of
https://github.com/metabarcoding/obitools4.git
synced 2025-06-29 16:20:46 +00:00
Add obiminion first version
Former-commit-id: aa5ace7bd4d2266333715fca7094d1c3cbbb5e6d
This commit is contained in:
@ -1,69 +1,32 @@
|
||||
package obiutils
|
||||
|
||||
import "golang.org/x/exp/constraints"
|
||||
import (
|
||||
"golang.org/x/exp/constraints"
|
||||
)
|
||||
|
||||
func MinInt(x, y int) int {
|
||||
func Min[T constraints.Ordered](x, y T) T {
|
||||
if x < y {
|
||||
return x
|
||||
}
|
||||
return y
|
||||
}
|
||||
|
||||
func MaxInt(x, y int) int {
|
||||
func Max[T constraints.Ordered](x, y T) T {
|
||||
if x < y {
|
||||
return y
|
||||
}
|
||||
return x
|
||||
}
|
||||
|
||||
func MinMaxInt(x, y int) (int, int) {
|
||||
func MinMax[T constraints.Ordered](x, y T) (T, T) {
|
||||
if x < y {
|
||||
return x, y
|
||||
}
|
||||
return y, x
|
||||
}
|
||||
|
||||
func MinUInt16(x, y uint16) uint16 {
|
||||
if x < y {
|
||||
return x
|
||||
}
|
||||
return y
|
||||
}
|
||||
|
||||
func MaxUInt16(x, y uint16) uint16 {
|
||||
if x < y {
|
||||
return y
|
||||
}
|
||||
return x
|
||||
}
|
||||
|
||||
func MinSlice[T constraints.Ordered](vec []T) T {
|
||||
if len(vec) == 0 {
|
||||
panic("empty slice")
|
||||
}
|
||||
min := vec[0]
|
||||
for _, v := range vec {
|
||||
if v < min {
|
||||
min = v
|
||||
}
|
||||
}
|
||||
return min
|
||||
}
|
||||
|
||||
func MaxSlice[T constraints.Ordered](vec []T) T {
|
||||
if len(vec) == 0 {
|
||||
panic("empty slice")
|
||||
}
|
||||
max := vec[0]
|
||||
for _, v := range vec {
|
||||
if v > max {
|
||||
max = v
|
||||
}
|
||||
}
|
||||
return max
|
||||
}
|
||||
|
||||
func RangeSlice[T constraints.Ordered](vec []T) (min, max T) {
|
||||
func MinMaxSlice[T constraints.Ordered](vec []T) (min, max T) {
|
||||
if len(vec) == 0 {
|
||||
panic("empty slice")
|
||||
}
|
||||
|
@ -13,8 +13,8 @@ import (
|
||||
// Zero is a zero-valued uint128.
|
||||
var Zero Uint128
|
||||
|
||||
// Max is the largest possible uint128 value.
|
||||
var Max = New(math.MaxUint64, math.MaxUint64)
|
||||
// MaxUint128 is the largest possible uint128 value.
|
||||
var MaxUint128 = New(math.MaxUint64, math.MaxUint64)
|
||||
|
||||
// A Uint128 is an unsigned 128-bit number.
|
||||
type Uint128 struct {
|
||||
|
Reference in New Issue
Block a user