165 INTEGER nmax, nn, nout, nrhs
166 DOUBLE PRECISION thresh
170 INTEGER iwork( * ), nval( * )
171 DOUBLE PRECISION rwork( * )
172 COMPLEX*16 a( * ), afac( * ), ainv( * ), b( * ),
173 $ work( * ), x( * ), xact( * )
179 DOUBLE PRECISION zero
180 parameter ( zero = 0.0d+0 )
182 parameter ( czero = 0.0e+0 )
183 INTEGER ntypes, ntests
184 parameter ( ntypes = 10, ntests = 3 )
186 parameter ( nfact = 2 )
190 CHARACTER dist, fact,
TYPE, uplo, xtype
191 CHARACTER*3 matpath, path
192 INTEGER i, i1, i2, ifact, imat, in, info, ioff, iuplo,
193 $ izero, j, k, kl, ku, lda, lwork, mode, n,
194 $ nb, nbmin, nerrs, nfail, nimat, nrun, nt
195 DOUBLE PRECISION anorm, cndnum
198 CHARACTER facts( nfact ), uplos( 2 )
199 INTEGER iseed( 4 ), iseedy( 4 )
200 DOUBLE PRECISION result( ntests )
217 COMMON / infoc / infot, nunit, ok, lerr
218 COMMON / srnamc / srnamt
224 DATA iseedy / 1988, 1989, 1990, 1991 /
225 DATA uplos /
'U',
'L' / , facts /
'F',
'N' /
233 path( 1: 1 ) =
'Zomplex precision'
238 matpath( 1: 1 ) =
'Zomplex precision'
239 matpath( 2: 3 ) =
'SY'
245 iseed( i ) = iseedy( i )
247 lwork = max( 2*nmax, nmax*nrhs )
252 $
CALL zerrvx( path, nout )
272 DO 170 imat = 1, nimat
276 IF( .NOT.dotype( imat ) )
281 zerot = imat.GE.3 .AND. imat.LE.6
282 IF( zerot .AND. n.LT.imat-2 )
288 uplo = uplos( iuplo )
293 CALL zlatb4( matpath, imat, n, n,
TYPE, kl, ku, anorm,
294 $ mode, cndnum, dist )
297 CALL zlatms( n, n, dist, iseed,
TYPE, rwork, mode,
298 $ cndnum, anorm, kl, ku, uplo, a, lda, work,
304 CALL alaerh( path,
'ZLATMS', info, 0, uplo, n, n, -1,
305 $ -1, -1, imat, nfail, nerrs, nout )
315 ELSE IF( imat.EQ.4 )
THEN
325 IF( iuplo.EQ.1 )
THEN
326 ioff = ( izero-1 )*lda
327 DO 20 i = 1, izero - 1
337 DO 40 i = 1, izero - 1
348 IF( iuplo.EQ.1 )
THEN
377 DO 150 ifact = 1, nfact
381 fact = facts( ifact )
386 CALL zlarhs( matpath, xtype, uplo,
' ', n, n, kl, ku,
387 $ nrhs, a, lda, xact, lda, b, lda, iseed,
393 IF( ifact.EQ.2 )
THEN
394 CALL zlacpy( uplo, n, n, a, lda, afac, lda )
395 CALL zlacpy(
'Full', n, nrhs, b, lda, x, lda )
400 CALL zsysv_aa( uplo, n, nrhs, afac, lda, iwork,
401 $ x, lda, work, lwork, info )
406 IF( izero.GT.0 )
THEN
412 ELSE IF( iwork( j ).EQ.k )
THEN
426 CALL alaerh( path,
'ZSYSV_AA ', info, k,
427 $ uplo, n, n, -1, -1, nrhs,
428 $ imat, nfail, nerrs, nout )
430 ELSE IF( info.NE.0 )
THEN
437 CALL zsyt01_aa( uplo, n, a, lda, afac, lda,
438 $ iwork, ainv, lda, rwork,
443 CALL zlacpy(
'Full', n, nrhs, b, lda, work, lda )
444 CALL zsyt02( uplo, n, nrhs, a, lda, x, lda, work,
445 $ lda, rwork, result( 2 ) )
452 IF( result( k ).GE.thresh )
THEN
453 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
454 $
CALL aladhd( nout, path )
455 WRITE( nout, fmt = 9999 )
'ZSYSV_AA ',
456 $ uplo, n, imat, k, result( k )
472 CALL alasvm( path, nout, nfail, nrun, nerrs )
474 9999
FORMAT( 1x, a,
', UPLO=''', a1,
''', N =', i5,
', type ', i2,
475 $
', test ', i2,
', ratio =', g12.5 )
subroutine alasvm(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASVM
subroutine alaerh(PATH, SUBNAM, INFO, INFOE, OPTS, M, N, KL, KU, N5, IMAT, NFAIL, NERRS, NOUT)
ALAERH
subroutine zsysv_aa(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO)
ZSYSV_AA computes the solution to system of linear equations A * X = B for SY matrices ...
subroutine zget04(N, NRHS, X, LDX, XACT, LDXACT, RCOND, RESID)
ZGET04
subroutine zsytrf_aa(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
ZSYTRF_AA
subroutine zlarhs(PATH, XTYPE, UPLO, TRANS, M, N, KL, KU, NRHS, A, LDA, X, LDX, B, LDB, ISEED, INFO)
ZLARHS
subroutine zlacpy(UPLO, M, N, A, LDA, B, LDB)
ZLACPY copies all or part of one two-dimensional array to another.
subroutine xlaenv(ISPEC, NVALUE)
XLAENV
subroutine zlatb4(PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE, CNDNUM, DIST)
ZLATB4
double precision function zlansy(NORM, UPLO, N, A, LDA, WORK)
ZLANSY returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a complex symmetric matrix.
subroutine zsyt01_aa(UPLO, N, A, LDA, AFAC, LDAFAC, IPIV, C, LDC, RWORK, RESID)
ZSYT01
subroutine aladhd(IOUNIT, PATH)
ALADHD
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 zsyt02(UPLO, N, NRHS, A, LDA, X, LDX, B, LDB, RWORK, RESID)
ZSYT02
subroutine derrvx(PATH, NUNIT)
DERRVX
double precision function dget06(RCOND, RCONDC)
DGET06
subroutine zerrvx(PATH, NUNIT)
ZERRVX
subroutine zlatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
ZLATMS