--- rpl/lapack/lapack/dggsvp.f 2010/12/21 13:53:27 1.7 +++ rpl/lapack/lapack/dggsvp.f 2011/07/22 07:38:05 1.8 @@ -2,10 +2,10 @@ $ TOLA, TOLB, K, L, U, LDU, V, LDV, Q, LDQ, $ IWORK, TAU, WORK, INFO ) * -* -- LAPACK routine (version 3.2) -- +* -- LAPACK routine (version 3.3.1) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* November 2006 +* -- April 2011 -- * * .. Scalar Arguments .. CHARACTER JOBQ, JOBU, JOBV @@ -23,24 +23,23 @@ * * DGGSVP computes orthogonal matrices U, V and Q such that * -* N-K-L K L -* U'*A*Q = K ( 0 A12 A13 ) if M-K-L >= 0; -* L ( 0 0 A23 ) -* M-K-L ( 0 0 0 ) +* N-K-L K L +* U**T*A*Q = K ( 0 A12 A13 ) if M-K-L >= 0; +* L ( 0 0 A23 ) +* M-K-L ( 0 0 0 ) * * N-K-L K L * = K ( 0 A12 A13 ) if M-K-L < 0; * M-K ( 0 0 A23 ) * -* N-K-L K L -* V'*B*Q = L ( 0 0 B13 ) -* P-L ( 0 0 0 ) +* N-K-L K L +* V**T*B*Q = L ( 0 0 B13 ) +* P-L ( 0 0 0 ) * * where the K-by-K matrix A12 and L-by-L matrix B13 are nonsingular * upper triangular; A23 is L-by-L upper triangular if M-K-L >= 0, * otherwise A23 is (M-K)-by-L upper trapezoidal. K+L = the effective -* numerical rank of the (M+P)-by-N matrix (A',B')'. Z' denotes the -* transpose of Z. +* numerical rank of the (M+P)-by-N matrix (A**T,B**T)**T. * * This decomposition is the preprocessing step for computing the * Generalized Singular Value Decomposition (GSVD), see subroutine @@ -99,8 +98,8 @@ * K (output) INTEGER * L (output) INTEGER * On exit, K and L specify the dimension of the subblocks -* described in Purpose. -* K + L = effective numerical rank of (A',B')'. +* described in Purpose section. +* K + L = effective numerical rank of (A**T,B**T)**T. * * U (output) DOUBLE PRECISION array, dimension (LDU,M) * If JOBU = 'U', U contains the orthogonal matrix U. @@ -258,14 +257,14 @@ * CALL DGERQ2( L, N, B, LDB, TAU, WORK, INFO ) * -* Update A := A*Z' +* Update A := A*Z**T * CALL DORMR2( 'Right', 'Transpose', M, N, L, B, LDB, TAU, A, $ LDA, WORK, INFO ) * IF( WANTQ ) THEN * -* Update Q := Q*Z' +* Update Q := Q*Z**T * CALL DORMR2( 'Right', 'Transpose', N, N, L, B, LDB, TAU, Q, $ LDQ, WORK, INFO ) @@ -287,7 +286,7 @@ * * then the following does the complete QR decomposition of A11: * -* A11 = U*( 0 T12 )*P1' +* A11 = U*( 0 T12 )*P1**T * ( 0 0 ) * DO 70 I = 1, N - L @@ -303,7 +302,7 @@ $ K = K + 1 80 CONTINUE * -* Update A12 := U'*A12, where A12 = A( 1:M, N-L+1:N ) +* Update A12 := U**T*A12, where A12 = A( 1:M, N-L+1:N ) * CALL DORM2R( 'Left', 'Transpose', M, L, MIN( M, N-L ), A, LDA, $ TAU, A( 1, N-L+1 ), LDA, WORK, INFO ) @@ -345,7 +344,7 @@ * IF( WANTQ ) THEN * -* Update Q( 1:N,1:N-L ) = Q( 1:N,1:N-L )*Z1' +* Update Q( 1:N,1:N-L ) = Q( 1:N,1:N-L )*Z1**T * CALL DORMR2( 'Right', 'Transpose', N, N-L, K, A, LDA, TAU, $ Q, LDQ, WORK, INFO )