372 SUBROUTINE cdrvsg2stg( NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH,
373 $ NOUNIT, A, LDA, B, LDB, D, D2, Z, LDZ, AB,
374 $ BB, AP, BP, WORK, NWORK, RWORK, LRWORK,
375 $ IWORK, LIWORK, RESULT, INFO )
384 INTEGER INFO, LDA, LDB, LDZ, LIWORK, LRWORK, NOUNIT,
385 $ NSIZES, NTYPES, NWORK
390 INTEGER ISEED( 4 ), IWORK( * ), NN( * )
391 REAL D( * ), D2( * ), RESULT( * ), RWORK( * )
392 COMPLEX A( LDA, * ), AB( LDA, * ), AP( * ),
393 $ b( ldb, * ), bb( ldb, * ), bp( * ), work( * ),
401 PARAMETER ( ZERO = 0.0e+0, one = 1.0e+0, ten = 10.0e+0 )
403 parameter( czero = ( 0.0e+0, 0.0e+0 ),
404 $ cone = ( 1.0e+0, 0.0e+0 ) )
406 parameter( maxtyp = 21 )
411 INTEGER I, IBTYPE, IBUPLO, IINFO, IJ, IL, IMODE, ITEMP,
412 $ itype, iu, j, jcol, jsize, jtype, ka, ka9, kb,
413 $ kb9, m, mtypes, n, nerrs, nmats, nmax, ntest,
415 REAL ABSTOL, ANINV, ANORM, COND, OVFL, RTOVFL,
416 $ RTUNFL, ULP, ULPINV, UNFL, VL, VU, TEMP1, TEMP2
419 INTEGER IDUMMA( 1 ), IOLDSD( 4 ), ISEED2( 4 ),
420 $ KMAGN( MAXTYP ), KMODE( MAXTYP ),
426 EXTERNAL LSAME, SLAMCH, SLARND
435 INTRINSIC abs, real, max, min, sqrt
438 DATA ktype / 1, 2, 5*4, 5*5, 3*8, 6*9 /
439 DATA kmagn / 2*1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 3, 1,
441 DATA kmode / 2*0, 4, 3, 1, 4, 4, 4, 3, 1, 4, 4, 0,
454 nmax = max( nmax, nn( j ) )
461 IF( nsizes.LT.0 )
THEN
463 ELSE IF( badnn )
THEN
465 ELSE IF( ntypes.LT.0 )
THEN
467 ELSE IF( lda.LE.1 .OR. lda.LT.nmax )
THEN
469 ELSE IF( ldz.LE.1 .OR. ldz.LT.nmax )
THEN
471 ELSE IF( 2*max( nmax, 2 )**2.GT.nwork )
THEN
473 ELSE IF( 2*max( nmax, 2 )**2.GT.lrwork )
THEN
475 ELSE IF( 2*max( nmax, 2 )**2.GT.liwork )
THEN
480 CALL xerbla(
'CDRVSG2STG', -info )
486 IF( nsizes.EQ.0 .OR. ntypes.EQ.0 )
491 unfl = slamch(
'Safe minimum' )
492 ovfl = slamch(
'Overflow' )
494 ulp = slamch(
'Epsilon' )*slamch(
'Base' )
496 rtunfl = sqrt( unfl )
497 rtovfl = sqrt( ovfl )
500 iseed2( i ) = iseed( i )
508 DO 650 jsize = 1, nsizes
510 aninv = one / real( max( 1, n ) )
512 IF( nsizes.NE.1 )
THEN
513 mtypes = min( maxtyp, ntypes )
515 mtypes = min( maxtyp+1, ntypes )
520 DO 640 jtype = 1, mtypes
521 IF( .NOT.dotype( jtype ) )
527 ioldsd( j ) = iseed( j )
545 IF( mtypes.GT.maxtyp )
548 itype = ktype( jtype )
549 imode = kmode( jtype )
553 GO TO ( 40, 50, 60 )kmagn( jtype )
560 anorm = ( rtovfl*ulp )*aninv
564 anorm = rtunfl*n*ulpinv
574 IF( itype.EQ.1 )
THEN
580 CALL claset(
'Full', lda, n, czero, czero, a, lda )
582 ELSE IF( itype.EQ.2 )
THEN
588 CALL claset(
'Full', lda, n, czero, czero, a, lda )
590 a( jcol, jcol ) = anorm
593 ELSE IF( itype.EQ.4 )
THEN
599 CALL clatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
600 $ anorm, 0, 0,
'N', a, lda, work, iinfo )
602 ELSE IF( itype.EQ.5 )
THEN
608 CALL clatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
609 $ anorm, n, n,
'N', a, lda, work, iinfo )
611 ELSE IF( itype.EQ.7 )
THEN
617 CALL clatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
618 $
'T',
'N', work( n+1 ), 1, one,
619 $ work( 2*n+1 ), 1, one,
'N', idumma, 0, 0,
620 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
622 ELSE IF( itype.EQ.8 )
THEN
628 CALL clatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
629 $
'T',
'N', work( n+1 ), 1, one,
630 $ work( 2*n+1 ), 1, one,
'N', idumma, n, n,
631 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
633 ELSE IF( itype.EQ.9 )
THEN
647 IF( kb9.GT.ka9 )
THEN
651 ka = max( 0, min( n-1, ka9 ) )
652 kb = max( 0, min( n-1, kb9 ) )
653 CALL clatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
654 $ anorm, ka, ka,
'N', a, lda, work, iinfo )
661 IF( iinfo.NE.0 )
THEN
662 WRITE( nounit, fmt = 9999 )
'Generator', iinfo, n, jtype,
675 il = 1 + int( ( n-1 )*slarnd( 1, iseed2 ) )
676 iu = 1 + int( ( n-1 )*slarnd( 1, iseed2 ) )
705 CALL clatms( n, n,
'U', iseed,
'P', rwork, 5, ten,
706 $ one, kb, kb, uplo, b, ldb, work( n+1 ),
713 CALL clacpy(
' ', n, n, a, lda, z, ldz )
714 CALL clacpy( uplo, n, n, b, ldb, bb, ldb )
716 CALL chegv( ibtype,
'V', uplo, n, z, ldz, bb, ldb, d,
717 $ work, nwork, rwork, iinfo )
718 IF( iinfo.NE.0 )
THEN
719 WRITE( nounit, fmt = 9999 )
'CHEGV(V,' // uplo //
720 $
')', iinfo, n, jtype, ioldsd
722 IF( iinfo.LT.0 )
THEN
725 result( ntest ) = ulpinv
732 CALL csgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
733 $ ldz, d, work, rwork, result( ntest ) )
739 CALL clacpy(
' ', n, n, a, lda, z, ldz )
740 CALL clacpy( uplo, n, n, b, ldb, bb, ldb )
743 $ bb, ldb, d2, work, nwork, rwork,
745 IF( iinfo.NE.0 )
THEN
746 WRITE( nounit, fmt = 9999 )
747 $
'CHEGV_2STAGE(V,' // uplo //
748 $
')', iinfo, n, jtype, ioldsd
750 IF( iinfo.LT.0 )
THEN
753 result( ntest ) = ulpinv
770 temp1 = max( temp1, abs( d( j ) ),
772 temp2 = max( temp2, abs( d( j )-d2( j ) ) )
775 result( ntest ) = temp2 /
776 $ max( unfl, ulp*max( temp1, temp2 ) )
782 CALL clacpy(
' ', n, n, a, lda, z, ldz )
783 CALL clacpy( uplo, n, n, b, ldb, bb, ldb )
785 CALL chegvd( ibtype,
'V', uplo, n, z, ldz, bb, ldb, d,
786 $ work, nwork, rwork, lrwork, iwork,
788 IF( iinfo.NE.0 )
THEN
789 WRITE( nounit, fmt = 9999 )
'CHEGVD(V,' // uplo //
790 $
')', iinfo, n, jtype, ioldsd
792 IF( iinfo.LT.0 )
THEN
795 result( ntest ) = ulpinv
802 CALL csgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
803 $ ldz, d, work, rwork, result( ntest ) )
809 CALL clacpy(
' ', n, n, a, lda, ab, lda )
810 CALL clacpy( uplo, n, n, b, ldb, bb, ldb )
812 CALL chegvx( ibtype,
'V',
'A', uplo, n, ab, lda, bb,
813 $ ldb, vl, vu, il, iu, abstol, m, d, z,
814 $ ldz, work, nwork, rwork, iwork( n+1 ),
816 IF( iinfo.NE.0 )
THEN
817 WRITE( nounit, fmt = 9999 )
'CHEGVX(V,A' // uplo //
818 $
')', iinfo, n, jtype, ioldsd
820 IF( iinfo.LT.0 )
THEN
823 result( ntest ) = ulpinv
830 CALL csgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
831 $ ldz, d, work, rwork, result( ntest ) )
835 CALL clacpy(
' ', n, n, a, lda, ab, lda )
836 CALL clacpy( uplo, n, n, b, ldb, bb, ldb )
845 CALL chegvx( ibtype,
'V',
'V', uplo, n, ab, lda, bb,
846 $ ldb, vl, vu, il, iu, abstol, m, d, z,
847 $ ldz, work, nwork, rwork, iwork( n+1 ),
849 IF( iinfo.NE.0 )
THEN
850 WRITE( nounit, fmt = 9999 )
'CHEGVX(V,V,' //
851 $ uplo //
')', iinfo, n, jtype, ioldsd
853 IF( iinfo.LT.0 )
THEN
856 result( ntest ) = ulpinv
863 CALL csgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
864 $ ldz, d, work, rwork, result( ntest ) )
868 CALL clacpy(
' ', n, n, a, lda, ab, lda )
869 CALL clacpy( uplo, n, n, b, ldb, bb, ldb )
871 CALL chegvx( ibtype,
'V',
'I', uplo, n, ab, lda, bb,
872 $ ldb, vl, vu, il, iu, abstol, m, d, z,
873 $ ldz, work, nwork, rwork, iwork( n+1 ),
875 IF( iinfo.NE.0 )
THEN
876 WRITE( nounit, fmt = 9999 )
'CHEGVX(V,I,' //
877 $ uplo //
')', iinfo, n, jtype, ioldsd
879 IF( iinfo.LT.0 )
THEN
882 result( ntest ) = ulpinv
889 CALL csgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
890 $ ldz, d, work, rwork, result( ntest ) )
900 IF( lsame( uplo,
'U' ) )
THEN
920 CALL chpgv( ibtype,
'V', uplo, n, ap, bp, d, z, ldz,
921 $ work, rwork, iinfo )
922 IF( iinfo.NE.0 )
THEN
923 WRITE( nounit, fmt = 9999 )
'CHPGV(V,' // uplo //
924 $
')', iinfo, n, jtype, ioldsd
926 IF( iinfo.LT.0 )
THEN
929 result( ntest ) = ulpinv
936 CALL csgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
937 $ ldz, d, work, rwork, result( ntest ) )
945 IF( lsame( uplo,
'U' ) )
THEN
965 CALL chpgvd( ibtype,
'V', uplo, n, ap, bp, d, z, ldz,
966 $ work, nwork, rwork, lrwork, iwork,
968 IF( iinfo.NE.0 )
THEN
969 WRITE( nounit, fmt = 9999 )
'CHPGVD(V,' // uplo //
970 $
')', iinfo, n, jtype, ioldsd
972 IF( iinfo.LT.0 )
THEN
975 result( ntest ) = ulpinv
982 CALL csgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
983 $ ldz, d, work, rwork, result( ntest ) )
991 IF( lsame( uplo,
'U' ) )
THEN
1004 ap( ij ) = a( i, j )
1005 bp( ij ) = b( i, j )
1011 CALL chpgvx( ibtype,
'V',
'A', uplo, n, ap, bp, vl,
1012 $ vu, il, iu, abstol, m, d, z, ldz, work,
1013 $ rwork, iwork( n+1 ), iwork, info )
1014 IF( iinfo.NE.0 )
THEN
1015 WRITE( nounit, fmt = 9999 )
'CHPGVX(V,A' // uplo //
1016 $
')', iinfo, n, jtype, ioldsd
1018 IF( iinfo.LT.0 )
THEN
1021 result( ntest ) = ulpinv
1028 CALL csgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
1029 $ ldz, d, work, rwork, result( ntest ) )
1035 IF( lsame( uplo,
'U' ) )
THEN
1039 ap( ij ) = a( i, j )
1040 bp( ij ) = b( i, j )
1048 ap( ij ) = a( i, j )
1049 bp( ij ) = b( i, j )
1057 CALL chpgvx( ibtype,
'V',
'V', uplo, n, ap, bp, vl,
1058 $ vu, il, iu, abstol, m, d, z, ldz, work,
1059 $ rwork, iwork( n+1 ), iwork, info )
1060 IF( iinfo.NE.0 )
THEN
1061 WRITE( nounit, fmt = 9999 )
'CHPGVX(V,V' // uplo //
1062 $
')', iinfo, n, jtype, ioldsd
1064 IF( iinfo.LT.0 )
THEN
1067 result( ntest ) = ulpinv
1074 CALL csgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1075 $ ldz, d, work, rwork, result( ntest ) )
1081 IF( lsame( uplo,
'U' ) )
THEN
1085 ap( ij ) = a( i, j )
1086 bp( ij ) = b( i, j )
1094 ap( ij ) = a( i, j )
1095 bp( ij ) = b( i, j )
1101 CALL chpgvx( ibtype,
'V',
'I', uplo, n, ap, bp, vl,
1102 $ vu, il, iu, abstol, m, d, z, ldz, work,
1103 $ rwork, iwork( n+1 ), iwork, info )
1104 IF( iinfo.NE.0 )
THEN
1105 WRITE( nounit, fmt = 9999 )
'CHPGVX(V,I' // uplo //
1106 $
')', iinfo, n, jtype, ioldsd
1108 IF( iinfo.LT.0 )
THEN
1111 result( ntest ) = ulpinv
1118 CALL csgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1119 $ ldz, d, work, rwork, result( ntest ) )
1123 IF( ibtype.EQ.1 )
THEN
1131 IF( lsame( uplo,
'U' ) )
THEN
1133 DO 320 i = max( 1, j-ka ), j
1134 ab( ka+1+i-j, j ) = a( i, j )
1136 DO 330 i = max( 1, j-kb ), j
1137 bb( kb+1+i-j, j ) = b( i, j )
1142 DO 350 i = j, min( n, j+ka )
1143 ab( 1+i-j, j ) = a( i, j )
1145 DO 360 i = j, min( n, j+kb )
1146 bb( 1+i-j, j ) = b( i, j )
1151 CALL chbgv(
'V', uplo, n, ka, kb, ab, lda, bb, ldb,
1152 $ d, z, ldz, work, rwork, iinfo )
1153 IF( iinfo.NE.0 )
THEN
1154 WRITE( nounit, fmt = 9999 )
'CHBGV(V,' //
1155 $ uplo //
')', iinfo, n, jtype, ioldsd
1157 IF( iinfo.LT.0 )
THEN
1160 result( ntest ) = ulpinv
1167 CALL csgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
1168 $ ldz, d, work, rwork, result( ntest ) )
1176 IF( lsame( uplo,
'U' ) )
THEN
1178 DO 380 i = max( 1, j-ka ), j
1179 ab( ka+1+i-j, j ) = a( i, j )
1181 DO 390 i = max( 1, j-kb ), j
1182 bb( kb+1+i-j, j ) = b( i, j )
1187 DO 410 i = j, min( n, j+ka )
1188 ab( 1+i-j, j ) = a( i, j )
1190 DO 420 i = j, min( n, j+kb )
1191 bb( 1+i-j, j ) = b( i, j )
1196 CALL chbgvd(
'V', uplo, n, ka, kb, ab, lda, bb,
1197 $ ldb, d, z, ldz, work, nwork, rwork,
1198 $ lrwork, iwork, liwork, iinfo )
1199 IF( iinfo.NE.0 )
THEN
1200 WRITE( nounit, fmt = 9999 )
'CHBGVD(V,' //
1201 $ uplo //
')', iinfo, n, jtype, ioldsd
1203 IF( iinfo.LT.0 )
THEN
1206 result( ntest ) = ulpinv
1213 CALL csgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
1214 $ ldz, d, work, rwork, result( ntest ) )
1222 IF( lsame( uplo,
'U' ) )
THEN
1224 DO 440 i = max( 1, j-ka ), j
1225 ab( ka+1+i-j, j ) = a( i, j )
1227 DO 450 i = max( 1, j-kb ), j
1228 bb( kb+1+i-j, j ) = b( i, j )
1233 DO 470 i = j, min( n, j+ka )
1234 ab( 1+i-j, j ) = a( i, j )
1236 DO 480 i = j, min( n, j+kb )
1237 bb( 1+i-j, j ) = b( i, j )
1242 CALL chbgvx(
'V',
'A', uplo, n, ka, kb, ab, lda,
1243 $ bb, ldb, bp, max( 1, n ), vl, vu, il,
1244 $ iu, abstol, m, d, z, ldz, work, rwork,
1245 $ iwork( n+1 ), iwork, iinfo )
1246 IF( iinfo.NE.0 )
THEN
1247 WRITE( nounit, fmt = 9999 )
'CHBGVX(V,A' //
1248 $ uplo //
')', iinfo, n, jtype, ioldsd
1250 IF( iinfo.LT.0 )
THEN
1253 result( ntest ) = ulpinv
1260 CALL csgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
1261 $ ldz, d, work, rwork, result( ntest ) )
1267 IF( lsame( uplo,
'U' ) )
THEN
1269 DO 500 i = max( 1, j-ka ), j
1270 ab( ka+1+i-j, j ) = a( i, j )
1272 DO 510 i = max( 1, j-kb ), j
1273 bb( kb+1+i-j, j ) = b( i, j )
1278 DO 530 i = j, min( n, j+ka )
1279 ab( 1+i-j, j ) = a( i, j )
1281 DO 540 i = j, min( n, j+kb )
1282 bb( 1+i-j, j ) = b( i, j )
1289 CALL chbgvx(
'V',
'V', uplo, n, ka, kb, ab, lda,
1290 $ bb, ldb, bp, max( 1, n ), vl, vu, il,
1291 $ iu, abstol, m, d, z, ldz, work, rwork,
1292 $ iwork( n+1 ), iwork, iinfo )
1293 IF( iinfo.NE.0 )
THEN
1294 WRITE( nounit, fmt = 9999 )
'CHBGVX(V,V' //
1295 $ uplo //
')', iinfo, n, jtype, ioldsd
1297 IF( iinfo.LT.0 )
THEN
1300 result( ntest ) = ulpinv
1307 CALL csgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1308 $ ldz, d, work, rwork, result( ntest ) )
1314 IF( lsame( uplo,
'U' ) )
THEN
1316 DO 560 i = max( 1, j-ka ), j
1317 ab( ka+1+i-j, j ) = a( i, j )
1319 DO 570 i = max( 1, j-kb ), j
1320 bb( kb+1+i-j, j ) = b( i, j )
1325 DO 590 i = j, min( n, j+ka )
1326 ab( 1+i-j, j ) = a( i, j )
1328 DO 600 i = j, min( n, j+kb )
1329 bb( 1+i-j, j ) = b( i, j )
1334 CALL chbgvx(
'V',
'I', uplo, n, ka, kb, ab, lda,
1335 $ bb, ldb, bp, max( 1, n ), vl, vu, il,
1336 $ iu, abstol, m, d, z, ldz, work, rwork,
1337 $ iwork( n+1 ), iwork, iinfo )
1338 IF( iinfo.NE.0 )
THEN
1339 WRITE( nounit, fmt = 9999 )
'CHBGVX(V,I' //
1340 $ uplo //
')', iinfo, n, jtype, ioldsd
1342 IF( iinfo.LT.0 )
THEN
1345 result( ntest ) = ulpinv
1352 CALL csgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1353 $ ldz, d, work, rwork, result( ntest ) )
1362 ntestt = ntestt + ntest
1363 CALL slafts(
'CSG', n, n, jtype, ntest, result, ioldsd,
1364 $ thresh, nounit, nerrs )
1370 CALL slasum(
'CSG', nounit, nerrs, ntestt )
1374 9999
FORMAT(
' CDRVSG2STG: ', a,
' returned INFO=', i6,
'.', / 9x,
1375 $
'N=', i6,
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
')' )
subroutine slabad(SMALL, LARGE)
SLABAD
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine csgt01(ITYPE, UPLO, N, M, A, LDA, B, LDB, Z, LDZ, D, WORK, RWORK, RESULT)
CSGT01
subroutine cdrvsg2stg(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, B, LDB, D, D2, Z, LDZ, AB, BB, AP, BP, WORK, NWORK, RWORK, LRWORK, IWORK, LIWORK, RESULT, INFO)
CDRVSG2STG
subroutine clatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
CLATMS
subroutine clatmr(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)
CLATMR
subroutine chegvd(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
CHEGVD
subroutine chegv_2stage(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, RWORK, INFO)
CHEGV_2STAGE
subroutine chegv(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, RWORK, INFO)
CHEGV
subroutine chegvx(ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, RWORK, IWORK, IFAIL, INFO)
CHEGVX
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 clacpy(UPLO, M, N, A, LDA, B, LDB)
CLACPY copies all or part of one two-dimensional array to another.
subroutine chpgvd(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
CHPGVD
subroutine chbgvd(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
CHBGVD
subroutine chpgvx(ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO)
CHPGVX
subroutine chpgv(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, RWORK, INFO)
CHPGV
subroutine chbgvx(JOBZ, RANGE, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO)
CHBGVX
subroutine chbgv(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, RWORK, INFO)
CHBGV
subroutine slafts(TYPE, M, N, IMAT, NTESTS, RESULT, ISEED, THRESH, IOUNIT, IE)
SLAFTS
subroutine slasum(TYPE, IOUNIT, IE, NRUN)
SLASUM