ZUNT03
   Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
November 2006
November 2006
Purpose
ZUNT03 compares two unitary matrices U and V to see if their
corresponding rows or columns span the same spaces. The rows are
checked if RC = 'R', and the columns are checked if RC = 'C'.
RESULT is the maximum of
| V*V' - I | / ( MV ulp ), if RC = 'R', or
| V'*V - I | / ( MV ulp ), if RC = 'C',
and the maximum over rows (or columns) 1 to K of
| U(i) - S*V(i) |/ ( N ulp )
where abs(S) = 1 (chosen to minimize the expression), U(i) is the
i-th row (column) of U, and V(i) is the i-th row (column) of V.
corresponding rows or columns span the same spaces. The rows are
checked if RC = 'R', and the columns are checked if RC = 'C'.
RESULT is the maximum of
| V*V' - I | / ( MV ulp ), if RC = 'R', or
| V'*V - I | / ( MV ulp ), if RC = 'C',
and the maximum over rows (or columns) 1 to K of
| U(i) - S*V(i) |/ ( N ulp )
where abs(S) = 1 (chosen to minimize the expression), U(i) is the
i-th row (column) of U, and V(i) is the i-th row (column) of V.
Arguments
| RC | 
 
(input) CHARACTER*1
 
If RC = 'R' the rows of U and V are to be compared. 
If RC = 'C' the columns of U and V are to be compared.  | 
| MU | 
 
(input) INTEGER
 
The number of rows of U if RC = 'R', and the number of 
columns if RC = 'C'. If MU = 0 ZUNT03 does nothing. MU must be at least zero.  | 
| MV | 
 
(input) INTEGER
 
The number of rows of V if RC = 'R', and the number of 
columns if RC = 'C'. If MV = 0 ZUNT03 does nothing. MV must be at least zero.  | 
| N | 
 
(input) INTEGER
 
If RC = 'R', the number of columns in the matrices U and V, 
and if RC = 'C', the number of rows in U and V. If N = 0 ZUNT03 does nothing. N must be at least zero.  | 
| K | 
 
(input) INTEGER
 
The number of rows or columns of U and V to compare. 
0 <= K <= max(MU,MV).  | 
| U | 
 
(input) COMPLEX*16 array, dimension (LDU,N)
 
The first matrix to compare.  If RC = 'R', U is MU by N, and 
if RC = 'C', U is N by MU.  | 
| LDU | 
 
(input) INTEGER
 
The leading dimension of U.  If RC = 'R', LDU >= max(1,MU), 
and if RC = 'C', LDU >= max(1,N).  | 
| V | 
 
(input) COMPLEX*16 array, dimension (LDV,N)
 
The second matrix to compare.  If RC = 'R', V is MV by N, and 
if RC = 'C', V is N by MV.  | 
| LDV | 
 
(input) INTEGER
 
The leading dimension of V.  If RC = 'R', LDV >= max(1,MV), 
and if RC = 'C', LDV >= max(1,N).  | 
| WORK | 
 
(workspace) COMPLEX*16 array, dimension (LWORK)
 
 | 
| LWORK | 
 
(input) INTEGER
 
The length of the array WORK.  For best performance, LWORK 
should be at least N*N if RC = 'C' or M*M if RC = 'R', but the tests will be done even if LWORK is 0.  | 
| RWORK | 
 
(workspace) DOUBLE PRECISION array, dimension (max(MV,N))
 
 | 
| RESULT | 
 
(output) DOUBLE PRECISION
 
The value computed by the test described above.  RESULT is 
limited to 1/ulp to avoid overflow.  | 
| INFO | 
 
(output) INTEGER
 
0  indicates a successful exit 
-k indicates the k-th parameter had an illegal value  |