.TH "TESTING/EIG/scsdts.f" 3 "Version 3.12.0" "LAPACK" \" -*- nroff -*- .ad l .nh .SH NAME TESTING/EIG/scsdts.f .SH SYNOPSIS .br .PP .SS "Functions/Subroutines" .in +1c .ti -1c .RI "subroutine \fBscsdts\fP (m, p, q, x, xf, ldx, u1, ldu1, u2, ldu2, v1t, ldv1t, v2t, ldv2t, theta, iwork, work, lwork, rwork, result)" .br .RI "\fBSCSDTS\fP " .in -1c .SH "Function/Subroutine Documentation" .PP .SS "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)" .PP \fBSCSDTS\fP .PP \fBPurpose:\fP .RS 4 .PP .nf !> !> 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 ] !> .fi .PP .RE .PP \fBParameters\fP .RS 4 \fIM\fP .PP .nf !> M is INTEGER !> The number of rows of the matrix X\&. M >= 0\&. !> .fi .PP .br \fIP\fP .PP .nf !> P is INTEGER !> The number of rows of the matrix X11\&. P >= 0\&. !> .fi .PP .br \fIQ\fP .PP .nf !> Q is INTEGER !> The number of columns of the matrix X11\&. Q >= 0\&. !> .fi .PP .br \fIX\fP .PP .nf !> X is REAL array, dimension (LDX,M) !> The M-by-M matrix X\&. !> .fi .PP .br \fIXF\fP .PP .nf !> XF is REAL array, dimension (LDX,M) !> Details of the CSD of X, as returned by SORCSD; !> see SORCSD for further details\&. !> .fi .PP .br \fILDX\fP .PP .nf !> LDX is INTEGER !> The leading dimension of the arrays X and XF\&. !> LDX >= max( 1,M )\&. !> .fi .PP .br \fIU1\fP .PP .nf !> U1 is REAL array, dimension(LDU1,P) !> The P-by-P orthogonal matrix U1\&. !> .fi .PP .br \fILDU1\fP .PP .nf !> LDU1 is INTEGER !> The leading dimension of the array U1\&. LDU >= max(1,P)\&. !> .fi .PP .br \fIU2\fP .PP .nf !> U2 is REAL array, dimension(LDU2,M-P) !> The (M-P)-by-(M-P) orthogonal matrix U2\&. !> .fi .PP .br \fILDU2\fP .PP .nf !> LDU2 is INTEGER !> The leading dimension of the array U2\&. LDU >= max(1,M-P)\&. !> .fi .PP .br \fIV1T\fP .PP .nf !> V1T is REAL array, dimension(LDV1T,Q) !> The Q-by-Q orthogonal matrix V1T\&. !> .fi .PP .br \fILDV1T\fP .PP .nf !> LDV1T is INTEGER !> The leading dimension of the array V1T\&. LDV1T >= !> max(1,Q)\&. !> .fi .PP .br \fIV2T\fP .PP .nf !> V2T is REAL array, dimension(LDV2T,M-Q) !> The (M-Q)-by-(M-Q) orthogonal matrix V2T\&. !> .fi .PP .br \fILDV2T\fP .PP .nf !> LDV2T is INTEGER !> The leading dimension of the array V2T\&. LDV2T >= !> max(1,M-Q)\&. !> .fi .PP .br \fITHETA\fP .PP .nf !> 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\&. !> .fi .PP .br \fIIWORK\fP .PP .nf !> IWORK is INTEGER array, dimension (M) !> .fi .PP .br \fIWORK\fP .PP .nf !> WORK is REAL array, dimension (LWORK) !> .fi .PP .br \fILWORK\fP .PP .nf !> LWORK is INTEGER !> The dimension of the array WORK !> .fi .PP .br \fIRWORK\fP .PP .nf !> RWORK is REAL array !> .fi .PP .br \fIRESULT\fP .PP .nf !> 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 )\&. ) !> .fi .PP .RE .PP \fBAuthor\fP .RS 4 Univ\&. of Tennessee .PP Univ\&. of California Berkeley .PP Univ\&. of Colorado Denver .PP NAG Ltd\&. .RE .PP .PP Definition at line \fB226\fP of file \fBscsdts\&.f\fP\&. .SH "Author" .PP Generated automatically by Doxygen for LAPACK from the source code\&.