149 SUBROUTINE zdrvab( DOTYPE, NM, MVAL, NNS,
150 $ NSVAL, THRESH, NMAX, A, AFAC, B,
151 $ X, WORK, RWORK, SWORK, IWORK, NOUT )
158 INTEGER NM, NMAX, NNS, NOUT
159 DOUBLE PRECISION THRESH
163 INTEGER MVAL( * ), NSVAL( * ), IWORK( * )
164 DOUBLE PRECISION RWORK( * )
166 COMPLEX*16 A( * ), AFAC( * ), B( * ),
173 DOUBLE PRECISION ZERO
174 PARAMETER ( ZERO = 0.0d+0 )
176 parameter( ntypes = 11 )
178 parameter( ntests = 1 )
182 CHARACTER DIST, TRANS,
TYPE, XTYPE
184 INTEGER I, IM, IMAT, INFO, IOFF, IRHS,
185 $ izero, kl, ku, lda, m, mode, n,
186 $ nerrs, nfail, nimat, nrhs, nrun
187 DOUBLE PRECISION ANORM, CNDNUM
190 INTEGER ISEED( 4 ), ISEEDY( 4 )
191 DOUBLE PRECISION RESULT( NTESTS )
201 INTRINSIC dcmplx, dble,
max,
min, sqrt
209 COMMON / infoc / infot, nunit, ok, lerr
210 COMMON / srnamc / srnamt
213 DATA iseedy / 2006, 2007, 2008, 2009 /
220 path( 1: 1 ) =
'Zomplex precision'
226 ISEED( I ) = ISEEDY( I )
239.LE..OR..LE.
IF( M0 N0 )
242 DO 100 IMAT = 1, NIMAT
246.NOT.
IF( DOTYPE( IMAT ) )
251.GE..AND..LE.
ZEROT = IMAT5 IMAT7
252.AND..LT.
IF( ZEROT NIMAT-4 )
258 CALL ZLATB4( PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE,
262 CALL ZLATMS( M, N, DIST, ISEED, TYPE, RWORK, MODE,
263 $ CNDNUM, ANORM, KL, KU, 'no packing
', A, LDA,
269 CALL ALAERH( PATH, 'zlatms', INFO, 0, ' ', M, N, -1,
270 $ -1, -1, IMAT, NFAIL, NERRS, NOUT )
280.EQ.
ELSE IF( IMAT6 ) THEN
283 IZERO = MIN( M, N ) / 2 + 1
285 IOFF = ( IZERO-1 )*LDA
291 CALL ZLASET( 'full
', M, N-IZERO+1, DCMPLX(ZERO),
292 $ DCMPLX(ZERO), A( IOFF+1 ), LDA )
304 CALL ZLARHS( PATH, XTYPE, ' ', TRANS, N, N, KL,
305 $ KU, NRHS, A, LDA, X, LDA, B,
312 CALL ZLACPY( 'full
', M, N, A, LDA, AFAC, LDA )
314 CALL ZCGESV( N, NRHS, A, LDA, IWORK, B, LDA, X, LDA,
315 $ WORK, SWORK, RWORK, ITER, INFO)
318 CALL ZLACPY( 'full
', M, N, AFAC, LDA, A, LDA )
324.NE.
IF( INFOIZERO ) THEN
326.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
327 $ CALL ALAHD( NOUT, PATH )
330.NE..AND..NE.
IF( INFOIZERO IZERO0 ) THEN
331 WRITE( NOUT, FMT = 9988 )'zcgesv',INFO,
334 WRITE( NOUT, FMT = 9975 )'zcgesv',INFO,
346 CALL ZLACPY( 'full
', N, NRHS, B, LDA, WORK, LDA )
348 CALL ZGET08( TRANS, N, N, NRHS, A, LDA, X, LDA, WORK,
349 $ LDA, RWORK, RESULT( 1 ) )
363.LE.
IF ((THRESH0.0E+00)
364.OR..GE..AND..GT.
$ ((ITER0)(N0)
365.AND..GE.
$ (RESULT(1)SQRT(DBLE(N))))
366.OR..LT..AND..GE.
$ ((ITER0)(RESULT(1)THRESH))) THEN
368.EQ..AND..EQ.
IF( NFAIL0 NERRS0 ) THEN
369 WRITE( NOUT, FMT = 8999 )'dge
'
370 WRITE( NOUT, FMT = '(
'' matrix types:
'' )
' )
371 WRITE( NOUT, FMT = 8979 )
372 WRITE( NOUT, FMT = '(
'' test ratios:
'' )
' )
373 WRITE( NOUT, FMT = 8960 )1
374 WRITE( NOUT, FMT = '(
'' messages:
'' )
' )
377 WRITE( NOUT, FMT = 9998 )TRANS, N, NRHS,
378 $ IMAT, 1, RESULT( 1 )
388.GT.
IF( NFAIL0 ) THEN
389 WRITE( NOUT, FMT = 9996 )'zcgesv', NFAIL, NRUN
391 WRITE( NOUT, FMT = 9995 )'zcgesv', NRUN
393.GT.
IF( NERRS0 ) THEN
394 WRITE( NOUT, FMT = 9994 )NERRS
397 9998 FORMAT( ' trans=
''', A1, ''', n =
', I5, ', nrhs=
', I3, ',
type ',
398 $ I2, ', test(
', I2, ') =
', G12.5 )
399 9996 FORMAT( 1X, A6, ':
', I6, ' out of
', I6,
400 $ ' tests failed to pass
the threshold
' )
401 9995 FORMAT( /1X, 'all tests
for ', A6,
402 $ ' routines passed
the threshold(
', I6, ' tests run)
' )
403 9994 FORMAT( 6X, I6, ' error messages recorded
' )
407 9988 FORMAT( ' ***
', A6, ' returned with info =
', I5, ' instead of
',
408 $ I5, / ' ==> m =
', I5, ',
type ',
413 9975 FORMAT( ' *** error code from
', A6, '=
', I5, ' for m=
', I5,
415 8999 FORMAT( / 1X, A3, ': general dense matrices
' )
416 8979 FORMAT( 4X, '1. diagonal
', 24X, '7. last n/2 columns zero
', / 4X,
417 $ '2. upper triangular
', 16X,
418 $ '8. random, cndnum = sqrt(0.1/eps)
', / 4X,
419 $ '3. lower triangular
', 16X, '9. random, cndnum = 0.1/eps
',
420 $ / 4X, '4. random, cndnum = 2
', 13X,
421 $ '10. scaled near underflow
', / 4X, '5. first column zero
',
422 $ 14X, '11. scaled near overflow
', / 4X,
423 $ '6. last column zero
' )
424 8960 FORMAT( 3X, I2, ': norm_1( b - a * x ) /
',
425 $ '( norm_1(a) * norm_1(x) * eps * sqrt(n) ) > 1
if iterref
',
426 $ / 4x, 'or norm_1( b - a * x ) /
',
427 $ '( norm_1(a) * norm_1(x) * eps ) >
thres if dgetrf' )
end diagonal values have been computed in the(sparse) matrix id.SOL
subroutine alahd(iounit, path)
ALAHD
subroutine alaerh(path, subnam, info, infoe, opts, m, n, kl, ku, n5, imat, nfail, nerrs, nout)
ALAERH
subroutine zcgesv(n, nrhs, a, lda, ipiv, b, ldb, x, ldx, work, swork, rwork, iter, info)
ZCGESV computes the solution to system of linear equations A * X = B for GE matrices (mixed precision...
subroutine zlacpy(uplo, m, n, a, lda, b, ldb)
ZLACPY copies all or part of one two-dimensional array to another.
subroutine zlaset(uplo, m, n, alpha, beta, a, lda)
ZLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine zlarhs(path, xtype, uplo, trans, m, n, kl, ku, nrhs, a, lda, x, ldx, b, ldb, iseed, info)
ZLARHS
subroutine zget08(trans, m, n, nrhs, a, lda, x, ldx, b, ldb, rwork, resid)
ZGET08
subroutine zdrvab(dotype, nm, mval, nns, nsval, thresh, nmax, a, afac, b, x, work, rwork, swork, iwork, nout)
ZDRVAB
subroutine zlatb4(path, imat, m, n, type, kl, ku, anorm, mode, cndnum, dist)
ZLATB4
subroutine zlatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
ZLATMS
subroutine dgetrf(m, n, a, lda, ipiv, info)
DGETRF
for(i8=*sizetab-1;i8 >=0;i8--)
subroutine thres(iparg, ithbuf, elbuf_tab, wa, igeo, ixr, nthgrp2, ithgrp, x)