103 SUBROUTINE dpot01( UPLO, N, A, LDA, AFAC, LDAFAC, RWORK, RESID )
111 INTEGER LDA, LDAFAC, N
112 DOUBLE PRECISION RESID
115 DOUBLE PRECISION A( LDA, * ), AFAC( LDAFAC, * ), RWORK( * )
121 DOUBLE PRECISION ZERO, ONE
122 parameter( zero = 0.0d+0, one = 1.0d+0 )
126 DOUBLE PRECISION ANORM, EPS, T
130DOUBLE PRECISION DDOT, DLAMCH,
131 EXTERNAL lsame, ddot, dlamch,
dlansy
150 eps = dlamch( 'epsilon
' )
151 ANORM = DLANSY( '1
', UPLO, N, A, LDA, RWORK )
152.LE.
IF( ANORMZERO ) THEN
159 IF( LSAME( UPLO, 'u
' ) ) THEN
164 T = DDOT( K, AFAC( 1, K ), 1, AFAC( 1, K ), 1 )
169 CALL DTRMV( 'upper
', 'transpose
', 'non-unit
', K-1, AFAC,
170 $ LDAFAC, AFAC( 1, K ), 1 )
183 $ CALL DSYR( 'lower
', N-K, ONE, AFAC( K+1, K ), 1,
184 $ AFAC( K+1, K+1 ), LDAFAC )
189 CALL DSCAL( N-K+1, T, AFAC( K, K ), 1 )
196 IF( LSAME( UPLO, 'u
' ) ) THEN
199 AFAC( I, J ) = AFAC( I, J ) - A( I, J )
205 AFAC( I, J ) = AFAC( I, J ) - A( I, J )
212 RESID = DLANSY( '1
', UPLO, N, AFAC, LDAFAC, RWORK )
214 RESID = ( ( RESID / DBLE( N ) ) / ANORM ) / EPS
double precision function dlansy(norm, uplo, n, a, lda, work)
DLANSY returns the value of the 1-norm, or the Frobenius norm, or the infinity norm,...
subroutine dscal(n, da, dx, incx)
DSCAL
subroutine dsyr(uplo, n, alpha, x, incx, a, lda)
DSYR
subroutine dtrmv(uplo, trans, diag, n, a, lda, x, incx)
DTRMV
subroutine dpot01(uplo, n, a, lda, afac, ldafac, rwork, resid)
DPOT01