166 SUBROUTINE zget07( TRANS, N, NRHS, A, LDA, B, LDB, X, LDX, XACT,
167 $ LDXACT, FERR, CHKFERR, BERR, RESLTS )
177 INTEGER LDA, LDB, LDX, LDXACT, N, NRHS
180 DOUBLE PRECISION BERR( * ), FERR( * ), RESLTS( * )
181 COMPLEX*16 A( lda, * ), B( ldb, * ), X( ldx, * ),
188 DOUBLE PRECISION ZERO, ONE
189 parameter( zero = 0.0d+0, one = 1.0d+0 )
193 INTEGER I, IMAX, J, K
194 DOUBLE PRECISION AXBI, DIFF, EPS, ERRBND, OVFL, TMP, UNFL, XNORM
200 DOUBLE PRECISION DLAMCH
201 EXTERNAL lsame, izamax, dlamch
204 INTRINSIC abs, dble, dimag, max, min
207 DOUBLE PRECISION CABS1
210 cabs1( zdum ) = abs( dble( zdum ) ) + abs( dimag( zdum ) )
216 IF( n.LE.0 .OR. nrhs.LE.0 )
THEN 222 eps = dlamch(
'Epsilon' )
223 unfl = dlamch(
'Safe minimum' )
225 notran = lsame( trans,
'N' )
234 imax = izamax( n, x( 1, j ), 1 )
235 xnorm = max( cabs1( x( imax, j ) ), unfl )
238 diff = max( diff, cabs1( x( i, j )-xact( i, j ) ) )
241 IF( xnorm.GT.one )
THEN 243 ELSE IF( diff.LE.ovfl*xnorm )
THEN 251 IF( diff / xnorm.LE.ferr( j ) )
THEN 252 errbnd = max( errbnd, ( diff / xnorm ) / ferr( j ) )
265 tmp = cabs1( b( i, k ) )
268 tmp = tmp + cabs1( a( i, j ) )*cabs1( x( j, k ) )
272 tmp = tmp + cabs1( a( j, i ) )*cabs1( x( j, k ) )
278 axbi = min( axbi, tmp )
281 tmp = berr( k ) / ( ( n+1 )*eps+( n+1 )*unfl /
282 $ max( axbi, ( n+1 )*unfl ) )
286 reslts( 2 ) = max( reslts( 2 ), tmp )
subroutine zget07(TRANS, N, NRHS, A, LDA, B, LDB, X, LDX, XACT, LDXACT, FERR, CHKFERR, BERR, RESLTS)
ZGET07