164 SUBROUTINE zget07( TRANS, N, NRHS, A, LDA, B, LDB, X, LDX, XACT,
165 $ LDXACT, FERR, CHKFERR, BERR, RESLTS )
174 INTEGER LDA, LDB, LDX, LDXACT, N, NRHS
177 DOUBLE PRECISION BERR( * ), FERR( * ), RESLTS( * )
178 COMPLEX*16 A( LDA, * ), B( LDB, * ), X( LDX, * ),
185 DOUBLE PRECISION ZERO, ONE
186 parameter( zero = 0.0d+0, one = 1.0d+0 )
190 INTEGER I, IMAX, J, K
191 DOUBLE PRECISION AXBI, DIFF, EPS, ERRBND, OVFL, TMP, UNFL, XNORM
197 DOUBLE PRECISION DLAMCH
198 EXTERNAL lsame, izamax, dlamch
201 INTRINSIC abs, dble, dimag, max, min
204 DOUBLE PRECISION CABS1
207 cabs1( zdum ) = abs( dble( zdum ) ) + abs( dimag( zdum ) )
213 IF( n.LE.0 .OR. nrhs.LE.0 )
THEN
219 eps = dlamch(
'Epsilon' )
220 unfl = dlamch(
'Safe minimum' )
222 notran = lsame( trans,
'N' )
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 ) )
262 tmp = cabs1( b( i, k ) )
265 tmp = tmp + cabs1( a( i, j ) )*cabs1( x( j, k ) )
269 tmp = tmp + cabs1( a( j, i ) )*cabs1( x( j, k ) )
275 axbi = min( axbi, tmp )
278 tmp = berr( k ) / ( ( n+1 )*eps+( n+1 )*unfl /
279 $ max( axbi, ( n+1 )*unfl ) )
283 reslts( 2 ) = max( reslts( 2 ), tmp )
subroutine zget07(trans, n, nrhs, a, lda, b, ldb, x, ldx, xact, ldxact, ferr, chkferr, berr, reslts)
ZGET07