133 SUBROUTINE zget08( TRANS, M, N, NRHS, A, LDA, X, LDX, B, LDB,
143 INTEGER LDA, LDB, LDX, M, N, NRHS
144 DOUBLE PRECISION RESID
147 DOUBLE PRECISION RWORK( * )
148 COMPLEX*16 A( lda, * ), B( ldb, * ), X( ldx, * )
154 DOUBLE PRECISION ZERO, ONE
155 parameter ( zero = 0.0d+0, one = 1.0d+0 )
157 parameter ( cone = ( 1.0d+0, 0.0d+0 ) )
161 DOUBLE PRECISION ANORM, BNORM, EPS, XNORM
167 DOUBLE PRECISION DLAMCH, ZLANGE
168 EXTERNAL lsame, izamax, dlamch, zlange
174 INTRINSIC abs, dble, dimag, max
177 DOUBLE PRECISION CABS1
180 cabs1( zdum ) = abs( dble( zdum ) ) + abs( dimag( zdum ) )
186 IF( m.LE.0 .OR. n.LE.0 .OR. nrhs.EQ.0 )
THEN
191 IF( lsame( trans,
'T' ) .OR. lsame( trans,
'C' ) )
THEN
201 eps = dlamch(
'Epsilon' )
202 anorm = zlange(
'I', n1, n2, a, lda, rwork )
203 IF( anorm.LE.zero )
THEN
210 CALL zgemm( trans,
'No transpose', n1, nrhs, n2, -cone, a, lda, x,
211 $ ldx, cone, b, ldb )
218 bnorm = cabs1( b( izamax( n1, b( 1, j ), 1 ), j ) )
219 xnorm = cabs1( x( izamax( n2, x( 1, j ), 1 ), j ) )
220 IF( xnorm.LE.zero )
THEN
223 resid = max( resid, ( ( bnorm / anorm ) / xnorm ) / eps )
subroutine zgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZGEMM
subroutine zget08(TRANS, M, N, NRHS, A, LDA, X, LDX, B, LDB, RWORK, RESID)
ZGET08