Utilities & Other Code:

ARPACK
In 2011, I discovered and patched a nasty bug in ARPACK where if eigenvectors are requested and the number of
converged Ritz values returned is less than number of eigenvalues requested, then ARPACK may erroneously
return wrong eigenpairs (such as LM ones instead of LR ones) and furthermore, some of these returned pairs
may not even be true eigenpairs. The issue was due to a reordering procedure not being properly called to
sort the output so that the desired converged pairs were in the beginning of the array.

I have submitted my patch, along with demo code in MATLAB and FORTRAN to
replicate the bug, to the ARPACK authors,
The MathWorks, and the community maintained repository, ARPACK-NG,
which is replacing the official ARPACK source in many Linux distributions. At the time of this writing,
I have confirmed that my patch ships by default with MATLAB versions R2012b and later.

eigsplus v1.0 / eigs
Eigsplus is my own small fork of the standard MATLAB routine eigs motivated by the fact the standard version
of eigs used to return zeros for Ritz values that didn't converge, which the user may unwittingly mistake
as actual eigenvalues. A typical horrifying example is when a user may call
max(real(eigs(A,6,'LR'))) and receive an erroneous answer of 0, which then silently gets propagated to subsequent code.
Fortunately The MathWorks, at my urging, now uses NaNs as placeholders for Ritz values so this is no longer an issue for
for the standard eigs in MATLAB releases R2013b and later.

However, eigsplus still has some additional features that users may prefer, such as that it only returns the converged Ritz
values and always as in a vector, even if the eigenvectors are requested, and as the sizes returned will indicate whether not all
requested Ritz values converged, the number of ARPACK iterations is returned instead of the FLAG output argument.
Eigsplus is currently used by PSAPSR, HINFNORM, HINFNORM-HEC, and
Bart Vandereycken's
Subspace-PSPA.

HINFNORM v1.02
HINFNORM is the implementation of Mert Gürbüzbalaban's
code for the first fast algorithm for approximating the H-infinity norm for large-scale
dynamical systems, provided that they are sparse and have relatively few inputs and outputs,
described in his paper
with Nicola Guglielmi and
Michael L. Overton. I discovered and patched
several bugs and made minor algorithmic changes for the v1.02 release used for the numerical
results section of their paper.

Note: this code has not been updated to use the latest version of eigsplus
and furthermore the included prototype version of eigsplus is unfortunately not compatible
on the R2013b release of MATLAB. A new release of HINFNORM for their original algorithm
is forthcoming.

PSAPSR v1.3
PSAPSR is the code developed by Michael L. Overton
that implements his algorithm with Nicola Guglielmi
for fast approximation of the pseudospectral abscissa and radius, described in their
corresponding paper.
I released v1.3 of this code which fixes a
bug where initial user-supplied perturbation vectors
were ignored, updates the code to use the 1.0 version of eigsplus, and incorporates some other
refactorings, comments and another small bug fix. A changelog is included.

PSPR /
EigTool
PSPR is Emre Mengi's code for
computing the pseudospctral radius. In 2013, I noticed and
reported that the included copy of PSPR in EigTool is actually out-of-date and may sometimes
give incorrect answers. The problem and solution is discussed in
the related paper for computing
the pseudospectal abscissa via the criss-cross method.
Fortunately, Emre's version handles this case properly. I also pointed
out and proposed a solution for a very minor bug in the plotting routines of Emre's code,
which he has since fixed.