171 SUBROUTINE cpbt05( UPLO, N, KD, NRHS, AB, LDAB, B, LDB, X, LDX,
172 $ xact, ldxact, ferr, berr, reslts )
181 INTEGER KD, LDAB, LDB, LDX, LDXACT, N, NRHS
184 REAL BERR( * ), FERR( * ), RESLTS( * )
185 COMPLEX AB( ldab, * ), B( ldb, * ), X( ldx, * ),
193 parameter ( zero = 0.0e+0, one = 1.0e+0 )
197 INTEGER I, IMAX, J, K, NZ
198 REAL AXBI, DIFF, EPS, ERRBND, OVFL, TMP, UNFL, XNORM
205 EXTERNAL lsame, icamax, slamch
208 INTRINSIC abs, aimag, max, min, real
214 cabs1( zdum ) = abs(
REAL( ZDUM ) ) + abs( AIMAG( zdum ) )
220 IF( n.LE.0 .OR. nrhs.LE.0 )
THEN
226 eps = slamch(
'Epsilon' )
227 unfl = slamch(
'Safe minimum' )
229 upper = lsame( uplo,
'U' )
230 nz = 2*max( kd, n-1 ) + 1
238 imax = icamax( n, x( 1, j ), 1 )
239 xnorm = max( cabs1( x( imax, j ) ), unfl )
242 diff = max( diff, cabs1( x( i, j )-xact( i, j ) ) )
245 IF( xnorm.GT.one )
THEN
247 ELSE IF( diff.LE.ovfl*xnorm )
THEN
255 IF( diff / xnorm.LE.ferr( j ) )
THEN
256 errbnd = max( errbnd, ( diff / xnorm ) / ferr( j ) )
268 tmp = cabs1( b( i, k ) )
270 DO 40 j = max( i-kd, 1 ), i - 1
271 tmp = tmp + cabs1( ab( kd+1-i+j, i ) )*
274 tmp = tmp + abs(
REAL( AB( KD+1, I ) ) )*
276 DO 50 j = i + 1, min( i+kd, n )
277 tmp = tmp + cabs1( ab( kd+1+i-j, j ) )*
281 DO 60 j = max( i-kd, 1 ), i - 1
282 tmp = tmp + cabs1( ab( 1+i-j, j ) )*cabs1( x( j, k ) )
284 tmp = tmp + abs(
REAL( AB( 1, I ) ) )*cabs1( X( i, k ) )
285 DO 70 j = i + 1, min( i+kd, n )
286 tmp = tmp + cabs1( ab( 1+j-i, i ) )*cabs1( x( j, k ) )
292 axbi = min( axbi, tmp )
295 tmp = berr( k ) / ( nz*eps+nz*unfl / max( axbi, nz*unfl ) )
299 reslts( 2 ) = max( reslts( 2 ), tmp )
subroutine cpbt05(UPLO, N, KD, NRHS, AB, LDAB, B, LDB, X, LDX, XACT, LDXACT, FERR, BERR, RESLTS)
CPBT05