pub fn linearize<K, IN, OUT, F>( func: F, input: IN ) -> (OUT, Box<dyn Fn(IN::Gradient) -> OUT::Gradient>)where F: Func<K, IN, OUT>, IN: Value, OUT: Value,