179 SUBROUTINE cunmhr( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C,
180 $ ldc, work, lwork, info )
188 CHARACTER side, trans
189 INTEGER ihi, ilo, info, lda, ldc, lwork, m, n
192 COMPLEX a( lda, * ), c( ldc, * ), tau( * ),
200 INTEGER i1, i2, iinfo, lwkopt, mi, nb, nh, ni, nq, nw
219 left =
lsame( side,
'L' )
220 lquery = ( lwork.EQ.-1 )
231 IF( .NOT.left .AND. .NOT.
lsame( side,
'R' ) )
THEN
233 ELSE IF( .NOT.
lsame( trans,
'N' ) .AND. .NOT.
lsame( trans,
'C' ) )
236 ELSE IF( m.LT.0 )
THEN
238 ELSE IF( n.LT.0 )
THEN
240 ELSE IF( ilo.LT.1 .OR. ilo.GT.max( 1, nq ) )
THEN
242 ELSE IF( ihi.LT.min( ilo, nq ) .OR. ihi.GT.nq )
THEN
244 ELSE IF( lda.LT.max( 1, nq ) )
THEN
246 ELSE IF( ldc.LT.max( 1, m ) )
THEN
248 ELSE IF( lwork.LT.max( 1, nw ) .AND. .NOT.lquery )
THEN
254 nb =
ilaenv( 1,
'CUNMQR', side // trans, nh, n, nh, -1 )
256 nb =
ilaenv( 1,
'CUNMQR', side // trans, m, nh, nh, -1 )
258 lwkopt = max( 1, nw )*nb
263 CALL
xerbla(
'CUNMHR', -info )
265 ELSE IF( lquery )
THEN
271 IF( m.EQ.0 .OR. n.EQ.0 .OR. nh.EQ.0 )
THEN
288 CALL
cunmqr( side, trans, mi, ni, nh, a( ilo+1, ilo ), lda,
289 $ tau( ilo ), c( i1, i2 ), ldc, work, lwork, iinfo )