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)
XERBLA
subroutine zunmqr(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
ZUNMQR
subroutine zunmql(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
ZUNMQL
subroutine zunmtr(SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
ZUNMTR