DORT03

   Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
   November 2006

Purpose

DORT03 compares two orthogonal 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 S is +-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 DORT03 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 DORT03 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
DORT03 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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.
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

Call Graph

Caller Graph