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 )
subroutine xerbla(SRNAME, INFO)
XERBLA
logical function lsame(CA, CB)
LSAME
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
integer function ilaenv(ISPEC, NAME, OPTS, N1, N2, N3, N4)