Skip to content

Commit 280e161

Browse files
committed
add missed usage of sroundup_lwork in several functions
1 parent cd7523d commit 280e161

25 files changed

+42
-32
lines changed

SRC/cgehrd.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ SUBROUTINE CGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO )
274274
*
275275
* Determine if workspace is large enough for blocked code
276276
*
277-
IF( LWORK.LT.N*NB+TSIZE ) THEN
277+
IF( LWORK.LT.LWKOPT ) THEN
278278
*
279279
* Not enough workspace to use optimal NB: determine the
280280
* minimum value of NB, and reduce NB or force use of

SRC/cgeqr.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ SUBROUTINE CGEQR( M, N, A, LDA, T, TSIZE, WORK, LWORK,
273273
ELSE IF( TSIZE.LT.MAX( 1, NB*N*NBLCKS + 5 )
274274
$ .AND. ( .NOT.LQUERY ) .AND. ( .NOT.LMINWS ) ) THEN
275275
INFO = -6
276-
ELSE IF( ( LWORK.LT.MAX( 1, N*NB ) ) .AND. ( .NOT.LQUERY )
276+
ELSE IF( ( LWORK.LT.LWREQ ) .AND. ( .NOT.LQUERY )
277277
$ .AND. ( .NOT.LMINWS ) ) THEN
278278
INFO = -8
279279
END IF

SRC/cgesvdx.f

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@
208208
*> \param[out] WORK
209209
*> \verbatim
210210
*> WORK is COMPLEX array, dimension (MAX(1,LWORK))
211-
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK;
211+
*> On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
212212
*> \endverbatim
213213
*>
214214
*> \param[in] LWORK
@@ -312,8 +312,8 @@ SUBROUTINE CGESVDX( JOBU, JOBVT, RANGE, M, N, A, LDA, VL, VU,
312312
* .. External Functions ..
313313
LOGICAL LSAME
314314
INTEGER ILAENV
315-
REAL SLAMCH, CLANGE
316-
EXTERNAL LSAME, ILAENV, SLAMCH, CLANGE
315+
REAL SLAMCH, CLANGE, SROUNDUP_LWORK
316+
EXTERNAL LSAME, ILAENV, SLAMCH, CLANGE, SROUNDUP_LWORK
317317
* ..
318318
* .. Intrinsic Functions ..
319319
INTRINSIC MAX, MIN, SQRT
@@ -448,7 +448,7 @@ SUBROUTINE CGESVDX( JOBU, JOBVT, RANGE, M, N, A, LDA, VL, VU,
448448
END IF
449449
END IF
450450
MAXWRK = MAX( MAXWRK, MINWRK )
451-
WORK( 1 ) = CMPLX( REAL( MAXWRK ), ZERO )
451+
WORK( 1 ) = SROUNDUP_LWORK( MAXWRK )
452452
*
453453
IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN
454454
INFO = -19
@@ -846,7 +846,7 @@ SUBROUTINE CGESVDX( JOBU, JOBVT, RANGE, M, N, A, LDA, VL, VU,
846846
*
847847
* Return optimal workspace in WORK(1)
848848
*
849-
WORK( 1 ) = CMPLX( REAL( MAXWRK ), ZERO )
849+
WORK( 1 ) = SROUNDUP_LWORK( MAXWRK )
850850
*
851851
RETURN
852852
*

SRC/cgghd3.f

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -893,7 +893,8 @@ SUBROUTINE CGGHD3( COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q,
893893
IF ( JCOL.LT.IHI )
894894
$ CALL CGGHRD( COMPQ2, COMPZ2, N, JCOL, IHI, A, LDA, B, LDB, Q,
895895
$ LDQ, Z, LDZ, IERR )
896-
WORK( 1 ) = CMPLX( LWKOPT )
896+
*
897+
WORK( 1 ) = SROUNDUP_LWORK( LWKOPT )
897898
*
898899
RETURN
899900
*

SRC/cheevd.f

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -281,8 +281,8 @@ SUBROUTINE CHEEVD( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK,
281281
LROPT = LRWMIN
282282
LIOPT = LIWMIN
283283
END IF
284-
WORK( 1 ) = SROUNDUP_LWORK(LOPT)
285-
RWORK( 1 ) = LROPT
284+
WORK( 1 ) = SROUNDUP_LWORK( LOPT )
285+
RWORK( 1 ) = SROUNDUP_LWORK( LROPT )
286286
IWORK( 1 ) = LIOPT
287287
*
288288
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
@@ -377,8 +377,8 @@ SUBROUTINE CHEEVD( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK,
377377
CALL SSCAL( IMAX, ONE / SIGMA, W, 1 )
378378
END IF
379379
*
380-
WORK( 1 ) = SROUNDUP_LWORK(LOPT)
381-
RWORK( 1 ) = LROPT
380+
WORK( 1 ) = SROUNDUP_LWORK( LOPT )
381+
RWORK( 1 ) = SROUNDUP_LWORK( LROPT )
382382
IWORK( 1 ) = LIOPT
383383
*
384384
RETURN

SRC/chetrf.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ SUBROUTINE CHETRF( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
228228
* Determine the block size
229229
*
230230
NB = ILAENV( 1, 'CHETRF', UPLO, N, -1, -1, -1 )
231-
LWKOPT = N*NB
231+
LWKOPT = MAX( 1, N*NB )
232232
WORK( 1 ) = SROUNDUP_LWORK( LWKOPT )
233233
END IF
234234
*

SRC/chetrf_rk.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ SUBROUTINE CHETRF_RK( UPLO, N, A, LDA, E, IPIV, WORK, LWORK,
311311
* Determine the block size
312312
*
313313
NB = ILAENV( 1, 'CHETRF_RK', UPLO, N, -1, -1, -1 )
314-
LWKOPT = N*NB
314+
LWKOPT = MAX( 1, N*NB )
315315
WORK( 1 ) = SROUNDUP_LWORK( LWKOPT )
316316
END IF
317317
*

SRC/chetri2.f

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ SUBROUTINE CHETRI2( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
178178
INFO = -2
179179
ELSE IF( LDA.LT.MAX( 1, N ) ) THEN
180180
INFO = -4
181-
ELSE IF ( LWORK.LT.MINSIZE .AND. .NOT.LQUERY ) THEN
181+
ELSE IF( LWORK.LT.MINSIZE .AND. .NOT.LQUERY ) THEN
182182
INFO = -7
183183
END IF
184184
*
@@ -195,11 +195,12 @@ SUBROUTINE CHETRI2( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
195195
IF( N.EQ.0 )
196196
$ RETURN
197197

198-
IF( NBMAX .GE. N ) THEN
198+
IF( NBMAX.GE.N ) THEN
199199
CALL CHETRI( UPLO, N, A, LDA, IPIV, WORK, INFO )
200200
ELSE
201201
CALL CHETRI2X( UPLO, N, A, LDA, IPIV, WORK, NBMAX, INFO )
202202
END IF
203+
*
203204
RETURN
204205
*
205206
* End of CHETRI2

SRC/chetrs_aa.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ SUBROUTINE CHETRS_AA( UPLO, N, NRHS, A, LDA, IPIV, B, LDB,
204204
*
205205
* Quick return if possible
206206
*
207-
IF( N.EQ.0 .OR. NRHS.EQ.0 )
207+
IF( MIN( N, NRHS ).EQ.0 )
208208
$ RETURN
209209
*
210210
IF( UPPER ) THEN

SRC/dgehrd.f

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ SUBROUTINE DGEHRD( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO )
273273
*
274274
* Determine if workspace is large enough for blocked code
275275
*
276-
IF( LWORK.LT.N*NB+TSIZE ) THEN
276+
IF( LWORK.LT.LWKOPT ) THEN
277277
*
278278
* Not enough workspace to use optimal NB: determine the
279279
* minimum value of NB, and reduce NB or force use of

0 commit comments

Comments
 (0)