C      ALGORITHM 694 , COLLECTED ALGORITHMS FROM ACM.
C      THIS WORK PUBLISHED IN TRANSACTIONS ON MATHEMATICAL SOFTWARE,
C      VOL. 17, NO. 3, September, 1991, PP. 289-305.
The MATLAB M-files on this disk accompany the revised version of the
manuscript

        ``A Collection of Test Matrices in MATLAB''

submitted to ACM TOMS for consideration as an algorithm.

The M-files are self-documenting, so no documentation is provided in this file.

The contents of the disk are as follows:

readme.doc (this file)
whatsnew.doc (describes changes for Version 1.2, May 30 1990 of the collection)

% Test matrices
% The `.m' extension is omitted in the following files...
%
augment
cauchy
chebspec
chebvand
chow
circul
clement
compan
condex
cycol
dingdong
dorr
dramadah
fiedler
forsythe
frank
gallery
gear
gfpp
hadamard
hanowa
hilb
invol
ipjfact
jordan
kahan
kms
krylov
lauchli
lehmer
lotkin
minij
moler
ohess
orthog
pascal
pei
rando
randsvd
riemann
tridiag
triw
vand
wathen
wilk

% Utility routines
%
bandred
chop
comp
fv
house
matrix
qmult
rq
see
seqa
seqcheb
seqm
show
skew
sparse
sparsify
sub
symm

% As a backup, and an alternative form of copying the M-files to another disk,
% an ARC (compressed archive) file is also included together with a program for
% extracting the files.
%
% To copy all the M-files from this disk in drive A: (say) move to the drive
% and directory where the files are to be copied and type
%
%   A:PKUNPAK A:MFILES
%
% This extracts all the M-files from MFILES.ARC and copies them to the
% current DOS directory.

mfiles.arc
pkunpak.exe

--------------------------------
Nick Higham
Department of Mathematics
University of Manchester
Manchester
M13 9PL
England
(Phone: 061 275 5822)
na.nhigham@na-net.stanford.edu

June 4, 1990
My paper ``A Collection of Test Matrices in MATLAB'' has been accepted for
publication in ACM Trans. Math. Soft., and in revising the paper I have
prepared a new version of the collection of M-files.  The original version
is `Version 1.0, July 4, 1989' (as returned by the command `matrix(-1)')
and the new one is `Version 1.2, May 30 1990'.  There was an intermediate
version, `Version 1.1, November 15 1989'---this was the one originally
submitted to TOMS and it was not otherwise distributed.

Here is a summary of the changes in going from version 1.0 to version 1.2.

(1)  Numerous improvements to the documentation in the comment lines of the
M-files, including correction of errors, improved wording, and extra
references.

(2)  A few minor bugs or inefficiencies corrected.

(3)  Added a new matrix, bringing the total to 45:

%AUGMENT  AUGMENT(A) is the square matrix [EYE(m) A; A' ZEROS(n)] of dimension
%         m+n, where A is m-by-n.  It is the symmetric and indefinite
%         coefficient matrix of the augmented system associated with a least
%         squares problem minimize NORM(A*x-b).
%         Special case: if A is a scalar, n say, then AUGMENT(A) is the same
%                       as AUGMENT(RAND(p,q)) where n = p+q and p = ROUND(n/2),
%                       that is, a random augmented matrix of dimension n is
%                       produced.

(4)  Added extra functionality to RANDSVD:

function A = randsvd(n, kappa, mode, kl, ku)
%RANDSVD  Random matrices with pre-assigned singular values.
...
%      Special case: if KAPPA < 0 then a random full symmetric positive
%                    definite matrix is produced with COND(A) = -KAPPA and
%                    eigenvalues distributed according to MODE.
%                    KL and KU, if present, are ignored.

(5)  Added an extra option to ORTHOG:

function Q = orthog(n, k)
%ORTHOG Orthogonal and nearly orthogonal matrices.
%       Q = ORTHOG(N, K) selects the K'th type of matrix of order N.
...
%       K = 4:  Helmert matrix: a permutation of a lower Hessenberg matrix,
%               whose first row is ONES(1:N)/SQRT(N).


(5)  Changed second parameter in SPARSE from a character selecting the plot
type to a tolerance such that elements smaller than the tolerance are
regarded as zero.

(6)  Changed SEE.  It now works for rectangular matrices.  Instead of the
inverse, the pseudo-inverse is plotted in the second window.  The plot of
columns of A versus the row index in the third window is replaced in this
new version by a plot of the singular values of A on a logarithmic scale.

(7)  HOUSE now avoids division by zero when it is given a zero vector
(BANDRED is the only routine that calls HOUSE).

---Nick Higham
   Dept. of Mathematics
   University of Manchester
   na.nhigham@na-net.stanford.edu
   June 4, 1990
