87 SUBROUTINE dget36( RMAX, LMAX, NINFO, KNT, NIN )
94 INTEGER KNT, LMAX, NIN
104 DOUBLE PRECISION ZERO, ONE
105 parameter( zero = 0.0d0, one = 1.0d0 )
107 parameter( ldt = 10, lwork = 2*ldt*ldt )
110 INTEGER I, IFST, IFST1, IFST2, IFSTSV, ILST, ILST1,
111 $ ILST2, ILSTSV, INFO1, INFO2, J, LOC, N
112 DOUBLE PRECISION EPS, RES
115 DOUBLE PRECISION Q( LDT, LDT ), RESULT( 2 ), T1( LDT, LDT ),
116 $ T2( LDT, LDT ), TMP( LDT, LDT ), WORK( LWORK )
119 DOUBLE PRECISION DLAMCH
141 READ( nin, fmt = * )n, ifst, ilst
146 READ( nin, fmt = * )( tmp( i, j ), j = 1, n )
148 CALL dlacpy(
'F', n, n, tmp, ldt, t1, ldt )
149 CALL dlacpy(
'F', n, n, tmp, ldt, t2, ldt )
160 CALL dlaset(
'Full', n, n, zero, one, q, ldt )
161 CALL dtrexc(
'N', n, t1, ldt, q, ldt, ifst1, ilst1, work, info1 )
164 IF( i.EQ.j .AND. q( i, j ).NE.one )
165 $ res = res + one / eps
166 IF( i.NE.j .AND. q( i, j ).NE.zero )
167 $ res = res + one / eps
173 CALL dlaset(
'Full', n, n, zero, one, q, ldt )
174 CALL dtrexc(
'V', n, t2, ldt, q, ldt, ifst2, ilst2, work, info2 )
180 IF( t1( i, j ).NE.t2( i, j ) )
181 $ res = res + one / eps
185 $ res = res + one / eps
187 $ res = res + one / eps
189 $ res = res + one / eps
193 IF( info2.NE.0 )
THEN
194 ninfo( info2 ) = ninfo( info2 ) + 1
196 IF( abs( ifst2-ifstsv ).GT.1 )
197 $ res = res + one / eps
198 IF( abs( ilst2-ilstsv ).GT.1 )
199 $ res = res + one / eps
204 CALL dhst01( n, 1, n, tmp, ldt, t2, ldt, q, ldt, work, lwork,
206 res = res + result( 1 ) + result( 2 )
212 IF( t2( loc+1, loc ).NE.zero )
THEN
216 IF( t2( loc, loc+1 ).EQ.zero .OR. t2( loc, loc ).NE.
217 $ t2( loc+1, loc+1 ) .OR. sign( one, t2( loc, loc+1 ) ).EQ.
218 $ sign( one, t2( loc+1, loc ) ) )res = res + one / eps
220 IF( t2( i, loc ).NE.zero )
221 $ res = res + one / res
222 IF( t2( i, loc+1 ).NE.zero )
223 $ res = res + one / res
231 IF( t2( i, loc ).NE.zero )
232 $ res = res + one / res
238 IF( res.GT.rmax )
THEN