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
203 EXTERNAL lsame, ilaenv
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 zunmqr(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
ZUNMQR
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zunmhr(SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
ZUNMHR