134 SUBROUTINE zgtt01( N, DL, D, DU, DLF, DF, DUF, DU2, IPIV, WORK,
135 $ ldwork, rwork, resid )
144 DOUBLE PRECISION resid
148 DOUBLE PRECISION rwork( * )
149 COMPLEX*16 d( * ), df( * ), dl( * ), dlf( * ), du( * ),
150 $ du2( * ), duf( * ), work( ldwork, * )
156 DOUBLE PRECISION one, zero
157 parameter( one = 1.0d+0, zero = 0.0d+0 )
160 INTEGER i, ip,
j, lastj
161 DOUBLE PRECISION anorm, eps
194 work( i, i ) = df( i )
196 $ work( i, i+1 ) = duf( i )
198 $ work( i, i+2 ) = du2( i )
199 ELSE IF( i.EQ.n )
THEN
200 work( i, i ) = df( i )
202 work( i, i ) = df( i )
203 work( i, i+1 ) = duf( i )
205 $ work( i, i+2 ) = du2( i )
212 DO 40 i = n - 1, 1, -1
214 CALL
zaxpy( lastj-i+1, li, work( i, i ), ldwork,
215 $ work( i+1, i ), ldwork )
218 lastj = min( i+2, n )
220 CALL
zswap( lastj-i+1, work( i, i ), ldwork, work( i+1, i ),
227 work( 1, 1 ) = work( 1, 1 ) - d( 1 )
229 work( 1, 2 ) = work( 1, 2 ) - du( 1 )
230 work( n, n-1 ) = work( n, n-1 ) - dl( n-1 )
231 work( n, n ) = work( n, n ) - d( n )
233 work( i, i-1 ) = work( i, i-1 ) - dl( i-1 )
234 work( i, i ) = work( i, i ) - d( i )
235 work( i, i+1 ) = work( i, i+1 ) - du( i )
241 anorm =
zlangt(
'1', n, dl, d, du )
246 resid =
zlanhs(
'1', n, work, ldwork, rwork )
250 IF( anorm.LE.zero )
THEN
254 resid = ( resid / anorm ) / eps
subroutine zswap(N, ZX, INCX, ZY, INCY)
ZSWAP
DOUBLE PRECISION function zlangt(NORM, N, DL, D, DU)
ZLANGT returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value ...
subroutine zgtt01(N, DL, D, DU, DLF, DF, DUF, DU2, IPIV, WORK, LDWORK, RWORK, RESID)
ZGTT01
subroutine zaxpy(N, ZA, ZX, INCX, ZY, INCY)
ZAXPY
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real j
DOUBLE PRECISION function dlamch(CMACH)
DLAMCH
DOUBLE PRECISION function zlanhs(NORM, N, A, LDA, WORK)
ZLANHS returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value ...