106 SUBROUTINE cget01( M, N, A, LDA, AFAC, LDAFAC, IPIV, RWORK,
114 INTEGER LDA, LDAFAC, M, N
120 COMPLEX A( LDA, * ), AFAC( LDAFAC, * )
127 parameter( zero = 0.0e+0, one = 1.0e+0 )
129 parameter( cone = ( 1.0e+0, 0.0e+0 ) )
139 EXTERNAL clange, slamch, cdotu
151 IF( m.LE.0 .OR. n.LE.0 )
THEN
158 eps = slamch(
'Epsilon' )
159 anorm = clange(
'1', m, n, a, lda, rwork )
167 CALL ctrmv(
'Lower',
'No transpose',
'Unit', m, afac,
168 $ ldafac, afac( 1, k ), 1 )
175 CALL cscal( m-k, t, afac( k+1, k ), 1 )
176 CALL cgemv(
'No transpose', m-k, k-1, cone,
177 $ afac( k+1, 1 ), ldafac, afac( 1, k ), 1,
178 $ cone, afac( k+1, k ), 1 )
183 afac( k, k ) = t + cdotu( k-1, afac( k, 1 ), ldafac,
188 CALL ctrmv(
'Lower',
'No transpose',
'Unit', k-1, afac,
189 $ ldafac, afac( 1, k ), 1 )
192 CALL claswp( n, afac, ldafac, 1, min( m, n ), ipiv, -1 )
198 afac( i, j ) = afac( i, j ) - a( i, j )
204 resid = clange(
'1', m, n, afac, ldafac, rwork )
206 IF( anorm.LE.zero )
THEN
210 resid = ( ( resid/real( n ) )/anorm ) / eps
subroutine cget01(m, n, a, lda, afac, ldafac, ipiv, rwork, resid)
CGET01
subroutine cgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
CGEMV
subroutine claswp(n, a, lda, k1, k2, ipiv, incx)
CLASWP performs a series of row interchanges on a general rectangular matrix.
subroutine cscal(n, ca, cx, incx)
CSCAL
subroutine ctrmv(uplo, trans, diag, n, a, lda, x, incx)
CTRMV