.TH "TESTING/MATGEN/dlatme.f" 3 "Version 3.12.0" "LAPACK" \" -*- nroff -*- .ad l .nh .SH NAME TESTING/MATGEN/dlatme.f .SH SYNOPSIS .br .PP .SS "Functions/Subroutines" .in +1c .ti -1c .RI "subroutine \fBdlatme\fP (n, dist, iseed, d, mode, cond, dmax, ei, rsign, upper, sim, ds, modes, conds, kl, ku, anorm, a, lda, work, info)" .br .RI "\fBDLATME\fP " .in -1c .SH "Function/Subroutine Documentation" .PP .SS "subroutine dlatme (integer n, character dist, integer, dimension( 4 ) iseed, double precision, dimension( * ) d, integer mode, double precision cond, double precision dmax, character, dimension( * ) ei, character rsign, character upper, character sim, double precision, dimension( * ) ds, integer modes, double precision conds, integer kl, integer ku, double precision anorm, double precision, dimension( lda, * ) a, integer lda, double precision, dimension( * ) work, integer info)" .PP \fBDLATME\fP .PP \fBPurpose:\fP .RS 4 .PP .nf DLATME generates random non-symmetric square matrices with specified eigenvalues for testing LAPACK programs\&. DLATME operates by applying the following sequence of operations: 1\&. Set the diagonal to D, where D may be input or computed according to MODE, COND, DMAX, and RSIGN as described below\&. 2\&. If complex conjugate pairs are desired (MODE=0 and EI(1)='R', or MODE=5), certain pairs of adjacent elements of D are interpreted as the real and complex parts of a complex conjugate pair; A thus becomes block diagonal, with 1x1 and 2x2 blocks\&. 3\&. If UPPER='T', the upper triangle of A is set to random values out of distribution DIST\&. 4\&. If SIM='T', A is multiplied on the left by a random matrix X, whose singular values are specified by DS, MODES, and CONDS, and on the right by X inverse\&. 5\&. If KL < N-1, the lower bandwidth is reduced to KL using Householder transformations\&. If KU < N-1, the upper bandwidth is reduced to KU\&. 6\&. If ANORM is not negative, the matrix is scaled to have maximum-element-norm ANORM\&. (Note: since the matrix cannot be reduced beyond Hessenberg form, no packing options are available\&.) .fi .PP .RE .PP \fBParameters\fP .RS 4 \fIN\fP .PP .nf N is INTEGER The number of columns (or rows) of A\&. Not modified\&. .fi .PP .br \fIDIST\fP .PP .nf DIST is CHARACTER*1 On entry, DIST specifies the type of distribution to be used to generate the random eigen-/singular values, and for the upper triangle (see UPPER)\&. 'U' => UNIFORM( 0, 1 ) ( 'U' for uniform ) 'S' => UNIFORM( -1, 1 ) ( 'S' for symmetric ) 'N' => NORMAL( 0, 1 ) ( 'N' for normal ) Not modified\&. .fi .PP .br \fIISEED\fP .PP .nf ISEED is INTEGER array, dimension ( 4 ) On entry ISEED specifies the seed of the random number generator\&. They should lie between 0 and 4095 inclusive, and ISEED(4) should be odd\&. The random number generator uses a linear congruential sequence limited to small integers, and so should produce machine independent random numbers\&. The values of ISEED are changed on exit, and can be used in the next call to DLATME to continue the same random number sequence\&. Changed on exit\&. .fi .PP .br \fID\fP .PP .nf D is DOUBLE PRECISION array, dimension ( N ) This array is used to specify the eigenvalues of A\&. If MODE=0, then D is assumed to contain the eigenvalues (but see the description of EI), otherwise they will be computed according to MODE, COND, DMAX, and RSIGN and placed in D\&. Modified if MODE is nonzero\&. .fi .PP .br \fIMODE\fP .PP .nf MODE is INTEGER On entry this describes how the eigenvalues are to be specified: MODE = 0 means use D (with EI) as input MODE = 1 sets D(1)=1 and D(2:N)=1\&.0/COND MODE = 2 sets D(1:N-1)=1 and D(N)=1\&.0/COND MODE = 3 sets D(I)=COND**(-(I-1)/(N-1)) MODE = 4 sets D(i)=1 - (i-1)/(N-1)*(1 - 1/COND) MODE = 5 sets D to random numbers in the range ( 1/COND , 1 ) such that their logarithms are uniformly distributed\&. Each odd-even pair of elements will be either used as two real eigenvalues or as the real and imaginary part of a complex conjugate pair of eigenvalues; the choice of which is done is random, with 50-50 probability, for each pair\&. MODE = 6 set D to random numbers from same distribution as the rest of the matrix\&. MODE < 0 has the same meaning as ABS(MODE), except that the order of the elements of D is reversed\&. Thus if MODE is between 1 and 4, D has entries ranging from 1 to 1/COND, if between -1 and -4, D has entries ranging from 1/COND to 1, Not modified\&. .fi .PP .br \fICOND\fP .PP .nf COND is DOUBLE PRECISION On entry, this is used as described under MODE above\&. If used, it must be >= 1\&. Not modified\&. .fi .PP .br \fIDMAX\fP .PP .nf DMAX is DOUBLE PRECISION If MODE is neither -6, 0 nor 6, the contents of D, as computed according to MODE and COND, will be scaled by DMAX / max(abs(D(i)))\&. Note that DMAX need not be positive: if DMAX is negative (or zero), D will be scaled by a negative number (or zero)\&. Not modified\&. .fi .PP .br \fIEI\fP .PP .nf EI is CHARACTER*1 array, dimension ( N ) If MODE is 0, and EI(1) is not ' ' (space character), this array specifies which elements of D (on input) are real eigenvalues and which are the real and imaginary parts of a complex conjugate pair of eigenvalues\&. The elements of EI may then only have the values 'R' and 'I'\&. If EI(j)='R' and EI(j+1)='I', then the j-th eigenvalue is CMPLX( D(j) , D(j+1) ), and the (j+1)-th is the complex conjugate thereof\&. If EI(j)=EI(j+1)='R', then the j-th eigenvalue is D(j) (i\&.e\&., real)\&. EI(1) may not be 'I', nor may two adjacent elements of EI both have the value 'I'\&. If MODE is not 0, then EI is ignored\&. If MODE is 0 and EI(1)=' ', then the eigenvalues will all be real\&. Not modified\&. .fi .PP .br \fIRSIGN\fP .PP .nf RSIGN is CHARACTER*1 If MODE is not 0, 6, or -6, and RSIGN='T', then the elements of D, as computed according to MODE and COND, will be multiplied by a random sign (+1 or -1)\&. If RSIGN='F', they will not be\&. RSIGN may only have the values 'T' or 'F'\&. Not modified\&. .fi .PP .br \fIUPPER\fP .PP .nf UPPER is CHARACTER*1 If UPPER='T', then the elements of A above the diagonal (and above the 2x2 diagonal blocks, if A has complex eigenvalues) will be set to random numbers out of DIST\&. If UPPER='F', they will not\&. UPPER may only have the values 'T' or 'F'\&. Not modified\&. .fi .PP .br \fISIM\fP .PP .nf SIM is CHARACTER*1 If SIM='T', then A will be operated on by a 'similarity transform', i\&.e\&., multiplied on the left by a matrix X and on the right by X inverse\&. X = U S V, where U and V are random unitary matrices and S is a (diagonal) matrix of singular values specified by DS, MODES, and CONDS\&. If SIM='F', then A will not be transformed\&. Not modified\&. .fi .PP .br \fIDS\fP .PP .nf DS is DOUBLE PRECISION array, dimension ( N ) This array is used to specify the singular values of X, in the same way that D specifies the eigenvalues of A\&. If MODE=0, the DS contains the singular values, which may not be zero\&. Modified if MODE is nonzero\&. .fi .PP .br \fIMODES\fP .PP .nf MODES is INTEGER .fi .PP .br \fICONDS\fP .PP .nf CONDS is DOUBLE PRECISION Same as MODE and COND, but for specifying the diagonal of S\&. MODES=-6 and +6 are not allowed (since they would result in randomly ill-conditioned eigenvalues\&.) .fi .PP .br \fIKL\fP .PP .nf KL is INTEGER This specifies the lower bandwidth of the matrix\&. KL=1 specifies upper Hessenberg form\&. If KL is at least N-1, then A will have full lower bandwidth\&. KL must be at least 1\&. Not modified\&. .fi .PP .br \fIKU\fP .PP .nf KU is INTEGER This specifies the upper bandwidth of the matrix\&. KU=1 specifies lower Hessenberg form\&. If KU is at least N-1, then A will have full upper bandwidth; if KU and KL are both at least N-1, then A will be dense\&. Only one of KU and KL may be less than N-1\&. KU must be at least 1\&. Not modified\&. .fi .PP .br \fIANORM\fP .PP .nf ANORM is DOUBLE PRECISION If ANORM is not negative, then A will be scaled by a non- negative real number to make the maximum-element-norm of A to be ANORM\&. Not modified\&. .fi .PP .br \fIA\fP .PP .nf A is DOUBLE PRECISION array, dimension ( LDA, N ) On exit A is the desired test matrix\&. Modified\&. .fi .PP .br \fILDA\fP .PP .nf LDA is INTEGER LDA specifies the first dimension of A as declared in the calling program\&. LDA must be at least N\&. Not modified\&. .fi .PP .br \fIWORK\fP .PP .nf WORK is DOUBLE PRECISION array, dimension ( 3*N ) Workspace\&. Modified\&. .fi .PP .br \fIINFO\fP .PP .nf INFO is INTEGER Error code\&. On exit, INFO will be set to one of the following values: 0 => normal return -1 => N negative -2 => DIST illegal string -5 => MODE not in range -6 to 6 -6 => COND less than 1\&.0, and MODE neither -6, 0 nor 6 -8 => EI(1) is not ' ' or 'R', EI(j) is not 'R' or 'I', or two adjacent elements of EI are 'I'\&. -9 => RSIGN is not 'T' or 'F' -10 => UPPER is not 'T' or 'F' -11 => SIM is not 'T' or 'F' -12 => MODES=0 and DS has a zero singular value\&. -13 => MODES is not in the range -5 to 5\&. -14 => MODES is nonzero and CONDS is less than 1\&. -15 => KL is less than 1\&. -16 => KU is less than 1, or KL and KU are both less than N-1\&. -19 => LDA is less than N\&. 1 => Error return from DLATM1 (computing D) 2 => Cannot scale to DMAX (max\&. eigenvalue is 0) 3 => Error return from DLATM1 (computing DS) 4 => Error return from DLARGE 5 => Zero singular value from DLATM1\&. .fi .PP .RE .PP \fBAuthor\fP .RS 4 Univ\&. of Tennessee .PP Univ\&. of California Berkeley .PP Univ\&. of Colorado Denver .PP NAG Ltd\&. .RE .PP .PP Definition at line \fB327\fP of file \fBdlatme\&.f\fP\&. .SH "Author" .PP Generated automatically by Doxygen for LAPACK from the source code\&.