pub fn map<T>(x: T, input_range: Range<T>, output_range: Range<T>) -> Twhere T: Copy + Sub<Output = T> + Add<Output = T> + Div<Output = T> + Mul<Output = T>,