# Fast way to repeatedly solve a small nonlinear equation system

A small nonlinear equation system (sizes around 12 ✕ 12) needs to be solved repeatedly (millions of times); each time with some variation in parameters/coefficients (although the equation set is always the same).

Most solvers are not very optimized for small systems like this, only achieving higher "GFlops" when using larger matrices (e.g., 512 ✕ 512).

Currently it is being used an implementation based on MINPACK (Powell's hybrid method with Broyden's Jacobian update), without using BLAS (because even BLAS implementations seem slower for small matrices).

Is there a solver implementation (such as the ones found in Intel MKL, PETSc or Ceres) that is optimized for this kind of problem?

• Speculation: Eigen has a port of MINPACK which may help. Eigen can be templated with fixed-sized matrices and might (maybe) work better for your problem. – Damien May 25 '14 at 7:55
• Thanks for the suggestion, we already have tested Eigen (unsupported/Eigen/NonLinearOptimization), and it turns out that, surprisingly, CMINPACK is still the faster implementation (but the performance results are very similar). – e.tadeu May 26 '14 at 14:02