105 SUBROUTINE dget01( M, N, A, LDA, AFAC, LDAFAC, IPIV, RWORK,
113 INTEGER LDA, LDAFAC, M, N
114 DOUBLE PRECISION RESID
118 DOUBLE PRECISION A( LDA, * ), AFAC( LDAFAC, * ), RWORK( * )
125 DOUBLE PRECISION ZERO, ONE
126 parameter( zero = 0.0d+0, one = 1.0d+0 )
130 DOUBLE PRECISION ANORM, EPS, T
133 DOUBLE PRECISION DDOT, DLAMCH,
134 EXTERNAL ddot, dlamch,
dlange
146 IF( m.LE.0 .OR. n.LE.0 )
THEN
153 eps = dlamch(
'Epsilon' )
154 anorm =
dlange(
'1', m, n, a, lda, rwork )
162 CALL dtrmv(
'Lower',
'No transpose',
'Unit', m, afac,
163 $ ldafac, afac( 1, k ), 1 )
170 CALL dscal( m-k, t, afac( k+1, k ), 1 )
171 CALL dgemv(
'No transpose', m-k, k-1, one,
172 $ afac( k+1, 1 ), ldafac, afac( 1, k ), 1, one,
173 $ afac( k+1, k ), 1 )
178 afac( k, k ) = t + ddot( k-1, afac( k, 1 ), ldafac,
183 CALL dtrmv(
'Lower', 'no transpose
', 'unit
', K-1, AFAC,
184 $ LDAFAC, AFAC( 1, K ), 1 )
187 CALL DLASWP( N, AFAC, LDAFAC, 1, MIN( M, N ), IPIV, -1 )
193 AFAC( I, J ) = AFAC( I, J ) - A( I, J )
199 RESID = DLANGE( '1
', M, N, AFAC, LDAFAC, RWORK )
201.LE.
IF( ANORMZERO ) THEN
205 RESID = ( ( RESID / DBLE( N ) ) / ANORM ) / EPS
double precision function dlange(norm, m, n, a, lda, work)
DLANGE returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value ...
subroutine dlaswp(n, a, lda, k1, k2, ipiv, incx)
DLASWP performs a series of row interchanges on a general rectangular matrix.
subroutine dscal(n, da, dx, incx)
DSCAL
subroutine dgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
DGEMV
subroutine dtrmv(uplo, trans, diag, n, a, lda, x, incx)
DTRMV
subroutine dget01(m, n, a, lda, afac, ldafac, ipiv, rwork, resid)
DGET01