Added a "split" QN method where one matrix approximates the Lagrangian Hessian and the other approximates only the augmented terms.
This is useful when Jacobian-vector products are very expensive and need to be limited.
Separately control the number of QN pairs in each approximate Hessian.
Merge branch 'split-qn-dev' into auglag-QN
Modified matrix-vector product interface to substantially reduce overhead costs.
Created a new LSR1 class in which the matvec method has been optimized for speed.
New LBFGS class with improved matvec performance.
Removed take() and put() methods from mfnlp interface.
- performance difference was negligible and code was less readable
Wrote structured LSR1 class based on new LSR1 unrolled class.
Added speed-optimized structured LBFGS approximation class.
(Forgot to add lbfgs file to previous commit.)
Took out some unused classes.
Merge branch 'QN-optimized' into auglag-QN