DLATM4

   Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
   November 2006

Purpose

DLATM4 generates basic square matrices, which may later be
multiplied by others in order to produce test matrices.  It is
intended mainly to be used to test the generalized eigenvalue
routines.

It first generates the diagonal and (possibly) subdiagonal,
according to the value of ITYPE, NZ1, NZ2, ISIGN, AMAGN, and RCOND.
It then fills in the upper triangle with random numbers, if TRIANG is
non-zero.

Arguments

ITYPE
(input) INTEGER
The "type" of matrix on the diagonal and sub-diagonal.
If ITYPE < 0, then type abs(ITYPE) is generated and then
   swapped end for end (A(I,J) := A'(N-J,N-I).)  See also
   the description of AMAGN and ISIGN.

Special types:
= 0:  the zero matrix.
= 1:  the identity.
= 2:  a transposed Jordan block.
= 3:  If N is odd, then a k+1 x k+1 transposed Jordan block
      followed by a k x k identity block, where k=(N-1)/2.
      If N is even, then k=(N-2)/2, and a zero diagonal entry
      is tacked onto the end.

Diagonal types.  The diagonal consists of NZ1 zeros, then
   k=N-NZ1-NZ2 nonzeros.  The subdiagonal is zero.  ITYPE
   specifies the nonzero diagonal entries as follows:
= 4:  1, ..., k
= 5:  1, RCOND, ..., RCOND
= 6:  1, ..., 1, RCOND
= 7:  1, a, a^2, ..., a^(k-1)=RCOND
= 8:  1, 1-d, 1-2*d, ..., 1-(k-1)*d=RCOND
= 9:  random numbers chosen from (RCOND,1)
= 10: random numbers with distribution IDIST (see DLARND.)
N
(input) INTEGER
The order of the matrix.
NZ1
(input) INTEGER
If abs(ITYPE) > 3, then the first NZ1 diagonal entries will
be zero.
NZ2
(input) INTEGER
If abs(ITYPE) > 3, then the last NZ2 diagonal entries will
be zero.
ISIGN
(input) INTEGER
= 0: The sign of the diagonal and subdiagonal entries will
     be left unchanged.
= 1: The diagonal and subdiagonal entries will have their
     sign changed at random.
= 2: If ITYPE is 2 or 3, then the same as ISIGN=1.
     Otherwise, with probability 0.5, odd-even pairs of
     diagonal entries A(2*j-1,2*j-1), A(2*j,2*j) will be
     converted to a 2x2 block by pre- and post-multiplying
     by distinct random orthogonal rotations.  The remaining
     diagonal entries will have their sign changed at random.
AMAGN
(input) DOUBLE PRECISION
The diagonal and subdiagonal entries will be multiplied by
AMAGN.
RCOND
(input) DOUBLE PRECISION
If abs(ITYPE) > 4, then the smallest diagonal entry will be
entry will be RCOND.  RCOND must be between 0 and 1.
TRIANG
(input) DOUBLE PRECISION
The entries above the diagonal will be random numbers with
magnitude bounded by TRIANG (i.e., random numbers multiplied
by TRIANG.)
IDIST
(input) INTEGER
Specifies the type of distribution to be used to generate a
random matrix.
= 1:  UNIFORM( 0, 1 )
= 2:  UNIFORM( -1, 1 )
= 3:  NORMAL ( 0, 1 )
ISEED
(input/output) INTEGER array, dimension (4)
On entry ISEED specifies the seed of the random number
generator.  The values of ISEED are changed on exit, and can
be used in the next call to DLATM4 to continue the same
random number sequence.
Note: ISEED(4) should be odd, for the random number generator
used at present.
A
(output) DOUBLE PRECISION array, dimension (LDA, N)
Array to be computed.
LDA
(input) INTEGER
Leading dimension of A.  Must be at least 1 and at least N.

Call Graph

Caller Graph