195 SUBROUTINE dormbr( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C,
196 $ ldc, work, lwork, info )
204 CHARACTER SIDE, TRANS, VECT
205 INTEGER INFO, K, LDA, LDC, LWORK, M, N
208 DOUBLE PRECISION A( lda, * ), C( ldc, * ), TAU( * ), WORK( * )
214 LOGICAL APPLYQ, LEFT, LQUERY, NOTRAN
216 INTEGER I1, I2, IINFO, LWKOPT, MI, NB, NI, NQ, NW
221 EXTERNAL lsame, ilaenv
234 applyq = lsame( vect,
'Q' )
235 left = lsame( side,
'L' )
236 notran = lsame( trans,
'N' )
237 lquery = ( lwork.EQ.-1 )
248 IF( .NOT.applyq .AND. .NOT.lsame( vect,
'P' ) )
THEN
250 ELSE IF( .NOT.left .AND. .NOT.lsame( side,
'R' ) )
THEN
252 ELSE IF( .NOT.notran .AND. .NOT.lsame( trans,
'T' ) )
THEN
254 ELSE IF( m.LT.0 )
THEN
256 ELSE IF( n.LT.0 )
THEN
258 ELSE IF( k.LT.0 )
THEN
260 ELSE IF( ( applyq .AND. lda.LT.max( 1, nq ) ) .OR.
261 $ ( .NOT.applyq .AND. lda.LT.max( 1, min( nq, k ) ) ) )
264 ELSE IF( ldc.LT.max( 1, m ) )
THEN
266 ELSE IF( lwork.LT.max( 1, nw ) .AND. .NOT.lquery )
THEN
273 nb = ilaenv( 1,
'DORMQR', side // trans, m-1, n, m-1,
276 nb = ilaenv( 1,
'DORMQR', side // trans, m, n-1, n-1,
281 nb = ilaenv( 1,
'DORMLQ', side // trans, m-1, n, m-1,
284 nb = ilaenv( 1,
'DORMLQ', side // trans, m, n-1, n-1,
288 lwkopt = max( 1, nw )*nb
293 CALL xerbla(
'DORMBR', -info )
295 ELSE IF( lquery )
THEN
302 IF( m.EQ.0 .OR. n.EQ.0 )
313 CALL dormqr( side, trans, m, n, k, a, lda, tau, c, ldc,
314 $ work, lwork, iinfo )
315 ELSE IF( nq.GT.1 )
THEN
330 CALL dormqr( side, trans, mi, ni, nq-1, a( 2, 1 ), lda, tau,
331 $ c( i1, i2 ), ldc, work, lwork, iinfo )
346 CALL dormlq( side, transt, m, n, k, a, lda, tau, c, ldc,
347 $ work, lwork, iinfo )
348 ELSE IF( nq.GT.1 )
THEN
363 CALL dormlq( side, transt, mi, ni, nq-1, a( 1, 2 ), lda,
364 $ tau, c( i1, i2 ), ldc, work, lwork, iinfo )
subroutine dormlq(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
DORMLQ
subroutine dormbr(VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
DORMBR
subroutine dormqr(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
DORMQR
subroutine xerbla(SRNAME, INFO)
XERBLA