192 SUBROUTINE zunmbr( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C,
193 $ LDC, WORK, LWORK, INFO )
200 CHARACTER SIDE, TRANS, VECT
201 INTEGER INFO, K, LDA, LDC, LWORK, M, N
204 COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
210 LOGICAL APPLYQ, LEFT, LQUERY, NOTRAN
212 INTEGER I1, I2, IINFO, LWKOPT, MI, NB, NI, NQ, NW
217 EXTERNAL lsame, ilaenv
230 applyq = lsame( vect,
'Q' )
231 left = lsame( side,
'L' )
232 notran = lsame( trans,
'N' )
233 lquery = ( lwork.EQ.-1 )
244 IF( .NOT.applyq .AND. .NOT.lsame( vect,
'P' ) )
THEN
246 ELSE IF( .NOT.left .AND. .NOT.lsame( side,
'R' ) )
THEN
248 ELSE IF( .NOT.notran .AND. .NOT.lsame( trans,
'C' ) )
THEN
250 ELSE IF( m.LT.0 )
THEN
252 ELSE IF( n.LT.0 )
THEN
254 ELSE IF( k.LT.0 )
THEN
256 ELSE IF( ( applyq .AND. lda.LT.max( 1, nq ) ) .OR.
257 $ ( .NOT.applyq .AND. lda.LT.max( 1, min( nq, k ) ) ) )
260 ELSE IF( ldc.LT.max( 1, m ) )
THEN
262 ELSE IF( lwork.LT.nw .AND. .NOT.lquery )
THEN
267 IF( m.GT.0 .AND. n.GT.0 )
THEN
270 nb = ilaenv( 1,
'ZUNMQR', side // trans, m-1, n,
274 nb = ilaenv( 1,
'ZUNMQR', side // trans, m, n-1,
280 nb = ilaenv( 1,
'ZUNMLQ', side // trans, m-1, n,
284 nb = ilaenv( 1,
'ZUNMLQ', side // trans, m, n-1,
297 CALL xerbla(
'ZUNMBR', -info )
299 ELSE IF( lquery )
THEN
305 IF( m.EQ.0 .OR. n.EQ.0 )
316 CALL zunmqr( side, trans, m, n, k, a, lda, tau, c, ldc,
317 $ work, lwork, iinfo )
318 ELSE IF( nq.GT.1 )
THEN
333 CALL zunmqr( side, trans, mi, ni, nq-1, a( 2, 1 ), lda,
335 $ c( i1, i2 ), ldc, work, lwork, iinfo )
350 CALL zunmlq( side, transt, m, n, k, a, lda, tau, c, ldc,
351 $ work, lwork, iinfo )
352 ELSE IF( nq.GT.1 )
THEN
367 CALL zunmlq( side, transt, mi, ni, nq-1, a( 1, 2 ), lda,
368 $ tau, c( i1, i2 ), ldc, work, lwork, iinfo )
subroutine zunmbr(vect, side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
ZUNMBR
subroutine zunmlq(side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
ZUNMLQ
subroutine zunmqr(side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
ZUNMQR