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
149 REAL RESULT( 2 ), RWORK( * )
150 COMPLEX A( LDA, * ), H( LDH, * ), Q( LDQ, * ),
158 parameter( one = 1.0e+0, zero = 0.0e+0 )
162 REAL ANORM, EPS, OVFL, SMLNUM, UNFL, WNORM
166 EXTERNAL clange, slamch
172 INTRINSIC cmplx, max, min
184 unfl = slamch(
'Safe minimum' )
185 eps = slamch(
'Precision' )
187 smlnum = unfl*n / eps
194 CALL clacpy(
' ', n, n, a, lda, work, ldwork )
198 CALL cgemm(
'No transpose',
'No transpose', n, n, n, cmplx( one ),
199 $ q, ldq, h, ldh, cmplx( zero ), work( ldwork*n+1 ),
204 CALL cgemm(
'No transpose',
'Conjugate transpose', n, n, n,
205 $ cmplx( -one ), work( ldwork*n+1 ), ldwork, q, ldq,
206 $ cmplx( one ), work, ldwork )
208 anorm = max( clange(
'1', n, n, a, lda, rwork ), unfl )
209 wnorm = clange(
'1', n, n, work, ldwork, rwork )
213 result( 1 ) = min( wnorm, anorm ) / max( smlnum, anorm*eps ) / n
217 CALL cunt01(
'Columns', n, n, q, ldq, work, lwork, rwork,
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
subroutine cgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
CGEMM
subroutine clacpy(uplo, m, n, a, lda, b, ldb)
CLACPY copies all or part of one two-dimensional array to another.