195 SUBROUTINE cunmbr( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C,
196 $ LDC, WORK, LWORK, INFO )
203 CHARACTER SIDE, TRANS, VECT
204 INTEGER INFO, K, LDA, LDC, LWORK, M, N
207 COMPLEX A( LDA, * ), C( LDC, * ), TAU( * ),
214 LOGICAL APPLYQ, LEFT, LQUERY, NOTRAN
216 INTEGER I1, I2, IINFO, LWKOPT, MI, NB, NI, NQ, NW
221 EXTERNAL ilaenv, lsame
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,
'C' ) )
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.nw
THEN
271 IF( m.GT.0 .AND. n.GT.0 )
THEN
274 nb = ilaenv( 1,
'CUNMQR', side // trans, m-1, n, m-1,
277 nb = ilaenv( 1,
'CUNMQR', side // trans, m, n-1, n-1,
282 nb = ilaenv( 1, '
cunmlq', SIDE // TRANS, M-1, N, M-1,
285 NB = ILAENV( 1, 'cunmlq', SIDE // TRANS, M, N-1, N-1,
297 CALL XERBLA( 'cunmbr', -INFO )
299 ELSE IF( LQUERY ) THEN
305.EQ..OR..EQ.
IF( M0 N0 )
316 CALL CUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
317 $ WORK, LWORK, IINFO )
318.GT.
ELSE IF( NQ1 ) THEN
333 CALL CUNMQR( SIDE, TRANS, MI, NI, NQ-1, A( 2, 1 ), LDA, TAU,
334 $ C( I1, I2 ), LDC, WORK, LWORK, IINFO )
349 CALL CUNMLQ( SIDE, TRANST, M, N, K, A, LDA, TAU, C, LDC,
350 $ WORK, LWORK, IINFO )
351.GT.
ELSE IF( NQ1 ) THEN
366 CALL CUNMLQ( SIDE, TRANST, MI, NI, NQ-1, A( 1, 2 ), LDA,
367 $ TAU, C( I1, I2 ), LDC, WORK, LWORK, IINFO )
subroutine cunmqr(side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
CUNMQR
subroutine cunmlq(side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
CUNMLQ
subroutine cunmbr(vect, side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
CUNMBR