372 SUBROUTINE zdrvsg2stg( 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
386 DOUBLE PRECISION THRESH
390 INTEGER ISEED( 4 ), IWORK( * ), NN( * )
391 DOUBLE PRECISION D( * ), D2( * ), RESULT( * ), RWORK( * )
392 COMPLEX*16 A( LDA, * ), AB( LDA, * ), AP( * ),
393 $ b( ldb, * ), bb( ldb, * ), bp( * ), work( * ),
400 DOUBLE PRECISION ZERO, ONE, TEN
401 PARAMETER ( ZERO = 0.0d+0, one = 1.0d+0, ten = 10.0d+0 )
402 COMPLEX*16 CZERO, CONE
403 parameter( czero = ( 0.0d+0, 0.0d+0 ),
404 $ cone = ( 1.0d+0, 0.0d+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 DOUBLE PRECISION 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 ),
425 DOUBLE PRECISION DLAMCH, DLARND
426 EXTERNAL LSAME, DLAMCH, DLARND
435 INTRINSIC abs, dble, 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(
'ZDRVSG2STG', -info )
486 IF( nsizes.EQ.0 .OR. ntypes.EQ.0 )
491 unfl = dlamch(
'Safe minimum' )
492 ovfl = dlamch(
'Overflow' )
494 ulp = dlamch(
'Epsilon' )*dlamch(
'Base' )
496 rtunfl = sqrt( unfl )
497 rtovfl = sqrt( ovfl )
500 iseed2( i ) = iseed( i )
508 DO 650 jsize = 1, nsizes
510 aninv = one / dble( 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 zlaset(
'Full', lda, n, czero, czero, a, lda )
582 ELSE IF( itype.EQ.2 )
THEN
588 CALL zlaset(
'Full', lda, n, czero, czero, a, lda )
590 a( jcol, jcol ) = anorm
593 ELSE IF( itype.EQ.4 )
THEN
599 CALL zlatms( 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 zlatms( 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 zlatmr( 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 zlatmr( 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 zlatms( 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 )*dlarnd( 1, iseed2 ) )
676 iu = 1 + int( ( n-1 )*dlarnd( 1, iseed2 ) )
705 CALL zlatms( n, n,
'U', iseed,
'P', rwork, 5, ten,
706 $ one, kb, kb, uplo, b, ldb, work( n+1 ),
713 CALL zlacpy(
' ', n, n, a, lda, z, ldz )
714 CALL zlacpy( uplo, n, n, b, ldb, bb, ldb )
716 CALL zhegv( 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 )
'ZHEGV(V,' // uplo //
720 $
')', iinfo, n, jtype, ioldsd
722 IF( iinfo.LT.0 )
THEN
725 result( ntest ) = ulpinv
732 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
733 $ ldz, d, work, rwork, result( ntest ) )
739 CALL zlacpy(
' ', n, n, a, lda, z, ldz )
740 CALL zlacpy( 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 $
'ZHEGV_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 zlacpy(
' ', n, n, a, lda, z, ldz )
783 CALL zlacpy( uplo, n, n, b, ldb, bb, ldb )
785 CALL zhegvd( 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 )
'ZHEGVD(V,' // uplo //
790 $
')', iinfo, n, jtype, ioldsd
792 IF( iinfo.LT.0 )
THEN
795 result( ntest ) = ulpinv
802 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
803 $ ldz, d, work, rwork, result( ntest ) )
809 CALL zlacpy(
' ', n, n, a, lda, ab, lda )
810 CALL zlacpy( uplo, n, n, b, ldb, bb, ldb )
812 CALL zhegvx( 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 )
'ZHEGVX(V,A' // uplo //
818 $
')', iinfo, n, jtype, ioldsd
820 IF( iinfo.LT.0 )
THEN
823 result( ntest ) = ulpinv
830 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
831 $ ldz, d, work, rwork, result( ntest ) )
835 CALL zlacpy(
' ', n, n, a, lda, ab, lda )
836 CALL zlacpy( uplo, n, n, b, ldb, bb, ldb )
845 CALL zhegvx( 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 )
'ZHEGVX(V,V,' //
851 $ uplo //
')', iinfo, n, jtype, ioldsd
853 IF( iinfo.LT.0 )
THEN
856 result( ntest ) = ulpinv
863 CALL zsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
864 $ ldz, d, work, rwork, result( ntest ) )
868 CALL zlacpy(
' ', n, n, a, lda, ab, lda )
869 CALL zlacpy( uplo, n, n, b, ldb, bb, ldb )
871 CALL zhegvx( 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 )
'ZHEGVX(V,I,' //
877 $ uplo //
')', iinfo, n, jtype, ioldsd
879 IF( iinfo.LT.0 )
THEN
882 result( ntest ) = ulpinv
889 CALL zsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
890 $ ldz, d, work, rwork, result( ntest ) )
900 IF( lsame( uplo,
'U' ) )
THEN
920 CALL zhpgv( ibtype,
'V', uplo, n, ap, bp, d, z, ldz,
921 $ work, rwork, iinfo )
922 IF( iinfo.NE.0 )
THEN
923 WRITE( nounit, fmt = 9999 )
'ZHPGV(V,' // uplo //
924 $
')', iinfo, n, jtype, ioldsd
926 IF( iinfo.LT.0 )
THEN
929 result( ntest ) = ulpinv
936 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
937 $ ldz, d, work, rwork, result( ntest ) )
945 IF( lsame( uplo,
'U' ) )
THEN
965 CALL zhpgvd( 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 )
'ZHPGVD(V,' // uplo //
970 $
')', iinfo, n, jtype, ioldsd
972 IF( iinfo.LT.0 )
THEN
975 result( ntest ) = ulpinv
982 CALL zsgt01( 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 zhpgvx( 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 )
'ZHPGVX(V,A' // uplo //
1016 $
')', iinfo, n, jtype, ioldsd
1018 IF( iinfo.LT.0 )
THEN
1021 result( ntest ) = ulpinv
1028 CALL zsgt01( 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 zhpgvx( 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 )
'ZHPGVX(V,V' // uplo //
1062 $
')', iinfo, n, jtype, ioldsd
1064 IF( iinfo.LT.0 )
THEN
1067 result( ntest ) = ulpinv
1074 CALL zsgt01( 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 zhpgvx( 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 )
'ZHPGVX(V,I' // uplo //
1106 $
')', iinfo, n, jtype, ioldsd
1108 IF( iinfo.LT.0 )
THEN
1111 result( ntest ) = ulpinv
1118 CALL zsgt01( 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 zhbgv(
'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 )
'ZHBGV(V,' //
1155 $ uplo //
')', iinfo, n, jtype, ioldsd
1157 IF( iinfo.LT.0 )
THEN
1160 result( ntest ) = ulpinv
1167 CALL zsgt01( 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 zhbgvd(
'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 )
'ZHBGVD(V,' //
1201 $ uplo //
')', iinfo, n, jtype, ioldsd
1203 IF( iinfo.LT.0 )
THEN
1206 result( ntest ) = ulpinv
1213 CALL zsgt01( 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 zhbgvx(
'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 )
'ZHBGVX(V,A' //
1248 $ uplo //
')', iinfo, n, jtype, ioldsd
1250 IF( iinfo.LT.0 )
THEN
1253 result( ntest ) = ulpinv
1260 CALL zsgt01( 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 zhbgvx(
'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 )
'ZHBGVX(V,V' //
1295 $ uplo //
')', iinfo, n, jtype, ioldsd
1297 IF( iinfo.LT.0 )
THEN
1300 result( ntest ) = ulpinv
1307 CALL zsgt01( 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 zhbgvx(
'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 )
'ZHBGVX(V,I' //
1340 $ uplo //
')', iinfo, n, jtype, ioldsd
1342 IF( iinfo.LT.0 )
THEN
1345 result( ntest ) = ulpinv
1352 CALL zsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1353 $ ldz, d, work, rwork, result( ntest ) )
1362 ntestt = ntestt + ntest
1363 CALL dlafts(
'ZSG', n, n, jtype, ntest, result, ioldsd,
1364 $ thresh, nounit, nerrs )
1370 CALL dlasum(
'ZSG', nounit, nerrs, ntestt )
1374 9999
FORMAT(
' ZDRVSG2STG: ', a,
' returned INFO=', i6,
'.', / 9x,
1375 $
'N=', i6,
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
')' )
subroutine dlabad(SMALL, LARGE)
DLABAD
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zdrvsg2stg(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)
ZDRVSG2STG
subroutine zsgt01(ITYPE, UPLO, N, M, A, LDA, B, LDB, Z, LDZ, D, WORK, RWORK, RESULT)
ZSGT01
subroutine zlatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
ZLATMS
subroutine zlatmr(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)
ZLATMR
subroutine zhegv_2stage(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, RWORK, INFO)
ZHEGV_2STAGE
subroutine zhegvd(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
ZHEGVD
subroutine zhegvx(ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, RWORK, IWORK, IFAIL, INFO)
ZHEGVX
subroutine zhegv(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, RWORK, INFO)
ZHEGV
subroutine zlacpy(UPLO, M, N, A, LDA, B, LDB)
ZLACPY copies all or part of one two-dimensional array to another.
subroutine zlaset(UPLO, M, N, ALPHA, BETA, A, LDA)
ZLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine zhbgvd(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
ZHBGVD
subroutine zhbgv(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, RWORK, INFO)
ZHBGV
subroutine zhpgvx(ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO)
ZHPGVX
subroutine zhbgvx(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)
ZHBGVX
subroutine zhpgv(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, RWORK, INFO)
ZHPGV
subroutine zhpgvd(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
ZHPGVD
subroutine dlasum(TYPE, IOUNIT, IE, NRUN)
DLASUM
subroutine dlafts(TYPE, M, N, IMAT, NTESTS, RESULT, ISEED, THRESH, IOUNIT, IE)
DLAFTS