package gmath import ( "math" ) func Pow[N Number](x, y N) N { return N(math.Pow(float64(x), float64(y))) } func Abs[N Number](v N) N { return N(math.Abs(float64(v))) } func Mod[N Number](a, b N) N { return N(math.Mod(float64(a), float64(b))) } func ModPositive[N Number](a, b N) N { m := Mod(a, b) if m >= 0 { return m } return m + b }