146 SUBROUTINE dtrexc( COMPQ, N, T, LDT, Q, LDQ, IFST, ILST, WORK,
155 INTEGER IFST, ILST, INFO, LDQ, LDT, N
158 DOUBLE PRECISION Q( LDQ, * ), T( LDT, * ), WORK( * )
164 DOUBLE PRECISION ZERO
165 parameter( zero = 0.0d+0 )
169 INTEGER HERE, NBF, NBL, NBNEXT
186 wantq = lsame( compq,
'V' )
187 IF( .NOT.wantq .AND. .NOT.lsame( compq,
'N' ) )
THEN
189 ELSE IF( n.LT.0 )
THEN
191 ELSE IF( ldt.LT.
max( 1, n ) )
THEN
193 ELSE IF( ldq.LT.1 .OR.
THEN
195 ELSE IF(( ifst.LT.1 .OR. ifst.GT.n ).AND.( n.GT.0 ))
THEN
197 ELSE IF(( ilst.LT.1 .OR. ilst.GT.n ).AND.( n.GT.0 ))
THEN
201 CALL xerbla(
'DTREXC', -info )
214 IF( t( ifst, ifst-1 ).NE.zero )
219 IF( t( ifst+1, ifst ).NE.zero )
227 IF( t( ilst, ilst-1 ).NE.zero )
232 IF( t( ilst+1, ilst ).NE.zero )
239 IF( ifst.LT.ilst )
THEN
243 IF( nbf.EQ.2 .AND. nbl.EQ.1 )
245 IF( nbf.EQ.1 .AND. nbl.EQ.2 )
254 IF( nbf.EQ.1 .OR. nbf.EQ.2 )
THEN
259 IF( here+nbf+1.LE.n )
THEN
260 IF( t( here+nbf+1, here+nbf ).NE.zero )
263 CALL dlaexc( wantq, n, t, ldt, q, ldq, here, nbf, nbnext,
274 IF( t( here+1, here ).EQ.zero )
284 IF( here+3.LE.n )
THEN
285 IF( t( here+3, here+2 ).NE.zero )
288 CALL dlaexc( wantq, n, t, ldt, q, ldq, here+1, 1, nbnext,
294 IF( nbnext.EQ.1 )
THEN
298 CALL dlaexc( wantq, n, t, ldt, q, ldq, here, 1, nbnext,
307 IF( nbnext.EQ.2 )
THEN
311 CALL dlaexc( wantq, n, t, ldt, q, ldq, here, 1,
312 $ nbnext, work, info )
322 CALL dlaexc( wantq, n, t, ldt, q, ldq, here, 1, 1,
324 CALL dlaexc( wantq, n, t, ldt, q, ldq, here+1, 1, 1,
340 IF( nbf.EQ.1 .OR. nbf.EQ.2 )
THEN
346 IF( t( here-1, here-2 ).NE.zero )
349 CALL dlaexc( wantq, n, t, ldt, q, ldq, here-nbnext, nbnext,
360 IF( t( here+1, here ).EQ.zero )
371 IF( t( here-1, here-2 ).NE.zero )
374 CALL dlaexc( wantq, n, t, ldt, q, ldq, here-nbnext, nbnext,
380 IF( nbnext.EQ.1 )
THEN
384 CALL dlaexc( wantq, n, t, ldt, q, ldq, here, nbnext, 1,
391 IF( t( here, here-1 ).EQ.zero )
393 IF( nbnext.EQ.2 )
THEN
397 CALL dlaexc( wantq, n, t, ldt, q, ldq, here-1, 2, 1,
408 CALL dlaexc( wantq, n, t, ldt, q, ldq, here, 1, 1,
410 CALL dlaexc( wantq, n, t, ldt, q, ldq, here-1, 1, 1,