172 SUBROUTINE cunmtr( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC,
173 $ WORK, LWORK, INFO )
181 CHARACTER SIDE, TRANS, UPLO
182 INTEGER INFO, LDA, LDC, LWORK, M, N
185 COMPLEX A( lda, * ), C( ldc, * ), TAU( * ),
192 LOGICAL LEFT, LQUERY, UPPER
193 INTEGER I1, I2, IINFO, LWKOPT, MI, NB, NI, NQ, NW
198 EXTERNAL ilaenv, lsame
211 left = lsame( side,
'L' )
212 upper = lsame( uplo,
'U' )
213 lquery = ( lwork.EQ.-1 )
224 IF( .NOT.left .AND. .NOT.lsame( side,
'R' ) )
THEN 226 ELSE IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN 228 ELSE IF( .NOT.lsame( trans,
'N' ) .AND. .NOT.lsame( trans,
'C' ) )
231 ELSE IF( m.LT.0 )
THEN 233 ELSE IF( n.LT.0 )
THEN 235 ELSE IF( lda.LT.max( 1, nq ) )
THEN 237 ELSE IF( ldc.LT.max( 1, m ) )
THEN 239 ELSE IF( lwork.LT.max( 1, nw ) .AND. .NOT.lquery )
THEN 246 nb = ilaenv( 1,
'CUNMQL', side // trans, m-1, n, m-1,
249 nb = ilaenv( 1,
'CUNMQL', side // trans, m, n-1, n-1,
254 nb = ilaenv( 1,
'CUNMQR', side // trans, m-1, n, m-1,
257 nb = ilaenv( 1,
'CUNMQR', side // trans, m, n-1, n-1,
261 lwkopt = max( 1, nw )*nb
266 CALL xerbla(
'CUNMTR', -info )
268 ELSE IF( lquery )
THEN 274 IF( m.EQ.0 .OR. n.EQ.0 .OR. nq.EQ.1 )
THEN 291 CALL cunmql( side, trans, mi, ni, nq-1, a( 1, 2 ), lda, tau, c,
292 $ ldc, work, lwork, iinfo )
304 CALL cunmqr( side, trans, mi, ni, nq-1, a( 2, 1 ), lda, tau,
305 $ c( i1, i2 ), ldc, work, lwork, iinfo )
subroutine cunmtr(SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
CUNMTR
subroutine cunmql(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
CUNMQL
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine cunmqr(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
CUNMQR