82 SUBROUTINE dget40( RMAX, LMAX, NINFO, KNT, NIN )
99 DOUBLE PRECISION ZERO, ONE
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
107 DOUBLE PRECISION EPS, RES
110 DOUBLE PRECISION 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 )
116 DOUBLE PRECISION DLAMCH
138 READ( nin, fmt = * )n, ifst, ilst
143 READ( nin, fmt = * )( tmp( i, j ), j = 1, n )
145 CALL dlacpy(
'F', n, n, tmp, ldt, t, ldt )
146 CALL dlacpy(
'F', n, n, tmp, ldt, t1, ldt )
147 CALL dlacpy(
'F', n, n, tmp, ldt, t2, ldt )
149 READ( nin, fmt = * )( tmp( i, j ), j = 1, n )
151 CALL dlacpy(
'F', n, n, tmp, ldt, s, ldt )
152 CALL dlacpy(
'F', n, n, tmp, ldt, s1, ldt )
153 CALL dlacpy(
'F', n, n, tmp, ldt, s2, ldt )
164 CALL dlaset(
'Full', n, n, zero, one, q, ldt )
165 CALL dlaset(
'Full', n, n, zero, one, z, ldt )
166 CALL dtgexc( .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 dlaset(
'Full', n, n, zero, one, q, ldt )
184 CALL dlaset(
'Full', n, n, zero, one, z, ldt )
185 CALL dtgexc( .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 dget51( 1, n, t, ldt, t2, ldt, q, ldt, z, ldt, work,
209 CALL dget51( 1, n, s, ldt, s2, ldt, q, ldt, z, ldt, work,
211 CALL dget51( 3, n, t, ldt, t2, ldt, q, ldt, q, ldt, work,
213 CALL dget51( 3, n, t, ldt, t2, ldt, z, ldt, z, ldt, work,
215 res = res + result( 1 ) + result( 2 ) + result( 3 ) + result( 4 )