dlatm4.f3
Usage
Functions/Subroutines
subroutine dlatm4 (itype, n, nz1, nz2, isign, amagn, rcond, triang, idist, iseed, a, lda)
DLATM4
Function/Subroutine Documentation
subroutine dlatm4 (integer itype, integer n, integer nz1, integer nz2, integer isign, double precision amagn, double precision rcond, double precision triang, integer idist, integer, dimension( 4 ) iseed, double precision, dimension( lda, * ) a, integer lda)
DLATM4
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. !>
Parameters
ITYPE
!> ITYPE is INTEGER !> The 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
!> N is INTEGER !> The order of the matrix. !>
NZ1
!> NZ1 is INTEGER !> If abs(ITYPE) > 3, then the first NZ1 diagonal entries will !> be zero. !>
NZ2
!> NZ2 is INTEGER !> If abs(ITYPE) > 3, then the last NZ2 diagonal entries will !> be zero. !>
ISIGN
!> ISIGN is 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
!> AMAGN is DOUBLE PRECISION !> The diagonal and subdiagonal entries will be multiplied by !> AMAGN. !>
RCOND
!> RCOND is 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
!> TRIANG is DOUBLE PRECISION !> The entries above the diagonal will be random numbers with !> magnitude bounded by TRIANG (i.e., random numbers multiplied !> by TRIANG.) !>
IDIST
!> IDIST is 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
!> ISEED is 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
!> A is DOUBLE PRECISION array, dimension (LDA, N) !> Array to be computed. !>
LDA
!> LDA is INTEGER !> Leading dimension of A. Must be at least 1 and at least N. !>
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Definition at line 173 of file dlatm4.f.