2211 DOUBLE PRECISION zero, one
2212 parameter ( zero = 0.0d0, one = 1.0d0 )
2214 DOUBLE PRECISION alpha, beta, eps, err
2215 INTEGER kk, lda, ldb, ldc, ldcc, m, n, nout
2217 CHARACTER*1 transa, transb
2219 DOUBLE PRECISION a( lda, * ), b( ldb, * ), c( ldc, * ),
2220 $ cc( ldcc, * ), ct( * ), g( * )
2222 DOUBLE PRECISION erri
2224 LOGICAL trana, tranb
2226 INTRINSIC abs, max, sqrt
2228 trana = transa.EQ.
'T'.OR.transa.EQ.
'C'
2229 tranb = transb.EQ.
'T'.OR.transb.EQ.
'C'
2241 IF( .NOT.trana.AND..NOT.tranb )
THEN
2244 ct( i ) = ct( i ) + a( i, k )*b( k, j )
2245 g( i ) = g( i ) + abs( a( i, k ) )*abs( b( k, j ) )
2248 ELSE IF( trana.AND..NOT.tranb )
THEN
2251 ct( i ) = ct( i ) + a( k, i )*b( k, j )
2252 g( i ) = g( i ) + abs( a( k, i ) )*abs( b( k, j ) )
2255 ELSE IF( .NOT.trana.AND.tranb )
THEN
2258 ct( i ) = ct( i ) + a( i, k )*b( j, k )
2259 g( i ) = g( i ) + abs( a( i, k ) )*abs( b( j, k ) )
2262 ELSE IF( trana.AND.tranb )
THEN
2265 ct( i ) = ct( i ) + a( k, i )*b( j, k )
2266 g( i ) = g( i ) + abs( a( k, i ) )*abs( b( j, k ) )
2271 ct( i ) = alpha*ct( i ) + beta*c( i, j )
2272 g( i ) = abs( alpha )*g( i ) + abs( beta )*abs( c( i, j ) )
2279 erri = abs( ct( i ) - cc( i, j ) )/eps
2280 IF( g( i ).NE.zero )
2281 $ erri = erri/g( i )
2282 err = max( err, erri )
2283 IF( err*sqrt( eps ).GE.one )
2295 WRITE( nout, fmt = 9999 )
2298 WRITE( nout, fmt = 9998 )i, ct( i ), cc( i, j )
2300 WRITE( nout, fmt = 9998 )i, cc( i, j ), ct( i )
2304 $
WRITE( nout, fmt = 9997 )j
2309 9999
FORMAT(
' ******* FATAL ERROR - COMPUTED RESULT IS LESS THAN HAL',
2310 $
'F ACCURATE *******', /
' EXPECTED RESULT COMPU',
2312 9998
FORMAT( 1x, i7, 2g18.6 )
2313 9997
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )