174 SUBROUTINE dgbt05( TRANS, N, KL, KU, NRHS, AB, LDAB, B, LDB, X,
175 $ LDX, XACT, LDXACT, FERR, BERR, RESLTS )
183 INTEGER KL, KU, LDAB, LDB, LDX, LDXACT, N, NRHS
186 DOUBLE PRECISION AB( LDAB, * ), B( LDB, * ), BERR( * ),
187 $ ferr( * ), reslts( * ), x( ldx, * ),
194 DOUBLE PRECISION ZERO, ONE
195 parameter( zero = 0.0d+0, one = 1.0d+0 )
199 INTEGER I, IMAX, J, K, NZ
200 DOUBLE PRECISION AXBI, DIFF, EPS, ERRBND, OVFL, TMP, UNFL, XNORM
205 DOUBLE PRECISION DLAMCH
206 EXTERNAL lsame, idamax, dlamch
209 INTRINSIC abs, max, min
215 IF( n.LE.0 .OR. nrhs.LE.0 )
THEN
221 eps = dlamch(
'Epsilon' )
222 unfl = dlamch(
'Safe minimum' )
224 notran = lsame( trans,
'N' )
225 nz = min( kl+ku+2, n+1 )
233 imax = idamax( n, x( 1, j ), 1 )
234 xnorm = max( abs( x( imax, j ) ), unfl )
237 diff = max( diff, abs( x( i, j )-xact( i, j ) ) )
240 IF( xnorm.GT.one )
THEN
242 ELSE IF( diff.LE.ovfl*xnorm )
THEN
250 IF( diff / xnorm.LE.ferr( j ) )
THEN
251 errbnd = max( errbnd, ( diff / xnorm ) / ferr( j ) )
263 tmp = abs( b( i, k ) )
265 DO 40 j = max( i-kl, 1 ), min( i+ku, n )
266 tmp = tmp + abs( ab( ku+1+i-j, j ) )*abs( x( j, k ) )
269 DO 50 j = max( i-ku, 1 ), min( i+kl, n )
270 tmp = tmp + abs( ab( ku+1+j-i, i ) )*abs( x( j, k ) )
276 axbi = min( axbi, tmp )
279 tmp = berr( k ) / ( nz*eps+nz*unfl / max( axbi, nz*unfl ) )
283 reslts( 2 ) = max( reslts( 2 ), tmp )
subroutine dgbt05(trans, n, kl, ku, nrhs, ab, ldab, b, ldb, x, ldx, xact, ldxact, ferr, berr, reslts)
DGBT05