SORT01
   Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
November 2006
November 2006
Purpose
SORT01 checks that the matrix U is orthogonal by computing the ratio
RESID = norm( I - U*U' ) / ( n * EPS ), if ROWCOL = 'R',
or
RESID = norm( I - U'*U ) / ( m * EPS ), if ROWCOL = 'C'.
Alternatively, if there isn't sufficient workspace to form
I - U*U' or I - U'*U, the ratio is computed as
RESID = abs( I - U*U' ) / ( n * EPS ), if ROWCOL = 'R',
or
RESID = abs( I - U'*U ) / ( m * EPS ), if ROWCOL = 'C'.
where EPS is the machine precision. ROWCOL is used only if m = n;
if m > n, ROWCOL is assumed to be 'C', and if m < n, ROWCOL is
assumed to be 'R'.
RESID = norm( I - U*U' ) / ( n * EPS ), if ROWCOL = 'R',
or
RESID = norm( I - U'*U ) / ( m * EPS ), if ROWCOL = 'C'.
Alternatively, if there isn't sufficient workspace to form
I - U*U' or I - U'*U, the ratio is computed as
RESID = abs( I - U*U' ) / ( n * EPS ), if ROWCOL = 'R',
or
RESID = abs( I - U'*U ) / ( m * EPS ), if ROWCOL = 'C'.
where EPS is the machine precision. ROWCOL is used only if m = n;
if m > n, ROWCOL is assumed to be 'C', and if m < n, ROWCOL is
assumed to be 'R'.
Arguments
| ROWCOL | 
 
(input) CHARACTER
 
Specifies whether the rows or columns of U should be checked 
for orthogonality. Used only if M = N. = 'R': Check for orthogonal rows of U = 'C': Check for orthogonal columns of U  | 
| M | 
 
(input) INTEGER
 
The number of rows of the matrix U. 
 | 
| N | 
 
(input) INTEGER
 
The number of columns of the matrix U. 
 | 
| U | 
 
(input) REAL array, dimension (LDU,N)
 
The orthogonal matrix U.  U is checked for orthogonal columns 
if m > n or if m = n and ROWCOL = 'C'. U is checked for orthogonal rows if m < n or if m = n and ROWCOL = 'R'.  | 
| LDU | 
 
(input) INTEGER
 
The leading dimension of the array U.  LDU >= max(1,M). 
 | 
| WORK | 
 
(workspace) REAL array, dimension (LWORK)
 
 | 
| LWORK | 
 
(input) INTEGER
 
The length of the array WORK.  For best performance, LWORK 
should be at least N*(N+1) if ROWCOL = 'C' or M*(M+1) if ROWCOL = 'R', but the test will be done even if LWORK is 0.  | 
| RESID | 
 
(output) REAL
 
RESID = norm( I - U * U' ) / ( n * EPS ), if ROWCOL = 'R', or 
RESID = norm( I - U' * U ) / ( m * EPS ), if ROWCOL = 'C'.  |