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

