public Info[] Expected(Specification problem)
{
Function function = problem.Function.Invoke;
Gradient gradient = problem.Gradient.Invoke;
Param param = new Param()
{
m = m,
epsilon = epsilon,
past = past,
delta = delta,
max_iterations = max_iterations,
linesearch = (int)linesearch,
max_linesearch = max_linesearch,
min_step = min_step,
max_step = max_step,
ftol = ftol,
wolfe = wolfe,
gtol = gtol,
xtol = xtol,
orthantwise_c = orthantwise_c,
orthantwise_start = orthantwise_start,
orthantwise_end = orthantwise_end
};
NativeCode = Wrapper.Libbfgs((double[])problem.Start.Clone(), function, gradient, param);
// Convergence and success have the same
// enumeration value in the original code
if (NativeCode == "LBFGS_CONVERGENCE")
NativeCode = "LBFGS_SUCCESS";
return Wrapper.list.ToArray();
}