@@ -144,7 +144,7 @@ SUBROUTINE DORGLQ( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
144144 $ NB, NBMIN, NX
145145* ..
146146* .. External Subroutines ..
147- EXTERNAL DLARFB0C2, DLARFT, DORGL2, XERBLA
147+ EXTERNAL DLARFB0C2, DLARFT, DORGL2, DORGLK, XERBLA
148148* ..
149149* .. Intrinsic Functions ..
150150 INTRINSIC MAX, MIN
@@ -159,7 +159,8 @@ SUBROUTINE DORGLQ( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
159159*
160160 INFO = 0
161161 NB = ILAENV( 1 , ' DORGLQ' , ' ' , M, N, K, - 1 )
162- LWKOPT = MAX ( 1 , M ) * NB
162+ ! Only need a workspace for calls to dorgl2
163+ LWKOPT = MAX ( 1 , M )
163164 WORK( 1 ) = LWKOPT
164165 LQUERY = ( LWORK.EQ. - 1 )
165166 IF ( M.LT. 0 ) THEN
@@ -268,7 +269,7 @@ SUBROUTINE DORGLQ( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
268269 $ LDA, A(I,I), LDA, A(I+ IB,I), LDA)
269270*
270271* Apply H to columns i:n of current block
271-
272+ *
272273 CALL DORGLK( IB, N- I+1 , A( I, I ), LDA)
273274 END DO
274275*
@@ -283,19 +284,18 @@ SUBROUTINE DORGLQ( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
283284* Form the triangular factor of the block reflector
284285* H = H(i) H(i+1) . . . H(i+ib-1)
285286*
286- CALL DLARFT( ' Forward' , ' Rowwise' , N- I+1 , IB, A( I, I ),
287- $ LDA, TAU( I ), WORK, LDWORK )
287+ CALL DLARFT( ' Forward' , ' Transpose' , N- I+1 , IB, A(I,I),
288+ $ LDA, TAU( I ), A( I, I ), LDA )
289+ *
290+ * Apply H to A(i+ib:m,i:n) from the right
288291*
289- * Apply H**T to A(i+ib:m,i:n) from the right
292+ CALL DLARFB0C2(.FALSE. , ' Right' , ' No Transpose' ,
293+ $ ' Forward' , ' Rowwise' , M- I- IB+1 , N- I+1 , IB, A(I,I),
294+ $ LDA, A(I,I), LDA, A(I+ IB,I), LDA)
290295*
291- CALL DLARFB0C2(.FALSE. , ' Right' , ' Transpose' , ' Forward' ,
292- $ ' Rowwise' , M- I- IB+1 , N- I+1 , IB, A(I,I), LDA, WORK,
293- $ LDWORK, A(I+ IB,I), LDA)
296+ * Apply H to columns i:n of current block
294297*
295- * Apply H**T to columns i:n of current block
296-
297- CALL DORGL2( IB, N- I+1 , IB, A( I, I ), LDA, TAU( I ),
298- $ WORK, IINFO )
298+ CALL DORGLK( IB, N- I+1 , A( I, I ), LDA)
299299 END IF
300300 END IF
301301*
0 commit comments