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
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
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 )
integer function izamax(N, ZX, INCX)
IZAMAX
subroutine zget08(TRANS, M, N, NRHS, A, LDA, X, LDX, B, LDB, RWORK, RESID)
ZGET08
subroutine zgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZGEMM
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real b(3) integer i
logical function lsame(CA, CB)
LSAME
double precision function zlange(NORM, M, N, A, LDA, WORK)
ZLANGE returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value ...
double precision function dlamch(CMACH)
DLAMCH
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real j