374 SUBROUTINE cdrvsg2stg( 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
393 INTEGER ISEED( 4 ), IWORK( * ), NN( * )
394 REAL D( * ), D2( * ), RESULT( * ), RWORK( * )
395 COMPLEX A( lda, * ), AB( lda, * ), AP( * ),
396 $ b( ldb, * ), bb( ldb, * ), bp( * ), work( * ),
404 parameter ( zero = 0.0e+0, one = 1.0e+0, ten = 10.0e+0 )
406 parameter ( czero = ( 0.0e+0, 0.0e+0 ),
407 $ cone = ( 1.0e+0, 0.0e+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 REAL 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 ),
429 EXTERNAL lsame, slamch, slarnd
438 INTRINSIC abs,
REAL, 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(
'CDRVSG2STG', -info )
489 IF( nsizes.EQ.0 .OR. ntypes.EQ.0 )
494 unfl = slamch(
'Safe minimum' )
495 ovfl = slamch(
'Overflow' )
497 ulp = slamch(
'Epsilon' )*slamch(
'Base' )
499 rtunfl = sqrt( unfl )
500 rtovfl = sqrt( ovfl )
503 iseed2( i ) = iseed( i )
511 DO 650 jsize = 1, nsizes
513 aninv = one /
REAL( 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 claset(
'Full', lda, n, czero, czero, a, lda )
585 ELSE IF( itype.EQ.2 )
THEN
591 CALL claset(
'Full', lda, n, czero, czero, a, lda )
593 a( jcol, jcol ) = anorm
596 ELSE IF( itype.EQ.4 )
THEN
602 CALL clatms( 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 clatms( 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 clatmr( 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 clatmr( 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 clatms( 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 )*slarnd( 1, iseed2 ) )
679 iu = 1 + int( ( n-1 )*slarnd( 1, iseed2 ) )
708 CALL clatms( n, n,
'U', iseed,
'P', rwork, 5, ten,
709 $ one, kb, kb, uplo, b, ldb, work( n+1 ),
716 CALL clacpy(
' ', n, n, a, lda, z, ldz )
717 CALL clacpy( uplo, n, n, b, ldb, bb, ldb )
719 CALL chegv( 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 )
'CHEGV(V,' // uplo //
723 $
')', iinfo, n, jtype, ioldsd
725 IF( iinfo.LT.0 )
THEN
728 result( ntest ) = ulpinv
735 CALL csgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
736 $ ldz, d, work, rwork, result( ntest ) )
742 CALL clacpy(
' ', n, n, a, lda, z, ldz )
743 CALL clacpy( 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 $
'CHEGV_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 clacpy(
' ', n, n, a, lda, z, ldz )
786 CALL clacpy( uplo, n, n, b, ldb, bb, ldb )
788 CALL chegvd( 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 )
'CHEGVD(V,' // uplo //
793 $
')', iinfo, n, jtype, ioldsd
795 IF( iinfo.LT.0 )
THEN
798 result( ntest ) = ulpinv
805 CALL csgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
806 $ ldz, d, work, rwork, result( ntest ) )
812 CALL clacpy(
' ', n, n, a, lda, ab, lda )
813 CALL clacpy( uplo, n, n, b, ldb, bb, ldb )
815 CALL chegvx( 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 )
'CHEGVX(V,A' // uplo //
821 $
')', iinfo, n, jtype, ioldsd
823 IF( iinfo.LT.0 )
THEN
826 result( ntest ) = ulpinv
833 CALL csgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
834 $ ldz, d, work, rwork, result( ntest ) )
838 CALL clacpy(
' ', n, n, a, lda, ab, lda )
839 CALL clacpy( uplo, n, n, b, ldb, bb, ldb )
848 CALL chegvx( 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 )
'CHEGVX(V,V,' //
854 $ uplo //
')', iinfo, n, jtype, ioldsd
856 IF( iinfo.LT.0 )
THEN
859 result( ntest ) = ulpinv
866 CALL csgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
867 $ ldz, d, work, rwork, result( ntest ) )
871 CALL clacpy(
' ', n, n, a, lda, ab, lda )
872 CALL clacpy( uplo, n, n, b, ldb, bb, ldb )
874 CALL chegvx( 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 )
'CHEGVX(V,I,' //
880 $ uplo //
')', iinfo, n, jtype, ioldsd
882 IF( iinfo.LT.0 )
THEN
885 result( ntest ) = ulpinv
892 CALL csgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
893 $ ldz, d, work, rwork, result( ntest ) )
903 IF( lsame( uplo,
'U' ) )
THEN
923 CALL chpgv( ibtype,
'V', uplo, n, ap, bp, d, z, ldz,
924 $ work, rwork, iinfo )
925 IF( iinfo.NE.0 )
THEN
926 WRITE( nounit, fmt = 9999 )
'CHPGV(V,' // uplo //
927 $
')', iinfo, n, jtype, ioldsd
929 IF( iinfo.LT.0 )
THEN
932 result( ntest ) = ulpinv
939 CALL csgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
940 $ ldz, d, work, rwork, result( ntest ) )
948 IF( lsame( uplo,
'U' ) )
THEN
968 CALL chpgvd( 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 )
'CHPGVD(V,' // uplo //
973 $
')', iinfo, n, jtype, ioldsd
975 IF( iinfo.LT.0 )
THEN
978 result( ntest ) = ulpinv
985 CALL csgt01( 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 chpgvx( 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 )
'CHPGVX(V,A' // uplo //
1019 $
')', iinfo, n, jtype, ioldsd
1021 IF( iinfo.LT.0 )
THEN
1024 result( ntest ) = ulpinv
1031 CALL csgt01( 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 chpgvx( 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 )
'CHPGVX(V,V' // uplo //
1065 $
')', iinfo, n, jtype, ioldsd
1067 IF( iinfo.LT.0 )
THEN
1070 result( ntest ) = ulpinv
1077 CALL csgt01( 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 chpgvx( 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 )
'CHPGVX(V,I' // uplo //
1109 $
')', iinfo, n, jtype, ioldsd
1111 IF( iinfo.LT.0 )
THEN
1114 result( ntest ) = ulpinv
1121 CALL csgt01( 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 chbgv(
'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 )
'CHBGV(V,' //
1158 $ uplo //
')', iinfo, n, jtype, ioldsd
1160 IF( iinfo.LT.0 )
THEN
1163 result( ntest ) = ulpinv
1170 CALL csgt01( 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 chbgvd(
'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 )
'CHBGVD(V,' //
1204 $ uplo //
')', iinfo, n, jtype, ioldsd
1206 IF( iinfo.LT.0 )
THEN
1209 result( ntest ) = ulpinv
1216 CALL csgt01( 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 chbgvx(
'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 )
'CHBGVX(V,A' //
1251 $ uplo //
')', iinfo, n, jtype, ioldsd
1253 IF( iinfo.LT.0 )
THEN
1256 result( ntest ) = ulpinv
1263 CALL csgt01( 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 chbgvx(
'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 )
'CHBGVX(V,V' //
1298 $ uplo //
')', iinfo, n, jtype, ioldsd
1300 IF( iinfo.LT.0 )
THEN
1303 result( ntest ) = ulpinv
1310 CALL csgt01( 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 chbgvx(
'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 )
'CHBGVX(V,I' //
1343 $ uplo //
')', iinfo, n, jtype, ioldsd
1345 IF( iinfo.LT.0 )
THEN
1348 result( ntest ) = ulpinv
1355 CALL csgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1356 $ ldz, d, work, rwork, result( ntest ) )
1365 ntestt = ntestt + ntest
1366 CALL slafts(
'CSG', n, n, jtype, ntest, result, ioldsd,
1367 $ thresh, nounit, nerrs )
1373 CALL slasum(
'CSG', nounit, nerrs, ntestt )
1377 9999
FORMAT(
' CDRVSG2STG: ', a,
' returned INFO=', i6,
'.', / 9x,
1378 $
'N=', i6,
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
')' )
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 chbgvd(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
CHBGVD
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 csgt01(ITYPE, UPLO, N, M, A, LDA, B, LDB, Z, LDZ, D, WORK, RWORK, RESULT)
CSGT01
subroutine chpgv(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, RWORK, INFO)
CHPGV
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 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 chpgvx(ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO)
CHPGVX
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 xerbla(SRNAME, INFO)
XERBLA
subroutine clatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
CLATMS
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 chpgvd(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
CHPGVD
subroutine chegv(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, RWORK, INFO)
CHEGV
subroutine clacpy(UPLO, M, N, A, LDA, B, LDB)
CLACPY copies all or part of one two-dimensional array to another.
subroutine slabad(SMALL, LARGE)
SLABAD
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 slasum(TYPE, IOUNIT, IE, NRUN)
SLASUM