func (mr *Int) FitInRange(oth Int) bool {
	adj := false
	if oth.Min < mr.Min {
		mr.Min = oth.Min
		adj = true
	}
	if oth.Max > mr.Max {
		mr.Max = oth.Max
		adj = true
	}
	return adj
}
FitInRange adjusts our Min, Max to fit within those of other Int
returns true if we had to adjust to fit.
package minmax
import "math"
type Int struct {
	Min int
	Max int
}
func (mr *Int) Set(min, max int) {
	mr.Min, mr.Max = min, max
}
func (mr *Int) SetInfinity() {
	mr.Min, mr.Max = math.MaxInt64, -math.MaxInt64
}
func (mr *Int) IsValid() bool {
	return mr.Min <= mr.Max
}
func (mr *Int) InRange(val int) bool {
	return ((val >= mr.Min) && (val <= mr.Max))
}
func (mr *Int) IsLow(val int) bool {
	return (val < mr.Min)
}
func (mr *Int) IsHigh(val int) bool {
	return (val > mr.Min)
}
func (mr *Int) Range() int {
	return mr.Max - mr.Min
}
func (mr *Int) Scale() float32 {
	r := mr.Range()
	if r != 0 {
		return 1 / float32(r)
	}
	return 0
}
func (mr *Int) Midpoint() float32 {
	return 0.5 * float32(mr.Max+mr.Min)
}