84 SUBROUTINE sget40( RMAX, LMAX, NINFO, KNT, NIN )
91 INTEGER KNT, LMAX, NIN
102 parameter( zero = 0.0, one = 1.0 )
104 parameter( ldt = 10, lwork = 100 + 4*ldt + 16 )
107 INTEGER I, IFST, IFST1, IFST2, IFSTSV, ILST, ILST1,
108 $ ILST2, ILSTSV, J, LOC, N
112 REAL Q( LDT, LDT ), Z( LDT, LDT ), RESULT( 4 ),
113 $ T( LDT, LDT ), T1( LDT, LDT ), T2( LDT, LDT ),
114 $ S( LDT, LDT ), S1( LDT, LDT ), S2( LDT, LDT ),
115 $ TMP( LDT, LDT ), WORK( LWORK )
139 READ( nin, fmt = * )n, ifst, ilst
144 READ( nin, fmt = * )( tmp( i, j ), j = 1, n )
146 CALL slacpy(
'F', n, n, tmp, ldt, t, ldt )
147 CALL slacpy(
'F', n, n, tmp, ldt, t1, ldt )
148 CALL slacpy(
'F', n, n, tmp, ldt, t2, ldt )
150 READ( nin, fmt = * )( tmp( i, j ), j = 1, n )
152 CALL slacpy(
'F', n, n, tmp, ldt, s, ldt )
153 CALL slacpy(
'F', n, n, tmp, ldt, s1, ldt )
154 CALL slacpy(
'F', n, n, tmp, ldt, s2, ldt )
165 CALL slaset(
'Full', n, n, zero, one, q, ldt )
166 CALL slaset(
'Full', n, n, zero, one, z, ldt )
167 CALL stgexc( .false., .false., n, t1, ldt, s1, ldt, q, ldt,
168 $ z, ldt, ifst1, ilst1, work, lwork, ninfo( 1 ) )
171 IF( i.EQ.j .AND. q( i, j ).NE.one )
172 $ res = res + one / eps
173 IF( i.NE.j .AND. q( i, j ).NE.zero )
174 $ res = res + one / eps
175 IF( i.EQ.j .AND. z( i, j ).NE.one )
176 $ res = res + one / eps
177 IF( i.NE.j .AND. z( i, j ).NE.zero )
178 $ res = res + one / eps
184 CALL slaset(
'Full', n, n, zero, one, q, ldt )
185 CALL slaset(
'Full', n, n, zero, one, z, ldt )
186 CALL stgexc( .true., .true., n, t2, ldt, s2, ldt, q, ldt,
187 $ z, ldt, ifst2, ilst2, work, lwork, ninfo( 2 ) )
193 IF( t1( i, j ).NE.t2( i, j ) )
194 $ res = res + one / eps
195 IF( s1( i, j ).NE.s2( i, j ) )
196 $ res = res + one / eps
200 $ res = res + one / eps
202 $ res = res + one / eps
203 IF( ninfo( 1 ).NE.ninfo( 2 ) )
204 $ res = res + one / eps
208 CALL sget51( 1, n, t, ldt, t2, ldt, q, ldt, z, ldt, work,
210 CALL sget51( 1, n, s, ldt, s2, ldt, q, ldt, z, ldt, work,
212 CALL sget51( 3, n, t, ldt, t2, ldt, q, ldt, q, ldt, work,
214 CALL sget51( 3, n, t, ldt, t2, ldt, z, ldt, z, ldt, work,
216 res = res + result( 1 ) + result( 2 ) + result( 3 ) + result( 4 )
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 stgexc(wantq, wantz, n, a, lda, b, ldb, q, ldq, z, ldz, ifst, ilst, work, lwork, info)
STGEXC
subroutine sget40(rmax, lmax, ninfo, knt, nin)
SGET40
subroutine sget51(itype, n, a, lda, b, ldb, u, ldu, v, ldv, work, result)
SGET51