84 SUBROUTINE cget36( RMAX, LMAX, NINFO, KNT, NIN )
91 INTEGER KNT, LMAX, NIN, NINFO
99 parameter( zero = 0.0e+0, one = 1.0e+0 )
101 parameter( czero = ( 0.0e+0, 0.0e+0 ),
102 $ cone = ( 1.0e+0, 0.0e+0 ) )
104 parameter( ldt = 10, lwork = 2*ldt*ldt )
107 INTEGER I, IFST, ILST, INFO1, INFO2, J, N
112 REAL RESULT( 2 ), RWORK( LDT )
113 COMPLEX DIAG( LDT ), Q( LDT, LDT ), T1( LDT, LDT ),
114 $ T2( LDT, LDT ), TMP( LDT, LDT ), WORK( LWORK )
134 READ( nin, fmt = * )n, ifst, ilst
139 READ( nin, fmt = * )( tmp( i, j ), j = 1, n )
141 CALL clacpy(
'F', n, n, tmp, ldt, t1, ldt )
142 CALL clacpy(
'F', n, n, tmp, ldt, t2, ldt )
147 CALL claset(
'Full', n, n, czero, cone, q, ldt )
148 CALL ctrexc(
'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 claset(
'Full', n, n, czero, cone, q, ldt )
161 CALL ctrexc(
'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 ccopy( 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 chst01( 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 cget36(rmax, lmax, ninfo, knt, nin)
CGET36
subroutine chst01(n, ilo, ihi, a, lda, h, ldh, q, ldq, work, lwork, rwork, result)
CHST01
subroutine ccopy(n, cx, incx, cy, incy)
CCOPY
subroutine clacpy(uplo, m, n, a, lda, b, ldb)
CLACPY copies all or part of one two-dimensional array to another.
subroutine claset(uplo, m, n, alpha, beta, a, lda)
CLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine ctrexc(compq, n, t, ldt, q, ldq, ifst, ilst, info)
CTREXC