168 SUBROUTINE cchksy( DOTYPE, NN, NVAL, NNB, NBVAL, NNS, NSVAL,
169 $ THRESH, TSTERR, NMAX, A, AFAC, AINV, B, X,
170 $ XACT, WORK, RWORK, IWORK, NOUT )
178 INTEGER NMAX, NN, NNB, NNS, NOUT
183 INTEGER IWORK( * ), NBVAL( * ), NSVAL( * ), NVAL( * )
185 COMPLEX A( * ), AFAC( * ), AINV( * ), B( * ),
186 $ work( * ), x( * ), xact( * )
193 PARAMETER ( ZERO = 0.0e+0 )
195 parameter( czero = ( 0.0e+0, 0.0e+0 ) )
197 parameter( ntypes = 11 )
199 parameter( ntests = 9 )
202 LOGICAL TRFCON, ZEROT
203 CHARACTER DIST,
TYPE, UPLO, XTYPE
205 INTEGER I, I1, I2, IMAT, IN, INB, INFO, IOFF, IRHS,
206 $ iuplo, izero, j, k, kl, ku, lda, lwork, mode,
207 $ n, nb, nerrs, nfail, nimat, nrhs, nrun, nt
208 REAL ANORM, CNDNUM, RCOND, RCONDC
212 INTEGER ISEED( 4 ), ISEEDY( 4 )
213 REAL RESULT( NTESTS )
217 EXTERNAL SGET06, CLANSY
234 COMMON / infoc / infot, nunit, ok, lerr
235 COMMON / srnamc / srnamt
238 DATA iseedy / 1988, 1989, 1990, 1991 /
239 DATA uplos /
'U',
'L' /
245 path( 1: 1 ) =
'Complex precision'
251 iseed( i ) = iseedy( i )
257 $
CALL cerrsy( path, nout )
279 DO 170 imat = 1, nimat
283 IF( .NOT.dotype( imat ) )
288 zerot = imat.GE.3 .AND. imat.LE.6
289 IF( zerot .AND. n.LT.imat-2 )
295 uplo = uplos( iuplo )
299 IF( imat.NE.ntypes )
THEN
304 CALL clatb4( path, imat, n, n,
TYPE, kl, ku, anorm,
305 $ mode, cndnum, dist )
310 CALL clatms( n, n, dist, iseed,
TYPE, rwork, mode,
311 $ cndnum, anorm, kl, ku, 'n
', A, LDA, WORK,
317 CALL ALAERH( PATH, 'clatms', INFO, 0, UPLO, N, N,
318 $ -1, -1, -1, IMAT, NFAIL, NERRS, NOUT )
332.EQ.
ELSE IF( IMAT4 ) THEN
342.EQ.
IF( IUPLO1 ) THEN
343 IOFF = ( IZERO-1 )*LDA
344 DO 20 I = 1, IZERO - 1
354 DO 40 I = 1, IZERO - 1
364.EQ.
IF( IUPLO1 ) THEN
400 CALL CLATSY( UPLO, N, A, LDA, ISEED )
421 CALL CLACPY( UPLO, N, N, A, LDA, AFAC, LDA )
428 LWORK = MAX( 2, NB )*LDA
430 CALL CSYTRF( UPLO, N, AFAC, LDA, IWORK, AINV, LWORK,
439.LT.
IF( IWORK( K )0 ) THEN
440.NE.
IF( IWORK( K )-K ) THEN
444.NE.
ELSE IF( IWORK( K )K ) THEN
453 $ CALL ALAERH( PATH, 'csytrf', INFO, K, UPLO, N, N,
454 $ -1, -1, NB, IMAT, NFAIL, NERRS, NOUT )
467 CALL CSYT01( UPLO, N, A, LDA, AFAC, LDA, IWORK, AINV,
468 $ LDA, RWORK, RESULT( 1 ) )
477.EQ..AND..NOT.
IF( INB1 TRFCON ) THEN
478 CALL CLACPY( UPLO, N, N, AFAC, LDA, AINV, LDA )
480 LWORK = (N+NB+1)*(NB+3)
481 CALL CSYTRI2( UPLO, N, AINV, LDA, IWORK, WORK,
487 $ CALL ALAERH( PATH, 'csytri2', INFO, 0, UPLO, N,
488 $ N, -1, -1, -1, IMAT, NFAIL, NERRS,
494 CALL CSYT03( UPLO, N, A, LDA, AINV, LDA, WORK, LDA,
495 $ RWORK, RCONDC, RESULT( 2 ) )
503.GE.
IF( RESULT( K )THRESH ) THEN
504.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
505 $ CALL ALAHD( NOUT, PATH )
506 WRITE( NOUT, FMT = 9999 )UPLO, N, NB, IMAT, K,
538 CALL CLARHS( PATH, XTYPE, UPLO, ' ', N, N, KL, KU,
539 $ NRHS, A, LDA, XACT, LDA, B, LDA,
541 CALL CLACPY( 'full
', N, NRHS, B, LDA, X, LDA )
544 CALL CSYTRS( UPLO, N, NRHS, AFAC, LDA, IWORK, X,
550 $ CALL ALAERH( PATH, 'csytrs', INFO, 0, UPLO, N,
551 $ N, -1, -1, NRHS, IMAT, NFAIL,
554 CALL CLACPY( 'full
', N, NRHS, B, LDA, WORK, LDA )
558 CALL CSYT02( UPLO, N, NRHS, A, LDA, X, LDA, WORK,
559 $ LDA, RWORK, RESULT( 3 ) )
568 CALL CLARHS( PATH, XTYPE, UPLO, ' ', N, N, KL, KU,
569 $ NRHS, A, LDA, XACT, LDA, B, LDA,
571 CALL CLACPY( 'full
', N, NRHS, B, LDA, X, LDA )
574 CALL CSYTRS2( UPLO, N, NRHS, AFAC, LDA, IWORK, X,
580 $ CALL ALAERH( PATH, 'csytrs2', INFO, 0, UPLO, N,
581 $ N, -1, -1, NRHS, IMAT, NFAIL,
584 CALL CLACPY( 'full
', N, NRHS, B, LDA, WORK, LDA )
588 CALL CSYT02( UPLO, N, NRHS, A, LDA, X, LDA, WORK,
589 $ LDA, RWORK, RESULT( 4 ) )
594 CALL CGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
601 CALL CSYRFS( UPLO, N, NRHS, A, LDA, AFAC, LDA,
602 $ IWORK, B, LDA, X, LDA, RWORK,
603 $ RWORK( NRHS+1 ), WORK,
604 $ RWORK( 2*NRHS+1 ), INFO )
609 $ CALL ALAERH( PATH, 'csyrfs', INFO, 0, UPLO, N,
610 $ N, -1, -1, NRHS, IMAT, NFAIL,
613 CALL CGET04( N, NRHS, X, LDA, XACT, LDA, RCONDC,
615 CALL CPOT05( UPLO, N, NRHS, A, LDA, B, LDA, X, LDA,
616 $ XACT, LDA, RWORK, RWORK( NRHS+1 ),
623.GE.
IF( RESULT( K )THRESH ) THEN
624.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
625 $ CALL ALAHD( NOUT, PATH )
626 WRITE( NOUT, FMT = 9998 )UPLO, N, NRHS,
627 $ IMAT, K, RESULT( K )
641 ANORM = CLANSY( '1
', UPLO, N, A, LDA, RWORK )
643 CALL CSYCON( UPLO, N, AFAC, LDA, IWORK, ANORM, RCOND,
649 $ CALL ALAERH( PATH, 'csycon', INFO, 0, UPLO, N, N,
650 $ -1, -1, -1, IMAT, NFAIL, NERRS, NOUT )
654 RESULT( 9 ) = SGET06( RCOND, RCONDC )
659.GE.
IF( RESULT( 9 )THRESH ) THEN
660.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
661 $ CALL ALAHD( NOUT, PATH )
662 WRITE( NOUT, FMT = 9997 )UPLO, N, IMAT, 9,
674 CALL ALASUM( PATH, NOUT, NFAIL, NRUN, NERRS )
676 9999 FORMAT( ' uplo =
''', A1, ''', n =
', I5, ', nb =
', I4, ',
type ',
677 $ I2, ', test
', I2, ', ratio =
', G12.5 )
678 9998 FORMAT( ' uplo =
''', A1, ''', n =
', I5, ', nrhs=
', I3, ',
type ',
679 $ I2, ', test(
', I2, ') =
', G12.5 )
680 9997 FORMAT( ' uplo =
''', A1, ''', n =
', I5, ',
', 10X, ' type ', I2,
681 $ ', test(
', I2, ') =
', G12.5 )
subroutine xlaenv(ispec, nvalue)
XLAENV
subroutine alasum(type, nout, nfail, nrun, nerrs)
ALASUM
subroutine alahd(iounit, path)
ALAHD
subroutine alaerh(path, subnam, info, infoe, opts, m, n, kl, ku, n5, imat, nfail, nerrs, nout)
ALAERH
subroutine clacpy(uplo, m, n, a, lda, b, ldb)
CLACPY copies all or part of one two-dimensional array to another.
subroutine csytrs2(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, info)
CSYTRS2
subroutine csytrs(uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
CSYTRS
subroutine csycon(uplo, n, a, lda, ipiv, anorm, rcond, work, info)
CSYCON
subroutine csytrf(uplo, n, a, lda, ipiv, work, lwork, info)
CSYTRF
subroutine csyrfs(uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x, ldx, ferr, berr, work, rwork, info)
CSYRFS
subroutine csytri2(uplo, n, a, lda, ipiv, work, lwork, info)
CSYTRI2
subroutine clarhs(path, xtype, uplo, trans, m, n, kl, ku, nrhs, a, lda, x, ldx, b, ldb, iseed, info)
CLARHS
subroutine cerrsy(path, nunit)
CERRSY
subroutine cchksy(dotype, nn, nval, nnb, nbval, nns, nsval, thresh, tsterr, nmax, a, afac, ainv, b, x, xact, work, rwork, iwork, nout)
CCHKSY
subroutine csyt03(uplo, n, a, lda, ainv, ldainv, work, ldwork, rwork, rcond, resid)
CSYT03
subroutine clatsy(uplo, n, x, ldx, iseed)
CLATSY
subroutine csyt01(uplo, n, a, lda, afac, ldafac, ipiv, c, ldc, rwork, resid)
CSYT01
subroutine cpot05(uplo, n, nrhs, a, lda, b, ldb, x, ldx, xact, ldxact, ferr, berr, reslts)
CPOT05
subroutine csyt02(uplo, n, nrhs, a, lda, x, ldx, b, ldb, rwork, resid)
CSYT02
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
subroutine clatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
CLATMS