Developer Reference for Intel® oneAPI Math Kernel Library for C
?laror
Pre- or post-multiplies an m -by- n matrix by a random orthogonal/unitary matrix.
Syntax
void slaror ( char*side , char*init , lapack_int*m , lapack_int*n , float*a , lapack_int*lda , lapack_int*iseed , float*x , lapack_int*info );
void dlaror ( char*side , char*init , lapack_int*m , lapack_int*n , double*a , lapack_int*lda , lapack_int*iseed , double*x , lapack_int*info );
void claror ( char*side , char*init , lapack_int*m , lapack_int*n , lapack_complex*a , lapack_int*lda , lapack_int*iseed , lapack_complex*x , lapack_int*info );
void zlaror ( char*side , char*init , lapack_int*m , lapack_int*n , lapack_complex_double*a , lapack_int*lda , lapack_int*iseed , lapack_complex_double*x , lapack_int*info );
Include Files
mkl.h
Description
slaror dlaror claror zlaror
The routine ?laror pre- or post-multiplies an m -by- n matrix A by a random orthogonal or 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, 403-409).
Input Parameters
side
Specifies whether A is multiplied by U on the left or right.
for slaror and dlaror : If side = 'L' , multiply A on the left (premultiply) by U . If side = 'R' , multiply A on the right (postmultiply) by UT . If side = 'C' or 'T' , multiply A on the left by U and the right by UT . for claror and zlaror : If side = 'L' , multiply A on the left (premultiply) by U . If side = 'R' , multiply A on the right (postmultiply) by UC >. If side = 'C' , multiply A on the left by U and the right by UC > If side = 'T' , multiply A on the left by U and the right by UT .
init
Specifies whether or not a should be initialized to the identity matrix.
If init = 'I' , initialize a to (a section of) the identity matrix before applying U . If init = 'N' , no initialization. Apply U to the input matrix A . init = 'I' generates square or rectangular orthogonal matrices: For m = n and side = ‘L’ or ‘R’ , the rows and the columns are orthogonal to each other. For rectangular matrices where m < n : For rectangular matrices where m > n :
m
The number of rows of A .
n
The number of columns of A .
- a
-
REAL for slaror , DOUBLE PRECISION for dlaror , COMPLEX for claror , DOUBLE COMPLEX for zlaror , Array, size lda by n .
lda
The leading dimension of the array a .
lda≥ max(1, m) .
iseed
Array, size (4).
On entry, specifies the seed of the random number generator. The array elements must be between 0 and 4095; if not they are reduced mod 4096. Also, iseed(4)[3] must be odd.
- x
-
REAL for slaror , DOUBLE PRECISION for dlaror , COMPLEX for claror , DOUBLE COMPLEX for zlaror , Workspace array, size (3*max( m, n )) .
Output Parameters
- a
-
On exit, overwritten by UA ( if side = 'L' ), by AU ( if side = 'R' ), by UAUT ( if side = 'C' or 'T' ).
- iseed
-
The values of iseed are changed on exit, and can be used in the next call to continue the same random number sequence.
info
-
Array, size (4).
For slaror and dlaror :
If info = 0 , the execution is successful.
If info < 0 , the i -th parameter had an illegal value.
If info = 1 , the random numbers generated by ?laror are bad.
For claror and zlaror :
If info = 0 , the execution is successful.
If info = -1 , side is not ‘L’ , ‘R’ , ‘C’ , or ‘T’ .
If info = -3 , if m is negative.
If info = -4 , if m is negative or if side is ‘C’ or ‘T’ and n is not equal to m .
If info = -6 , if lda is less than m .