LAPACK 3.12.1
LAPACK: Linear Algebra PACKage
|
subroutine slaror | ( | character | side, |
character | init, | ||
integer | m, | ||
integer | n, | ||
real, dimension( lda, * ) | a, | ||
integer | lda, | ||
integer, dimension( 4 ) | iseed, | ||
real, dimension( * ) | x, | ||
integer | info ) |
SLAROR
!> !> SLAROR pre- or post-multiplies an M by N matrix A by a random !> orthogonal 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, 403-409). !>
[in] | SIDE | !> SIDE is CHARACTER*1 !> Specifies whether A is multiplied on the left or right by U. !> = 'L': Multiply A on the left (premultiply) by U !> = 'R': Multiply A on the right (postmultiply) by U' !> = 'C' or 'T': Multiply A on the left by U and the right !> by U' (Here, U' means U-transpose.) !> |
[in] | INIT | !> INIT is CHARACTER*1 !> Specifies whether or not A should be initialized to the !> identity matrix. !> = 'I': Initialize A to (a section of) the identity matrix !> before applying U. !> = 'N': No initialization. Apply U to the input matrix A. !> !> INIT = 'I' may be used to generate square or rectangular !> orthogonal matrices: !> !> For M = N and SIDE = 'L' or 'R', the rows will be orthogonal !> to each other, as will the columns. !> !> If M < N, SIDE = 'R' produces a dense matrix whose rows are !> orthogonal and whose columns are not, while SIDE = 'L' !> produces a matrix whose rows are orthogonal, and whose first !> M columns are orthogonal, and whose remaining columns are !> zero. !> !> If M > N, SIDE = 'L' produces a dense matrix whose columns !> are orthogonal and whose rows are not, while SIDE = 'R' !> produces a matrix whose columns are orthogonal, and whose !> first M rows are orthogonal, and whose remaining rows are !> zero. !> |
[in] | M | !> M is INTEGER !> The number of rows of A. !> |
[in] | N | !> N is INTEGER !> The number of columns of A. !> |
[in,out] | A | !> A is REAL array, dimension (LDA, N) !> On entry, the array A. !> On exit, overwritten by U A ( if SIDE = 'L' ), !> or by A U ( if SIDE = 'R' ), !> or by U A U' ( if SIDE = 'C' or 'T'). !> |
[in] | LDA | !> LDA is INTEGER !> The leading dimension of the array A. LDA >= max(1,M). !> |
[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 SLAROR to continue the same random number !> sequence. !> |
[out] | X | !> X is REAL 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'. !> |
[out] | INFO | !> INFO is INTEGER !> An error flag. It is set to: !> = 0: normal return !> < 0: if INFO = -k, the k-th argument had an illegal value !> = 1: if the random numbers generated by SLARND are bad. !> |
Definition at line 145 of file slaror.f.