extension Double { public func clamped(to range: ClosedRange) -> Double { min(range.upperBound, max(range.lowerBound, self)) } }