pub fn abs_diff<T>(x: T, y: T) -> T where
    T: PartialOrd + Sub<Output = T>,