82 SUBROUTINE sget40( RMAX, LMAX, NINFO, KNT, NIN )
89 INTEGER KNT, LMAX, NIN
100 parameter( zero = 0.0, one = 1.0 )
102 parameter( ldt = 10, lwork = 100 + 4*ldt + 16 )
105 INTEGER I, IFST, IFST1, IFST2, IFSTSV, ILST, ILST1,
106 $ ILST2, ILSTSV, INFO1, INFO2, J, LOC, N
110 REAL Q( LDT, LDT ), Z( LDT, LDT ), RESULT( 4 ),
111 $ T( LDT, LDT ), T1( LDT, LDT ), T2( LDT, LDT ),
112 $ S( LDT, LDT ), S1( LDT, LDT ), S2( LDT, LDT ),
113 $ TMP( LDT, LDT ), WORK( LWORK )
138 READ( nin, fmt = * )n, ifst, ilst
143 READ( nin, fmt = * )( tmp( i, j ), j = 1, n )
145 CALL slacpy(
'F', n, n, tmp, ldt, t, ldt )
146 CALL slacpy(
'F', n, n, tmp, ldt, t1, ldt )
147 CALL slacpy(
'F', n, n, tmp, ldt, t2, ldt )
149 READ( nin, fmt = * )( tmp( i, j ), j = 1, n )
151 CALL slacpy(
'F', n, n, tmp, ldt, s, ldt )
152 CALL slacpy(
'F', n, n, tmp, ldt, s1, ldt )
153 CALL slacpy(
'F', n, n, tmp, ldt, s2, ldt )
164 CALL slaset(
'Full', n, n, zero, one, q, ldt )
165 CALL slaset(
'Full', n, n, zero, one, z, ldt )
166 CALL stgexc( .false., .false., n, t1, ldt, s1, ldt, q, ldt,
167 $ z, ldt, ifst1, ilst1, work, lwork, info1 )
170 IF( i.EQ.j .AND. q( i, j ).NE.one )
171 $ res = res + one / eps
172 IF( i.NE.j .AND. q( i, j ).NE.zero )
173 $ res = res + one / eps
174 IF( i.EQ.j .AND. z( i, j ).NE.one )
175 $ res = res + one / eps
176 IF( i.NE.j .AND. z( i, j ).NE.zero )
177 $ res = res + one / eps
183 CALL slaset(
'Full', n, n, zero, one, q, ldt )
184 CALL slaset(
'Full', n, n, zero, one, z, ldt )
185 CALL stgexc( .true., .true., n, t2, ldt, s2, ldt, q, ldt,
186 $ z, ldt, ifst2, ilst2, work, lwork, info2 )
192 IF( t1( i, j ).NE.t2( i, j ) )
193 $ res = res + one / eps
194 IF( s1( i, j ).NE.s2( i, j ) )
195 $ res = res + one / eps
199 $ res = res + one / eps
201 $ res = res + one / eps
203 $ res = res + one / eps
207 CALL sget51( 1, n, t, ldt, t2, ldt, q, ldt, z, ldt, work,
209 CALL sget51( 1, n, s, ldt, s2, ldt, q, ldt, z, ldt, work,
211 CALL sget51( 3, n, t, ldt, t2, ldt, q, ldt, q, ldt, work,
213 CALL sget51( 3, n, t, ldt, t2, ldt, z, ldt, z, ldt, work,
215 res = res + result( 1 ) + result( 2 ) + result( 3 ) + result( 4 )
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 slacpy(UPLO, M, N, A, LDA, B, LDB)
SLACPY copies all or part of one two-dimensional array to another.
subroutine sget40(RMAX, LMAX, NINFO, KNT, NIN)
SGET40
subroutine stgexc(WANTQ, WANTZ, N, A, LDA, B, LDB, Q, LDQ, Z, LDZ, IFST, ILST, WORK, LWORK, INFO)
STGEXC
subroutine sget51(ITYPE, N, A, LDA, B, LDB, U, LDU, V, LDV, WORK, RESULT)
SGET51