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' )
493 ulp = dlamch(
'Epsilon' )*dlamch(
'Base' )
495 rtunfl = sqrt( unfl )
496 rtovfl = sqrt( ovfl )
499 iseed2( i ) = iseed( i )
507 DO 650 jsize = 1, nsizes
509 aninv = one / dble( max( 1, n ) )
511 IF( nsizes.NE.1 )
THEN
512 mtypes = min( maxtyp, ntypes )
514 mtypes = min( maxtyp+1, ntypes )
519 DO 640 jtype = 1, mtypes
520 IF( .NOT.dotype( jtype ) )
526 ioldsd( j ) = iseed( j )
544 IF( mtypes.GT.maxtyp )
547 itype = ktype( jtype )
548 imode = kmode( jtype )
552 GO TO ( 40, 50, 60 )kmagn( jtype )
559 anorm = ( rtovfl*ulp )*aninv
563 anorm = rtunfl*n*ulpinv
573 IF( itype.EQ.1 )
THEN
579 CALL zlaset(
'Full', lda, n, czero, czero, a, lda )
581 ELSE IF( itype.EQ.2 )
THEN
587 CALL zlaset(
'Full', lda, n, czero, czero, a, lda )
589 a( jcol, jcol ) = anorm
592 ELSE IF( itype.EQ.4 )
THEN
598 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
599 $ anorm, 0, 0,
'N', a, lda, work, iinfo )
601 ELSE IF( itype.EQ.5 )
THEN
607 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
608 $ anorm, n, n,
'N', a, lda, work, iinfo )
610 ELSE IF( itype.EQ.7 )
THEN
616 CALL zlatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
617 $
'T',
'N', work( n+1 ), 1, one,
618 $ work( 2*n+1 ), 1, one,
'N', idumma, 0, 0,
619 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
621 ELSE IF( itype.EQ.8 )
THEN
627 CALL zlatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
628 $
'T',
'N', work( n+1 ), 1, one,
629 $ work( 2*n+1 ), 1, one,
'N', idumma, n, n,
630 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
632 ELSE IF( itype.EQ.9 )
THEN
646 IF( kb9.GT.ka9 )
THEN
650 ka = max( 0, min( n-1, ka9 ) )
651 kb = max( 0, min( n-1, kb9 ) )
652 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
653 $ anorm, ka, ka,
'N', a, lda, work, iinfo )
660 IF( iinfo.NE.0 )
THEN
661 WRITE( nounit, fmt = 9999 )
'Generator', iinfo, n, jtype,
674 il = 1 + int( ( n-1 )*dlarnd( 1, iseed2 ) )
675 iu = 1 + int( ( n-1 )*dlarnd( 1, iseed2 ) )
704 CALL zlatms( n, n,
'U', iseed,
'P', rwork, 5, ten,
705 $ one, kb, kb, uplo, b, ldb, work( n+1 ),
712 CALL zlacpy(
' ', n, n, a, lda, z, ldz )
713 CALL zlacpy( uplo, n, n, b, ldb, bb, ldb )
715 CALL zhegv( ibtype,
'V', uplo, n, z, ldz, bb, ldb, d,
716 $ work, nwork, rwork, iinfo )
717 IF( iinfo.NE.0 )
THEN
718 WRITE( nounit, fmt = 9999 )
'ZHEGV(V,' // uplo //
719 $
')', iinfo, n, jtype, ioldsd
721 IF( iinfo.LT.0 )
THEN
724 result( ntest ) = ulpinv
731 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
732 $ ldz, d, work, rwork, result( ntest ) )
738 CALL zlacpy(
' ', n, n, a, lda, z, ldz )
739 CALL zlacpy( uplo, n, n, b, ldb, bb, ldb )
742 $ bb, ldb, d2, work, nwork, rwork,
744 IF( iinfo.NE.0 )
THEN
745 WRITE( nounit, fmt = 9999 )
746 $
'ZHEGV_2STAGE(V,' // uplo //
747 $
')', iinfo, n, jtype, ioldsd
749 IF( iinfo.LT.0 )
THEN
752 result( ntest ) = ulpinv
769 temp1 = max( temp1, abs( d( j ) ),
771 temp2 = max( temp2, abs( d( j )-d2( j ) ) )
774 result( ntest ) = temp2 /
775 $ max( unfl, ulp*max( temp1, temp2 ) )
781 CALL zlacpy(
' ', n, n, a, lda, z, ldz )
782 CALL zlacpy( uplo, n, n, b, ldb, bb, ldb )
784 CALL zhegvd( ibtype,
'V', uplo, n, z, ldz, bb, ldb, d,
785 $ work, nwork, rwork, lrwork, iwork,
787 IF( iinfo.NE.0 )
THEN
788 WRITE( nounit, fmt = 9999 )
'ZHEGVD(V,' // uplo //
789 $
')', iinfo, n, jtype, ioldsd
791 IF( iinfo.LT.0 )
THEN
794 result( ntest ) = ulpinv
801 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
802 $ ldz, d, work, rwork, result( ntest ) )
808 CALL zlacpy(
' ', n, n, a, lda, ab, lda )
809 CALL zlacpy( uplo, n, n, b, ldb, bb, ldb )
811 CALL zhegvx( ibtype,
'V',
'A', uplo, n, ab, lda, bb,
812 $ ldb, vl, vu, il, iu, abstol, m, d, z,
813 $ ldz, work, nwork, rwork, iwork( n+1 ),
815 IF( iinfo.NE.0 )
THEN
816 WRITE( nounit, fmt = 9999 )
'ZHEGVX(V,A' // uplo //
817 $
')', iinfo, n, jtype, ioldsd
819 IF( iinfo.LT.0 )
THEN
822 result( ntest ) = ulpinv
829 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
830 $ ldz, d, work, rwork, result( ntest ) )
834 CALL zlacpy(
' ', n, n, a, lda, ab, lda )
835 CALL zlacpy( uplo, n, n, b, ldb, bb, ldb )
844 CALL zhegvx( ibtype,
'V',
'V', uplo, n, ab, lda, bb,
845 $ ldb, vl, vu, il, iu, abstol, m, d, z,
846 $ ldz, work, nwork, rwork, iwork( n+1 ),
848 IF( iinfo.NE.0 )
THEN
849 WRITE( nounit, fmt = 9999 )
'ZHEGVX(V,V,' //
850 $ uplo //
')', iinfo, n, jtype, ioldsd
852 IF( iinfo.LT.0 )
THEN
855 result( ntest ) = ulpinv
862 CALL zsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
863 $ ldz, d, work, rwork, result( ntest ) )
867 CALL zlacpy(
' ', n, n, a, lda, ab, lda )
868 CALL zlacpy( uplo, n, n, b, ldb, bb, ldb )
870 CALL zhegvx( ibtype,
'V',
'I', uplo, n, ab, lda, bb,
871 $ ldb, vl, vu, il, iu, abstol, m, d, z,
872 $ ldz, work, nwork, rwork, iwork( n+1 ),
874 IF( iinfo.NE.0 )
THEN
875 WRITE( nounit, fmt = 9999 )
'ZHEGVX(V,I,' //
876 $ uplo //
')', iinfo, n, jtype, ioldsd
878 IF( iinfo.LT.0 )
THEN
881 result( ntest ) = ulpinv
888 CALL zsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
889 $ ldz, d, work, rwork, result( ntest ) )
899 IF( lsame( uplo,
'U' ) )
THEN
919 CALL zhpgv( ibtype,
'V', uplo, n, ap, bp, d, z, ldz,
920 $ work, rwork, iinfo )
921 IF( iinfo.NE.0 )
THEN
922 WRITE( nounit, fmt = 9999 )
'ZHPGV(V,' // uplo //
923 $
')', iinfo, n, jtype, ioldsd
925 IF( iinfo.LT.0 )
THEN
928 result( ntest ) = ulpinv
935 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
936 $ ldz, d, work, rwork, result( ntest ) )
944 IF( lsame( uplo,
'U' ) )
THEN
964 CALL zhpgvd( ibtype,
'V', uplo, n, ap, bp, d, z, ldz,
965 $ work, nwork, rwork, lrwork, iwork,
967 IF( iinfo.NE.0 )
THEN
968 WRITE( nounit, fmt = 9999 )
'ZHPGVD(V,' // uplo //
969 $
')', iinfo, n, jtype, ioldsd
971 IF( iinfo.LT.0 )
THEN
974 result( ntest ) = ulpinv
981 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
982 $ ldz, d, work, rwork, result( ntest ) )
990 IF( lsame( uplo,
'U' ) )
THEN
1003 ap( ij ) = a( i, j )
1004 bp( ij ) = b( i, j )
1010 CALL zhpgvx( ibtype,
'V',
'A', uplo, n, ap, bp, vl,
1011 $ vu, il, iu, abstol, m, d, z, ldz, work,
1012 $ rwork, iwork( n+1 ), iwork, info )
1013 IF( iinfo.NE.0 )
THEN
1014 WRITE( nounit, fmt = 9999 )
'ZHPGVX(V,A' // uplo //
1015 $
')', iinfo, n, jtype, ioldsd
1017 IF( iinfo.LT.0 )
THEN
1020 result( ntest ) = ulpinv
1027 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
1028 $ ldz, d, work, rwork, result( ntest ) )
1034 IF( lsame( uplo,
'U' ) )
THEN
1038 ap( ij ) = a( i, j )
1039 bp( ij ) = b( i, j )
1047 ap( ij ) = a( i, j )
1048 bp( ij ) = b( i, j )
1056 CALL zhpgvx( ibtype,
'V',
'V', uplo, n, ap, bp, vl,
1057 $ vu, il, iu, abstol, m, d, z, ldz, work,
1058 $ rwork, iwork( n+1 ), iwork, info )
1059 IF( iinfo.NE.0 )
THEN
1060 WRITE( nounit, fmt = 9999 )
'ZHPGVX(V,V' // uplo //
1061 $
')', iinfo, n, jtype, ioldsd
1063 IF( iinfo.LT.0 )
THEN
1066 result( ntest ) = ulpinv
1073 CALL zsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1074 $ ldz, d, work, rwork, result( ntest ) )
1080 IF( lsame( uplo,
'U' ) )
THEN
1084 ap( ij ) = a( i, j )
1085 bp( ij ) = b( i, j )
1093 ap( ij ) = a( i, j )
1094 bp( ij ) = b( i, j )
1100 CALL zhpgvx( ibtype,
'V',
'I', uplo, n, ap, bp, vl,
1101 $ vu, il, iu, abstol, m, d, z, ldz, work,
1102 $ rwork, iwork( n+1 ), iwork, info )
1103 IF( iinfo.NE.0 )
THEN
1104 WRITE( nounit, fmt = 9999 )
'ZHPGVX(V,I' // uplo //
1105 $
')', iinfo, n, jtype, ioldsd
1107 IF( iinfo.LT.0 )
THEN
1110 result( ntest ) = ulpinv
1117 CALL zsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1118 $ ldz, d, work, rwork, result( ntest ) )
1122 IF( ibtype.EQ.1 )
THEN
1130 IF( lsame( uplo,
'U' ) )
THEN
1132 DO 320 i = max( 1, j-ka ), j
1133 ab( ka+1+i-j, j ) = a( i, j )
1135 DO 330 i = max( 1, j-kb ), j
1136 bb( kb+1+i-j, j ) = b( i, j )
1141 DO 350 i = j, min( n, j+ka )
1142 ab( 1+i-j, j ) = a( i, j )
1144 DO 360 i = j, min( n, j+kb )
1145 bb( 1+i-j, j ) = b( i, j )
1150 CALL zhbgv(
'V', uplo, n, ka, kb, ab, lda, bb, ldb,
1151 $ d, z, ldz, work, rwork, iinfo )
1152 IF( iinfo.NE.0 )
THEN
1153 WRITE( nounit, fmt = 9999 )
'ZHBGV(V,' //
1154 $ uplo //
')', iinfo, n, jtype, ioldsd
1156 IF( iinfo.LT.0 )
THEN
1159 result( ntest ) = ulpinv
1166 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
1167 $ ldz, d, work, rwork, result( ntest ) )
1175 IF( lsame( uplo,
'U' ) )
THEN
1177 DO 380 i = max( 1, j-ka ), j
1178 ab( ka+1+i-j, j ) = a( i, j )
1180 DO 390 i = max( 1, j-kb ), j
1181 bb( kb+1+i-j, j ) = b( i, j )
1186 DO 410 i = j, min( n, j+ka )
1187 ab( 1+i-j, j ) = a( i, j )
1189 DO 420 i = j, min( n, j+kb )
1190 bb( 1+i-j, j ) = b( i, j )
1195 CALL zhbgvd(
'V', uplo, n, ka, kb, ab, lda, bb,
1196 $ ldb, d, z, ldz, work, nwork, rwork,
1197 $ lrwork, iwork, liwork, iinfo )
1198 IF( iinfo.NE.0 )
THEN
1199 WRITE( nounit, fmt = 9999 )
'ZHBGVD(V,' //
1200 $ uplo //
')', iinfo, n, jtype, ioldsd
1202 IF( iinfo.LT.0 )
THEN
1205 result( ntest ) = ulpinv
1212 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
1213 $ ldz, d, work, rwork, result( ntest ) )
1221 IF( lsame( uplo,
'U' ) )
THEN
1223 DO 440 i = max( 1, j-ka ), j
1224 ab( ka+1+i-j, j ) = a( i, j )
1226 DO 450 i = max( 1, j-kb ), j
1227 bb( kb+1+i-j, j ) = b( i, j )
1232 DO 470 i = j, min( n, j+ka )
1233 ab( 1+i-j, j ) = a( i, j )
1235 DO 480 i = j, min( n, j+kb )
1236 bb( 1+i-j, j ) = b( i, j )
1241 CALL zhbgvx(
'V',
'A', uplo, n, ka, kb, ab, lda,
1242 $ bb, ldb, bp, max( 1, n ), vl, vu, il,
1243 $ iu, abstol, m, d, z, ldz, work, rwork,
1244 $ iwork( n+1 ), iwork, iinfo )
1245 IF( iinfo.NE.0 )
THEN
1246 WRITE( nounit, fmt = 9999 )
'ZHBGVX(V,A' //
1247 $ uplo //
')', iinfo, n, jtype, ioldsd
1249 IF( iinfo.LT.0 )
THEN
1252 result( ntest ) = ulpinv
1259 CALL zsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
1260 $ ldz, d, work, rwork, result( ntest ) )
1266 IF( lsame( uplo,
'U' ) )
THEN
1268 DO 500 i = max( 1, j-ka ), j
1269 ab( ka+1+i-j, j ) = a( i, j )
1271 DO 510 i = max( 1, j-kb ), j
1272 bb( kb+1+i-j, j ) = b( i, j )
1277 DO 530 i = j, min( n, j+ka )
1278 ab( 1+i-j, j ) = a( i, j )
1280 DO 540 i = j, min( n, j+kb )
1281 bb( 1+i-j, j ) = b( i, j )
1288 CALL zhbgvx(
'V',
'V', uplo, n, ka, kb, ab, lda,
1289 $ bb, ldb, bp, max( 1, n ), vl, vu, il,
1290 $ iu, abstol, m, d, z, ldz, work, rwork,
1291 $ iwork( n+1 ), iwork, iinfo )
1292 IF( iinfo.NE.0 )
THEN
1293 WRITE( nounit, fmt = 9999 )
'ZHBGVX(V,V' //
1294 $ uplo //
')', iinfo, n, jtype, ioldsd
1296 IF( iinfo.LT.0 )
THEN
1299 result( ntest ) = ulpinv
1306 CALL zsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1307 $ ldz, d, work, rwork, result( ntest ) )
1313 IF( lsame( uplo,
'U' ) )
THEN
1315 DO 560 i = max( 1, j-ka ), j
1316 ab( ka+1+i-j, j ) = a( i, j )
1318 DO 570 i = max( 1, j-kb ), j
1319 bb( kb+1+i-j, j ) = b( i, j )
1324 DO 590 i = j, min( n, j+ka )
1325 ab( 1+i-j, j ) = a( i, j )
1327 DO 600 i = j, min( n, j+kb )
1328 bb( 1+i-j, j ) = b( i, j )
1333 CALL zhbgvx(
'V',
'I', uplo, n, ka, kb, ab, lda,
1334 $ bb, ldb, bp, max( 1, n ), vl, vu, il,
1335 $ iu, abstol, m, d, z, ldz, work, rwork,
1336 $ iwork( n+1 ), iwork, iinfo )
1337 IF( iinfo.NE.0 )
THEN
1338 WRITE( nounit, fmt = 9999 )
'ZHBGVX(V,I' //
1339 $ uplo //
')', iinfo, n, jtype, ioldsd
1341 IF( iinfo.LT.0 )
THEN
1344 result( ntest ) = ulpinv
1351 CALL zsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1352 $ ldz, d, work, rwork, result( ntest ) )
1361 ntestt = ntestt + ntest
1362 CALL dlafts(
'ZSG', n, n, jtype, ntest, result, ioldsd,
1363 $ thresh, nounit, nerrs )
1369 CALL dlasum(
'ZSG', nounit, nerrs, ntestt )
1373 9999
FORMAT(
' ZDRVSG2STG: ', a,
' returned INFO=', i6,
'.', / 9x,
1374 $
'N=', i6,
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
')' )
subroutine xerbla(srname, info)
subroutine dlafts(type, m, n, imat, ntests, result, iseed, thresh, iounit, ie)
DLAFTS
subroutine dlasum(type, iounit, ie, nrun)
DLASUM
subroutine zhbgv(jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, w, z, ldz, work, rwork, info)
ZHBGV
subroutine zhbgvd(jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, w, z, ldz, work, lwork, rwork, lrwork, iwork, liwork, info)
ZHBGVD
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 zhegv_2stage(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, rwork, info)
ZHEGV_2STAGE
subroutine zhegv(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, rwork, info)
ZHEGV
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 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 zhpgvx(itype, jobz, range, uplo, n, ap, bp, vl, vu, il, iu, abstol, m, w, z, ldz, work, rwork, iwork, ifail, info)
ZHPGVX
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 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 zlatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
ZLATMS
subroutine zsgt01(itype, uplo, n, m, a, lda, b, ldb, z, ldz, d, work, rwork, result)
ZSGT01