dort03.f3
Usage
Functions/Subroutines
subroutine dort03 (rc, mu, mv, n, k, u, ldu, v, ldv, work, lwork, result, info)
DORT03
Function/Subroutine Documentation
subroutine dort03 (character*( * ) rc, integer mu, integer mv, integer n, integer k, double precision, dimension( ldu, * ) u, integer ldu, double precision, dimension( ldv, * ) v, integer ldv, double precision, dimension( * ) work, integer lwork, double precision result, integer info)
DORT03
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. !>
Parameters
RC
!> RC is 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
!> MU is 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
!> MV is 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
!> N is 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
!> K is INTEGER !> The number of rows or columns of U and V to compare. !> 0 <= K <= max(MU,MV). !>
U
!> U is 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
!> LDU is INTEGER !> The leading dimension of U. If RC = 'R', LDU >= max(1,MU), !> and if RC = 'C', LDU >= max(1,N). !>
V
!> V is 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
!> LDV is INTEGER !> The leading dimension of V. If RC = 'R', LDV >= max(1,MV), !> and if RC = 'C', LDV >= max(1,N). !>
WORK
!> WORK is DOUBLE PRECISION array, dimension (LWORK) !>
LWORK
!> LWORK is 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
!> RESULT is DOUBLE PRECISION !> The value computed by the test described above. RESULT is !> limited to 1/ulp to avoid overflow. !>
INFO
!> INFO is INTEGER !> 0 indicates a successful exit !> -k indicates the k-th parameter had an illegal value !>
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Definition at line 154 of file dort03.f.