449 SUBROUTINE sdrvst( NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH,
450 $ NOUNIT, A, LDA, D1, D2, D3, D4, EVEIGS, WA1,
451 $ WA2, WA3, U, LDU, V, TAU, Z, WORK, LWORK,
452 $ IWORK, LIWORK, RESULT, INFO )
459 INTEGER INFO, LDA, LDU, LIWORK, LWORK, NOUNIT, NSIZES,
465 INTEGER ISEED( 4 ), IWORK( * ), NN( * )
466 REAL A( LDA, * ), ( * ), ( * ), D3( * ),
467 $ d4( * ), eveigs( * ), result( * ), tau( * ),
468 $ u( ldu, * ), v( ldu, * ), wa1( * ), wa2( * ),
469 $ wa3( * ), work( * ), z( ldu, * )
475 REAL ZERO, ONE, TWO, TEN
476 PARAMETER ( ZERO = 0.0e0, one = 1.0e0, two = 2.0e0,
479 parameter( half = 0.5e0 )
481 parameter( maxtyp = 18 )
486 INTEGER I, IDIAG, IHBW, IINFO, IL, IMODE, INDX
488 $ jsize, jtype, kd, lgn, liwedc, lwedc, m, m2,
489 $ m3, mtypes, n, nerrs, nmats, nmax, ntest,
491 REAL ABSTOL, ANINV, ANORM, COND, OVFL, RTOVFL,
492 $ RTUNFL, TEMP1, TEMP2, TEMP3, ULP, ULPINV, UNFL,
496 INTEGER IDUMMA( 1 ), IOLDSD( 4 ), ISEED2( 4 ),
497 $ ISEED3( 4 ), KMAGN( MAXTYP ), KMODE( MAXTYP ),
501 REAL SLAMCH, SLARND, SSXT1
502 EXTERNAL SLAMCH, SLARND, SSXT1
515 COMMON / srnamc / srnamt
518 INTRINSIC abs, int, log,
max,
min, real, sqrt
521 DATA ktype / 1, 2, 5*4, 5*5, 3*8, 3*9 /
522 DATA kmagn / 2*1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 3
524 DATA kmode / 2*0, 4, 3, 1, 4, 4, 4, 3, 1, 4, 4, 0,
542 nmax =
max( nmax, nn( j ) )
549 IF( nsizes.LT.0 )
THEN
551 ELSE IF( badnn )
THEN
553 ELSE IF( ntypes.LT.0 )
THEN
555 ELSE IF( lda.LT.nmax )
THEN
557 ELSE IF( ldu.LT.nmax )
THEN
559 ELSE IF( 2*
max( 2, nmax )**2.GT.lwork )
THEN
564 CALL xerbla(
'SDRVST', -info )
570 IF( nsizes.EQ.0 .OR. ntypes.EQ.0 )
575 unfl = slamch(
'Safe minimum' )
576 ovfl = slamch(
'Overflow' )
578 ulp
'Epsilon' )*slamch(
'Base' )
580 rtunfl = sqrt( unfl )
581 rtovfl = sqrt( ovfl )
586 iseed2( i ) = iseed( i )
587 iseed3( i ) = iseed( i )
594 DO 1740 jsize = 1, nsizes
597 lgn = int( log( real( n ) ) / log( two ) )
602 lwedc = 1 + 4*n + 2*n*lgn + 4*n**2
610 aninv = one / real(
max( 1, n ) )
612 IF( nsizes.NE.1 )
THEN
613 mtypes =
min( maxtyp, ntypes )
615 mtypes =
min( maxtyp+1, ntypes )
618 DO 1730 jtype = 1, mtypes
620 IF( .NOT.dotype( jtype ) )
626 ioldsd( j ) = iseed( j )
644 IF( mtypes.GT.maxtyp )
647 itype = ktype( jtype )
648 imode = kmode( jtype )
652 GO TO ( 40, 50, 60 )kmagn( jtype )
659 anorm = ( rtovfl*ulp )*aninv
663 anorm = rtunfl*n*ulpinv
668 CALL slaset(
'Full', lda, n, zero, zero, a, lda )
676 IF( itype.EQ.1 )
THEN
679 ELSE IF( itype.EQ.2 )
THEN
684 a( jcol, jcol ) = anorm
687 ELSE IF( itype.EQ.4 )
THEN
691 CALL slatms( n, n,
'S', iseed,
'S', work, imode, cond,
692 $ anorm, 0, 0,
'N', a, lda, work( n+1 ),
695 ELSE IF( itype.EQ.5 )
THEN
699 CALL slatms( n, n, 's
', ISEED, 's
', WORK, IMODE, COND,
700 $ ANORM, N, N, 'n
', A, LDA, WORK( N+1 ),
703.EQ.
ELSE IF( ITYPE7 ) THEN
708 CALL SLATMR( N, N, 's
', ISEED, 's
', WORK, 6, ONE, ONE,
709 $ 't
', 'n
', WORK( N+1 ), 1, ONE,
710 $ WORK( 2*N+1 ), 1, ONE, 'n
', IDUMMA, 0, 0,
711 $ ZERO, ANORM, 'no
', A, LDA, IWORK, IINFO )
713.EQ.
ELSE IF( ITYPE8 ) THEN
718 CALL SLATMR( N, N, 's
', ISEED, 's
', WORK, 6, ONE, ONE,
719 $ 't
', 'n
', WORK( N+1 ), 1, ONE,
720 $ WORK( 2*N+1 ), 1, ONE, 'n
', IDUMMA, N, N,
721 $ ZERO, ANORM, 'no
', A, LDA, IWORK, IINFO )
723.EQ.
ELSE IF( ITYPE9 ) THEN
727 IHBW = INT( ( N-1 )*SLARND( 1, ISEED3 ) )
728 CALL SLATMS( N, N, 's
', ISEED, 's
', WORK, IMODE, COND,
729 $ ANORM, IHBW, IHBW, 'z
', U, LDU, WORK( N+1 ),
734 CALL SLASET( 'full
', LDA, N, ZERO, ZERO, A, LDA )
735 DO 100 IDIAG = -IHBW, IHBW
736 IROW = IHBW - IDIAG + 1
737 J1 = MAX( 1, IDIAG+1 )
738 J2 = MIN( N, N+IDIAG )
741 A( I, J ) = U( IROW, J )
748.NE.
IF( IINFO0 ) THEN
749 WRITE( NOUNIT, FMT = 9999 )'generator
', IINFO, N, JTYPE,
762 IL = 1 + INT( ( N-1 )*SLARND( 1, ISEED2 ) )
763 IU = 1 + INT( ( N-1 )*SLARND( 1, ISEED2 ) )
773.LE.
IF( JTYPE7 ) THEN
776 D1( I ) = REAL( A( I, I ) )
779 D2( I ) = REAL( A( I+1, I ) )
782 CALL SSTEV( 'v
', N, D1, D2, Z, LDU, WORK, IINFO )
783.NE.
IF( IINFO0 ) THEN
784 WRITE( NOUNIT, FMT = 9999 )'sstev(v)
', IINFO, N,
787.LT.
IF( IINFO0 ) THEN
800 D3( I ) = REAL( A( I, I ) )
803 D4( I ) = REAL( A( I+1, I ) )
805 CALL SSTT21( N, 0, D3, D4, D1, D2, Z, LDU, WORK,
810 D4( I ) = REAL( A( I+1, I ) )
813 CALL SSTEV( 'n
', N, D3, D4, Z, LDU, WORK, IINFO )
814.NE.
IF( IINFO0 ) THEN
815 WRITE( NOUNIT, FMT = 9999 )'sstev(n)
', IINFO, N,
818.LT.
IF( IINFO0 ) THEN
831 TEMP1 = MAX( TEMP1, ABS( D1( J ) ), ABS( D3( J ) ) )
832 TEMP2 = MAX( TEMP2, ABS( D1( J )-D3( J ) ) )
834 RESULT( 3 ) = TEMP2 / MAX( UNFL,
835 $ ULP*MAX( TEMP1, TEMP2 ) )
841 EVEIGS( I ) = D3( I )
842 D1( I ) = REAL( A( I, I ) )
845 D2( I ) = REAL( A( I+1, I ) )
848 CALL SSTEVX( 'v
', 'a
', N, D1, D2, VL, VU, IL, IU, ABSTOL,
849 $ M, WA1, Z, LDU, WORK, IWORK, IWORK( 5*N+1 ),
851.NE.
IF( IINFO0 ) THEN
852 WRITE( NOUNIT, FMT = 9999 )'sstevx(v,a)
', IINFO, N,
855.LT.
IF( IINFO0 ) THEN
865 TEMP3 = MAX( ABS( WA1( 1 ) ), ABS( WA1( N ) ) )
873 D3( I ) = REAL( A( I, I ) )
876 D4( I ) = REAL( A( I+1, I ) )
878 CALL SSTT21( N, 0, D3, D4, WA1, D2, Z, LDU, WORK,
883 D4( I ) = REAL( A( I+1, I ) )
886 CALL SSTEVX( 'n
', 'a
', N, D3, D4, VL, VU, IL, IU, ABSTOL,
887 $ M2, WA2, Z, LDU, WORK, IWORK,
888 $ IWORK( 5*N+1 ), IINFO )
889.NE.
IF( IINFO0 ) THEN
890 WRITE( NOUNIT, FMT = 9999 )'sstevx(n,a)
', IINFO, N,
893.LT.
IF( IINFO0 ) THEN
906 TEMP1 = MAX( TEMP1, ABS( WA2( J ) ),
907 $ ABS( EVEIGS( J ) ) )
908 TEMP2 = MAX( TEMP2, ABS( WA2( J )-EVEIGS( J ) ) )
910 RESULT( 6 ) = TEMP2 / MAX( UNFL,
911 $ ULP*MAX( TEMP1, TEMP2 ) )
917 D1( I ) = REAL( A( I, I ) )
920 D2( I ) = REAL( A( I+1, I ) )
923 CALL SSTEVR( 'v
', 'a
', N, D1, D2, VL, VU, IL, IU, ABSTOL,
924 $ M, WA1, Z, LDU, IWORK, WORK, LWORK,
925 $ IWORK(2*N+1), LIWORK-2*N, IINFO )
926.NE.
IF( IINFO0 ) THEN
927 WRITE( NOUNIT, FMT = 9999 )'sstevr(v,a)
', IINFO, N,
930.LT.
IF( IINFO0 ) THEN
939 TEMP3 = MAX( ABS( WA1( 1 ) ), ABS( WA1( N ) ) )
947 D3( I ) = REAL( A( I, I ) )
950 D4( I ) = REAL( A( I+1, I ) )
952 CALL SSTT21( N, 0, D3, D4, WA1, D2, Z, LDU, WORK,
957 D4( I ) = REAL( A( I+1, I ) )
960 CALL SSTEVR( 'n
', 'a
', N, D3, D4, VL, VU, IL, IU, ABSTOL,
961 $ M2, WA2, Z, LDU, IWORK, WORK, LWORK,
962 $ IWORK(2*N+1), LIWORK-2*N, IINFO )
963.NE.
IF( IINFO0 ) THEN
964 WRITE( NOUNIT, FMT = 9999 )'sstevr(n,a)
', IINFO, N,
967.LT.
IF( IINFO0 ) THEN
980 TEMP1 = MAX( TEMP1, ABS( WA2( J ) ),
981 $ ABS( EVEIGS( J ) ) )
982 TEMP2 = MAX( TEMP2, ABS( WA2( J )-EVEIGS( J ) ) )
984 RESULT( 9 ) = TEMP2 / MAX( UNFL,
985 $ ULP*MAX( TEMP1, TEMP2 ) )
992 D1( I ) = REAL( A( I, I ) )
995 D2( I ) = REAL( A( I+1, I ) )
998 CALL SSTEVX( 'v
', 'i
', N, D1, D2, VL, VU, IL, IU, ABSTOL,
999 $ M2, WA2, Z, LDU, WORK, IWORK,
1000 $ IWORK( 5*N+1 ), IINFO )
1001.NE.
IF( IINFO0 ) THEN
1002 WRITE( NOUNIT, FMT = 9999 )'sstevx(v,i)
', IINFO, N,
1005.LT.
IF( IINFO0 ) THEN
1008 RESULT( 10 ) = ULPINV
1009 RESULT( 11 ) = ULPINV
1010 RESULT( 12 ) = ULPINV
1018 D3( I ) = REAL( A( I, I ) )
1021 D4( I ) = REAL( A( I+1, I ) )
1023 CALL SSTT22( N, M2, 0, D3, D4, WA2, D2, Z, LDU, WORK,
1024 $ MAX( 1, M2 ), RESULT( 10 ) )
1029 D4( I ) = REAL( A( I+1, I ) )
1032 CALL SSTEVX( 'n
', 'i
', N, D3, D4, VL, VU, IL, IU, ABSTOL,
1033 $ M3, WA3, Z, LDU, WORK, IWORK,
1034 $ IWORK( 5*N+1 ), IINFO )
1035.NE.
IF( IINFO0 ) THEN
1036 WRITE( NOUNIT, FMT = 9999 )'sstevx(n,i)
', IINFO, N,
1039.LT.
IF( IINFO0 ) THEN
1042 RESULT( 12 ) = ULPINV
1049 TEMP1 = SSXT1( 1, WA2, M2, WA3, M3, ABSTOL, ULP, UNFL )
1050 TEMP2 = SSXT1( 1, WA3, M3, WA2, M2, ABSTOL, ULP, UNFL )
1051 RESULT( 12 ) = ( TEMP1+TEMP2 ) / MAX( UNFL, ULP*TEMP3 )
1058 VL = WA1( IL ) - MAX( HALF*
1059 $ ( WA1( IL )-WA1( IL-1 ) ), TEN*ULP*TEMP3,
1062 VL = WA1( 1 ) - MAX( HALF*( WA1( N )-WA1( 1 ) ),
1063 $ TEN*ULP*TEMP3, TEN*RTUNFL )
1066 VU = WA1( IU ) + MAX( HALF*
1067 $ ( WA1( IU+1 )-WA1( IU ) ), TEN*ULP*TEMP3,
1070 VU = WA1( N ) + MAX( HALF*( WA1( N )-WA1( 1 ) ),
1071 $ TEN*ULP*TEMP3, TEN*RTUNFL )
1079 D1( I ) = REAL( A( I, I ) )
1082 D2( I ) = REAL( A( I+1, I ) )
1085 CALL SSTEVX( 'v
', 'v
', N, D1, D2, VL, VU, IL, IU, ABSTOL,
1086 $ M2, WA2, Z, LDU, WORK, IWORK,
1087 $ IWORK( 5*N+1 ), IINFO )
1088.NE.
IF( IINFO0 ) THEN
1089 WRITE( NOUNIT, FMT = 9999 )'sstevx(v,v)
', IINFO, N,
1092.LT.
IF( IINFO0 ) THEN
1095 RESULT( 13 ) = ULPINV
1096 RESULT( 14 ) = ULPINV
1097 RESULT( 15 ) = ULPINV
1102.EQ..AND..GT.
IF( M20 N0 ) THEN
1103 RESULT( 13 ) = ULPINV
1104 RESULT( 14 ) = ULPINV
1105 RESULT( 15 ) = ULPINV
1112 D3( I ) = REAL( A( I, I ) )
1115 D4( I ) = REAL( A( I+1, I ) )
1117 CALL SSTT22( N, M2, 0, D3, D4, WA2, D2, Z, LDU, WORK,
1118 $ MAX( 1, M2 ), RESULT( 13 ) )
1122 D4( I ) = REAL( A( I+1, I ) )
1125 CALL SSTEVX( 'n
', 'v
', N, D3, D4, VL, VU, IL, IU, ABSTOL,
1126 $ M3, WA3, Z, LDU, WORK, IWORK,
1127 $ IWORK( 5*N+1 ), IINFO )
1128.NE.
IF( IINFO0 ) THEN
1129 WRITE( NOUNIT, FMT = 9999 )'sstevx(n,v)
', IINFO, N,
1132.LT.
IF( IINFO0 ) THEN
1135 RESULT( 15 ) = ULPINV
1142 TEMP1 = SSXT1( 1, WA2, M2, WA3, M3, ABSTOL, ULP, UNFL )
1143 TEMP2 = SSXT1( 1, WA3, M3, WA2, M2, ABSTOL, ULP, UNFL )
1144 RESULT( 15 ) = ( TEMP1+TEMP2 ) / MAX( UNFL, TEMP3*ULP )
1150 D1( I ) = REAL( A( I, I ) )
1153 D2( I ) = REAL( A( I+1, I ) )
1156 CALL SSTEVD( 'v
', N, D1, D2, Z, LDU, WORK, LWEDC, IWORK,
1158.NE.
IF( IINFO0 ) THEN
1159 WRITE( NOUNIT, FMT = 9999 )'sstevd(v)
', IINFO, N,
1162.LT.
IF( IINFO0 ) THEN
1165 RESULT( 16 ) = ULPINV
1166 RESULT( 17 ) = ULPINV
1167 RESULT( 18 ) = ULPINV
1175 D3( I ) = REAL( A( I, I ) )
1178 D4( I ) = REAL( A( I+1, I ) )
1180 CALL SSTT21( N, 0, D3, D4, D1, D2, Z, LDU, WORK,
1185 D4( I ) = REAL( A( I+1, I ) )
1188 CALL SSTEVD( 'n
', N, D3, D4, Z, LDU, WORK, LWEDC, IWORK,
1190.NE.
IF( IINFO0 ) THEN
1191 WRITE( NOUNIT, FMT = 9999 )'sstevd(n)
', IINFO, N,
1194.LT.
IF( IINFO0 ) THEN
1197 RESULT( 18 ) = ULPINV
1207 TEMP1 = MAX( TEMP1, ABS( EVEIGS( J ) ),
1209 TEMP2 = MAX( TEMP2, ABS( EVEIGS( J )-D3( J ) ) )
1211 RESULT( 18 ) = TEMP2 / MAX( UNFL,
1212 $ ULP*MAX( TEMP1, TEMP2 ) )
1218 D1( I ) = REAL( A( I, I ) )
1221 D2( I ) = REAL( A( I+1, I ) )
1224 CALL SSTEVR( 'v
', 'i
', N, D1, D2, VL, VU, IL, IU, ABSTOL,
1225 $ M2, WA2, Z, LDU, IWORK, WORK, LWORK,
1226 $ IWORK(2*N+1), LIWORK-2*N, IINFO )
1227.NE.
IF( IINFO0 ) THEN
1228 WRITE( NOUNIT, FMT = 9999 )'sstevr(v,i)
', IINFO, N,
1231.LT.
IF( IINFO0 ) THEN
1234 RESULT( 19 ) = ULPINV
1235 RESULT( 20 ) = ULPINV
1236 RESULT( 21 ) = ULPINV
1244 D3( I ) = REAL( A( I, I ) )
1247 D4( I ) = REAL( A( I+1, I ) )
1249 CALL SSTT22( N, M2, 0, D3, D4, WA2, D2, Z, LDU, WORK,
1250 $ MAX( 1, M2 ), RESULT( 19 ) )
1255 D4( I ) = REAL( A( I+1, I ) )
1258 CALL SSTEVR( 'n
', 'i', n, d3, d4, vl, vu, il, iu, abstol,
1259 $ m3, wa3, z, ldu, iwork, work, lwork,
1260 $ iwork(2*n+1), liwork-2*n, iinfo )
1261 IF( iinfo.NE.0 )
THEN
1262 WRITE( nounit, fmt = 9999 )'
sstevr(n,i)
', IINFO, N,
1265.LT.
IF( IINFO0 ) THEN
1268 RESULT( 21 ) = ULPINV
1275 TEMP1 = SSXT1( 1, WA2, M2, WA3, M3, ABSTOL, ULP, UNFL )
1276 TEMP2 = SSXT1( 1, WA3, M3, WA2, M2, ABSTOL, ULP, UNFL )
1277 RESULT( 21 ) = ( TEMP1+TEMP2 ) / MAX( UNFL, ULP*TEMP3 )
1284 VL = WA1( IL ) - MAX( HALF*
1285 $ ( WA1( IL )-WA1( IL-1 ) ), TEN*ULP*TEMP3,
1288 VL = WA1( 1 ) - MAX( HALF*( WA1( N )-WA1( 1 ) ),
1289 $ TEN*ULP*TEMP3, TEN*RTUNFL )
1292 VU = WA1( IU ) + MAX( HALF*
1293 $ ( WA1( IU+1 )-WA1( IU ) ), TEN*ULP*TEMP3,
1296 VU = WA1( N ) + MAX( HALF*( WA1( N )-WA1( 1 ) ),
1297 $ TEN*ULP*TEMP3, TEN*RTUNFL )
1305 D1( I ) = REAL( A( I, I ) )
1308 D2( I ) = REAL( A( I+1, I ) )
1311 CALL SSTEVR( 'v
', 'v
', N, D1, D2, VL, VU, IL, IU, ABSTOL,
1312 $ M2, WA2, Z, LDU, IWORK, WORK, LWORK,
1313 $ IWORK(2*N+1), LIWORK-2*N, IINFO )
1314.NE.
IF( IINFO0 ) THEN
1315 WRITE( NOUNIT, FMT = 9999 )'sstevr(v,v)
', IINFO, N,
1318.LT.
IF( IINFO0 ) THEN
1321 RESULT( 22 ) = ULPINV
1322 RESULT( 23 ) = ULPINV
1323 RESULT( 24 ) = ULPINV
1328.EQ..AND..GT.
IF( M20 N0 ) THEN
1329 RESULT( 22 ) = ULPINV
1330 RESULT( 23 ) = ULPINV
1331 RESULT( 24 ) = ULPINV
1338 D3( I ) = REAL( A( I, I ) )
1341 D4( I ) = REAL( A( I+1, I ) )
1343 CALL SSTT22( N, M2, 0, D3, D4, WA2, D2, Z, LDU, WORK,
1344 $ MAX( 1, M2 ), RESULT( 22 ) )
1348 D4( I ) = REAL( A( I+1, I ) )
1351 CALL SSTEVR( 'n
', 'v
', N, D3, D4, VL, VU, IL, IU, ABSTOL,
1352 $ M3, WA3, Z, LDU, IWORK, WORK, LWORK,
1353 $ IWORK(2*N+1), LIWORK-2*N, IINFO )
1354.NE.
IF( IINFO0 ) THEN
1355 WRITE( NOUNIT, FMT = 9999 )'sstevr(n,v)
', IINFO, N,
1358.LT.
IF( IINFO0 ) THEN
1361 RESULT( 24 ) = ULPINV
1368 TEMP1 = SSXT1( 1, WA2, M2, WA3, M3, ABSTOL, ULP, UNFL )
1369 TEMP2 = SSXT1( 1, WA3, M3, WA2, M2, ABSTOL, ULP, UNFL )
1370 RESULT( 24 ) = ( TEMP1+TEMP2 ) / MAX( UNFL, TEMP3*ULP )
1387 DO 1720 IUPLO = 0, 1
1388.EQ.
IF( IUPLO0 ) THEN
1396 CALL SLACPY( ' ', N, N, A, LDA, V, LDU )
1400 CALL SSYEV( 'v
', UPLO, N, A, LDU, D1, WORK, LWORK,
1402.NE.
IF( IINFO0 ) THEN
1403 WRITE( NOUNIT, FMT = 9999 )'ssyev(v,
' // UPLO // ')
',
1404 $ IINFO, N, JTYPE, IOLDSD
1406.LT.
IF( IINFO0 ) THEN
1409 RESULT( NTEST ) = ULPINV
1410 RESULT( NTEST+1 ) = ULPINV
1411 RESULT( NTEST+2 ) = ULPINV
1418 CALL SSYT21( 1, UPLO, N, 0, V, LDU, D1, D2, A, LDU, Z,
1419 $ LDU, TAU, WORK, RESULT( NTEST ) )
1421 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
1425 CALL SSYEV( 'n
', UPLO, N, A, LDU, D3, WORK, LWORK,
1427.NE.
IF( IINFO0 ) THEN
1428 WRITE( NOUNIT, FMT = 9999 )'ssyev(n,
' // UPLO // ')
',
1429 $ IINFO, N, JTYPE, IOLDSD
1431.LT.
IF( IINFO0 ) THEN
1434 RESULT( NTEST ) = ULPINV
1444 TEMP1 = MAX( TEMP1, ABS( D1( J ) ), ABS( D3( J ) ) )
1445 TEMP2 = MAX( TEMP2, ABS( D1( J )-D3( J ) ) )
1447 RESULT( NTEST ) = TEMP2 / MAX( UNFL,
1448 $ ULP*MAX( TEMP1, TEMP2 ) )
1451 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
1456 TEMP3 = MAX( ABS( D1( 1 ) ), ABS( D1( N ) ) )
1458 VL = D1( IL ) - MAX( HALF*( D1( IL )-D1( IL-1 ) ),
1459 $ TEN*ULP*TEMP3, TEN*RTUNFL )
1460.GT.
ELSE IF( N0 ) THEN
1461 VL = D1( 1 ) - MAX( HALF*( D1( N )-D1( 1 ) ),
1462 $ TEN*ULP*TEMP3, TEN*RTUNFL )
1465 VU = D1( IU ) + MAX( HALF*( D1( IU+1 )-D1( IU ) ),
1466 $ TEN*ULP*TEMP3, TEN*RTUNFL )
1467.GT.
ELSE IF( N0 ) THEN
1468 VU = D1( N ) + MAX( HALF*( D1( N )-D1( 1 ) ),
1469 $ TEN*ULP*TEMP3, TEN*RTUNFL )
1478 CALL SSYEVX( 'v
', 'a
', UPLO, N, A, LDU, VL, VU, IL, IU,
1479 $ ABSTOL, M, WA1, Z, LDU, WORK, LWORK, IWORK,
1480 $ IWORK( 5*N+1 ), IINFO )
1481.NE.
IF( IINFO0 ) THEN
1482 WRITE( NOUNIT, FMT = 9999 )'ssyevx(v,a,
' // UPLO //
1483 $ ')
', IINFO, N, JTYPE, IOLDSD
1485.LT.
IF( IINFO0 ) THEN
1488 RESULT( NTEST ) = ULPINV
1489 RESULT( NTEST+1 ) = ULPINV
1490 RESULT( NTEST+2 ) = ULPINV
1497 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
1499 CALL SSYT21( 1, UPLO, N, 0, A, LDU, D1, D2, Z, LDU, V,
1500 $ LDU, TAU, WORK, RESULT( NTEST ) )
1504 CALL SSYEVX( 'n
', 'a
', UPLO, N, A, LDU, VL, VU, IL, IU,
1505 $ ABSTOL, M2, WA2, Z, LDU, WORK, LWORK, IWORK,
1506 $ IWORK( 5*N+1 ), IINFO )
1507.NE.
IF( IINFO0 ) THEN
1508 WRITE( NOUNIT, FMT = 9999 )'ssyevx(n,a,
' // UPLO //
1509 $ ')
', IINFO, N, JTYPE, IOLDSD
1511.LT.
IF( IINFO0 ) THEN
1514 RESULT( NTEST ) = ULPINV
1524 TEMP1 = MAX( TEMP1, ABS( WA1( J ) ), ABS( WA2( J ) ) )
1525 TEMP2 = MAX( TEMP2, ABS( WA1( J )-WA2( J ) ) )
1527 RESULT( NTEST ) = TEMP2 / MAX( UNFL,
1528 $ ULP*MAX( TEMP1, TEMP2 ) )
1533 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
1535 CALL SSYEVX( 'v
', 'i
', UPLO, N, A, LDU, VL, VU, IL, IU,
1536 $ ABSTOL, M2, WA2, Z, LDU, WORK, LWORK, IWORK,
1537 $ IWORK( 5*N+1 ), IINFO )
1538.NE.
IF( IINFO0 ) THEN
1539 WRITE( NOUNIT, FMT = 9999 )'ssyevx(v,i,
' // UPLO //
1540 $ ')
', IINFO, N, JTYPE, IOLDSD
1542.LT.
IF( IINFO0 ) THEN
1545 RESULT( NTEST ) = ULPINV
1546 RESULT( NTEST+1 ) = ULPINV
1547 RESULT( NTEST+2 ) = ULPINV
1554 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
1556 CALL SSYT22( 1, UPLO, N, M2, 0, A, LDU, WA2, D2, Z, LDU,
1557 $ V, LDU, TAU, WORK, RESULT( NTEST ) )
1560 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
1562 CALL SSYEVX( 'n
', 'i
', UPLO, N, A, LDU, VL, VU, IL, IU,
1563 $ ABSTOL, M3, WA3, Z, LDU, WORK, LWORK, IWORK,
1564 $ IWORK( 5*N+1 ), IINFO )
1565.NE.
IF( IINFO0 ) THEN
1566 WRITE( NOUNIT, FMT = 9999 )'ssyevx(n,i,
' // UPLO //
1567 $ ')
', IINFO, N, JTYPE, IOLDSD
1569.LT.
IF( IINFO0 ) THEN
1572 RESULT( NTEST ) = ULPINV
1579 TEMP1 = SSXT1( 1, WA2, M2, WA3, M3, ABSTOL, ULP, UNFL )
1580 TEMP2 = SSXT1( 1, WA3, M3, WA2, M2, ABSTOL, ULP, UNFL )
1581 RESULT( NTEST ) = ( TEMP1+TEMP2 ) /
1582 $ MAX( UNFL, ULP*TEMP3 )
1586 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
1588 CALL SSYEVX( 'v
', 'v
', UPLO, N, A, LDU, VL, VU, IL, IU,
1589 $ ABSTOL, M2, WA2, Z, LDU, WORK, LWORK, IWORK,
1590 $ IWORK( 5*N+1 ), IINFO )
1591.NE.
IF( IINFO0 ) THEN
1592 WRITE( NOUNIT, FMT = 9999 )'ssyevx(v,v,
' // UPLO //
1593 $ ')
', IINFO, N, JTYPE, IOLDSD
1595.LT.
IF( IINFO0 ) THEN
1598 RESULT( NTEST ) = ULPINV
1599 RESULT( NTEST+1 ) = ULPINV
1600 RESULT( NTEST+2 ) = ULPINV
1607 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
1609 CALL SSYT22( 1, UPLO, N, M2, 0, A, LDU, WA2, D2, Z, LDU,
1610 $ V, LDU, TAU, WORK, RESULT( NTEST ) )
1613 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
1615 CALL SSYEVX( 'n
', 'v
', UPLO, N, A, LDU, VL, VU, IL, IU,
1616 $ ABSTOL, M3, WA3, Z, LDU, WORK, LWORK, IWORK,
1617 $ IWORK( 5*N+1 ), IINFO )
1618.NE.
IF( IINFO0 ) THEN
1619 WRITE( NOUNIT, FMT = 9999 )'ssyevx(n,v,
' // UPLO //
1620 $ ')
', IINFO, N, JTYPE, IOLDSD
1622.LT.
IF( IINFO0 ) THEN
1625 RESULT( NTEST ) = ULPINV
1630.EQ..AND..GT.
IF( M30 N0 ) THEN
1631 RESULT( NTEST ) = ULPINV
1637 TEMP1 = SSXT1( 1, WA2, M2, WA3, M3, ABSTOL, ULP, UNFL )
1638 TEMP2 = SSXT1( 1, WA3, M3, WA2, M2, ABSTOL, ULP, UNFL )
1640 TEMP3 = MAX( ABS( WA1( 1 ) ), ABS( WA1( N ) ) )
1644 RESULT( NTEST ) = ( TEMP1+TEMP2 ) /
1645 $ MAX( UNFL, TEMP3*ULP )
1651 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
1656.EQ.
IF( IUPLO1 ) THEN
1660 WORK( INDX ) = A( I, J )
1668 WORK( INDX ) = A( I, J )
1676 CALL SSPEV( 'v
', UPLO, N, WORK, D1, Z, LDU, V, IINFO )
1677.NE.
IF( IINFO0 ) THEN
1678 WRITE( NOUNIT, FMT = 9999 )'sspev(v,
' // UPLO // ')
',
1679 $ IINFO, N, JTYPE, IOLDSD
1681.LT.
IF( IINFO0 ) THEN
1684 RESULT( NTEST ) = ULPINV
1685 RESULT( NTEST+1 ) = ULPINV
1686 RESULT( NTEST+2 ) = ULPINV
1693 CALL SSYT21( 1, UPLO, N, 0, A, LDA, D1, D2, Z, LDU, V,
1694 $ LDU, TAU, WORK, RESULT( NTEST ) )
1696.EQ.
IF( IUPLO1 ) THEN
1700 WORK( INDX ) = A( I, J )
1708 WORK( INDX ) = A( I, J )
1716 CALL SSPEV( 'n
', UPLO, N, WORK, D3, Z, LDU, V, IINFO )
1717.NE.
IF( IINFO0 ) THEN
1718 WRITE( NOUNIT, FMT = 9999 )'sspev' // UPLO // ')
',
1719 $ IINFO, N, JTYPE, IOLDSD
1721.LT.
IF( IINFO0 ) THEN
1724 RESULT( NTEST ) = ULPINV
1734 TEMP1 = MAX( TEMP1, ABS( D1( J ) ), ABS( D3( J ) ) )
1735 TEMP2 = MAX( TEMP2, ABS( D1( J )-D3( J ) ) )
1737 RESULT( NTEST ) = TEMP2 / MAX( UNFL,
1738 $ ULP*MAX( TEMP1, TEMP2 ) )
1744.EQ.
IF( IUPLO1 ) THEN
1748 WORK( INDX ) = A( I, J )
1756 WORK( INDX ) = A( I, J )
1765 TEMP3 = MAX( ABS( D1( 1 ) ), ABS( D1( N ) ) )
1767 VL = D1( IL ) - MAX( HALF*( D1( IL )-D1( IL-1 ) ),
1768 $ TEN*ULP*TEMP3, TEN*RTUNFL )
1769.GT.
ELSE IF( N0 ) THEN
1770 VL = D1( 1 ) - MAX( HALF*( D1( N )-D1( 1 ) ),
1771 $ TEN*ULP*TEMP3, TEN*RTUNFL )
1774 VU = D1( IU ) + MAX( HALF*( D1( IU+1 )-D1( IU ) ),
1775 $ TEN*ULP*TEMP3, TEN*RTUNFL )
1776.GT.
ELSE IF( N0 ) THEN
1777 VU = D1( N ) + MAX( HALF*( D1( N )-D1( 1 ) ),
1778 $ TEN*ULP*TEMP3, TEN*RTUNFL )
1787 CALL SSPEVX( 'v
', 'a
', UPLO, N, WORK, VL, VU, IL, IU,
1788 $ ABSTOL, M, WA1, Z, LDU, V, IWORK,
1789 $ IWORK( 5*N+1 ), IINFO )
1790.NE.
IF( IINFO0 ) THEN
1791 WRITE( NOUNIT, FMT = 9999 )'sspevx(v,a,
' // UPLO //
1792 $ ')
', IINFO, N, JTYPE, IOLDSD
1794.LT.
IF( IINFO0 ) THEN
1797 RESULT( NTEST ) = ULPINV
1798 RESULT( NTEST+1 ) = ULPINV
1799 RESULT( NTEST+2 ) = ULPINV
1806 CALL SSYT21( 1, UPLO, N, 0, A, LDU, WA1, D2, Z, LDU, V,
1807 $ LDU, TAU, WORK, RESULT( NTEST ) )
1811.EQ.
IF( IUPLO1 ) THEN
1815 WORK( INDX ) = A( I, J )
1823 WORK( INDX ) = A( I, J )
1830 CALL SSPEVX( 'n
', 'a
', UPLO, N, WORK, VL, VU, IL, IU,
1831 $ ABSTOL, M2, WA2, Z, LDU, V, IWORK,
1832 $ IWORK( 5*N+1 ), IINFO )
1833.NE.
IF( IINFO0 ) THEN
1834 WRITE( NOUNIT, FMT = 9999 )'sspevx(n,a,
' // UPLO //
1835 $ ')
', IINFO, N, JTYPE, IOLDSD
1837.LT.
IF( IINFO0 ) THEN
1840 RESULT( NTEST ) = ULPINV
1850 TEMP1 = MAX( TEMP1, ABS( WA1( J ) ), ABS( WA2( J ) ) )
1851 TEMP2 = MAX( TEMP2, ABS( WA1( J )-WA2( J ) ) )
1853 RESULT( NTEST ) = TEMP2 / MAX( UNFL,
1854 $ ULP*MAX( TEMP1, TEMP2 ) )
1857.EQ.
IF( IUPLO1 ) THEN
1861 WORK( INDX ) = A( I, J )
1869 WORK( INDX ) = A( I, J )
1878 CALL SSPEVX( 'v
', 'i
', UPLO, N, WORK, VL, VU, IL, IU,
1879 $ ABSTOL, M2, WA2, Z, LDU, V, IWORK,
1880 $ IWORK( 5*N+1 ), IINFO )
1881.NE.
IF( IINFO0 ) THEN
1882 WRITE( NOUNIT, FMT = 9999 )'sspevx(v,i,
' // UPLO //
1883 $ ')
', IINFO, N, JTYPE, IOLDSD
1885.LT.
IF( IINFO0 ) THEN
1888 RESULT( NTEST ) = ULPINV
1889 RESULT( NTEST+1 ) = ULPINV
1890 RESULT( NTEST+2 ) = ULPINV
1897 CALL SSYT22( 1, UPLO, N, M2, 0, A, LDU, WA2, D2, Z, LDU,
1898 $ V, LDU, TAU, WORK, RESULT( NTEST ) )
1902.EQ.
IF( IUPLO1 ) THEN
1906 WORK( INDX ) = A( I, J )
1914 WORK( INDX ) = A( I, J )
1921 CALL SSPEVX( 'n
', 'i
', UPLO, N, WORK, VL, VU, IL, IU,
1922 $ ABSTOL, M3, WA3, Z, LDU, V, IWORK,
1923 $ IWORK( 5*N+1 ), IINFO )
1924.NE.
IF( IINFO0 ) THEN
1925 WRITE( NOUNIT, FMT = 9999 )'sspevx(n,i,
' // UPLO //
1926 $ ')
', IINFO, N, JTYPE, IOLDSD
1928.LT.
IF( IINFO0 ) THEN
1931 RESULT( NTEST ) = ULPINV
1936.EQ..AND..GT.
IF( M30 N0 ) THEN
1937 RESULT( NTEST ) = ULPINV
1943 TEMP1 = SSXT1( 1, WA2, M2, WA3, M3, ABSTOL, ULP, UNFL )
1944 TEMP2 = SSXT1( 1, WA3, M3, WA2, M2, ABSTOL, ULP, UNFL )
1946 TEMP3 = MAX( ABS( WA1( 1 ) ), ABS( WA1( N ) ) )
1950 RESULT( NTEST ) = ( TEMP1+TEMP2 ) /
1951 $ MAX( UNFL, TEMP3*ULP )
1954.EQ.
IF( IUPLO1 ) THEN
1958 WORK( INDX ) = A( I, J )
1966 WORK( INDX ) = A( I, J )
1975 CALL SSPEVX( 'v
', 'v
', UPLO, N, WORK, VL, VU, IL, IU,
1976 $ ABSTOL, M2, WA2, Z, LDU, V, IWORK,
1977 $ IWORK( 5*N+1 ), IINFO )
1978.NE.
IF( IINFO0 ) THEN
1979 WRITE( NOUNIT, FMT = 9999 )'sspevx(v,v,
' // UPLO //
1980 $ ')
', IINFO, N, JTYPE, IOLDSD
1982.LT.
IF( IINFO0 ) THEN
1985 RESULT( NTEST ) = ULPINV
1986 RESULT( NTEST+1 ) = ULPINV
1987 RESULT( NTEST+2 ) = ULPINV
1994 CALL SSYT22( 1, UPLO, N, M2, 0, A, LDU, WA2, D2, Z, LDU,
1995 $ V, LDU, TAU, WORK, RESULT( NTEST ) )
1999.EQ.
IF( IUPLO1 ) THEN
2003 WORK( INDX ) = A( I, J )
2011 WORK( INDX ) = A( I, J )
2018 CALL SSPEVX( 'n
', 'v
', UPLO, N, WORK, VL, VU, IL, IU,
2019 $ ABSTOL, M3, WA3, Z, LDU, V, IWORK,
2020 $ IWORK( 5*N+1 ), IINFO )
2021.NE.
IF( IINFO0 ) THEN
2022 WRITE( NOUNIT, FMT = 9999 )'sspevx(n,v,
' // UPLO //
2023 $ ')
', IINFO, N, JTYPE, IOLDSD
2025.LT.
IF( IINFO0 ) THEN
2028 RESULT( NTEST ) = ULPINV
2033.EQ..AND..GT.
IF( M30 N0 ) THEN
2034 RESULT( NTEST ) = ULPINV
2040 TEMP1 = SSXT1( 1, WA2, M2, WA3, M3, ABSTOL, ULP, UNFL )
2041 TEMP2 = SSXT1( 1, WA3, M3, WA2, M2, ABSTOL, ULP, UNFL )
2043 TEMP3 = MAX( ABS( WA1( 1 ) ), ABS( WA1( N ) ) )
2047 RESULT( NTEST ) = ( TEMP1+TEMP2 ) /
2048 $ MAX( UNFL, TEMP3*ULP )
2054.LE.
IF( JTYPE7 ) THEN
2056.GE..AND..LE.
ELSE IF( JTYPE8 JTYPE15 ) THEN
2065.EQ.
IF( IUPLO1 ) THEN
2067 DO 1090 I = MAX( 1, J-KD ), J
2068 V( KD+1+I-J, J ) = A( I, J )
2073 DO 1110 I = J, MIN( N, J+KD )
2074 V( 1+I-J, J ) = A( I, J )
2081 CALL SSBEV( 'v
', UPLO, N, KD, V, LDU, D1, Z, LDU, WORK,
2083.NE.
IF( IINFO0 ) THEN
2084 WRITE( NOUNIT, FMT = 9999 )'ssbev(v,
' // UPLO // ')
',
2085 $ IINFO, N, JTYPE, IOLDSD
2087.LT.
IF( IINFO0 ) THEN
2090 RESULT( NTEST ) = ULPINV
2091 RESULT( NTEST+1 ) = ULPINV
2092 RESULT( NTEST+2 ) = ULPINV
2099 CALL SSYT21( 1, UPLO, N, 0, A, LDA, D1, D2, Z, LDU, V,
2100 $ LDU, TAU, WORK, RESULT( NTEST ) )
2102.EQ.
IF( IUPLO1 ) THEN
2104 DO 1130 I = MAX( 1, J-KD ), J
2105 V( KD+1+I-J, J ) = A( I, J )
2110 DO 1150 I = J, MIN( N, J+KD )
2111 V( 1+I-J, J ) = A( I, J )
2118 CALL SSBEV( 'n
', UPLO, N, KD, V, LDU, D3, Z, LDU, WORK,
2120.NE.
IF( IINFO0 ) THEN
2121 WRITE( NOUNIT, FMT = 9999 )'ssbev(n,
' // UPLO // ')
',
2122 $ IINFO, N, JTYPE, IOLDSD
2124.LT.
IF( IINFO0 ) THEN
2127 RESULT( NTEST ) = ULPINV
2137 TEMP1 = MAX( TEMP1, ABS( D1( J ) ), ABS( D3( J ) ) )
2138 TEMP2 = MAX( TEMP2, ABS( D1( J )-D3( J ) ) )
2140 RESULT( NTEST ) = TEMP2 / MAX( UNFL,
2141 $ ULP*MAX( TEMP1, TEMP2 ) )
2147.EQ.
IF( IUPLO1 ) THEN
2149 DO 1190 I = MAX( 1, J-KD ), J
2150 V( KD+1+I-J, J ) = A( I, J )
2155 DO 1210 I = J, MIN( N, J+KD )
2156 V( 1+I-J, J ) = A( I, J )
2163 CALL SSBEVX( 'v
', 'a
', UPLO, N, KD, V, LDU, U, LDU, VL,
2164 $ VU, IL, IU, ABSTOL, M, WA2, Z, LDU, WORK,
2165 $ IWORK, IWORK( 5*N+1 ), IINFO )
2166.NE.
IF( IINFO0 ) THEN
2167 WRITE( NOUNIT, FMT = 9999 )'ssbevx(v,a,
' // UPLO //
2168 $ ')
', IINFO, N, JTYPE, IOLDSD
2170.LT.
IF( IINFO0 ) THEN
2173 RESULT( NTEST ) = ULPINV
2174 RESULT( NTEST+1 ) = ULPINV
2175 RESULT( NTEST+2 ) = ULPINV
2182 CALL SSYT21( 1, UPLO, N, 0, A, LDU, WA2, D2, Z, LDU, V,
2183 $ LDU, TAU, WORK, RESULT( NTEST ) )
2187.EQ.
IF( IUPLO1 ) THEN
2189 DO 1230 I = MAX( 1, J-KD ), J
2190 V( KD+1+I-J, J ) = A( I, J )
2195 DO 1250 I = J, MIN( N, J+KD )
2196 V( 1+I-J, J ) = A( I, J )
2202 CALL SSBEVX( 'n
', 'a
', UPLO, N, KD, V, LDU, U, LDU, VL,
2203 $ VU, IL, IU, ABSTOL, M3, WA3, Z, LDU, WORK,
2204 $ IWORK, IWORK( 5*N+1 ), IINFO )
2205.NE.
IF( IINFO0 ) THEN
2206 WRITE( NOUNIT, FMT = 9999 )'ssbevx(n,a,
' // UPLO //
2207 $ ')
', IINFO, N, JTYPE, IOLDSD
2209.LT.
IF( IINFO0 ) THEN
2212 RESULT( NTEST ) = ULPINV
2222 TEMP1 = MAX( TEMP1, ABS( WA2( J ) ), ABS( WA3( J ) ) )
2223 TEMP2 = MAX( TEMP2, ABS( WA2( J )-WA3( J ) ) )
2225 RESULT( NTEST ) = TEMP2 / MAX( UNFL,
2226 $ ULP*MAX( TEMP1, TEMP2 ) )
2230.EQ.
IF( IUPLO1 ) THEN
2232 DO 1290 I = MAX( 1, J-KD ), J
2233 V( KD+1+I-J, J ) = A( I, J )
2238 DO 1310 I = J, MIN( N, J+KD )
2239 V( 1+I-J, J ) = A( I, J )
2245 CALL SSBEVX( 'v
', 'i
', UPLO, N, KD, V, LDU, U, LDU, VL,
2246 $ VU, IL, IU, ABSTOL, M2, WA2, Z, LDU, WORK,
2247 $ IWORK, IWORK( 5*N+1 ), IINFO )
2248.NE.
IF( IINFO0 ) THEN
2249 WRITE( NOUNIT, FMT = 9999 )'ssbevx(v,i,
' // UPLO //
2250 $ ')
', IINFO, N, JTYPE, IOLDSD
2252.LT.
IF( IINFO0 ) THEN
2255 RESULT( NTEST ) = ULPINV
2256 RESULT( NTEST+1 ) = ULPINV
2257 RESULT( NTEST+2 ) = ULPINV
2264 CALL SSYT22( 1, UPLO, N, M2, 0, A, LDU, WA2, D2, Z, LDU,
2265 $ V, LDU, TAU, WORK, RESULT( NTEST ) )
2269.EQ.
IF( IUPLO1 ) THEN
2271 DO 1330 I = MAX( 1, J-KD ), J
2272 V( KD+1+I-J, J ) = A( I, J )
2277 DO 1350 I = J, MIN( N, J+KD )
2278 V( 1+I-J, J ) = A( I, J )
2284 CALL SSBEVX( 'n
', 'i
', UPLO, N, KD, V, LDU, U, LDU, VL,
2285 $ VU, IL, IU, ABSTOL, M3, WA3, Z, LDU, WORK,
2286 $ IWORK, IWORK( 5*N+1 ), IINFO )
2287.NE.
IF( IINFO0 ) THEN
2288 WRITE( NOUNIT, FMT = 9999 )'ssbevx(n,i,' // uplo //
2289 $
')', iinfo, n, jtype, ioldsd
2291 IF( iinfo.LT.0 )
THEN
2294 result( ntest ) = ulpinv
2301 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
2302 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
2304 temp3 =
max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
2308 result( ntest ) = ( temp1+temp2 ) /
2309 $
max( unfl, temp3*ulp )
2313 IF( iuplo.EQ.1 )
THEN
2315 DO 1380 i =
max( 1, j-kd ), j
2316 v( kd+1+i-j, j ) = a( i, j )
2321 DO 1400 i = j,
min( n, j+kd )
2322 v( 1+i-j, j ) = a( i, j )
2328 CALL ssbevx(
'V',
'V', uplo, n, kd, v, ldu, u, ldu, vl,
2329 $ vu, il, iu, abstol, m2, wa2, z, ldu, work,
2330 $ iwork, iwork( 5*n+1 ), iinfo )
2331 IF( iinfo.NE.0 )
THEN
2332 WRITE( nounit, fmt = 9999 )
'SSBEVX(V,V,' // uplo
2333 $
')', iinfo, n, jtype, ioldsd
2335 IF( iinfo.LT.0 )
THEN
2338 result( ntest ) = ulpinv
2339 result( ntest+1 ) = ulpinv
2340 result( ntest+2 ) = ulpinv
2347 CALL ssyt22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
2348 $ v, ldu, tau, work, result( ntest ) )
2352 IF( iuplo.EQ.1 )
THEN
2354 DO 1420 i =
max( 1, j-kd ), j
2355 v( kd+1+i-j, j ) = a( i, j )
2360 DO 1440 i = j,
min( n, j+kd )
2361 v( 1+i-j, j ) = a( i, j )
2367 CALL ssbevx(
'N',
'V', uplo, n, kd, v, ldu, u, ldu, vl,
2368 $ vu, il, iu, abstol, m3, wa3, z, ldu, work,
2369 $ iwork, iwork( 5*n+1 ), iinfo )
2370 IF( iinfo.NE.0 )
THEN
2371 WRITE( nounit, fmt = 9999 )
'SSBEVX(N,V,' // uplo //
2372 $
')', iinfo, n, jtype, ioldsd
2374 IF( iinfo.LT.0 )
THEN
2377 result( ntest ) = ulpinv
2382 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
2383 result( ntest ) = ulpinv
2389 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
2390 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
2392 temp3 =
max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
2396 result( ntest ) = ( temp1+temp2 ) /
2397 $
max( unfl, temp3*ulp )
2403 CALL slacpy(
' ', n, n, a, lda, v, ldu )
2407 CALL ssyevd(
'V', uplo, n, a, ldu, d1, work, lwedc,
2408 $ iwork, liwedc, iinfo )
2409 IF( iinfo.NE.0 )
THEN
2410 WRITE( nounit, fmt = 9999 )
'SSYEVD(V,' // uplo //
2411 $
')', iinfo, n, jtype, ioldsd
2413 IF( iinfo.LT.0 )
THEN
2416 result( ntest ) = ulpinv
2417 result( ntest+1 ) = ulpinv
2418 result( ntest+2 ) = ulpinv
2425 CALL ssyt21( 1, uplo, n, 0, v, ldu, d1
2426 $ ldu, tau, work, result( ntest ) )
2428 CALL slacpy(
' ', n, n, v, ldu, a, lda )
2432 CALL ssyevd(
'N', uplo, n, a, ldu, d3, work, lwedc,
2433 $ iwork, liwedc, iinfo )
2434 IF( iinfo.NE.0 )
THEN
2435 WRITE( nounit, fmt = 9999 )
'SSYEVD(N,' // uplo //
2436 $
')', iinfo, n, jtype, ioldsd
2438 IF( iinfo.LT.0 )
THEN
2441 result( ntest ) = ulpinv
2451 temp1 =
max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
2452 temp2 =
max( temp2, abs( d1( j )-d3( j ) ) )
2454 result( ntest ) = temp2 /
max( unfl,
2455 $ ulp*
max( temp1, temp2 ) )
2461 CALL slacpy(
' ', n, n, v, ldu, a, lda )
2466 IF( iuplo.EQ.1 )
THEN
2470 work( indx ) = a( i, j )
2478 work( indx ) = a( i, j )
2486 CALL sspevd( 'v
', UPLO, N, WORK, D1, Z, LDU,
2487 $ WORK( INDX ), LWEDC-INDX+1, IWORK, LIWEDC,
2489.NE.
IF( IINFO0 ) THEN
2490 WRITE( NOUNIT, FMT = 9999 )'sspevd(v,
' // UPLO //
2491 $ ')
', IINFO, N, JTYPE, IOLDSD
2493.LT.
IF( IINFO0 ) THEN
2496 RESULT( NTEST ) = ULPINV
2497 RESULT( NTEST+1 ) = ULPINV
2498 RESULT( NTEST+2 ) = ULPINV
2505 CALL SSYT21( 1, UPLO, N, 0, A, LDA, D1, D2, Z, LDU, V,
2506 $ LDU, TAU, WORK, RESULT( NTEST ) )
2508.EQ.
IF( IUPLO1 ) THEN
2513 WORK( INDX ) = A( I, J )
2521 WORK( INDX ) = A( I, J )
2529 CALL SSPEVD( 'n
', UPLO, N, WORK, D3, Z, LDU,
2530 $ WORK( INDX ), LWEDC-INDX+1, IWORK, LIWEDC,
2532.NE.
IF( IINFO0 ) THEN
2533 WRITE( NOUNIT, FMT = 9999 )'sspevd(n,
' // UPLO //
2534 $ ')
', IINFO, N, JTYPE, IOLDSD
2536.LT.
IF( IINFO0 ) THEN
2539 RESULT( NTEST ) = ULPINV
2549 TEMP1 = MAX( TEMP1, ABS( D1( J ) ), ABS( D3( J ) ) )
2550 TEMP2 = MAX( TEMP2, ABS( D1( J )-D3( J ) ) )
2552 RESULT( NTEST ) = TEMP2 / MAX( UNFL,
2553 $ ULP*MAX( TEMP1, TEMP2 ) )
2558.LE.
IF( JTYPE7 ) THEN
2560.GE..AND..LE.
ELSE IF( JTYPE8 JTYPE15 ) THEN
2569.EQ.
IF( IUPLO1 ) THEN
2571 DO 1590 I = MAX( 1, J-KD ), J
2572 V( KD+1+I-J, J ) = A( I, J )
2577 DO 1610 I = J, MIN( N, J+KD )
2578 V( 1+I-J, J ) = A( I, J )
2585 CALL SSBEVD( 'v
', UPLO, N, KD, V, LDU, D1, Z, LDU, WORK,
2586 $ LWEDC, IWORK, LIWEDC, IINFO )
2587.NE.
IF( IINFO0 ) THEN
2588 WRITE( NOUNIT, FMT = 9999 )'ssbevd(v,
' // UPLO //
2589 $ ')
', IINFO, N, JTYPE, IOLDSD
2591.LT.
IF( IINFO0 ) THEN
2594 RESULT( NTEST ) = ULPINV
2595 RESULT( NTEST+1 ) = ULPINV
2596 RESULT( NTEST+2 ) = ULPINV
2603 CALL SSYT21( 1, UPLO, N, 0, A, LDA, D1, D2, Z, LDU, V,
2604 $ LDU, TAU, WORK, RESULT( NTEST ) )
2606.EQ.
IF( IUPLO1 ) THEN
2608 DO 1630 I = MAX( 1, J-KD ), J
2609 V( KD+1+I-J, J ) = A( I, J )
2614 DO 1650 I = J, MIN( N, J+KD )
2615 V( 1+I-J, J ) = A( I, J )
2622 CALL SSBEVD( 'n
', UPLO, N, KD, V, LDU, D3, Z, LDU, WORK,
2623 $ LWEDC, IWORK, LIWEDC, IINFO )
2624.NE.
IF( IINFO0 ) THEN
2625 WRITE( NOUNIT, FMT = 9999 )'ssbevd(n,
' // UPLO //
2626 $ ')
', IINFO, N, JTYPE, IOLDSD
2628.LT.
IF( IINFO0 ) THEN
2631 RESULT( NTEST ) = ULPINV
2641 TEMP1 = MAX( TEMP1, ABS( D1( J ) ), ABS( D3( J ) ) )
2642 TEMP2 = MAX( TEMP2, ABS( D1( J )-D3( J ) ) )
2644 RESULT( NTEST ) = TEMP2 / MAX( UNFL,
2645 $ ULP*MAX( TEMP1, TEMP2 ) )
2650 CALL SLACPY( ' ', N, N, A, LDA, V, LDU )
2653 CALL SSYEVR( 'v
', 'a
', UPLO, N, A, LDU, VL, VU, IL, IU,
2654 $ ABSTOL, M, WA1, Z, LDU, IWORK, WORK, LWORK,
2655 $ IWORK(2*N+1), LIWORK-2*N, IINFO )
2656.NE.
IF( IINFO0 ) THEN
2657 WRITE( NOUNIT, FMT = 9999 )'ssyevr(v,a,
' // UPLO //
2658 $ ')
', IINFO, N, JTYPE, IOLDSD
2660.LT.
IF( IINFO0 ) THEN
2663 RESULT( NTEST ) = ULPINV
2664 RESULT( NTEST+1 ) = ULPINV
2665 RESULT( NTEST+2 ) = ULPINV
2672 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
2674 CALL SSYT21( 1, UPLO, N, 0, A, LDU, WA1, D2, Z, LDU, V,
2675 $ LDU, TAU, WORK, RESULT( NTEST ) )
2679 CALL SSYEVR( 'n
', 'a
', UPLO, N, A, LDU, VL, VU, IL, IU,
2680 $ ABSTOL, M2, WA2, Z, LDU, IWORK, WORK, LWORK,
2681 $ IWORK(2*N+1), LIWORK-2*N, IINFO )
2682.NE.
IF( IINFO0 ) THEN
2683 WRITE( NOUNIT, FMT = 9999 )'ssyevr(n,a,
' // UPLO //
2684 $ ')
', IINFO, N, JTYPE, IOLDSD
2686.LT.
IF( IINFO0 ) THEN
2689 RESULT( NTEST ) = ULPINV
2699 TEMP1 = MAX( TEMP1, ABS( WA1( J ) ), ABS( WA2( J ) ) )
2700 TEMP2 = MAX( TEMP2, ABS( WA1( J )-WA2( J ) ) )
2702 RESULT( NTEST ) = TEMP2 / MAX( UNFL,
2703 $ ULP*MAX( TEMP1, TEMP2 ) )
2708 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
2710 CALL SSYEVR( 'v
', 'i
', UPLO, N, A, LDU, VL, VU, IL, IU,
2711 $ ABSTOL, M2, WA2, Z, LDU, IWORK, WORK, LWORK,
2712 $ IWORK(2*N+1), LIWORK-2*N, IINFO )
2713.NE.
IF( IINFO0 ) THEN
2714 WRITE( NOUNIT, FMT = 9999 )'ssyevr(v,i,
' // UPLO //
2715 $ ')
', IINFO, N, JTYPE, IOLDSD
2717.LT.
IF( IINFO0 ) THEN
2720 RESULT( NTEST ) = ULPINV
2721 RESULT( NTEST+1 ) = ULPINV
2722 RESULT( NTEST+2 ) = ULPINV
2729 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
2731 CALL SSYT22( 1, UPLO, N, M2, 0, A, LDU, WA2, D2, Z, LDU,
2732 $ V, LDU, TAU, WORK, RESULT( NTEST ) )
2735 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
2737 CALL SSYEVR( 'n
', 'i
', UPLO, N, A, LDU, VL, VU, IL, IU,
2738 $ ABSTOL, M3, WA3, Z, LDU, IWORK, WORK, LWORK,
2739 $ IWORK(2*N+1), LIWORK-2*N, IINFO )
2740.NE.
IF( IINFO0 ) THEN
2741 WRITE( NOUNIT, FMT = 9999 )'ssyevr' // UPLO //
2742 $ ')
', IINFO, N, JTYPE, IOLDSD
2744.LT.
IF( IINFO0 ) THEN
2747 RESULT( NTEST ) = ULPINV
2754 TEMP1 = SSXT1( 1, WA2, M2, WA3, M3, ABSTOL, ULP, UNFL )
2755 TEMP2 = SSXT1( 1, WA3, M3, WA2, M2, ABSTOL, ULP, UNFL )
2756 RESULT( NTEST ) = ( TEMP1+TEMP2 ) /
2757 $ MAX( UNFL, ULP*TEMP3 )
2761 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
2763 CALL SSYEVR( 'v
', 'v
', UPLO, N, A, LDU, VL, VU, IL, IU,
2764 $ ABSTOL, M2, WA2, Z, LDU, IWORK, WORK, LWORK,
2765 $ IWORK(2*N+1), LIWORK-2*N, IINFO )
2766.NE.
IF( IINFO0 ) THEN
2767 WRITE( NOUNIT, FMT = 9999 )'ssyevr(v,v,
' // UPLO //
2768 $ ')
', IINFO, N, JTYPE, IOLDSD
2770.LT.
IF( IINFO0 ) THEN
2773 RESULT( NTEST ) = ULPINV
2774 RESULT( NTEST+1 ) = ULPINV
2775 RESULT( NTEST+2 ) = ULPINV
2782 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
2784 CALL SSYT22( 1, UPLO, N, M2, 0, A, LDU, WA2, D2, Z, LDU,
2785 $ V, LDU, TAU, WORK, RESULT( NTEST ) )
2788 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
2790 CALL SSYEVR( 'n
', 'v
', UPLO, N, A, LDU, VL, VU, IL, IU,
2791 $ ABSTOL, M3, WA3, Z, LDU, IWORK, WORK, LWORK,
2792 $ IWORK(2*N+1), LIWORK-2*N, IINFO )
2793.NE.
IF( IINFO0 ) THEN
2794 WRITE( NOUNIT, FMT = 9999 )'ssyevr(n,v,
' // UPLO //
2795 $ ')
', IINFO, N, JTYPE, IOLDSD
2797.LT.
IF( IINFO0 ) THEN
2800 RESULT( NTEST ) = ULPINV
2805.EQ..AND..GT.
IF( M30 N0 ) THEN
2806 RESULT( NTEST ) = ULPINV
2812 TEMP1 = SSXT1( 1, WA2, M2, WA3, M3, ABSTOL, ULP, UNFL )
2813 TEMP2 = SSXT1( 1, WA3, M3, WA2, M2, ABSTOL, ULP, UNFL )
2815 TEMP3 = MAX( ABS( WA1( 1 ) ), ABS( WA1( N ) ) )
2819 RESULT( NTEST ) = ( TEMP1+TEMP2 ) /
2820 $ MAX( UNFL, TEMP3*ULP )
2822 CALL SLACPY( ' ', N, N, V, LDU, A, LDA )
2828 NTESTT = NTESTT + NTEST
2830 CALL SLAFTS( 'sst
', N, N, JTYPE, NTEST, RESULT, IOLDSD,
2831 $ THRESH, NOUNIT, NERRS )
2838 CALL ALASVM( 'sst
', NOUNIT, NERRS, NTESTT, 0 )
2840 9999 FORMAT( ' sdrvst:
', A, ' returned info=
', I6, '.
', / 9X, 'n=
',
2841 $ I6, ', jtype=
', I6, ', iseed=(
', 3( I5, ',
' ), I5, ')
' )
subroutine slabad(small, large)
SLABAD
subroutine slaset(uplo, m, n, alpha, beta, a, lda)
SLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine slacpy(uplo, m, n, a, lda, b, ldb)
SLACPY copies all or part of one two-dimensional array to another.
subroutine xerbla(srname, info)
XERBLA
subroutine alasvm(type, nout, nfail, nrun, nerrs)
ALASVM
subroutine sstevx(jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z, ldz, work, iwork, ifail, info)
SSTEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrice...
subroutine sspevd(jobz, uplo, n, ap, w, z, ldz, work, lwork, iwork, liwork, info)
SSPEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrice...
subroutine ssbevx(jobz, range, uplo, n, kd, ab, ldab, q, ldq, vl, vu, il, iu, abstol, m, w, z, ldz, work, iwork, ifail, info)
SSBEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrice...
subroutine ssbevd(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, lwork, iwork, liwork, info)
SSBEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrice...
subroutine ssbev(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, info)
SSBEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices
subroutine sspevx(jobz, range, uplo, n, ap, vl, vu, il, iu, abstol, m, w, z, ldz, work, iwork, ifail, info)
SSPEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrice...
subroutine sspev(jobz, uplo, n, ap, w, z, ldz, work, info)
SSPEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices
subroutine sstev(jobz, n, d, e, z, ldz, work, info)
SSTEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrices
subroutine sstevr(jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, z, ldz, isuppz, work, lwork, iwork, liwork, info)
SSTEVR computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrice...
subroutine sstevd(jobz, n, d, e, z, ldz, work, lwork, iwork, liwork, info)
SSTEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrice...
subroutine ssyevd(jobz, uplo, n, a, lda, w, work, lwork, iwork, liwork, info)
SSYEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for SY matrices
subroutine ssyevx(jobz, range, uplo, n, a, lda, vl, vu, il, iu, abstol, m, w, z, ldz, work, lwork, iwork, ifail, info)
SSYEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for SY matrices
subroutine ssyevr(jobz, range, uplo, n, a, lda, vl, vu, il, iu, abstol, m, w, z, ldz, isuppz, work, lwork, iwork, liwork, info)
SSYEVR computes the eigenvalues and, optionally, the left and/or right eigenvectors for SY matrices
subroutine ssyev(jobz, uplo, n, a, lda, w, work, lwork, info)
SSYEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for SY matrices
subroutine slatmr(m, n, dist, iseed, sym, d, mode, cond, dmax, rsign, grade, dl, model, condl, dr, moder, condr, pivtng, ipivot, kl, ku, sparse, anorm, pack, a, lda, iwork, info)
SLATMR
subroutine slatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
SLATMS
subroutine sstt21(n, kband, ad, ae, sd, se, u, ldu, work, result)
SSTT21
subroutine sstt22(n, m, kband, ad, ae, sd, se, u, ldu, work, ldwork, result)
SSTT22
subroutine ssyt21(itype, uplo, n, kband, a, lda, d, e, u, ldu, v, ldv, tau, work, result)
SSYT21
subroutine ssyt22(itype, uplo, n, m, kband, a, lda, d, e, u, ldu, v, ldv, tau, work, result)
SSYT22
subroutine slafts(type, m, n, imat, ntests, result, iseed, thresh, iounit, ie)
SLAFTS
subroutine sdrvst(nsizes, nn, ntypes, dotype, iseed, thresh, nounit, a, lda, d1, d2, d3, d4, eveigs, wa1, wa2, wa3, u, ldu, v, tau, z, work, lwork, iwork, liwork, result, info)
SDRVST