94 SUBROUTINE sppt01( UPLO, N, A, AFAC, RWORK, RESID )
107 REAL a( * ), afac( * ), rwork( * )
114 parameter( zero = 0.0e+0, one = 1.0e+0 )
117 INTEGER i, k, kc, npp
143 anorm =
slansp(
'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 =
sdot( k, afac( kc ), 1, afac( kc ), 1 )
163 CALL
stpmv(
'Upper',
'Transpose',
'Non-unit', k-1, afac,
172 kc = ( n*( n+1 ) ) / 2
179 $ CALL
sspr(
'Lower', n-k, one, afac( kc+1 ), 1,
185 CALL
sscal( n-k+1, t, afac( kc ), 1 )
195 afac( i ) = afac( i ) - a( i )
200 resid =
slansp(
'1', uplo, n, afac, rwork )
202 resid = ( ( resid /
REAL( N ) ) / anorm ) / eps
real function slansp(NORM, UPLO, N, AP, WORK)
SLANSP returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a symmetric matrix supplied in packed form.
real function sdot(N, SX, INCX, SY, INCY)
SDOT
logical function lsame(CA, CB)
LSAME
subroutine stpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
STPMV
real function slamch(CMACH)
SLAMCH
subroutine sppt01(UPLO, N, A, AFAC, RWORK, RESID)
SPPT01
subroutine sspr(UPLO, N, ALPHA, X, INCX, AP)
SSPR
subroutine sscal(N, SA, SX, INCX)
SSCAL