public void Minimize() { int n_p = Coefficients.Length; int m_dat = n_p; // data and pameter arrays: double[] p = new double[Coefficients.Length]; Coefficients.CopyTo(p, 0); // auxiliary settings: lmmin.lm_control_type control = new lmmin.lm_control_type(); lmmin.lm_initialize_control(control); control.epsilon = 0.001; lm_data_type data = new lm_data_type(); data.f = my_fit_function; // perform the fit: lmmin.lm_minimize(m_dat, n_p, p, lm_evaluate, lm_print, data, control); // print results: Console.Write("status: {0} after {1} evaluations\n", lmmin.lm_shortmsg[control.info], control.nfev); Console.Write("Coefficients = new double[] {"); for (int i = 0; i < Coefficients.Length; i++) { if (i == 0 || i == 5) { Console.WriteLine(); Console.Write(" /* {0} */", i); } Console.Write(" {0:G10},", Coefficients[i]); } Console.WriteLine(); Console.WriteLine("};"); }