--- rpl/lapack/lapack/dgesdd.f 2011/11/21 22:19:28 1.9 +++ rpl/lapack/lapack/dgesdd.f 2014/01/27 09:24:34 1.13 @@ -175,8 +175,7 @@ *> LWORK >= 3*min(M,N) + *> max(max(M,N),5*min(M,N)*min(M,N)+4*min(M,N)). *> If JOBZ = 'S' or 'A' -*> LWORK >= 3*min(M,N) + -*> max(max(M,N),4*min(M,N)*min(M,N)+4*min(M,N)). +*> LWORK >= min(M,N)*(6+4*min(M,N))+max(M,N) *> For good performance, LWORK should generally be larger. *> If LWORK = -1 but other input arguments are legal, WORK(1) *> returns the optimal LWORK. @@ -203,7 +202,7 @@ *> \author Univ. of Colorado Denver *> \author NAG Ltd. * -*> \date November 2011 +*> \date November 2013 * *> \ingroup doubleGEsing * @@ -217,10 +216,10 @@ SUBROUTINE DGESDD( JOBZ, M, N, A, LDA, S, U, LDU, VT, LDVT, WORK, $ LWORK, IWORK, INFO ) * -* -- LAPACK driver routine (version 3.4.0) -- +* -- LAPACK driver routine (version 3.5.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* November 2011 +* November 2013 * * .. Scalar Arguments .. CHARACTER JOBZ @@ -372,7 +371,7 @@ $ ILAENV( 1, 'DORMBR', 'PRT', N, N, N, -1 ) ) WRKBL = MAX( WRKBL, BDSPAC+3*N ) MAXWRK = WRKBL + N*N - MINWRK = BDSPAC + N*N + 3*N + MINWRK = BDSPAC + N*N + 2*N + M END IF ELSE * @@ -766,14 +765,14 @@ NWORK = ITAU + N * * Compute A=Q*R, copying result to U -* (Workspace: need N*N+2*N, prefer N*N+N+N*NB) +* (Workspace: need N*N+N+M, prefer N*N+N+M*NB) * CALL DGEQRF( M, N, A, LDA, WORK( ITAU ), WORK( NWORK ), $ LWORK-NWORK+1, IERR ) CALL DLACPY( 'L', M, N, A, LDA, U, LDU ) * * Generate Q in U -* (Workspace: need N*N+2*N, prefer N*N+N+N*NB) +* (Workspace: need N*N+N+M, prefer N*N+N+M*NB) CALL DORGQR( M, M, N, U, LDU, WORK( ITAU ), $ WORK( NWORK ), LWORK-NWORK+1, IERR ) *