LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
|
subroutine claror | ( | character | side, |
character | init, | ||
integer | m, | ||
integer | n, | ||
complex, dimension( lda, * ) | a, | ||
integer | lda, | ||
integer, dimension( 4 ) | iseed, | ||
complex, dimension( * ) | x, | ||
integer | info ) |
CLAROR
!> !> CLAROR pre- or post-multiplies an M by N matrix A by a random !> unitary matrix U, overwriting A. A may optionally be !> initialized to the identity matrix before multiplying by U. !> U is generated using the method of G.W. Stewart !> ( SIAM J. Numer. Anal. 17, 1980, pp. 403-409 ). !> (BLAS-2 version) !>
[in] | SIDE | !> SIDE is CHARACTER*1 !> SIDE specifies whether A is multiplied on the left or right !> by U. !> SIDE = 'L' Multiply A on the left (premultiply) by U !> SIDE = 'R' Multiply A on the right (postmultiply) by UC> SIDE = 'C' Multiply A on the left by U and the right by UC> SIDE = 'T' Multiply A on the left by U and the right by U' !> Not modified. !> |
[in] | INIT | !> INIT is CHARACTER*1 !> INIT specifies whether or not A should be initialized to !> the identity matrix. !> INIT = 'I' Initialize A to (a section of) the !> identity matrix before applying U. !> INIT = 'N' No initialization. Apply U to the !> input matrix A. !> !> INIT = 'I' may be used to generate square (i.e., unitary) !> or rectangular orthogonal matrices (orthogonality being !> in the sense of CDOTC): !> !> For square matrices, M=N, and SIDE many be either 'L' or !> 'R'; the rows will be orthogonal to each other, as will the !> columns. !> For rectangular matrices where M < N, SIDE = 'R' will !> produce a dense matrix whose rows will be orthogonal and !> whose columns will not, while SIDE = 'L' will produce a !> matrix whose rows will be orthogonal, and whose first M !> columns will be orthogonal, the remaining columns being !> zero. !> For matrices where M > N, just use the previous !> explanation, interchanging 'L' and 'R' and and !> . !> !> Not modified. !> |
[in] | M | !> M is INTEGER !> Number of rows of A. Not modified. !> |
[in] | N | !> N is INTEGER !> Number of columns of A. Not modified. !> |
[in,out] | A | !> A is COMPLEX array, dimension ( LDA, N ) !> Input and output array. Overwritten by U A ( if SIDE = 'L' ) !> or by A U ( if SIDE = 'R' ) !> or by U A U* ( if SIDE = 'C') !> or by U A U' ( if SIDE = 'T') on exit. !> |
[in] | LDA | !> LDA is INTEGER !> Leading dimension of A. Must be at least MAX ( 1, M ). !> Not modified. !> |
[in,out] | ISEED | !> ISEED is INTEGER array, dimension ( 4 ) !> On entry ISEED specifies the seed of the random number !> generator. The array elements should be between 0 and 4095; !> if not they will be reduced mod 4096. Also, ISEED(4) must !> 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 CLAROR to continue the same random number !> sequence. !> Modified. !> |
[out] | X | !> X is COMPLEX array, dimension ( 3*MAX( M, N ) ) !> Workspace. Of length: !> 2*M + N if SIDE = 'L', !> 2*N + M if SIDE = 'R', !> 3*N if SIDE = 'C' or 'T'. !> Modified. !> |
[out] | INFO | !> INFO is INTEGER !> An error flag. It is set to: !> 0 if no error. !> 1 if CLARND returned a bad random number (installation !> problem) !> -1 if SIDE is not L, R, C, or T. !> -3 if M is negative. !> -4 if N is negative or if SIDE is C or T and N is not equal !> to M. !> -6 if LDA is less than M. !> |
Definition at line 157 of file claror.f.