pub fn fit(
f: Function<'_>,
vars: &[Vec<f64>],
y: &[f64],
bounds: (Vec<f64>, Vec<f64>),
cost_function: Option<Cost<'_>>,
threshold: Option<f64>,
learning_rates: (Option<f64>, Option<f64>),
iterations: Option<usize>,
) -> (Vec<f64>, f64)