Fix workspace calculation (Reference-LAPACK PR690)
This commit is contained in:
parent
8c99d5d1b6
commit
cb48c29b6f
|
@ -81,7 +81,8 @@ C> \verbatim
|
|||
C> LWORK is INTEGER
|
||||
C> \endverbatim
|
||||
C> \verbatim
|
||||
C> The dimension of the array WORK. The dimension can be divided into three parts.
|
||||
C> The dimension of the array WORK. LWORK >= 1 if MIN(M,N) = 0,
|
||||
C> otherwise the dimension can be divided into three parts.
|
||||
C> \endverbatim
|
||||
C> \verbatim
|
||||
C> 1) The part for the triangular factor T. If the very last T is not bigger
|
||||
|
@ -212,7 +213,13 @@ C>
|
|||
LLWORK = MAX (MAX((N-M)*K, (N-M)*NB), MAX(K*NB, NB*NB))
|
||||
LLWORK = SCEIL(REAL(LLWORK)/REAL(NB))
|
||||
|
||||
IF ( NT.GT.NB ) THEN
|
||||
IF( K.EQ.0 ) THEN
|
||||
|
||||
LBWORK = 0
|
||||
LWKOPT = 1
|
||||
WORK( 1 ) = LWKOPT
|
||||
|
||||
ELSE IF ( NT.GT.NB ) THEN
|
||||
|
||||
LBWORK = K-NT
|
||||
*
|
||||
|
@ -239,8 +246,9 @@ C>
|
|||
INFO = -2
|
||||
ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
|
||||
INFO = -4
|
||||
ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
|
||||
INFO = -7
|
||||
ELSE IF ( .NOT.LQUERY ) THEN
|
||||
IF( LWORK.LE.0 .OR. ( M.GT.0 .AND. LWORK.LT.MAX( 1, N ) ) )
|
||||
$ INFO = -7
|
||||
END IF
|
||||
IF( INFO.NE.0 ) THEN
|
||||
CALL XERBLA( 'CGEQRF', -INFO )
|
||||
|
@ -252,7 +260,6 @@ C>
|
|||
* Quick return if possible
|
||||
*
|
||||
IF( K.EQ.0 ) THEN
|
||||
WORK( 1 ) = 1
|
||||
RETURN
|
||||
END IF
|
||||
*
|
||||
|
|
|
@ -81,7 +81,8 @@ C> \verbatim
|
|||
C> LWORK is INTEGER
|
||||
C> \endverbatim
|
||||
C> \verbatim
|
||||
C> The dimension of the array WORK. The dimension can be divided into three parts.
|
||||
C> The dimension of the array WORK. LWORK >= 1 if MIN(M,N) = 0,
|
||||
C> otherwise the dimension can be divided into three parts.
|
||||
C> \endverbatim
|
||||
C> \verbatim
|
||||
C> 1) The part for the triangular factor T. If the very last T is not bigger
|
||||
|
@ -212,7 +213,13 @@ C>
|
|||
LLWORK = MAX (MAX((N-M)*K, (N-M)*NB), MAX(K*NB, NB*NB))
|
||||
LLWORK = SCEIL(REAL(LLWORK)/REAL(NB))
|
||||
|
||||
IF ( NT.GT.NB ) THEN
|
||||
IF( K.EQ.0 ) THEN
|
||||
|
||||
LBWORK = 0
|
||||
LWKOPT = 1
|
||||
WORK( 1 ) = LWKOPT
|
||||
|
||||
ELSE IF ( NT.GT.NB ) THEN
|
||||
|
||||
LBWORK = K-NT
|
||||
*
|
||||
|
@ -239,8 +246,9 @@ C>
|
|||
INFO = -2
|
||||
ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
|
||||
INFO = -4
|
||||
ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
|
||||
INFO = -7
|
||||
ELSE IF ( .NOT.LQUERY ) THEN
|
||||
IF( LWORK.LE.0 .OR. ( M.GT.0 .AND. LWORK.LT.MAX( 1, N ) ) )
|
||||
$ INFO = -7
|
||||
END IF
|
||||
IF( INFO.NE.0 ) THEN
|
||||
CALL XERBLA( 'DGEQRF', -INFO )
|
||||
|
@ -252,7 +260,6 @@ C>
|
|||
* Quick return if possible
|
||||
*
|
||||
IF( K.EQ.0 ) THEN
|
||||
WORK( 1 ) = 1
|
||||
RETURN
|
||||
END IF
|
||||
*
|
||||
|
|
|
@ -81,7 +81,8 @@ C> \verbatim
|
|||
C> LWORK is INTEGER
|
||||
C> \endverbatim
|
||||
C> \verbatim
|
||||
C> The dimension of the array WORK. The dimension can be divided into three parts.
|
||||
C> The dimension of the array WORK. LWORK >= 1 if MIN(M,N) = 0,
|
||||
C> otherwise the dimension can be divided into three parts.
|
||||
C> \endverbatim
|
||||
C> \verbatim
|
||||
C> 1) The part for the triangular factor T. If the very last T is not bigger
|
||||
|
@ -212,7 +213,13 @@ C>
|
|||
LLWORK = MAX (MAX((N-M)*K, (N-M)*NB), MAX(K*NB, NB*NB))
|
||||
LLWORK = SCEIL(REAL(LLWORK)/REAL(NB))
|
||||
|
||||
IF ( NT.GT.NB ) THEN
|
||||
IF( K.EQ.0 ) THEN
|
||||
|
||||
LBWORK = 0
|
||||
LWKOPT = 1
|
||||
WORK( 1 ) = LWKOPT
|
||||
|
||||
ELSE IF ( NT.GT.NB ) THEN
|
||||
|
||||
LBWORK = K-NT
|
||||
*
|
||||
|
@ -239,8 +246,9 @@ C>
|
|||
INFO = -2
|
||||
ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
|
||||
INFO = -4
|
||||
ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
|
||||
INFO = -7
|
||||
ELSE IF ( .NOT.LQUERY ) THEN
|
||||
IF( LWORK.LE.0 .OR. ( M.GT.0 .AND. LWORK.LT.MAX( 1, N ) ) )
|
||||
$ INFO = -7
|
||||
END IF
|
||||
IF( INFO.NE.0 ) THEN
|
||||
CALL XERBLA( 'SGEQRF', -INFO )
|
||||
|
@ -252,7 +260,6 @@ C>
|
|||
* Quick return if possible
|
||||
*
|
||||
IF( K.EQ.0 ) THEN
|
||||
WORK( 1 ) = 1
|
||||
RETURN
|
||||
END IF
|
||||
*
|
||||
|
|
|
@ -81,7 +81,8 @@ C> \verbatim
|
|||
C> LWORK is INTEGER
|
||||
C> \endverbatim
|
||||
C> \verbatim
|
||||
C> The dimension of the array WORK. The dimension can be divided into three parts.
|
||||
C> The dimension of the array WORK. LWORK >= 1 if MIN(M,N) = 0,
|
||||
C> otherwise the dimension can be divided into three parts.
|
||||
C> \endverbatim
|
||||
C> \verbatim
|
||||
C> 1) The part for the triangular factor T. If the very last T is not bigger
|
||||
|
@ -212,7 +213,13 @@ C>
|
|||
LLWORK = MAX (MAX((N-M)*K, (N-M)*NB), MAX(K*NB, NB*NB))
|
||||
LLWORK = SCEIL(REAL(LLWORK)/REAL(NB))
|
||||
|
||||
IF ( NT.GT.NB ) THEN
|
||||
IF( K.EQ.0 ) THEN
|
||||
|
||||
LBWORK = 0
|
||||
LWKOPT = 1
|
||||
WORK( 1 ) = LWKOPT
|
||||
|
||||
ELSE IF ( NT.GT.NB ) THEN
|
||||
|
||||
LBWORK = K-NT
|
||||
*
|
||||
|
@ -239,8 +246,9 @@ C>
|
|||
INFO = -2
|
||||
ELSE IF( LDA.LT.MAX( 1, M ) ) THEN
|
||||
INFO = -4
|
||||
ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
|
||||
INFO = -7
|
||||
ELSE IF ( .NOT.LQUERY ) THEN
|
||||
IF( LWORK.LE.0 .OR. ( M.GT.0 .AND. LWORK.LT.MAX( 1, N ) ) )
|
||||
$ INFO = -7
|
||||
END IF
|
||||
IF( INFO.NE.0 ) THEN
|
||||
CALL XERBLA( 'ZGEQRF', -INFO )
|
||||
|
@ -252,7 +260,6 @@ C>
|
|||
* Quick return if possible
|
||||
*
|
||||
IF( K.EQ.0 ) THEN
|
||||
WORK( 1 ) = 1
|
||||
RETURN
|
||||
END IF
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue