165 SUBROUTINE zpot05( UPLO, N, NRHS, A, LDA, B, LDB, X, LDX, XACT,
166 $ ldxact, ferr, berr, reslts )
175 INTEGER LDA, LDB, LDX, LDXACT, N, NRHS
178 DOUBLE PRECISION BERR( * ), FERR( * ), RESLTS( * )
179 COMPLEX*16 A( lda, * ), B( ldb, * ), X( ldx, * ),
186 DOUBLE PRECISION ZERO, ONE
187 parameter ( zero = 0.0d+0, one = 1.0d+0 )
191 INTEGER I, IMAX, J, K
192 DOUBLE PRECISION AXBI, DIFF, EPS, ERRBND, OVFL, TMP, UNFL, XNORM
198 DOUBLE PRECISION DLAMCH
199 EXTERNAL lsame, izamax, dlamch
202 INTRINSIC abs, dble, dimag, max, min
205 DOUBLE PRECISION CABS1
208 cabs1( zdum ) = abs( dble( zdum ) ) + abs( dimag( zdum ) )
214 IF( n.LE.0 .OR. nrhs.LE.0 )
THEN
220 eps = dlamch(
'Epsilon' )
221 unfl = dlamch(
'Safe minimum' )
223 upper = lsame( uplo,
'U' )
231 imax = izamax( n, x( 1, j ), 1 )
232 xnorm = max( cabs1( x( imax, j ) ), unfl )
235 diff = max( diff, cabs1( x( i, j )-xact( i, j ) ) )
238 IF( xnorm.GT.one )
THEN
240 ELSE IF( diff.LE.ovfl*xnorm )
THEN
248 IF( diff / xnorm.LE.ferr( j ) )
THEN
249 errbnd = max( errbnd, ( diff / xnorm ) / ferr( j ) )
261 tmp = cabs1( b( i, k ) )
264 tmp = tmp + cabs1( a( j, i ) )*cabs1( x( j, k ) )
266 tmp = tmp + abs( dble( a( i, i ) ) )*cabs1( x( i, k ) )
268 tmp = tmp + cabs1( a( i, j ) )*cabs1( x( j, k ) )
272 tmp = tmp + cabs1( a( i, j ) )*cabs1( x( j, k ) )
274 tmp = tmp + abs( dble( a( i, i ) ) )*cabs1( x( i, k ) )
276 tmp = tmp + cabs1( a( j, i ) )*cabs1( x( j, k ) )
282 axbi = min( axbi, tmp )
285 tmp = berr( k ) / ( ( n+1 )*eps+( n+1 )*unfl /
286 $ max( axbi, ( n+1 )*unfl ) )
290 reslts( 2 ) = max( reslts( 2 ), tmp )
subroutine zpot05(UPLO, N, NRHS, A, LDA, B, LDB, X, LDX, XACT, LDXACT, FERR, BERR, RESLTS)
ZPOT05