87 SUBROUTINE sget36( RMAX, LMAX, NINFO, KNT, NIN )
94 INTEGER KNT, LMAX, NIN
105 parameter( zero = 0.0e0, one = 1.0e0 )
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
115 REAL Q( LDT, LDT ), RESULT( 2 ), T1( LDT, LDT ),
116 $ T2( LDT, LDT ), TMP( LDT, LDT ), WORK( LWORK )
141 READ( nin, fmt = * )n, ifst, ilst
146 READ( nin, fmt = * )( tmp( i, j ), j = 1, n )
148 CALL slacpy(
'F', n, n, tmp, ldt, t1, ldt )
149 CALL slacpy(
'F', n, n, tmp, ldt, t2, ldt )
160 CALL slaset(
'Full', n, n, zero, one, q, ldt )
161 CALL strexc(
'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 slaset(
'Full', n, n, zero, one, q, ldt )
174 CALL strexc(
'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 shst01( 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
subroutine slacpy(uplo, m, n, a, lda, b, ldb)
SLACPY copies all or part of one two-dimensional array to another.
subroutine slaset(uplo, m, n, alpha, beta, a, lda)
SLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine strexc(compq, n, t, ldt, q, ldq, ifst, ilst, work, info)
STREXC
subroutine sget36(rmax, lmax, ninfo, knt, nin)
SGET36
subroutine shst01(n, ilo, ihi, a, lda, h, ldh, q, ldq, work, lwork, result)
SHST01