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
205 EXTERNAL ilaenv, lsame
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 )