115 SUBROUTINE dgesc2( N, A, LDA, RHS, IPIV, JPIV, SCALE )
124 DOUBLE PRECISION scale
127 INTEGER ipiv( * ), jpiv( * )
128 DOUBLE PRECISION a( lda, * ), rhs( * )
134 DOUBLE PRECISION one, two
135 parameter( one = 1.0d+0, two = 2.0d+0 )
139 DOUBLE PRECISION bignum, eps, smlnum, temp
157 smlnum =
dlamch(
'S' ) / eps
158 bignum = one / smlnum
159 CALL
dlabad( smlnum, bignum )
163 CALL
dlaswp( 1, rhs, lda, 1, n-1, ipiv, 1 )
169 rhs(
j ) = rhs(
j ) - a(
j, i )*rhs( i )
180 IF( two*smlnum*abs( rhs( i ) ).GT.abs( a( n, n ) ) )
THEN
181 temp = ( one / two ) / abs( rhs( i ) )
182 CALL
dscal( n, temp, rhs( 1 ), 1 )
187 temp = one / a( i, i )
188 rhs( i ) = rhs( i )*temp
190 rhs( i ) = rhs( i ) - rhs(
j )*( a( i,
j )*temp )
196 CALL
dlaswp( 1, rhs, lda, 1, n-1, jpiv, -1 )
subroutine dgesc2(N, A, LDA, RHS, IPIV, JPIV, SCALE)
DGESC2 solves a system of linear equations using the LU factorization with complete pivoting computed...
subroutine dlaswp(N, A, LDA, K1, K2, IPIV, INCX)
DLASWP performs a series of row interchanges on a general rectangular matrix.
subroutine dlabad(SMALL, LARGE)
DLABAD
subroutine dscal(N, DA, DX, INCX)
DSCAL
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real j
DOUBLE PRECISION function dlamch(CMACH)
DLAMCH
INTEGER function idamax(N, DX, INCX)
IDAMAX