178 SUBROUTINE zunmhr( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C,
179 $ ldc, work, lwork, info )
187 CHARACTER side, trans
188 INTEGER ihi, ilo, info, lda, ldc, lwork, m, n
191 COMPLEX*16 a( lda, * ), c( ldc, * ), tau( * ), work( * )
198 INTEGER i1, i2, iinfo, lwkopt, mi, nb, nh, ni, nq, nw
217 left =
lsame( side,
'L' )
218 lquery = ( lwork.EQ.-1 )
229 IF( .NOT.left .AND. .NOT.
lsame( side,
'R' ) )
THEN
231 ELSE IF( .NOT.
lsame( trans,
'N' ) .AND. .NOT.
lsame( trans,
'C' ) )
234 ELSE IF( m.LT.0 )
THEN
236 ELSE IF( n.LT.0 )
THEN
238 ELSE IF( ilo.LT.1 .OR. ilo.GT.max( 1, nq ) )
THEN
240 ELSE IF( ihi.LT.min( ilo, nq ) .OR. ihi.GT.nq )
THEN
242 ELSE IF( lda.LT.max( 1, nq ) )
THEN
244 ELSE IF( ldc.LT.max( 1, m ) )
THEN
246 ELSE IF( lwork.LT.max( 1, nw ) .AND. .NOT.lquery )
THEN
252 nb =
ilaenv( 1,
'ZUNMQR', side // trans, nh, n, nh, -1 )
254 nb =
ilaenv( 1,
'ZUNMQR', side // trans, m, nh, nh, -1 )
256 lwkopt = max( 1, nw )*nb
261 CALL
xerbla(
'ZUNMHR', -info )
263 ELSE IF( lquery )
THEN
269 IF( m.EQ.0 .OR. n.EQ.0 .OR. nh.EQ.0 )
THEN
286 CALL
zunmqr( side, trans, mi, ni, nh, a( ilo+1, ilo ), lda,
287 $ tau( ilo ), c( i1, i2 ), ldc, work, lwork, iinfo )
LOGICAL function lsame(CA, CB)
LSAME
subroutine xerbla(SRNAME, INFO)
XERBLA
INTEGER function ilaenv(ISPEC, NAME, OPTS, N1, N2, N3, N4)
subroutine zunmqr(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
ZUNMQR
subroutine zunmhr(SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
ZUNMHR