Skip to content

Commit 034ada1

Browse files
authored
Merge pull request #1035 from frjohnst/geqp3_Jul2024
xGEQP3 changes July 2024
2 parents a220748 + 6a53243 commit 034ada1

4 files changed

Lines changed: 24 additions & 4 deletions

File tree

SRC/cgeqp3.f

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,11 @@ SUBROUTINE CGEQP3( M, N, A, LDA, JPVT, TAU, WORK, LWORK, RWORK,
248248
JPVT( J ) = J
249249
END IF
250250
10 CONTINUE
251+
*
252+
* Quick return if possible.
253+
*
254+
IF( M.EQ.0 ) RETURN
255+
*
251256
NFXD = NFXD - 1
252257
*
253258
* Factorize fixed columns

SRC/dgeqp3.f

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,11 @@ SUBROUTINE DGEQP3( M, N, A, LDA, JPVT, TAU, WORK, LWORK, INFO )
239239
JPVT( J ) = J
240240
END IF
241241
10 CONTINUE
242+
*
243+
* Quick return if possible
244+
*
245+
IF( M.EQ.0 ) RETURN
246+
*
242247
NFXD = NFXD - 1
243248
*
244249
* Factorize fixed columns
@@ -289,14 +294,14 @@ SUBROUTINE DGEQP3( M, N, A, LDA, JPVT, TAU, WORK, LWORK, INFO )
289294
*
290295
* Determine if workspace is large enough for blocked code.
291296
*
292-
MINWS = 2*SN + ( SN+1 )*NB
297+
MINWS = 2*N + ( SN+1 )*NB
293298
IWS = MAX( IWS, MINWS )
294299
IF( LWORK.LT.MINWS ) THEN
295300
*
296301
* Not enough workspace to use optimal NB: Reduce NB and
297302
* determine the minimum value of NB.
298303
*
299-
NB = ( LWORK-2*SN ) / ( SN+1 )
304+
NB = ( LWORK-2*N ) / ( SN+1 )
300305
NBMIN = MAX( 2, ILAENV( INBMIN, 'DGEQRF', ' ', SM,
301306
$ SN,
302307
$ -1, -1 ) )

SRC/sgeqp3.f

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,11 @@ SUBROUTINE SGEQP3( M, N, A, LDA, JPVT, TAU, WORK, LWORK, INFO )
236236
JPVT( J ) = J
237237
END IF
238238
10 CONTINUE
239+
*
240+
* Quick return if possible.
241+
*
242+
IF( M.EQ.0 ) RETURN
243+
*
239244
NFXD = NFXD - 1
240245
*
241246
* Factorize fixed columns
@@ -286,14 +291,14 @@ SUBROUTINE SGEQP3( M, N, A, LDA, JPVT, TAU, WORK, LWORK, INFO )
286291
*
287292
* Determine if workspace is large enough for blocked code.
288293
*
289-
MINWS = 2*SN + ( SN+1 )*NB
294+
MINWS = 2*N + ( SN+1 )*NB
290295
IWS = MAX( IWS, MINWS )
291296
IF( LWORK.LT.MINWS ) THEN
292297
*
293298
* Not enough workspace to use optimal NB: Reduce NB and
294299
* determine the minimum value of NB.
295300
*
296-
NB = ( LWORK-2*SN ) / ( SN+1 )
301+
NB = ( LWORK-2*N ) / ( SN+1 )
297302
NBMIN = MAX( 2, ILAENV( INBMIN, 'SGEQRF', ' ', SM,
298303
$ SN,
299304
$ -1, -1 ) )

SRC/zgeqp3.f

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,11 @@ SUBROUTINE ZGEQP3( M, N, A, LDA, JPVT, TAU, WORK, LWORK, RWORK,
248248
JPVT( J ) = J
249249
END IF
250250
10 CONTINUE
251+
*
252+
* Quick return if possible.
253+
*
254+
IF( M.EQ.0 ) RETURN
255+
*
251256
NFXD = NFXD - 1
252257
*
253258
* Factorize fixed columns

0 commit comments

Comments
 (0)