165 INTEGER nmax, nn, nout, nrhs
170 INTEGER iwork( * ), nval( * )
172 COMPLEX a( * ), afac( * ), ainv( * ), b( * ),
173 $ work( * ), x( * ), xact( * )
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
198 CHARACTER facts( nfact ), uplos( 2 )
199 INTEGER iseed( 4 ), iseedy( 4 )
200 REAL 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 ) =
'Complex precision'
238 matpath( 1: 1 ) =
'Complex precision'
239 matpath( 2: 3 ) =
'SY'
245 iseed( i ) = iseedy( i )
247 lwork = max( 2*nmax, nmax*nrhs )
252 $
CALL cerrvx( 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 clatb4( matpath, imat, n, n,
TYPE, kl, ku, anorm,
294 $ mode, cndnum, dist )
297 CALL clatms( n, n, dist, iseed,
TYPE, rwork, mode,
298 $ cndnum, anorm, kl, ku, uplo, a, lda, work,
304 CALL alaerh( path,
'CLATMS', 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 clarhs( matpath, xtype, uplo,
' ', n, n, kl, ku,
387 $ nrhs, a, lda, xact, lda, b, lda, iseed,
393 IF( ifact.EQ.2 )
THEN
394 CALL clacpy( uplo, n, n, a, lda, afac, lda )
395 CALL clacpy(
'Full', n, nrhs, b, lda, x, lda )
400 CALL csysv_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,
'CSYSV_AA ', info, k,
427 $ uplo, n, n, -1, -1, nrhs,
428 $ imat, nfail, nerrs, nout )
430 ELSE IF( info.NE.0 )
THEN
437 CALL csyt01_aa( uplo, n, a, lda, afac, lda,
438 $ iwork, ainv, lda, rwork,
443 CALL clacpy(
'Full', n, nrhs, b, lda, work, lda )
444 CALL csyt02( 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 )
'CSYSV_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 clarhs(PATH, XTYPE, UPLO, TRANS, M, N, KL, KU, NRHS, A, LDA, X, LDX, B, LDB, ISEED, INFO)
CLARHS
subroutine csytrf_aa(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
CSYTRF_AA
subroutine csyt02(UPLO, N, NRHS, A, LDA, X, LDX, B, LDB, RWORK, RESID)
CSYT02
subroutine csyt01_aa(UPLO, N, A, LDA, AFAC, LDAFAC, IPIV, C, LDC, RWORK, RESID)
CSYT01
subroutine csysv_aa(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO)
CSYSV_AA computes the solution to system of linear equations A * X = B for SY matrices ...
subroutine claset(UPLO, M, N, ALPHA, BETA, A, LDA)
CLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values...
subroutine cerrvx(PATH, NUNIT)
CERRVX
subroutine xlaenv(ISPEC, NVALUE)
XLAENV
subroutine clatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
CLATMS
subroutine aladhd(IOUNIT, PATH)
ALADHD
subroutine derrvx(PATH, NUNIT)
DERRVX
subroutine clacpy(UPLO, M, N, A, LDA, B, LDB)
CLACPY copies all or part of one two-dimensional array to another.
double precision function dget06(RCOND, RCONDC)
DGET06
real function clansy(NORM, UPLO, N, A, LDA, WORK)
CLANSY 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 clatb4(PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE, CNDNUM, DIST)
CLATB4
subroutine cget04(N, NRHS, X, LDX, XACT, LDXACT, RCOND, RESID)
CGET04