167 SUBROUTINE zunmtr( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C,
169 $ WORK, LWORK, INFO )
176 CHARACTER SIDE, TRANS, UPLO
177 INTEGER INFO, LDA, LDC, LWORK, M, N
180 COMPLEX*16 A( LDA, * ), C( LDC, * ), TAU( * ), WORK( * )
186 LOGICAL LEFT, LQUERY, UPPER
187 INTEGER I1, I2, IINFO, LWKOPT, MI, NB, NI, NQ, NW
192 EXTERNAL lsame, ilaenv
205 left = lsame( side,
'L' )
206 upper = lsame( uplo,
'U' )
207 lquery = ( lwork.EQ.-1 )
218 IF( .NOT.left .AND. .NOT.lsame( side,
'R' ) )
THEN
220 ELSE IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
222 ELSE IF( .NOT.lsame( trans,
'N' ) .AND.
223 $ .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,
288 $ ldc, work, lwork, iinfo )
300 CALL zunmqr( side, trans, mi, ni, nq-1, a( 2, 1 ), lda, tau,
301 $ c( i1, i2 ), ldc, work, lwork, iinfo )
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