function scalar Rosenbrock (const matrix param) scalar x = param[1] scalar y = param[2] return -(1-x)^2 - 100 * (y - x^2)^2 end function function void Rosen_grad (matrix *g, const matrix param) scalar x = param[1] scalar y = param[2] g[1] = 2*(1-x) + 2*x*(200*(y-x^2)) g[2] = -200*(y - x^2) end function matrix theta = {0, 0} matrix grad = {0, 0} set max_verbose 1 M = BFGSmax(&theta, Rosenbrock(theta), Rosen_grad(&grad, theta)) print theta print grad