177 SUBROUTINE sormhr( 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 REAL A( LDA, * ), C( LDC, * ), TAU( * ),
197 INTEGER I1, I2, IINFO, LWKOPT, MI, NB, NH, NI, NQ, NW
202 EXTERNAL ilaenv, lsame
216 left = lsame( side,
'L' )
217 lquery = ( lwork.EQ.-1 )
228 IF( .NOT.left .AND. .NOT.lsame( side,
'R' ) )
THEN
230 ELSE IF( .NOT.lsame( trans,
'N' ) .AND. .NOT.lsame( trans,
'T' ) )
233 ELSE IF( m.LT.0 )
THEN
235 ELSE IF( n.LT.0 )
THEN
237 ELSE IF( ilo.LT.1 .OR. ilo.GT.max( 1, nq ) )
THEN
239 ELSE IF( ihi.LT.min( ilo, nq ) .OR. ihi.GT.nq )
THEN
241 ELSE IF( lda.LT.max( 1, nq ) )
THEN
243 ELSE IF( ldc.LT.max( 1, m ) )
THEN
245 ELSE IF( lwork.LT.nw .AND. .NOT.lquery )
THEN
251 nb = ilaenv( 1,
'SORMQR', side // trans, nh, n, nh, -1 )
253 nb = ilaenv( 1,
'SORMQR', side // trans, m, nh, nh, -1 )
260 CALL xerbla(
'SORMHR', -info )
262 ELSE IF( lquery )
THEN
268 IF( m.EQ.0 .OR. n.EQ.0 .OR. nh.EQ.0 )
THEN
285 CALL sormqr( side, trans, mi, ni, nh, a( ilo+1, ilo ), lda,
286 $ tau( ilo ), c( i1, i2 ), ldc, work, lwork, iinfo )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine sormhr(SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
SORMHR
subroutine sormqr(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
SORMQR