All computer codes are illustrations of methods developed in the Papers listed below. They are
not optimized for performance or set up for commercial use.
Any use beyond illustrative or public use
requires consent of the code author(s)  James Baglama.

EIGENVALUES
Symmetric
The program irbleigs.m is a MATLAB program for computing a few eigenvalues and
associated eigenvectors located anywhere in spectrum of a large sparse Hermitian matrix. The
irbleigs.m program is matrixfree, i.e., the matrix is accessed only
through the evaluation of matrixvector products.
The code can also compute the generalized eigenpairs of certain
generalized eigenvalue problems.

Click here
to download the MATLAB code irbleigs.m. 
The program trreigs.m is a MATLAB program for computing a few extreme
eigenvalues and associated eigenvectors of a large sparse symmetric matrix. The
trreigs.m program is matrixfree, i.e., the matrix is accessed only
through the evaluation of matrixvector products.
This MATLAB code trreigs.m is provided to illustrate Algorithm 6.1 in
the paper:
Baglama, J., Bella, T. and Picucci, J., Hybrid iterative refined method for computing a few extreme eigenpairs of a symmetric matrix SIAM Journal on Scientific Computing, 43(5), (2021), pp.S200S224.
pdf file

Click here
to download the MATLAB code trreigs.m. 

NonSymmetric
The program ahbeigs.m is a MATLAB program for computing a few eigenvalues and
associated eigenvectors located anywhere in spectrum of a large sparse nonsymmetric matrix.
The program ahbeigs.m is based on a block Arnoldi method that makes use of Householder
reflections to maintain orthogonality and restarting is accomplished by augmentation of the
Krylov subspace with Schur vectors. No factorization is required in order to find extreme
eigenvalues, however factorization is performed when searching for nonextreme eigenvalues.
The program can solve the standard or the generalized eigenvalue problem. Research supported
by NSF grant DMS0311786. Reference paper:
Baglama, J., Augmented block householder Arnoldi method Linear algebra and its applications, 429(10), (2008), pp.23152334. pdf file
pdf file

Click here
to download the MATLAB code ahbeigs.m. 
SINGULAR VALUES
The routine irblsvds.m is a MATLAB program for computing
a few singular values and singular vectors of a m x n matrix A.
irblsvds.m uses the (m+n) x (m+n) Hermitian matrix Z = [0 A; A' 0] and calls
irbleigs.m to find a few eigenvalues and eigenvectors of the matrix Z.
The singular values of A are the positive eigenvalues of Z, the "right" singular
vectors V, correspond to the last n elements of the eigenvectors of Z, and the
"left" singular vectors U, correspond to the first m elements of the eigenvectors of Z.References (papers) 1, 2, 3, 9, and 10.

Click here
to download the MATLAB code irblsvds.m. 
The routines irlba.m and irlbablk.m are MATLAB programs
for computing a few singular
values and singular vectors of a m x n matrix A. irlba.m is a restarted
Lanczos bidiagonalization method and irlbablk.m is
a restarted block Lanczos bidiagonalization method.
Restarting is carried out by
augmentation of Krylov subspaces with either Ritz vectors or harmonic Ritz
vectors. Reference papers:
Augmented Implicitly Restarted Lanczos Bidiagonalization Methods
paper14.pdf and
Restarted Block Lanczos Bidiagonalization Methods
paper17.pdf

Click here
to download the MATLAB code irlba.m. 
Click here
to download the block MATLAB code irlbablk.m. 
The code irlba has also been written in the language R by Bryan Lewis.
Click here
for the video and slides. 
Click here
for the R package on CRAN for the code irlba. Code is maintained by Bryan Lewis. 
Click here
for the Python package of irlba. Code is maintained by Bryan Lewis. 
The routines rd2svds.m and trrsvds.m are MATLAB programs
for computing a few singular
values and singular vectors of a m x n matrix A.
trrsvds.m is a hybrid restarted
Lanczos bidiagonalization method using thickrestarting and restarting
with linear combination to compute the
k largest (or smallest) singular values and associated vectors.
Implements
Algorithm 4
the paper
Hybrid Iterative Refined Restarted Lanczos Bidiagonalization Method
rd2svds.m is a restarted
Lanczos bidiagonalization method using deflation to compute the
k largest singular values and associated vectors. Implements
Algorithm 5
the paper
Hybrid Iterative Refined Restarted Lanczos Bidiagonalization Method
paper34.pdf

Click here
to download the readme file readme.txt. 
Click here
to download the MATLAB driver code driver_trrsvds_rd2svds.m. 
Click here
to download the MATLAB code trrsvds.m. 
Click here
to download the MATLAB code rd2svds.m. 
LEAST SQUARES
The routines alsqr.m and irlsqr.m are
MATLAB programs for computing
the solution of min Axb where A is an (m x n) matrix,
b an (m x 1) vector, and x is an (n x 1)
vector. b is not assumed to be in span(Col(A)). The routine alsqr.m
is an augmented preconditioned LSQR method. The
preconditioner is computed via an augmented Lanczos
bidiagonalization method with harmonic Ritz vectors. The program then
runs LSQR on the preconditioned system.
The routine irlsqr.m
is a preconditioned
implictly restarted LSQR method, that is mathematically equivalent
to< i>alsqr.m . The
preconditioner is computed via implicitly restarted Lanczos
bidiagonalization method with harmonic Ritz values. The program then
runs LSQR on the preconditioned system.
References:
An Augmented LSQR Method
http://link.springer.com/article/10.1007%2Fs1107501296658
and
Implicitly Restarting the LSQR Algorithm
http://etna.mcs.kent.edu/vol.42.2014/pp85105.dir/pp85105.pdf

Click here
to download the MATLAB code alsqr.m. 
Click here
to download the MATLAB code irlsqr.m. 
DIRECT SOLVER FOR BANDED LINEAR SYSTEMS
The following are the MATLAB and FORTRAN 95 codes associated with
the paper, An asynchronous direct solver for banded linear
systems.
This package provides
a set of functions to solve linear systems that do not require row echelon form. The functions are (i) Algorithm_21_TMFS.m, a MATLAB function to solve tridiagonal
linear systems without exponential growth using a modified forward substitution technique, and (ii) Algorithm_22_TMFBS.m, a MATLAB function to solve tridiagonal
linear systems without exponential growth using a modified forward and backward substitution technique, and (iii) Algorithm_31_BMFS.m, a MATLAB and FORTRAN
function to solve banded systems using a forward substitution technique. Note that the current implementation in Fortran requires the ISML addon.
In MATLAB, one can see a demonstration of the algorithms compared to the builtin backslash solver by running the associated driver.m functions.
Reference:
An Asynchronous Direct Solver for Banded Linear Systems
http://link.springer.com/article/10.1007/s1107501602513

Click here
to download the README file README.txt. 
Click here
to download the MATLAB code Algorithm_21_TMFS_Driver.m. 
Click here
to download the MATLAB code Algorithm_21_TMFS.m. 
Click here
to download the MATLAB code Algorithm_22_TMFBS_Driver.m. 
Click here
to download the MATLAB code Algorithm_22_TMFBS.m. 
Click here
to download the MATLAB code Algorithm_31_BMFS.m. 
Click here
to download the MATLAB code Algorithm_31_BMFS_Driver.m. 
Click here
to download the FORTRAN 95 code Algorithm_31_BMFS.f90. 