pub fn grad<K, IN, OUT, F>(func: F) -> GradFunc<K, IN, OUT, F>where F: Func<K, IN, OUT> + Clone, IN: Value, OUT: Value,