170 SUBROUTINE cunmtr( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC,
171 $ WORK, LWORK, INFO )
178 CHARACTER SIDE, TRANS, UPLO
179 INTEGER INFO, LDA, LDC, LWORK, M, N
182 COMPLEX A( LDA, * ), C( LDC, * ), TAU( * ),
189 LOGICAL LEFT, LQUERY, UPPER
190 INTEGER I1, I2, IINFO, LWKOPT, MI, NB, NI, NQ, NW
195 EXTERNAL ilaenv, lsame
208 left = lsame( side,
'L' )
209 upper = lsame( uplo,
'U' )
210 lquery = ( lwork.EQ.-1 )
221 IF( .NOT.left .AND. .NOT.lsame( side,
'R' ) )
THEN
223 ELSE IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
225 ELSE IF( .NOT.lsame( trans,
'N' ) .AND. .NOT.lsame( trans,
'C' ) )
228 ELSE IF( m.LT.0 )
THEN
230 ELSE IF( n.LT.0 )
THEN
232 ELSE IF( lda.LT.max( 1, nq ) )
THEN
234 ELSE IF( ldc.LT.max( 1, m ) )
THEN
236 ELSE IF( lwork.LT.nw .AND. .NOT.lquery )
THEN
243 nb = ilaenv( 1,
'CUNMQL', side // trans, m-1, n, m-1,
246 nb = ilaenv( 1,
'CUNMQL', side // trans, m, n-1, n-1,
251 nb = ilaenv( 1,
'CUNMQR', side // trans, m-1, n, m-1,
254 nb = ilaenv( 1,
'CUNMQR', side // trans, m, n-1, n-1,
263 CALL xerbla(
'CUNMTR', -info )
265 ELSE IF( lquery )
THEN
271 IF( m.EQ.0 .OR. n.EQ.0 .OR. nq.EQ.1 )
THEN
288 CALL cunmql( side, trans, mi, ni, nq-1, a( 1, 2 ), lda, tau, c,
289 $ ldc, work, lwork, iinfo )
301 CALL cunmqr( side, trans, mi, ni, nq-1, a( 2, 1 ), lda, tau,
302 $ c( i1, i2 ), ldc, work, lwork, iinfo )
subroutine xerbla(SRNAME, INFO)
XERBLA
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 cunmqr(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
CUNMQR