138 SUBROUTINE chst01( N, ILO, IHI, A, LDA, H, LDH, Q, LDQ, WORK,
139 $ LWORK, RWORK, RESULT )
146 INTEGER IHI, ILO, LDA, LDH, LDQ, LWORK, N
150COMPLEX ( LDA, * ), H( LDH, * ), Q( LDQ, * ),
158 parameter( one = 1.0e+0, zero = 0.0e+0 )
162 REAL ANORM, EPS, OVFL, , UNFL, WNORM
166 EXTERNAL clange, slamch
184 unfl = slamch(
'Safe minimum' )
185 eps = slamch(
'Precision' )
188 smlnum = unfl*n / eps
195 CALL clacpy(
' ', n, n, a, lda, work, ldwork )
199 CALL cgemm(
'No transpose',
'No transpose', n, n, n,
cmplx( one ),
200 $ q, ldq, h, ldh,
cmplx( zero ), work( ldwork*n+1 ),
205 CALL cgemm(
'No transpose',
'Conjugate transpose', n, n, n,
206 $
cmplx( -one ), work( ldwork*n+1 ), ldwork, q, ldq,
207 $
cmplx( one ), work, ldwork )
209 anorm =
max( clange(
'1', n, n, a, lda, rwork ), unfl )
210 wnorm = clange(
'1', n, n, work, ldwork, rwork )
214 result( 1 ) =
min( wnorm, anorm ) /
max( smlnum, anorm*eps ) / n
218 CALL cunt01(
'Columns', n, n, q, ldq, work, lwork, rwork,
subroutine clacpy(uplo, m, n, a, lda, b, ldb)
CLACPY copies all or part of one two-dimensional array to another.
subroutine cgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
CGEMM
subroutine chst01(n, ilo, ihi, a, lda, h, ldh, q, ldq, work, lwork, rwork, result)
CHST01
subroutine cunt01(rowcol, m, n, u, ldu, work, lwork, rwork, resid)
CUNT01