1 SUBROUTINE spot05( UPLO, N, NRHS, A, LDA, B, LDB, X, LDX, XACT,
2 $ ldxact, ferr, berr, reslts )
10 INTEGER lda, ldb, ldx, ldxact, n, nrhs
13 REAL a( lda, * ), b( ldb, * ), berr( * ), ferr( * ),
14 $ reslts( * ), x( ldx, * ), xact( ldxact, * )
103 parameter( zero = 0.0e+0, one = 1.0e+0 )
107 INTEGER i, imax, j, k
108 REAL axbi, diff, eps, errbnd, ovfl, tmp, unfl, xnorm
114 EXTERNAL lsame, isamax, slamch
123 IF( n.LE.0 .OR. nrhs.LE.0 )
THEN
129 eps = slamch(
'Epsilon' )
130 unfl = slamch(
'Safe minimum' )
132 upper = lsame(
uplo,
'U' )
140 imax = isamax( n, x( 1, j ), 1 )
141 xnorm =
max( abs( x( imax, j ) ), unfl )
144 diff =
max( diff, abs( x( i, j )-xact( i, j ) ) )
147 IF( xnorm.GT.one )
THEN
149 ELSE IF( diff.LE.ovfl*xnorm )
THEN
157 IF( diff / xnorm.LE.ferr( j ) )
THEN
158 errbnd =
max( errbnd, ( diff / xnorm ) / ferr( j ) )
170 tmp = abs( b( i, k ) )
173 tmp = tmp + abs( a( j, i ) )*abs( x( j, k ) )
176 tmp = tmp + abs( a( i, j ) )*abs( x( j, k ) )
180 tmp = tmp + abs( a( i, j ) )*abs( x( j, k ) )
183 tmp = tmp + abs( a( j, i ) )*abs( x( j, k ) )
189 axbi =
min( axbi, tmp )
192 tmp = berr( k ) / ( ( n+1 )*eps+( n+1 )*unfl /
193 $
max( axbi, ( n+1 )*unfl ) )
197 reslts( 2 ) =
max( reslts( 2 ), tmp )