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 sormhr(SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
SORMHR
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine sormqr(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
SORMQR