84 SUBROUTINE zget36( RMAX, LMAX, NINFO, KNT, NIN )
91 INTEGER KNT, LMAX, NIN, NINFO
98 DOUBLE PRECISION ZERO, ONE
99 parameter( zero = 0.0d+0, one = 1.0d+0 )
100 COMPLEX*16 CZERO, CONE
101 parameter( czero = ( 0.0d+0, 0.0d+0 ),
102 $ cone = ( 1.0d+0, 0.0d+0 ) )
104 parameter( ldt = 10, lwork = 2*ldt*ldt )
107 INTEGER I, IFST, ILST, INFO1, INFO2, J, N
108 DOUBLE PRECISION EPS, RES
112 DOUBLE PRECISION RESULT( 2 ), RWORK( LDT )
113 COMPLEX*16 DIAG( LDT ), Q( LDT, LDT ), T1( LDT, LDT ),
114 $ T2( LDT, LDT ), TMP( LDT, LDT ), WORK( LWORK )
117 DOUBLE PRECISION DLAMCH
134 READ( nin, fmt = * )n, ifst, ilst
139 READ( nin, fmt = * )( tmp( i, j ), j = 1, n )
141 CALL zlacpy(
'F', n, n, tmp, ldt, t1, ldt )
142 CALL zlacpy(
'F', n, n, tmp, ldt, t2, ldt )
147 CALL zlaset(
'Full', n, n, czero, cone, q, ldt )
148 CALL ztrexc(
'N', n, t1, ldt, q, ldt, ifst, ilst, info1 )
151 IF( i.EQ.j .AND. q( i, j ).NE.cone )
152 $ res = res + one / eps
153 IF( i.NE.j .AND. q( i, j ).NE.czero )
154 $ res = res + one / eps
160 CALL zlaset(
'Full', n, n, czero, cone, q, ldt )
161 CALL ztrexc(
'V', n, t2, ldt, q, ldt, ifst, ilst, info2 )
167 IF( t1( i, j ).NE.t2( i, j ) )
168 $ res = res + one / eps
171 IF( info1.NE.0 .OR. info2.NE.0 )
174 $ res = res + one / eps
178 CALL zcopy( n, tmp, ldt+1, diag, 1 )
179 IF( ifst.LT.ilst )
THEN
180 DO 70 i = ifst + 1, ilst
182 diag( i ) = diag( i-1 )
185 ELSE IF( ifst.GT.ilst )
THEN
186 DO 80 i = ifst - 1, ilst, -1
188 diag( i+1 ) = diag( i )
193 IF( t2( i, i ).NE.diag( i ) )
194 $ res = res + one / eps
199 CALL zhst01( n, 1, n, tmp, ldt, t2, ldt, q, ldt, work, lwork,
201 res = res + result( 1 ) + result( 2 )
207 IF( t2( i, j ).NE.czero )
208 $ res = res + one / eps
211 IF( res.GT.rmax )
THEN
subroutine zhst01(n, ilo, ihi, a, lda, h, ldh, q, ldq, work, lwork, rwork, result)
ZHST01