152 $ nmax, a, afac, ainv,
b,
x, xact, work,
153 $ rwork, iwork, nout )
162 INTEGER nmax, nn, nout, nrhs
167 INTEGER iwork( * ), nval( * )
169 COMPLEX a( * ), afac( * ), ainv( * ),
b( * ),
170 $ work( * ),
x( * ), xact( * )
177 parameter( one = 1.0e+0, zero = 0.0e+0 )
178 INTEGER ntypes, ntests
179 parameter( ntypes = 11, ntests = 3 )
181 parameter( nfact = 2 )
185 CHARACTER dist, fact, type, uplo, xtype
186 CHARACTER*3 matpath, path
187 INTEGER i, i1, i2, ifact, imat, in, info, ioff, iuplo,
188 $ izero,
j, k, kl, ku, lda, lwork, mode, n,
189 $ nb, nbmin, nerrs, nfail, nimat, nrun, nt
190 REAL ainvnm, anorm, cndnum, rcondc
193 CHARACTER facts( nfact ), uplos( 2 )
194 INTEGER iseed( 4 ), iseedy( 4 )
195 REAL result( ntests )
214 COMMON / infoc / infot, nunit, ok, lerr
215 COMMON / srnamc / srnamt
221 DATA iseedy / 1988, 1989, 1990, 1991 /
222 DATA uplos /
'U',
'L' / , facts /
'F',
'N' /
230 path( 1: 1 ) =
'Complex precision'
235 matpath( 1: 1 ) =
'Complex precision'
236 matpath( 2: 3 ) =
'SY'
242 iseed( i ) = iseedy( i )
244 lwork = max( 2*nmax, nmax*nrhs )
249 $ CALL
cerrvx( path, nout )
270 DO 170 imat = 1, nimat
274 IF( .NOT.dotype( imat ) )
279 zerot = imat.GE.3 .AND. imat.LE.6
280 IF( zerot .AND. n.LT.imat-2 )
286 uplo = uplos( iuplo )
288 IF( imat.NE.ntypes )
THEN
295 CALL
clatb4( matpath, imat, n, n, type, kl, ku, anorm,
296 $ mode, cndnum, dist )
301 CALL
clatms( n, n, dist, iseed, type, rwork, mode,
302 $ cndnum, anorm, kl, ku, uplo, a, lda,
308 CALL
alaerh( path,
'CLATMS', info, 0, uplo, n, n,
309 $ -1, -1, -1, imat, nfail, nerrs, nout )
319 ELSE IF( imat.EQ.4 )
THEN
329 IF( iuplo.EQ.1 )
THEN
330 ioff = ( izero-1 )*lda
331 DO 20 i = 1, izero - 1
341 DO 40 i = 1, izero - 1
351 IF( iuplo.EQ.1 )
THEN
388 CALL
clatsy( uplo, n, a, lda, iseed )
391 DO 150 ifact = 1, nfact
395 fact = facts( ifact )
405 ELSE IF( ifact.EQ.1 )
THEN
409 anorm =
clansy(
'1', uplo, n, a, lda, rwork )
414 CALL
clacpy( uplo, n, n, a, lda, afac, lda )
420 CALL
clacpy( uplo, n, n, afac, lda, ainv, lda )
421 lwork = (n+nb+1)*(nb+3)
424 ainvnm =
clansy(
'1', uplo, n, ainv, lda, rwork )
428 IF( anorm.LE.zero .OR. ainvnm.LE.zero )
THEN
431 rcondc = ( one / anorm ) / ainvnm
438 CALL
clarhs( matpath, xtype, uplo,
' ', n, n, kl, ku,
439 $ nrhs, a, lda, xact, lda,
b, lda, iseed,
445 IF( ifact.EQ.2 )
THEN
446 CALL
clacpy( uplo, n, n, a, lda, afac, lda )
447 CALL
clacpy(
'Full', n, nrhs,
b, lda,
x, lda )
452 srnamt =
'CSYSV_ROOK'
453 CALL
csysv_rook( uplo, n, nrhs, afac, lda, iwork,
454 $
x, lda, work, lwork, info )
462 IF( iwork( k ).LT.0 )
THEN
463 IF( iwork( k ).NE.-k )
THEN
467 ELSE IF( iwork( k ).NE.k )
THEN
476 CALL
alaerh( path,
'CSYSV_ROOK', info, k, uplo,
477 $ n, n, -1, -1, nrhs, imat, nfail,
480 ELSE IF( info.NE.0 )
THEN
488 $ iwork, ainv, lda, rwork,
493 CALL
clacpy(
'Full', n, nrhs,
b, lda, work, lda )
494 CALL
csyt02( uplo, n, nrhs, a, lda,
x, lda, work,
495 $ lda, rwork, result( 2 ) )
500 CALL
cget04( n, nrhs,
x, lda, xact, lda, rcondc,
508 IF( result( k ).GE.thresh )
THEN
509 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
510 $ CALL
aladhd( nout, path )
511 WRITE( nout, fmt = 9999 )
'CSYSV_ROOK', uplo,
512 $ n, imat, k, result( k )
528 CALL
alasvm( path, nout, nfail, nrun, nerrs )
530 9999
FORMAT( 1
x, a,
', UPLO=''', a1,
''', N =', i5,
', type ', i2,
531 $
', test ', i2,
', ratio =', g12.5 )
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 clatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
CLATMS
subroutine alasvm(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASVM
subroutine clatsy(UPLO, N, X, LDX, ISEED)
CLATSY
subroutine csytrf_rook(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
CSYTRF_ROOK
subroutine alaerh(PATH, SUBNAM, INFO, INFOE, OPTS, M, N, KL, KU, N5, IMAT, NFAIL, NERRS, NOUT)
ALAERH
subroutine cpot05(UPLO, N, NRHS, A, LDA, B, LDB, X, LDX, XACT, LDXACT, FERR, BERR, RESLTS)
CPOT05
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real b(3) integer i
subroutine cdrvsy_rook(DOTYPE, NN, NVAL, NRHS, THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X, XACT, WORK, RWORK, IWORK, NOUT)
CDRVSY_ROOK
subroutine csysv_rook(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, LWORK, INFO)
CSYSV_ROOK computes the solution to system of linear equations A * X = B for SY matrices ...
subroutine clacpy(UPLO, M, N, A, LDA, B, LDB)
CLACPY copies all or part of one two-dimensional array to another.
subroutine csyt01_rook(UPLO, N, A, LDA, AFAC, LDAFAC, IPIV, C, LDC, RWORK, RESID)
CSYT01_ROOK
subroutine clarhs(PATH, XTYPE, UPLO, TRANS, M, N, KL, KU, NRHS, A, LDA, X, LDX, B, LDB, ISEED, INFO)
CLARHS
subroutine clatb4(PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE, CNDNUM, DIST)
CLATB4
subroutine xlaenv(ISPEC, NVALUE)
XLAENV
subroutine aladhd(IOUNIT, PATH)
ALADHD
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real j
subroutine cerrvx(PATH, NUNIT)
CERRVX
subroutine csyt02(UPLO, N, NRHS, A, LDA, X, LDX, B, LDB, RWORK, RESID)
CSYT02
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 cget04(N, NRHS, X, LDX, XACT, LDXACT, RCOND, RESID)
CGET04
subroutine csytri_rook(UPLO, N, A, LDA, IPIV, WORK, INFO)
CSYTRI_ROOK