table of contents
/home/abuild/rpmbuild/BUILD/lapack-3.12.0/TESTING/EIG/scsdts.f(3) | Library Functions Manual | /home/abuild/rpmbuild/BUILD/lapack-3.12.0/TESTING/EIG/scsdts.f(3) |
NAME¶
/home/abuild/rpmbuild/BUILD/lapack-3.12.0/TESTING/EIG/scsdts.f
SYNOPSIS¶
Functions/Subroutines¶
subroutine SCSDTS (m, p, q, x, xf, ldx, u1, ldu1, u2, ldu2,
v1t, ldv1t, v2t, ldv2t, theta, iwork, work, lwork, rwork, result)
SCSDTS
Function/Subroutine Documentation¶
subroutine SCSDTS (integer m, integer p, integer q, real, dimension( ldx, * ) x, real, dimension( ldx, * ) xf, integer ldx, real, dimension( ldu1, * ) u1, integer ldu1, real, dimension( ldu2, * ) u2, integer ldu2, real, dimension( ldv1t, * ) v1t, integer ldv1t, real, dimension( ldv2t, * ) v2t, integer ldv2t, real, dimension( * ) theta, integer, dimension( * ) iwork, real, dimension( lwork ) work, integer lwork, real, dimension( * ) rwork, real, dimension( 15 ) result)¶
SCSDTS
Purpose:
!> !> SCSDTS tests SORCSD, which, given an M-by-M partitioned orthogonal !> matrix X, !> Q M-Q !> X = [ X11 X12 ] P , !> [ X21 X22 ] M-P !> !> computes the CSD !> !> [ U1 ]**T * [ X11 X12 ] * [ V1 ] !> [ U2 ] [ X21 X22 ] [ V2 ] !> !> [ I 0 0 | 0 0 0 ] !> [ 0 C 0 | 0 -S 0 ] !> [ 0 0 0 | 0 0 -I ] !> = [---------------------] = [ D11 D12 ] . !> [ 0 0 0 | I 0 0 ] [ D21 D22 ] !> [ 0 S 0 | 0 C 0 ] !> [ 0 0 I | 0 0 0 ] !> !> and also SORCSD2BY1, which, given !> Q !> [ X11 ] P , !> [ X21 ] M-P !> !> computes the 2-by-1 CSD !> !> [ I 0 0 ] !> [ 0 C 0 ] !> [ 0 0 0 ] !> [ U1 ]**T * [ X11 ] * V1 = [----------] = [ D11 ] , !> [ U2 ] [ X21 ] [ 0 0 0 ] [ D21 ] !> [ 0 S 0 ] !> [ 0 0 I ] !>
Parameters
M
!> M is INTEGER !> The number of rows of the matrix X. M >= 0. !>
P
!> P is INTEGER !> The number of rows of the matrix X11. P >= 0. !>
Q
!> Q is INTEGER !> The number of columns of the matrix X11. Q >= 0. !>
X
!> X is REAL array, dimension (LDX,M) !> The M-by-M matrix X. !>
XF
!> XF is REAL array, dimension (LDX,M) !> Details of the CSD of X, as returned by SORCSD; !> see SORCSD for further details. !>
LDX
!> LDX is INTEGER !> The leading dimension of the arrays X and XF. !> LDX >= max( 1,M ). !>
U1
!> U1 is REAL array, dimension(LDU1,P) !> The P-by-P orthogonal matrix U1. !>
LDU1
!> LDU1 is INTEGER !> The leading dimension of the array U1. LDU >= max(1,P). !>
U2
!> U2 is REAL array, dimension(LDU2,M-P) !> The (M-P)-by-(M-P) orthogonal matrix U2. !>
LDU2
!> LDU2 is INTEGER !> The leading dimension of the array U2. LDU >= max(1,M-P). !>
V1T
!> V1T is REAL array, dimension(LDV1T,Q) !> The Q-by-Q orthogonal matrix V1T. !>
LDV1T
!> LDV1T is INTEGER !> The leading dimension of the array V1T. LDV1T >= !> max(1,Q). !>
V2T
!> V2T is REAL array, dimension(LDV2T,M-Q) !> The (M-Q)-by-(M-Q) orthogonal matrix V2T. !>
LDV2T
!> LDV2T is INTEGER !> The leading dimension of the array V2T. LDV2T >= !> max(1,M-Q). !>
THETA
!> THETA is REAL array, dimension MIN(P,M-P,Q,M-Q) !> The CS values of X; the essentially diagonal matrices C and !> S are constructed from THETA; see subroutine SORCSD for !> details. !>
IWORK
!> IWORK is INTEGER array, dimension (M) !>
WORK
!> WORK is REAL array, dimension (LWORK) !>
LWORK
!> LWORK is INTEGER !> The dimension of the array WORK !>
RWORK
!> RWORK is REAL array !>
RESULT
!> RESULT is REAL array, dimension (15) !> The test ratios: !> First, the 2-by-2 CSD: !> RESULT(1) = norm( U1'*X11*V1 - D11 ) / ( MAX(1,P,Q)*EPS2 ) !> RESULT(2) = norm( U1'*X12*V2 - D12 ) / ( MAX(1,P,M-Q)*EPS2 ) !> RESULT(3) = norm( U2'*X21*V1 - D21 ) / ( MAX(1,M-P,Q)*EPS2 ) !> RESULT(4) = norm( U2'*X22*V2 - D22 ) / ( MAX(1,M-P,M-Q)*EPS2 ) !> RESULT(5) = norm( I - U1'*U1 ) / ( MAX(1,P)*ULP ) !> RESULT(6) = norm( I - U2'*U2 ) / ( MAX(1,M-P)*ULP ) !> RESULT(7) = norm( I - V1T'*V1T ) / ( MAX(1,Q)*ULP ) !> RESULT(8) = norm( I - V2T'*V2T ) / ( MAX(1,M-Q)*ULP ) !> RESULT(9) = 0 if THETA is in increasing order and !> all angles are in [0,pi/2] !> = ULPINV otherwise. !> Then, the 2-by-1 CSD: !> RESULT(10) = norm( U1'*X11*V1 - D11 ) / ( MAX(1,P,Q)*EPS2 ) !> RESULT(11) = norm( U2'*X21*V1 - D21 ) / ( MAX(1,M-P,Q)*EPS2 ) !> RESULT(12) = norm( I - U1'*U1 ) / ( MAX(1,P)*ULP ) !> RESULT(13) = norm( I - U2'*U2 ) / ( MAX(1,M-P)*ULP ) !> RESULT(14) = norm( I - V1T'*V1T ) / ( MAX(1,Q)*ULP ) !> RESULT(15) = 0 if THETA is in increasing order and !> all angles are in [0,pi/2] !> = ULPINV otherwise. !> ( EPS2 = MAX( norm( I - X'*X ) / M, ULP ). ) !>
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Definition at line 226 of file scsdts.f.
Author¶
Generated automatically by Doxygen for LAPACK from the source code.
Version 3.12.0 | LAPACK |