374 SUBROUTINE zdrvsg2stg( NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH,
375 $ nounit, a, lda, b, ldb, d, d2, z, ldz, ab,
376 $ bb, ap, bp, work, nwork, rwork, lrwork,
377 $ iwork, liwork, result, info )
387 INTEGER INFO, LDA, LDB, LDZ, LIWORK, LRWORK, NOUNIT,
388 $ nsizes, ntypes, nwork
389 DOUBLE PRECISION THRESH
393 INTEGER ISEED( 4 ), IWORK( * ), NN( * )
394 DOUBLE PRECISION D( * ), D2( * ), RESULT( * ), RWORK( * )
395 COMPLEX*16 A( lda, * ), AB( lda, * ), AP( * ),
396 $ b( ldb, * ), bb( ldb, * ), bp( * ), work( * ),
403 DOUBLE PRECISION ZERO, ONE, TEN
404 parameter ( zero = 0.0d+0, one = 1.0d+0, ten = 10.0d+0 )
405 COMPLEX*16 CZERO, CONE
406 parameter ( czero = ( 0.0d+0, 0.0d+0 ),
407 $ cone = ( 1.0d+0, 0.0d+0 ) )
409 parameter ( maxtyp = 21 )
414 INTEGER I, IBTYPE, IBUPLO, IINFO, IJ, IL, IMODE, ITEMP,
415 $ itype, iu, j, jcol, jsize, jtype, ka, ka9, kb,
416 $ kb9, m, mtypes, n, nerrs, nmats, nmax, ntest,
418 DOUBLE PRECISION ABSTOL, ANINV, ANORM, COND, OVFL, RTOVFL,
419 $ rtunfl, ulp, ulpinv, unfl, vl, vu, temp1, temp2
422 INTEGER IDUMMA( 1 ), IOLDSD( 4 ), ISEED2( 4 ),
423 $ kmagn( maxtyp ), kmode( maxtyp ),
428 DOUBLE PRECISION DLAMCH, DLARND
429 EXTERNAL lsame, dlamch, dlarnd
438 INTRINSIC abs, dble, max, min, sqrt
441 DATA ktype / 1, 2, 5*4, 5*5, 3*8, 6*9 /
442 DATA kmagn / 2*1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 3, 1,
444 DATA kmode / 2*0, 4, 3, 1, 4, 4, 4, 3, 1, 4, 4, 0,
457 nmax = max( nmax, nn( j ) )
464 IF( nsizes.LT.0 )
THEN
466 ELSE IF( badnn )
THEN
468 ELSE IF( ntypes.LT.0 )
THEN
470 ELSE IF( lda.LE.1 .OR. lda.LT.nmax )
THEN
472 ELSE IF( ldz.LE.1 .OR. ldz.LT.nmax )
THEN
474 ELSE IF( 2*max( nmax, 2 )**2.GT.nwork )
THEN
476 ELSE IF( 2*max( nmax, 2 )**2.GT.lrwork )
THEN
478 ELSE IF( 2*max( nmax, 2 )**2.GT.liwork )
THEN
483 CALL xerbla(
'ZDRVSG2STG', -info )
489 IF( nsizes.EQ.0 .OR. ntypes.EQ.0 )
494 unfl = dlamch(
'Safe minimum' )
495 ovfl = dlamch(
'Overflow' )
497 ulp = dlamch(
'Epsilon' )*dlamch(
'Base' )
499 rtunfl = sqrt( unfl )
500 rtovfl = sqrt( ovfl )
503 iseed2( i ) = iseed( i )
511 DO 650 jsize = 1, nsizes
513 aninv = one / dble( max( 1, n ) )
515 IF( nsizes.NE.1 )
THEN
516 mtypes = min( maxtyp, ntypes )
518 mtypes = min( maxtyp+1, ntypes )
523 DO 640 jtype = 1, mtypes
524 IF( .NOT.dotype( jtype ) )
530 ioldsd( j ) = iseed( j )
548 IF( mtypes.GT.maxtyp )
551 itype = ktype( jtype )
552 imode = kmode( jtype )
556 GO TO ( 40, 50, 60 )kmagn( jtype )
563 anorm = ( rtovfl*ulp )*aninv
567 anorm = rtunfl*n*ulpinv
577 IF( itype.EQ.1 )
THEN
583 CALL zlaset(
'Full', lda, n, czero, czero, a, lda )
585 ELSE IF( itype.EQ.2 )
THEN
591 CALL zlaset(
'Full', lda, n, czero, czero, a, lda )
593 a( jcol, jcol ) = anorm
596 ELSE IF( itype.EQ.4 )
THEN
602 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
603 $ anorm, 0, 0,
'N', a, lda, work, iinfo )
605 ELSE IF( itype.EQ.5 )
THEN
611 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
612 $ anorm, n, n,
'N', a, lda, work, iinfo )
614 ELSE IF( itype.EQ.7 )
THEN
620 CALL zlatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
621 $
'T',
'N', work( n+1 ), 1, one,
622 $ work( 2*n+1 ), 1, one,
'N', idumma, 0, 0,
623 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
625 ELSE IF( itype.EQ.8 )
THEN
631 CALL zlatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
632 $
'T',
'N', work( n+1 ), 1, one,
633 $ work( 2*n+1 ), 1, one,
'N', idumma, n, n,
634 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
636 ELSE IF( itype.EQ.9 )
THEN
650 IF( kb9.GT.ka9 )
THEN
654 ka = max( 0, min( n-1, ka9 ) )
655 kb = max( 0, min( n-1, kb9 ) )
656 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
657 $ anorm, ka, ka,
'N', a, lda, work, iinfo )
664 IF( iinfo.NE.0 )
THEN
665 WRITE( nounit, fmt = 9999 )
'Generator', iinfo, n, jtype,
678 il = 1 + int( ( n-1 )*dlarnd( 1, iseed2 ) )
679 iu = 1 + int( ( n-1 )*dlarnd( 1, iseed2 ) )
708 CALL zlatms( n, n,
'U', iseed,
'P', rwork, 5, ten,
709 $ one, kb, kb, uplo, b, ldb, work( n+1 ),
716 CALL zlacpy(
' ', n, n, a, lda, z, ldz )
717 CALL zlacpy( uplo, n, n, b, ldb, bb, ldb )
719 CALL zhegv( ibtype,
'V', uplo, n, z, ldz, bb, ldb, d,
720 $ work, nwork, rwork, iinfo )
721 IF( iinfo.NE.0 )
THEN
722 WRITE( nounit, fmt = 9999 )
'ZHEGV(V,' // uplo //
723 $
')', iinfo, n, jtype, ioldsd
725 IF( iinfo.LT.0 )
THEN
728 result( ntest ) = ulpinv
735 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
736 $ ldz, d, work, rwork, result( ntest ) )
742 CALL zlacpy(
' ', n, n, a, lda, z, ldz )
743 CALL zlacpy( uplo, n, n, b, ldb, bb, ldb )
746 $ bb, ldb, d2, work, nwork, rwork,
748 IF( iinfo.NE.0 )
THEN
749 WRITE( nounit, fmt = 9999 )
750 $
'ZHEGV_2STAGE(V,' // uplo //
751 $
')', iinfo, n, jtype, ioldsd
753 IF( iinfo.LT.0 )
THEN
756 result( ntest ) = ulpinv
773 temp1 = max( temp1, abs( d( j ) ),
775 temp2 = max( temp2, abs( d( j )-d2( j ) ) )
778 result( ntest ) = temp2 /
779 $ max( unfl, ulp*max( temp1, temp2 ) )
785 CALL zlacpy(
' ', n, n, a, lda, z, ldz )
786 CALL zlacpy( uplo, n, n, b, ldb, bb, ldb )
788 CALL zhegvd( ibtype,
'V', uplo, n, z, ldz, bb, ldb, d,
789 $ work, nwork, rwork, lrwork, iwork,
791 IF( iinfo.NE.0 )
THEN
792 WRITE( nounit, fmt = 9999 )
'ZHEGVD(V,' // uplo //
793 $
')', iinfo, n, jtype, ioldsd
795 IF( iinfo.LT.0 )
THEN
798 result( ntest ) = ulpinv
805 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
806 $ ldz, d, work, rwork, result( ntest ) )
812 CALL zlacpy(
' ', n, n, a, lda, ab, lda )
813 CALL zlacpy( uplo, n, n, b, ldb, bb, ldb )
815 CALL zhegvx( ibtype,
'V',
'A', uplo, n, ab, lda, bb,
816 $ ldb, vl, vu, il, iu, abstol, m, d, z,
817 $ ldz, work, nwork, rwork, iwork( n+1 ),
819 IF( iinfo.NE.0 )
THEN
820 WRITE( nounit, fmt = 9999 )
'ZHEGVX(V,A' // uplo //
821 $
')', iinfo, n, jtype, ioldsd
823 IF( iinfo.LT.0 )
THEN
826 result( ntest ) = ulpinv
833 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
834 $ ldz, d, work, rwork, result( ntest ) )
838 CALL zlacpy(
' ', n, n, a, lda, ab, lda )
839 CALL zlacpy( uplo, n, n, b, ldb, bb, ldb )
848 CALL zhegvx( ibtype,
'V',
'V', uplo, n, ab, lda, bb,
849 $ ldb, vl, vu, il, iu, abstol, m, d, z,
850 $ ldz, work, nwork, rwork, iwork( n+1 ),
852 IF( iinfo.NE.0 )
THEN
853 WRITE( nounit, fmt = 9999 )
'ZHEGVX(V,V,' //
854 $ uplo //
')', iinfo, n, jtype, ioldsd
856 IF( iinfo.LT.0 )
THEN
859 result( ntest ) = ulpinv
866 CALL zsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
867 $ ldz, d, work, rwork, result( ntest ) )
871 CALL zlacpy(
' ', n, n, a, lda, ab, lda )
872 CALL zlacpy( uplo, n, n, b, ldb, bb, ldb )
874 CALL zhegvx( ibtype,
'V',
'I', uplo, n, ab, lda, bb,
875 $ ldb, vl, vu, il, iu, abstol, m, d, z,
876 $ ldz, work, nwork, rwork, iwork( n+1 ),
878 IF( iinfo.NE.0 )
THEN
879 WRITE( nounit, fmt = 9999 )
'ZHEGVX(V,I,' //
880 $ uplo //
')', iinfo, n, jtype, ioldsd
882 IF( iinfo.LT.0 )
THEN
885 result( ntest ) = ulpinv
892 CALL zsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
893 $ ldz, d, work, rwork, result( ntest ) )
903 IF( lsame( uplo,
'U' ) )
THEN
923 CALL zhpgv( ibtype,
'V', uplo, n, ap, bp, d, z, ldz,
924 $ work, rwork, iinfo )
925 IF( iinfo.NE.0 )
THEN
926 WRITE( nounit, fmt = 9999 )
'ZHPGV(V,' // uplo //
927 $
')', iinfo, n, jtype, ioldsd
929 IF( iinfo.LT.0 )
THEN
932 result( ntest ) = ulpinv
939 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
940 $ ldz, d, work, rwork, result( ntest ) )
948 IF( lsame( uplo,
'U' ) )
THEN
968 CALL zhpgvd( ibtype,
'V', uplo, n, ap, bp, d, z, ldz,
969 $ work, nwork, rwork, lrwork, iwork,
971 IF( iinfo.NE.0 )
THEN
972 WRITE( nounit, fmt = 9999 )
'ZHPGVD(V,' // uplo //
973 $
')', iinfo, n, jtype, ioldsd
975 IF( iinfo.LT.0 )
THEN
978 result( ntest ) = ulpinv
985 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
986 $ ldz, d, work, rwork, result( ntest ) )
994 IF( lsame( uplo,
'U' ) )
THEN
1007 ap( ij ) = a( i, j )
1008 bp( ij ) = b( i, j )
1014 CALL zhpgvx( ibtype,
'V',
'A', uplo, n, ap, bp, vl,
1015 $ vu, il, iu, abstol, m, d, z, ldz, work,
1016 $ rwork, iwork( n+1 ), iwork, info )
1017 IF( iinfo.NE.0 )
THEN
1018 WRITE( nounit, fmt = 9999 )
'ZHPGVX(V,A' // uplo //
1019 $
')', iinfo, n, jtype, ioldsd
1021 IF( iinfo.LT.0 )
THEN
1024 result( ntest ) = ulpinv
1031 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
1032 $ ldz, d, work, rwork, result( ntest ) )
1038 IF( lsame( uplo,
'U' ) )
THEN
1042 ap( ij ) = a( i, j )
1043 bp( ij ) = b( i, j )
1051 ap( ij ) = a( i, j )
1052 bp( ij ) = b( i, j )
1060 CALL zhpgvx( ibtype,
'V',
'V', uplo, n, ap, bp, vl,
1061 $ vu, il, iu, abstol, m, d, z, ldz, work,
1062 $ rwork, iwork( n+1 ), iwork, info )
1063 IF( iinfo.NE.0 )
THEN
1064 WRITE( nounit, fmt = 9999 )
'ZHPGVX(V,V' // uplo //
1065 $
')', iinfo, n, jtype, ioldsd
1067 IF( iinfo.LT.0 )
THEN
1070 result( ntest ) = ulpinv
1077 CALL zsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1078 $ ldz, d, work, rwork, result( ntest ) )
1084 IF( lsame( uplo,
'U' ) )
THEN
1088 ap( ij ) = a( i, j )
1089 bp( ij ) = b( i, j )
1097 ap( ij ) = a( i, j )
1098 bp( ij ) = b( i, j )
1104 CALL zhpgvx( ibtype,
'V',
'I', uplo, n, ap, bp, vl,
1105 $ vu, il, iu, abstol, m, d, z, ldz, work,
1106 $ rwork, iwork( n+1 ), iwork, info )
1107 IF( iinfo.NE.0 )
THEN
1108 WRITE( nounit, fmt = 9999 )
'ZHPGVX(V,I' // uplo //
1109 $
')', iinfo, n, jtype, ioldsd
1111 IF( iinfo.LT.0 )
THEN
1114 result( ntest ) = ulpinv
1121 CALL zsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1122 $ ldz, d, work, rwork, result( ntest ) )
1126 IF( ibtype.EQ.1 )
THEN
1134 IF( lsame( uplo,
'U' ) )
THEN
1136 DO 320 i = max( 1, j-ka ), j
1137 ab( ka+1+i-j, j ) = a( i, j )
1139 DO 330 i = max( 1, j-kb ), j
1140 bb( kb+1+i-j, j ) = b( i, j )
1145 DO 350 i = j, min( n, j+ka )
1146 ab( 1+i-j, j ) = a( i, j )
1148 DO 360 i = j, min( n, j+kb )
1149 bb( 1+i-j, j ) = b( i, j )
1154 CALL zhbgv(
'V', uplo, n, ka, kb, ab, lda, bb, ldb,
1155 $ d, z, ldz, work, rwork, iinfo )
1156 IF( iinfo.NE.0 )
THEN
1157 WRITE( nounit, fmt = 9999 )
'ZHBGV(V,' //
1158 $ uplo //
')', iinfo, n, jtype, ioldsd
1160 IF( iinfo.LT.0 )
THEN
1163 result( ntest ) = ulpinv
1170 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
1171 $ ldz, d, work, rwork, result( ntest ) )
1179 IF( lsame( uplo,
'U' ) )
THEN
1181 DO 380 i = max( 1, j-ka ), j
1182 ab( ka+1+i-j, j ) = a( i, j )
1184 DO 390 i = max( 1, j-kb ), j
1185 bb( kb+1+i-j, j ) = b( i, j )
1190 DO 410 i = j, min( n, j+ka )
1191 ab( 1+i-j, j ) = a( i, j )
1193 DO 420 i = j, min( n, j+kb )
1194 bb( 1+i-j, j ) = b( i, j )
1199 CALL zhbgvd(
'V', uplo, n, ka, kb, ab, lda, bb,
1200 $ ldb, d, z, ldz, work, nwork, rwork,
1201 $ lrwork, iwork, liwork, iinfo )
1202 IF( iinfo.NE.0 )
THEN
1203 WRITE( nounit, fmt = 9999 )
'ZHBGVD(V,' //
1204 $ uplo //
')', iinfo, n, jtype, ioldsd
1206 IF( iinfo.LT.0 )
THEN
1209 result( ntest ) = ulpinv
1216 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
1217 $ ldz, d, work, rwork, result( ntest ) )
1225 IF( lsame( uplo,
'U' ) )
THEN
1227 DO 440 i = max( 1, j-ka ), j
1228 ab( ka+1+i-j, j ) = a( i, j )
1230 DO 450 i = max( 1, j-kb ), j
1231 bb( kb+1+i-j, j ) = b( i, j )
1236 DO 470 i = j, min( n, j+ka )
1237 ab( 1+i-j, j ) = a( i, j )
1239 DO 480 i = j, min( n, j+kb )
1240 bb( 1+i-j, j ) = b( i, j )
1245 CALL zhbgvx(
'V',
'A', uplo, n, ka, kb, ab, lda,
1246 $ bb, ldb, bp, max( 1, n ), vl, vu, il,
1247 $ iu, abstol, m, d, z, ldz, work, rwork,
1248 $ iwork( n+1 ), iwork, iinfo )
1249 IF( iinfo.NE.0 )
THEN
1250 WRITE( nounit, fmt = 9999 )
'ZHBGVX(V,A' //
1251 $ uplo //
')', iinfo, n, jtype, ioldsd
1253 IF( iinfo.LT.0 )
THEN
1256 result( ntest ) = ulpinv
1263 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
1264 $ ldz, d, work, rwork, result( ntest ) )
1270 IF( lsame( uplo,
'U' ) )
THEN
1272 DO 500 i = max( 1, j-ka ), j
1273 ab( ka+1+i-j, j ) = a( i, j )
1275 DO 510 i = max( 1, j-kb ), j
1276 bb( kb+1+i-j, j ) = b( i, j )
1281 DO 530 i = j, min( n, j+ka )
1282 ab( 1+i-j, j ) = a( i, j )
1284 DO 540 i = j, min( n, j+kb )
1285 bb( 1+i-j, j ) = b( i, j )
1292 CALL zhbgvx(
'V',
'V', uplo, n, ka, kb, ab, lda,
1293 $ bb, ldb, bp, max( 1, n ), vl, vu, il,
1294 $ iu, abstol, m, d, z, ldz, work, rwork,
1295 $ iwork( n+1 ), iwork, iinfo )
1296 IF( iinfo.NE.0 )
THEN
1297 WRITE( nounit, fmt = 9999 )
'ZHBGVX(V,V' //
1298 $ uplo //
')', iinfo, n, jtype, ioldsd
1300 IF( iinfo.LT.0 )
THEN
1303 result( ntest ) = ulpinv
1310 CALL zsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1311 $ ldz, d, work, rwork, result( ntest ) )
1317 IF( lsame( uplo,
'U' ) )
THEN
1319 DO 560 i = max( 1, j-ka ), j
1320 ab( ka+1+i-j, j ) = a( i, j )
1322 DO 570 i = max( 1, j-kb ), j
1323 bb( kb+1+i-j, j ) = b( i, j )
1328 DO 590 i = j, min( n, j+ka )
1329 ab( 1+i-j, j ) = a( i, j )
1331 DO 600 i = j, min( n, j+kb )
1332 bb( 1+i-j, j ) = b( i, j )
1337 CALL zhbgvx(
'V',
'I', uplo, n, ka, kb, ab, lda,
1338 $ bb, ldb, bp, max( 1, n ), vl, vu, il,
1339 $ iu, abstol, m, d, z, ldz, work, rwork,
1340 $ iwork( n+1 ), iwork, iinfo )
1341 IF( iinfo.NE.0 )
THEN
1342 WRITE( nounit, fmt = 9999 )
'ZHBGVX(V,I' //
1343 $ uplo //
')', iinfo, n, jtype, ioldsd
1345 IF( iinfo.LT.0 )
THEN
1348 result( ntest ) = ulpinv
1355 CALL zsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1356 $ ldz, d, work, rwork, result( ntest ) )
1365 ntestt = ntestt + ntest
1366 CALL dlafts(
'ZSG', n, n, jtype, ntest, result, ioldsd,
1367 $ thresh, nounit, nerrs )
1373 CALL dlasum(
'ZSG', nounit, nerrs, ntestt )
1377 9999
FORMAT(
' ZDRVSG2STG: ', a,
' returned INFO=', i6,
'.', / 9x,
1378 $
'N=', i6,
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
')' )
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 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 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 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 zhbgvd(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
ZHBGVD
subroutine dlafts(TYPE, M, N, IMAT, NTESTS, RESULT, ISEED, THRESH, IOUNIT, IE)
DLAFTS
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zsgt01(ITYPE, UPLO, N, M, A, LDA, B, LDB, Z, LDZ, D, WORK, RWORK, RESULT)
ZSGT01
subroutine zhegvd(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
ZHEGVD
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 dlabad(SMALL, LARGE)
DLABAD
subroutine zhpgv(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, RWORK, INFO)
ZHPGV
subroutine dlasum(TYPE, IOUNIT, IE, NRUN)
DLASUM
subroutine zlatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
ZLATMS
subroutine zhpgvd(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
ZHPGVD
subroutine zhegv_2stage(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, RWORK, INFO)
ZHEGV_2STAGE
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