@@ -213,6 +213,9 @@ SUBROUTINE DORGTSQR_ROW( M, N, MB, NB, A, LDA, T, LDT, WORK,
213
213
$ LWORKOPT, NUM_ALL_ROW_BLOCKS, JB_T, IB, IMB,
214
214
$ KB, KB_LAST, KNB, MB1
215
215
* ..
216
+ * .. Local Arrays ..
217
+ DOUBLE PRECISION DUMMY( 1 , 1 )
218
+ * ..
216
219
* .. External Subroutines ..
217
220
EXTERNAL DLARFB_GETT, DLASET, XERBLA
218
221
* ..
@@ -353,9 +356,21 @@ SUBROUTINE DORGTSQR_ROW( M, N, MB, NB, A, LDA, T, LDT, WORK,
353
356
*
354
357
KNB = MIN ( NBLOCAL, N - KB + 1 )
355
358
*
356
- CALL DLARFB_GETT( ' N' , MB1- KB- KNB+1 , N- KB+1 , KNB,
357
- $ T( 1 , KB ), LDT, A( KB, KB ), LDA,
358
- $ A( KB+ KNB, KB), LDA, WORK, KNB )
359
+ IF ( MB1- KB- KNB+1.EQ .0 ) THEN
360
+ *
361
+ * In SLARFB_GETT parameters, when M=0, then the matrix B
362
+ * does not exist, hence we need to pass a dummy array
363
+ * reference DUMMY(1,1) to B with LDDUMMY=1.
364
+ *
365
+ CALL DLARFB_GETT( ' N' , 0 , N- KB+1 , KNB,
366
+ $ T( 1 , KB ), LDT, A( KB, KB ), LDA,
367
+ $ DUMMY( 1 , 1 ), 1 , WORK, KNB )
368
+ ELSE
369
+ CALL DLARFB_GETT( ' N' , MB1- KB- KNB+1 , N- KB+1 , KNB,
370
+ $ T( 1 , KB ), LDT, A( KB, KB ), LDA,
371
+ $ A( KB+ KNB, KB), LDA, WORK, KNB )
372
+
373
+ END IF
359
374
*
360
375
END DO
361
376
*
0 commit comments