176 SUBROUTINE dormhr( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C,
177 $ LDC, WORK, LWORK, INFO )
184 CHARACTER SIDE, TRANS
185 INTEGER IHI, ILO, INFO, LDA, LDC, LWORK, M, N
188 DOUBLE PRECISION A( lda, * ), C( ldc, * ), TAU( * ), WORK( * )
195 INTEGER I1, I2, IINFO, LWKOPT, MI, NB, NH, NI, NQ, NW
200 EXTERNAL lsame, ilaenv
214 left = lsame( side,
'L' )
215 lquery = ( lwork.EQ.-1 )
226 IF( .NOT.left .AND. .NOT.lsame( side,
'R' ) )
THEN 228 ELSE IF( .NOT.lsame( trans,
'N' ) .AND. .NOT.lsame( trans,
'T' ) )
231 ELSE IF( m.LT.0 )
THEN 233 ELSE IF( n.LT.0 )
THEN 235 ELSE IF( ilo.LT.1 .OR. ilo.GT.max( 1, nq ) )
THEN 237 ELSE IF( ihi.LT.min( ilo, nq ) .OR. ihi.GT.nq )
THEN 239 ELSE IF( lda.LT.max( 1, nq ) )
THEN 241 ELSE IF( ldc.LT.max( 1, m ) )
THEN 243 ELSE IF( lwork.LT.nw .AND. .NOT.lquery )
THEN 249 nb = ilaenv( 1,
'DORMQR', side // trans, nh, n, nh, -1 )
251 nb = ilaenv( 1,
'DORMQR', side // trans, m, nh, nh, -1 )
258 CALL xerbla(
'DORMHR', -info )
260 ELSE IF( lquery )
THEN 266 IF( m.EQ.0 .OR. n.EQ.0 .OR. nh.EQ.0 )
THEN 283 CALL dormqr( side, trans, mi, ni, nh, a( ilo+1, ilo ), lda,
284 $ tau( ilo ), c( i1, i2 ), ldc, work, lwork, iinfo )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dormhr(SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
DORMHR
subroutine dormqr(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
DORMQR