I actively maintain the following software.

Please send me email if you encounter any problems or bugs.

Feedback is welcomed.

- recursionSolve_qN.m is a direct solver for solving equations of the form (B+sigma I)x=y, where B is an L-BFGS quasi-Newton matrix and sigma is a strictly positive constant.

This code is based on the manuscript*Limited-memory BFGS systems with diagonal updates.*

A demo driver file can be found here. You will need this additional file to run the demo. - gen_recursionSolve_qN.m is a direct solver for solving equations of the form (B+D)x=y, where B is an L-BFGS quasi-Newton matrix and D is a strictly positive diagonal matrix.

This code is based on the manuscript*Solving limited-memory BFGS systems with generalized diagonal updates.*

A demo driver file can be found here. You will need this additional file to run the demo. -
Updated! (Nov 6, 2013) mss.m is software for solving
L-BFGS trust-region subproblems
in large-scale optimization. It makes use of newrec.m.

This code is based on the manuscript*MSS: MATLAB Software for L-BFGS Trust-Region Subproblems for Large-Scale Optimization*but is a faster implementation.

You will also need the following file to run mss.m: two_loop.m. - Updated! (July 10, 2015) eig_finder.m computes the eigenvalues of a SR1 matrix.

update_QR_add_pair.m updates the QR factorization after a new SR1 pair is computed.

update_QR_delete_pair.m updates the QR factorization after an SR1 pair is deleted.

These codes are based on the manuscript*On efficiently computing the eigenvalues of limited-memory quasi-Newton matrices.*

A demo driver file to see how this file is called and used can be found here.

To run the demo, you will need this purely for testing purposes. - Updated! (July 10, 2015) eig_finder_convex.m computes the eigenvalues of a matrix that is generated by the Broyden convex class of updates.

update_QR_add_pair_convex.m updates the QR factorization after a new quasi-Newton pair is computed.

update_QR_delete_pair_convex.m updates the QR factorization after a quasi-Newton pair is deleted.

These codes are based on the manuscript*On efficiently computing the eigenvalues of limited-memory quasi-Newton matrices.*

A demo driver file to see how this file is called and used can be found here.

To run the demo, you will need this purely for testing purposes. - Updated! (March 2018) obs.m
solves L-SR1 trust-region subproblems.

This code is based on the manuscript*On solving L-SR1 trust-region subproblems.*

A demo driver file to see how this file is called and used can be found here.

- New! (March 2018) sc_sr1.m
solves L-SR1 trust-region subproblems.

This code is based on the manuscript*Algorithm xxx: SC-SR1: MATLAB software for solving shape-changing L-SR1 trust-region subproblmems.*

A demo driver file to see how this file is called and used can be found here.

The above work was supported by National Science Foundation grants DMS-0811106, CMMI-1334042, and IIS-1741264.

I often use the following software and am thankful to the authors:

- The Finite Element ToolKit (FETK)

There's no place like home.