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( * )
184 REAL A( * ), AFAC( * ), AINV( * ), B( * ),
185 $ rwork( * ), work( * ), x( * ), xact( * )
192 PARAMETER ( ZERO = 0.0d+0, one = 1.0d+0 )
194 parameter( eight = 8.0d+0, sevten = 17.0d+0 )
196 parameter( ntypes = 10 )
198 parameter( ntests = 7 )
201 LOGICAL TRFCON, ZEROT
202 CHARACTER DIST,
TYPE, UPLO, XTYPE
203 CHARACTER*3 PATH, MATPATH
204 INTEGER I, I1, I2, IMAT, IN, INB, INFO, IOFF, IRHS,
205 $ iuplo, izero, j, k, kl, ku, lda, lwork, mode,
206 $ n, nb, nerrs, nfail, nimat, nrhs, nrun, nt
207 REAL ALPHA, ANORM, CNDNUM, CONST, SING_MAX,
208 $ SING_MIN, , RCONDC, STEMP
212 INTEGER ( 4 ), ISEEDY( 4 )
213 REAL BLOCK( 2, 2 ), RESULT( NTESTS ), SDUMMY( 1 )
216 REAL SGET06, SLANGE, SLANSY
217 EXTERNAL SGET06, SLANGE, SLANSY
234 COMMON / infoc / infot, nunit, ok, lerr
235 COMMON / srnamc / srnamt
238 DATA iseedy / 1988, 1989, 1990, 1991 /
245 alpha = ( one+sqrt( sevten ) ) / eight
249 path( 1: 1 ) =
'Single precision'
254 matpath( 1: 1 ) =
'Single precision'
255 matpath( 2: 3 ) =
'SY'
261 iseed( i ) = iseedy( i )
267 $
CALL serrsy( path, nout )
289 DO 260 imat = 1, nimat
293 IF( .NOT.dotype( imat ) )
298 zerot = imat.GE.3 .AND. imat.LE.6
299 IF( zerot .AND. n.LT.imat-2 )
305 uplo = uplos( iuplo )
312 CALL slatb4( matpath, imat, n, n,
TYPE, kl, ku, anorm,
318 CALL slatms( n, n, dist, iseed,
TYPE, rwork, mode,
319 $ cndnum, anorm, kl, ku, uplo, a, lda, work,
325 CALL alaerh( path,
'SLATMS', info, 0, uplo, n, n, -1,
326 $ -1, -1, imat, nfail, nerrs, nout )
340 ELSE IF( imat.EQ.4 )
THEN
350 IF( iuplo.EQ.1 )
THEN
351 ioff = ( izero-1 )*lda
352 DO 20 i = 1, izero - 1
362 DO 40 i = 1, izero - 1
372 IF( iuplo.EQ.1 )
THEN
419 CALL slacpy( uplo, n, n, a, lda, afac, lda )
426 lwork =
max( 2, nb )*lda
427 srnamt =
'SSYTRF_ROOK'
437 IF( iwork( k ).LT.0 )
THEN
438 IF( iwork( k ).NE.-k )
THEN
442 ELSE IF( iwork( k ).NE.k )
THEN
451 $
CALL alaerh( path,
'SSYTRF_ROOK', info, k,
452 $ uplo, n, n, -1, -1, nb, imat,
453 $ nfail, nerrs, nout )
466 CALL ssyt01_rook( uplo, n, a, lda, afac, lda, iwork,
467 $ ainv, lda, rwork, result( 1 ) )
476 IF( inb.EQ.1 .AND. .NOT.trfcon )
THEN
477 CALL slacpy( uplo, n, n, afac, lda, ainv, lda )
478 srnamt =
'SSYTRI_ROOK'
486 $ UPLO, N, N, -1, -1, -1, IMAT,
487 $ NFAIL, NERRS, NOUT )
492 CALL SPOT03( UPLO, N, A, LDA, AINV, LDA, WORK, LDA,
493 $ RWORK, RCONDC, RESULT( 2 ) )
501.GE.
IF( RESULT( K )THRESH ) THEN
502.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
503 $ CALL ALAHD( NOUT, PATH )
504 WRITE( NOUT, FMT = 9999 )UPLO, N, NB, IMAT, K,
517 CONST = ONE / ( ONE-ALPHA )
519.EQ.
IF( IUPLO1 ) THEN
528.GT.
IF( IWORK( K )ZERO ) THEN
533 STEMP = SLANGE( 'm
', K-1, 1,
534 $ AFAC( ( K-1 )*LDA+1 ), LDA, RWORK )
540 STEMP = SLANGE( 'm
', K-2, 2,
541 $ AFAC( ( K-2 )*LDA+1 ), LDA, RWORK )
548 STEMP = STEMP - CONST + THRESH
549.GT.
IF( STEMPRESULT( 3 ) )
550 $ RESULT( 3 ) = STEMP
566.GT.
IF( IWORK( K )ZERO ) THEN
571 STEMP = SLANGE( 'm
', N-K, 1,
572 $ AFAC( ( K-1 )*LDA+K+1 ), LDA, RWORK )
578 STEMP = SLANGE( 'm
', N-K-1, 2,
579 $ AFAC( ( K-1 )*LDA+K+2 ), LDA, RWORK )
586 STEMP = STEMP - CONST + THRESH
587.GT.
IF( STEMPRESULT( 3 ) )
588 $ RESULT( 3 ) = STEMP
604 CONST = ( ONE+ALPHA ) / ( ONE-ALPHA )
605 CALL SLACPY( UPLO, N, N, AFAC, LDA, AINV, LDA )
607.EQ.
IF( IUPLO1 ) THEN
616.LT.
IF( IWORK( K )ZERO ) THEN
622 BLOCK( 1, 1 ) = AFAC( ( K-2 )*LDA+K-1 )
623 BLOCK( 1, 2 ) = AFAC( (K-1)*LDA+K-1 )
624 BLOCK( 2, 1 ) = BLOCK( 1, 2 )
625 BLOCK( 2, 2 ) = AFAC( (K-1)*LDA+K )
627 CALL SGESVD( 'n
', 'n
', 2, 2, BLOCK, 2, RWORK,
628 $ SDUMMY, 1, SDUMMY, 1,
632 SING_MAX = RWORK( 1 )
633 SING_MIN = RWORK( 2 )
635 STEMP = SING_MAX / SING_MIN
639 STEMP = STEMP - CONST + THRESH
640.GT.
IF( STEMPRESULT( 4 ) )
641 $ RESULT( 4 ) = STEMP
660.LT.
IF( IWORK( K )ZERO ) THEN
666 BLOCK( 1, 1 ) = AFAC( ( K-1 )*LDA+K )
667 BLOCK( 2, 1 ) = AFAC( ( K-1 )*LDA+K+1 )
668 BLOCK( 1, 2 ) = BLOCK( 2, 1 )
669 BLOCK( 2, 2 ) = AFAC( K*LDA+K+1 )
671 CALL SGESVD( 'n
', 'n
', 2, 2, BLOCK, 2, RWORK,
672 $ SDUMMY, 1, SDUMMY, 1,
676 SING_MAX = RWORK( 1 )
677 SING_MIN = RWORK( 2 )
679 STEMP = SING_MAX / SING_MIN
683 STEMP = STEMP - CONST + THRESH
684.GT.
IF( STEMPRESULT( 4 ) )
685 $ RESULT( 4 ) = STEMP
700.GE.
IF( RESULT( K )THRESH ) THEN
701.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
702 $ CALL ALAHD( NOUT, PATH )
703 WRITE( NOUT, FMT = 9999 )UPLO, N, NB, IMAT, K,
735 CALL SLARHS( MATPATH, XTYPE, UPLO, ' ', N, N,
736 $ KL, KU, NRHS, A, LDA, XACT, LDA,
737 $ B, LDA, ISEED, INFO )
738 CALL SLACPY( 'full
', N, NRHS, B, LDA, X, LDA )
741 CALL SSYTRS_ROOK( UPLO, N, NRHS, AFAC, LDA, IWORK,
748 $ uplo, n, n, -1, -1, nrhs, imat,
749 $ nfail, nerrs, nout )
751 CALL slacpy(
'Full', n, nrhs, b, lda, work, lda )
755 CALL spot02( uplo, n, nrhs, a, lda, x, lda, work,
756 $ lda, rwork, result( 5 ) )
761 CALL sget04( n, nrhs, x, lda, xact, lda, rcondc,
768 IF( result( k ).GE.thresh )
THEN
769 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
770 $
CALL alahd( nout, path )
771 WRITE( nout, fmt = 9998 )uplo, n, nrhs,
772 $ imat, k, result( k )
786 anorm = slansy(
'1', uplo, n, a, lda, rwork )
788 CALL SSYCON_ROOK( UPLO, N, AFAC, LDA, IWORK, ANORM,
789 $ RCOND, WORK, IWORK( N+1 ), INFO )
795 $ UPLO, N, N, -1, -1, -1, IMAT,
796 $ NFAIL, NERRS, NOUT )
800 RESULT( 7 ) = SGET06( RCOND, RCONDC )
805.GE.
IF( RESULT( 7 )THRESH ) THEN
806.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
807 $ CALL ALAHD( NOUT, PATH )
808 WRITE( NOUT, FMT = 9997 )UPLO, N, IMAT, 7,
821 CALL ALASUM( PATH, NOUT, NFAIL, NRUN, NERRS )
823 9999 FORMAT( ' uplo =
''', A1, ''', n =', i5,
', NB =', i4,
', type ',
824 $ i2,
', test ', i2,
', ratio =', g12.5 )
825 9998
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
', NRHS=', i3,
', type ',
826 $ i2,
', test(', i2,
') =', g12.5 )
827 9997
FORMAT(
' UPLO = ''', a1,
''', N =', i5,
',', 10x,
' type ', i2,
828 $
', test(', i2,
') =', g12.5 )