150 SUBROUTINE chbt21( UPLO, N, KA, KS, A, LDA, D, E, U, LDU, WORK,
159 INTEGER KA, KS, LDA, LDU, N
162 REAL D( * ), E( * ), RESULT( 2 ), RWORK( * )
163 COMPLEX A( LDA, * ), U( LDU, * ), WORK( * )
170 parameter( czero = ( 0.0e+0, 0.0e+0 ),
171 $ cone = ( 1.0e+0, 0.0e+0 ) )
173 parameter( zero = 0.0e+0, one = 1.0e+0 )
178 INTEGER IKA, J, JC, JR
179 REAL ANORM, ULP, UNFL, WNORM
183 REAL CLANGE, CLANHB, CLANHP, SLAMCH
184 EXTERNAL lsame, clange, clanhb, clanhp, slamch
201 ika =
max( 0,
min( n-1, ka ) )
203 IF( lsame( uplo,
'U' ) )
THEN
211 unfl = slamch(
'Safe minimum' )
212 ulp = slamch( 'epsilon
' )*SLAMCH( 'base
' )
220 ANORM = MAX( CLANHB( '1
', CUPLO, N, IKA, A, LDA, RWORK ), UNFL )
229 DO 10 JR = 1, MIN( IKA+1, N+1-JC )
231 WORK( J ) = A( JR, JC )
233 DO 20 JR = IKA + 2, N + 1 - JC
238 DO 30 JR = IKA + 2, JC
242 DO 40 JR = MIN( IKA, JC-1 ), 0, -1
244 WORK( J ) = A( IKA+1-JR, JC )
250 CALL CHPR( CUPLO, N, -D( J ), U( 1, J ), 1, WORK )
253.GT..AND..EQ.
IF( N1 KS1 ) THEN
255 CALL CHPR2( CUPLO, N, -CMPLX( E( J ) ), U( 1, J ), 1,
256 $ U( 1, J+1 ), 1, WORK )
259 WNORM = CLANHP( '1
', CUPLO, N, WORK, RWORK )
261.GT.
IF( ANORMWNORM ) THEN
262 RESULT( 1 ) = ( WNORM / ANORM ) / ( N*ULP )
264.LT.
IF( ANORMONE ) THEN
265 RESULT( 1 ) = ( MIN( WNORM, N*ANORM ) / ANORM ) / ( N*ULP )
267 RESULT( 1 ) = MIN( WNORM / ANORM, REAL( N ) ) / ( N*ULP )
275 CALL CGEMM( 'n
', 'c
', N, N, N, CONE, U, LDU, U, LDU, CZERO, WORK,
279 WORK( ( N+1 )*( J-1 )+1 ) = WORK( ( N+1 )*( J-1 )+1 ) - CONE
282 RESULT( 2 ) = MIN( CLANGE( '1
', N, N, WORK, N, RWORK ),
283 $ REAL( N ) ) / ( N*ULP )
subroutine chpr2(uplo, n, alpha, x, incx, y, incy, ap)
CHPR2
subroutine chpr(uplo, n, alpha, x, incx, ap)
CHPR
subroutine cgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
CGEMM
subroutine chbt21(uplo, n, ka, ks, a, lda, d, e, u, ldu, work, rwork, result)
CHBT21