84 SUBROUTINE dget40( RMAX, LMAX, NINFO, KNT, NIN )
91 INTEGER KNT, LMAX, NIN
101 DOUBLE PRECISION ZERO, ONE
102 parameter( zero = 0.0d0, one = 1.0d0 )
104 parameter( ldt = 10, lwork = 100 + 4*ldt + 16 )
107 INTEGER I, IFST, IFST1, IFST2, IFSTSV, ILST, ILST1,
108 $ ILST2, ILSTSV, J, LOC, N
109 DOUBLE PRECISION EPS, RES
112 DOUBLE PRECISION 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 )
118 DOUBLE PRECISION DLAMCH
139 READ( nin, fmt = * )n, ifst, ilst
144 READ( nin, fmt = * )( tmp( i, j ), j = 1, n )
146 CALL dlacpy(
'F', n, n, tmp, ldt, t, ldt )
147 CALL dlacpy(
'F', n, n, tmp, ldt, t1, ldt )
148 CALL dlacpy(
'F', n, n, tmp, ldt, t2, ldt )
150 READ( nin, fmt = * )( tmp( i, j ), j = 1, n )
152 CALL dlacpy(
'F', n, n, tmp, ldt, s, ldt )
153 CALL dlacpy(
'F', n, n, tmp, ldt, s1, ldt )
154 CALL dlacpy(
'F', n, n, tmp, ldt, s2, ldt )
165 CALL dlaset(
'Full', n, n, zero, one, q, ldt )
166 CALL dlaset(
'Full', n, n, zero, one, z, ldt )
167 CALL dtgexc( .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 dlaset(
'Full', n, n, zero, one, q, ldt )
185 CALL dlaset(
'Full', n, n, zero, one, z, ldt )
186 CALL dtgexc( .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 dget51( 1, n, t, ldt, t2, ldt, q, ldt, z, ldt, work,
210 CALL dget51( 1, n, s, ldt, s2, ldt, q, ldt, z, ldt, work,
212 CALL dget51( 3, n, t, ldt, t2, ldt, q, ldt, q, ldt, work,
214 CALL dget51( 3, n, t, ldt, t2, ldt, z, ldt, z, ldt, work,
216 res = res + result( 1 ) + result( 2 ) + result( 3 ) + result( 4 )
subroutine dget40(rmax, lmax, ninfo, knt, nin)
DGET40
subroutine dget51(itype, n, a, lda, b, ldb, u, ldu, v, ldv, work, result)
DGET51
subroutine dhst01(n, ilo, ihi, a, lda, h, ldh, q, ldq, work, lwork, result)
DHST01
subroutine dlacpy(uplo, m, n, a, lda, b, ldb)
DLACPY copies all or part of one two-dimensional array to another.
subroutine dlaset(uplo, m, n, alpha, beta, a, lda)
DLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine dtgexc(wantq, wantz, n, a, lda, b, ldb, q, ldq, z, ldz, ifst, ilst, work, lwork, info)
DTGEXC