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 zcopy(n, zx, incx, zy, incy)
ZCOPY
subroutine zlacpy(uplo, m, n, a, lda, b, ldb)
ZLACPY copies all or part of one two-dimensional array to another.
subroutine zlaset(uplo, m, n, alpha, beta, a, lda)
ZLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine ztrexc(compq, n, t, ldt, q, ldq, ifst, ilst, info)
ZTREXC
subroutine zget36(rmax, lmax, ninfo, knt, nin)
ZGET36
subroutine zhst01(n, ilo, ihi, a, lda, h, ldh, q, ldq, work, lwork, rwork, result)
ZHST01