177 SUBROUTINE cunmhr( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C,
178 $ LDC, WORK, LWORK, INFO )
185 CHARACTER SIDE, TRANS
186 INTEGER IHI, ILO, INFO, LDA, LDC, LWORK, M, N
189 COMPLEX A( LDA, * ), C( LDC, * ), TAU( * ),
197 INTEGER I1, I2, IINFO, LWKOPT, MI, NB, NH, NI, NQ, NW
203 EXTERNAL ilaenv, lsame, sroundup_lwork
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.nw .AND. .NOT.lquery )
THEN
252 nb = ilaenv( 1,
'CUNMQR', side // trans, nh, n, nh, -1 )
254 nb = ilaenv( 1,
'CUNMQR', side // trans, m, nh, nh, -1 )
257 work( 1 ) = sroundup_lwork(lwkopt)
261 CALL xerbla(
'CUNMHR', -info )
263 ELSE IF( lquery )
THEN
269 IF( m.EQ.0 .OR. n.EQ.0 .OR. nh.EQ.0 )
THEN
286 CALL cunmqr( side, trans, mi, ni, nh, a( ilo+1, ilo ), lda,
287 $ tau( ilo ), c( i1, i2 ), ldc, work, lwork, iinfo )
289 work( 1 ) = sroundup_lwork(lwkopt)
subroutine xerbla(srname, info)
subroutine cunmhr(side, trans, m, n, ilo, ihi, a, lda, tau, c, ldc, work, lwork, info)
CUNMHR
subroutine cunmqr(side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
CUNMQR