169 SUBROUTINE zunmtr( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC,
170 $ WORK, LWORK, INFO )
177 CHARACTER SIDE, TRANS, UPLO
178 INTEGER INFO, LDA, LDC, LWORK, M, N
181 COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
187 LOGICAL LEFT, LQUERY, UPPER
188 INTEGER I1, I2, IINFO, LWKOPT, MI, NB, NI, NQ, NW
193 EXTERNAL lsame, ilaenv
206 left = lsame( side,
'L' )
207 upper = lsame( uplo,
'U' )
208 lquery = ( lwork.EQ.-1 )
219 IF( .NOT.left .AND. .NOT.lsame( side,
'R' ) )
THEN
221 ELSE IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
223 ELSE IF( .NOT.lsame( trans,
'N' ) .AND. .NOT.lsame( trans,
'C' ) )
226 ELSE IF( m.LT.0 )
THEN
228 ELSE IF( n.LT.0 )
THEN
230 ELSE IF( lda.LT.max( 1, nq ) )
THEN
232 ELSE IF( ldc.LT.max( 1, m ) )
THEN
234 ELSE IF( lwork.LT.nw .AND. .NOT.lquery )
THEN
241 nb = ilaenv( 1,
'ZUNMQL', side // trans, m-1, n, m-1,
244 nb = ilaenv( 1,
'ZUNMQL', side // trans, m, n-1, n-1,
249 nb = ilaenv( 1,
'ZUNMQR', side // trans, m-1, n, m-1,
252 nb = ilaenv( 1,
'ZUNMQR', side // trans, m, n-1, n-1,
261 CALL xerbla(
'ZUNMTR', -info )
263 ELSE IF( lquery )
THEN
269 IF( m.EQ.0 .OR. n.EQ.0 .OR. nq.EQ.1 )
THEN
286 CALL zunmql( side, trans, mi, ni, nq-1, a( 1, 2 ), lda, tau, c,
287 $ ldc, work, lwork, iinfo )
299 CALL zunmqr( side, trans, mi, ni, nq-1, a( 2, 1 ), lda, tau,
300 $ c( i1, i2 ), ldc, work, lwork, iinfo )
subroutine xerbla(srname, info)
subroutine zunmql(side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
ZUNMQL
subroutine zunmqr(side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
ZUNMQR
subroutine zunmtr(side, uplo, trans, m, n, a, lda, tau, c, ldc, work, lwork, info)
ZUNMTR