Page 1 of 1

?GESVDX - Workspace calculations

PostPosted: Fri Nov 20, 2015 8:34 am
by lawrence mulholland
Looks to me like workspace calculations have some errors.
This particularly affects paths 1 and 1t

For example, in DGESVDX, I believe the correct code for paths 1 and 2 should be:
(Note: paths 1t and 2t are the same with M and N reversed)
Code: Select all
*
*                 Path 1 (M much larger than N)
*
                  MAXWRK = N +
     $                     N*ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 )
                  MAXWRK = MAX( MAXWRK, N*(N+5) + 2*N*
     $                     ILAENV( 1, 'DGEBRD', ' ', N, N, -1, -1 ) )
                  IF (WANTU) THEN
                      MAXWRK = MAX(MAXWRK,N*(N*3+6)+N*
     $                     ILAENV( 1, 'DORMQR', ' ', N, N, -1, -1 ) )
                  END IF
                  IF (WANTVT) THEN
                      MAXWRK = MAX(MAXWRK,N*(N*3+6)+N*
     $                     ILAENV( 1, 'DORMLQ', ' ', N, N, -1, -1 ) )
                  END IF
                  MINWRK = N*(N*3+20)
               ELSE
*
*                 Path 2 (M at least N, but not much larger)
*
                  MAXWRK = 4*N + ( M+N )*
     $                     ILAENV( 1, 'DGEBRD', ' ', M, N, -1, -1 )
                  IF (WANTU) THEN
                      MAXWRK = MAX(MAXWRK,N*(N*2+5)+N*
     $                     ILAENV( 1, 'DORMQR', ' ', N, N, -1, -1 ) )
                  END IF
                  IF (WANTVT) THEN
                      MAXWRK = MAX(MAXWRK,N*(N*2+5)+N*
     $                     ILAENV( 1, 'DORMLQ', ' ', N, N, -1, -1 ) )
                  END IF
                  MINWRK = MAX(N*(N*2+19),4*N+M)
             END IF

Re: ?GESVDX - Workspace calculations

PostPosted: Sat Nov 21, 2015 1:41 pm
by Julien Langou
Hi Lawrence,

I pushed a commit with rev 1655 to address this. Thanks a lot for pointing out the problem and providing us with a fix.

Best wishes,
Julien.