94 SUBROUTINE dppt01( UPLO, N, A, AFAC, RWORK, RESID )
104 DOUBLE PRECISION RESID
107 DOUBLE PRECISION A( * ), AFAC( * ), RWORK( * )
113 DOUBLE PRECISION ZERO, ONE
114 parameter ( zero = 0.0d+0, one = 1.0d+0 )
117 INTEGER I, K, KC, NPP
118 DOUBLE PRECISION ANORM, EPS, T
122 DOUBLE PRECISION DDOT, DLAMCH, DLANSP
123 EXTERNAL lsame, ddot, dlamch, dlansp
142 eps = dlamch(
'Epsilon' )
143 anorm = dlansp(
'1', uplo, n, a, rwork )
144 IF( anorm.LE.zero )
THEN
151 IF( lsame( uplo,
'U' ) )
THEN
152 kc = ( n*( n-1 ) ) / 2 + 1
157 t = ddot( k, afac( kc ), 1, afac( kc ), 1 )
163 CALL dtpmv(
'Upper',
'Transpose',
'Non-unit', k-1, afac,
172 kc = ( n*( n+1 ) ) / 2
179 $
CALL dspr(
'Lower', n-k, one, afac( kc+1 ), 1,
185 CALL dscal( n-k+1, t, afac( kc ), 1 )
195 afac( i ) = afac( i ) - a( i )
200 resid = dlansp(
'1', uplo, n, afac, rwork )
202 resid = ( ( resid / dble( n ) ) / anorm ) / eps
subroutine dscal(N, DA, DX, INCX)
DSCAL
subroutine dspr(UPLO, N, ALPHA, X, INCX, AP)
DSPR
subroutine dppt01(UPLO, N, A, AFAC, RWORK, RESID)
DPPT01
subroutine dtpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
DTPMV