347 INTEGER info, lda, ldu, liwork, lrwork, lwork, nounit,
349 DOUBLE PRECISION thresh
353 INTEGER iseed( 4 ), iwork( * ), nn( * )
354 DOUBLE PRECISION d1( * ), d2( * ), d3( * ), result( * ),
355 $ rwork( * ), wa1( * ), wa2( * ), wa3( * )
356 COMPLEX*16 a( lda, * ), tau( * ), u( ldu, * ),
357 $ v( ldu, * ), work( * ), z( ldu, * )
364 DOUBLE PRECISION zero, one, two, ten
365 parameter( zero = 0.0d+0, one = 1.0d+0, two = 2.0d+0,
367 DOUBLE PRECISION half
368 parameter( half = one / two )
369 COMPLEX*16 czero, cone
370 parameter( czero = ( 0.0d+0, 0.0d+0 ),
371 $ cone = ( 1.0d+0, 0.0d+0 ) )
373 parameter( maxtyp = 18 )
378 INTEGER i, idiag, ihbw, iinfo, il, imode, indwrk, indx,
379 $ irow, itemp, itype, iu, iuplo, j, j1, j2, jcol,
380 $ jsize, jtype, kd, lgn, liwedc, lrwedc, lwedc,
381 $ m, m2, m3, mtypes, n, nerrs, nmats, nmax,
383 DOUBLE PRECISION abstol, aninv, anorm, cond, ovfl, rtovfl,
384 $ rtunfl, temp1, temp2, temp3, ulp, ulpinv, unfl,
388 INTEGER idumma( 1 ), ioldsd( 4 ), iseed2( 4 ),
389 $ iseed3( 4 ), kmagn( maxtyp ), kmode( maxtyp ),
405 INTRINSIC abs, dble, int, log, max, min, sqrt
408 DATA ktype / 1, 2, 5*4, 5*5, 3*8, 3*9 /
409 DATA kmagn / 2*1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 3, 1,
411 DATA kmode / 2*0, 4, 3, 1, 4, 4, 4, 3, 1, 4, 4, 0,
424 nmax = max( nmax, nn( j ) )
431 IF( nsizes.LT.0 )
THEN 433 ELSE IF( badnn )
THEN 435 ELSE IF( ntypes.LT.0 )
THEN 437 ELSE IF( lda.LT.nmax )
THEN 439 ELSE IF( ldu.LT.nmax )
THEN 441 ELSE IF( 2*max( 2, nmax )**2.GT.lwork )
THEN 446 CALL xerbla(
'ZDRVST2STG', -info )
452 IF( nsizes.EQ.0 .OR. ntypes.EQ.0 )
457 unfl =
dlamch(
'Safe minimum' )
458 ovfl =
dlamch(
'Overflow' )
462 rtunfl = sqrt( unfl )
463 rtovfl = sqrt( ovfl )
468 iseed2( i ) = iseed( i )
469 iseed3( i ) = iseed( i )
475 DO 1220 jsize = 1, nsizes
478 lgn = int( log( dble( n ) ) / log( two ) )
483 lwedc = max( 2*n+n*n, 2*n*n )
484 lrwedc = 1 + 4*n + 2*n*lgn + 3*n**2
491 aninv = one / dble( max( 1, n ) )
493 IF( nsizes.NE.1 )
THEN 494 mtypes = min( maxtyp, ntypes )
496 mtypes = min( maxtyp+1, ntypes )
499 DO 1210 jtype = 1, mtypes
500 IF( .NOT.dotype( jtype ) )
506 ioldsd( j ) = iseed( j )
524 IF( mtypes.GT.maxtyp )
527 itype = ktype( jtype )
528 imode = kmode( jtype )
532 GO TO ( 40, 50, 60 )kmagn( jtype )
539 anorm = ( rtovfl*ulp )*aninv
543 anorm = rtunfl*n*ulpinv
548 CALL zlaset(
'Full', lda, n, czero, czero, a, lda )
556 IF( itype.EQ.1 )
THEN 559 ELSE IF( itype.EQ.2 )
THEN 564 a( jcol, jcol ) = anorm
567 ELSE IF( itype.EQ.4 )
THEN 571 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
572 $ anorm, 0, 0,
'N', a, lda, work, iinfo )
574 ELSE IF( itype.EQ.5 )
THEN 578 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
579 $ anorm, n, n,
'N', a, lda, work, iinfo )
581 ELSE IF( itype.EQ.7 )
THEN 585 CALL zlatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
586 $
'T',
'N', work( n+1 ), 1, one,
587 $ work( 2*n+1 ), 1, one,
'N', idumma, 0, 0,
588 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
590 ELSE IF( itype.EQ.8 )
THEN 594 CALL zlatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
595 $
'T',
'N', work( n+1 ), 1, one,
596 $ work( 2*n+1 ), 1, one,
'N', idumma, n, n,
597 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
599 ELSE IF( itype.EQ.9 )
THEN 603 ihbw = int( ( n-1 )*
dlarnd( 1, iseed3 ) )
604 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
605 $ anorm, ihbw, ihbw,
'Z', u, ldu, work,
610 CALL zlaset(
'Full', lda, n, czero, czero, a, lda )
611 DO 100 idiag = -ihbw, ihbw
612 irow = ihbw - idiag + 1
613 j1 = max( 1, idiag+1 )
614 j2 = min( n, n+idiag )
617 a( i, j ) = u( irow, j )
624 IF( iinfo.NE.0 )
THEN 625 WRITE( nounit, fmt = 9999 )
'Generator', iinfo, n, jtype,
638 il = 1 + int( ( n-1 )*
dlarnd( 1, iseed2 ) )
639 iu = 1 + int( ( n-1 )*
dlarnd( 1, iseed2 ) )
651 IF( iuplo.EQ.0 )
THEN 659 CALL zlacpy(
' ', n, n, a, lda, v, ldu )
662 CALL zheevd(
'V', uplo, n, a, ldu, d1, work, lwedc,
663 $ rwork, lrwedc, iwork, liwedc, iinfo )
664 IF( iinfo.NE.0 )
THEN 665 WRITE( nounit, fmt = 9999 )
'ZHEEVD(V,' // uplo //
666 $
')', iinfo, n, jtype, ioldsd
668 IF( iinfo.LT.0 )
THEN 671 result( ntest ) = ulpinv
672 result( ntest+1 ) = ulpinv
673 result( ntest+2 ) = ulpinv
680 CALL zhet21( 1, uplo, n, 0, v, ldu, d1, d2, a, ldu, z,
681 $ ldu, tau, work, rwork, result( ntest ) )
683 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
687 $ lwork, rwork, lrwedc, iwork, liwedc, iinfo )
688 IF( iinfo.NE.0 )
THEN 689 WRITE( nounit, fmt = 9999 )
690 $
'ZHEEVD_2STAGE(N,' // uplo //
691 $
')', iinfo, n, jtype, ioldsd
693 IF( iinfo.LT.0 )
THEN 696 result( ntest ) = ulpinv
706 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
707 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
709 result( ntest ) = temp2 / max( unfl,
710 $ ulp*max( temp1, temp2 ) )
713 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
718 temp3 = max( abs( d1( 1 ) ), abs( d1( n ) ) )
720 vl = d1( il ) - max( half*( d1( il )-d1( il-1 ) ),
721 $ ten*ulp*temp3, ten*rtunfl )
722 ELSE IF( n.GT.0 )
THEN 723 vl = d1( 1 ) - max( half*( d1( n )-d1( 1 ) ),
724 $ ten*ulp*temp3, ten*rtunfl )
727 vu = d1( iu ) + max( half*( d1( iu+1 )-d1( iu ) ),
728 $ ten*ulp*temp3, ten*rtunfl )
729 ELSE IF( n.GT.0 )
THEN 730 vu = d1( n ) + max( half*( d1( n )-d1( 1 ) ),
731 $ ten*ulp*temp3, ten*rtunfl )
739 CALL zheevx(
'V',
'A', uplo, n, a, ldu, vl, vu, il, iu,
740 $ abstol, m, wa1, z, ldu, work, lwork, rwork,
741 $ iwork, iwork( 5*n+1 ), iinfo )
742 IF( iinfo.NE.0 )
THEN 743 WRITE( nounit, fmt = 9999 )
'ZHEEVX(V,A,' // uplo //
744 $
')', iinfo, n, jtype, ioldsd
746 IF( iinfo.LT.0 )
THEN 749 result( ntest ) = ulpinv
750 result( ntest+1 ) = ulpinv
751 result( ntest+2 ) = ulpinv
758 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
760 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
761 $ ldu, tau, work, rwork, result( ntest ) )
765 $ il, iu, abstol, m2, wa2, z, ldu,
766 $ work, lwork, rwork, iwork,
767 $ iwork( 5*n+1 ), iinfo )
768 IF( iinfo.NE.0 )
THEN 769 WRITE( nounit, fmt = 9999 )
770 $
'ZHEEVX_2STAGE(N,A,' // uplo //
771 $
')', iinfo, n, jtype, ioldsd
773 IF( iinfo.LT.0 )
THEN 776 result( ntest ) = ulpinv
786 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
787 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
789 result( ntest ) = temp2 / max( unfl,
790 $ ulp*max( temp1, temp2 ) )
793 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
797 CALL zheevx(
'V',
'I', uplo, n, a, ldu, vl, vu, il, iu,
798 $ abstol, m2, wa2, z, ldu, work, lwork, rwork,
799 $ iwork, iwork( 5*n+1 ), iinfo )
800 IF( iinfo.NE.0 )
THEN 801 WRITE( nounit, fmt = 9999 )
'ZHEEVX(V,I,' // uplo //
802 $
')', iinfo, n, jtype, ioldsd
804 IF( iinfo.LT.0 )
THEN 807 result( ntest ) = ulpinv
814 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
816 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
817 $ v, ldu, tau, work, rwork, result( ntest ) )
822 $ il, iu, abstol, m3, wa3, z, ldu,
823 $ work, lwork, rwork, iwork,
824 $ iwork( 5*n+1 ), iinfo )
825 IF( iinfo.NE.0 )
THEN 826 WRITE( nounit, fmt = 9999 )
827 $
'ZHEEVX_2STAGE(N,I,' // uplo //
828 $
')', iinfo, n, jtype, ioldsd
830 IF( iinfo.LT.0 )
THEN 833 result( ntest ) = ulpinv
840 temp1 =
dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
841 temp2 =
dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
843 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
847 result( ntest ) = ( temp1+temp2 ) /
848 $ max( unfl, temp3*ulp )
851 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
855 CALL zheevx(
'V',
'V', uplo, n, a, ldu, vl, vu, il, iu,
856 $ abstol, m2, wa2, z, ldu, work, lwork, rwork,
857 $ iwork, iwork( 5*n+1 ), iinfo )
858 IF( iinfo.NE.0 )
THEN 859 WRITE( nounit, fmt = 9999 )
'ZHEEVX(V,V,' // uplo //
860 $
')', iinfo, n, jtype, ioldsd
862 IF( iinfo.LT.0 )
THEN 865 result( ntest ) = ulpinv
872 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
874 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
875 $ v, ldu, tau, work, rwork, result( ntest ) )
880 $ il, iu, abstol, m3, wa3, z, ldu,
881 $ work, lwork, rwork, iwork,
882 $ iwork( 5*n+1 ), iinfo )
883 IF( iinfo.NE.0 )
THEN 884 WRITE( nounit, fmt = 9999 )
885 $
'ZHEEVX_2STAGE(N,V,' // uplo //
886 $
')', iinfo, n, jtype, ioldsd
888 IF( iinfo.LT.0 )
THEN 891 result( ntest ) = ulpinv
896 IF( m3.EQ.0 .AND. n.GT.0 )
THEN 897 result( ntest ) = ulpinv
903 temp1 =
dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
904 temp2 =
dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
906 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
910 result( ntest ) = ( temp1+temp2 ) /
911 $ max( unfl, temp3*ulp )
917 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
922 IF( iuplo.EQ.1 )
THEN 926 work( indx ) = a( i, j )
934 work( indx ) = a( i, j )
941 indwrk = n*( n+1 ) / 2 + 1
942 CALL zhpevd(
'V', uplo, n, work, d1, z, ldu,
943 $ work( indwrk ), lwedc, rwork, lrwedc, iwork,
945 IF( iinfo.NE.0 )
THEN 946 WRITE( nounit, fmt = 9999 )
'ZHPEVD(V,' // uplo //
947 $
')', iinfo, n, jtype, ioldsd
949 IF( iinfo.LT.0 )
THEN 952 result( ntest ) = ulpinv
953 result( ntest+1 ) = ulpinv
954 result( ntest+2 ) = ulpinv
961 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
962 $ ldu, tau, work, rwork, result( ntest ) )
964 IF( iuplo.EQ.1 )
THEN 968 work( indx ) = a( i, j )
976 work( indx ) = a( i, j )
983 indwrk = n*( n+1 ) / 2 + 1
984 CALL zhpevd(
'N', uplo, n, work, d3, z, ldu,
985 $ work( indwrk ), lwedc, rwork, lrwedc, iwork,
987 IF( iinfo.NE.0 )
THEN 988 WRITE( nounit, fmt = 9999 )
'ZHPEVD(N,' // uplo //
989 $
')', iinfo, n, jtype, ioldsd
991 IF( iinfo.LT.0 )
THEN 994 result( ntest ) = ulpinv
1004 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1005 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1007 result( ntest ) = temp2 / max( unfl,
1008 $ ulp*max( temp1, temp2 ) )
1014 IF( iuplo.EQ.1 )
THEN 1018 work( indx ) = a( i, j )
1026 work( indx ) = a( i, j )
1035 temp3 = max( abs( d1( 1 ) ), abs( d1( n ) ) )
1037 vl = d1( il ) - max( half*( d1( il )-d1( il-1 ) ),
1038 $ ten*ulp*temp3, ten*rtunfl )
1039 ELSE IF( n.GT.0 )
THEN 1040 vl = d1( 1 ) - max( half*( d1( n )-d1( 1 ) ),
1041 $ ten*ulp*temp3, ten*rtunfl )
1044 vu = d1( iu ) + max( half*( d1( iu+1 )-d1( iu ) ),
1045 $ ten*ulp*temp3, ten*rtunfl )
1046 ELSE IF( n.GT.0 )
THEN 1047 vu = d1( n ) + max( half*( d1( n )-d1( 1 ) ),
1048 $ ten*ulp*temp3, ten*rtunfl )
1056 CALL zhpevx(
'V',
'A', uplo, n, work, vl, vu, il, iu,
1057 $ abstol, m, wa1, z, ldu, v, rwork, iwork,
1058 $ iwork( 5*n+1 ), iinfo )
1059 IF( iinfo.NE.0 )
THEN 1060 WRITE( nounit, fmt = 9999 )
'ZHPEVX(V,A,' // uplo //
1061 $
')', iinfo, n, jtype, ioldsd
1063 IF( iinfo.LT.0 )
THEN 1066 result( ntest ) = ulpinv
1067 result( ntest+1 ) = ulpinv
1068 result( ntest+2 ) = ulpinv
1075 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1076 $ ldu, tau, work, rwork, result( ntest ) )
1080 IF( iuplo.EQ.1 )
THEN 1084 work( indx ) = a( i, j )
1092 work( indx ) = a( i, j )
1098 CALL zhpevx(
'N',
'A', uplo, n, work, vl, vu, il, iu,
1099 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1100 $ iwork( 5*n+1 ), iinfo )
1101 IF( iinfo.NE.0 )
THEN 1102 WRITE( nounit, fmt = 9999 )
'ZHPEVX(N,A,' // uplo //
1103 $
')', iinfo, n, jtype, ioldsd
1105 IF( iinfo.LT.0 )
THEN 1108 result( ntest ) = ulpinv
1118 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1119 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1121 result( ntest ) = temp2 / max( unfl,
1122 $ ulp*max( temp1, temp2 ) )
1126 IF( iuplo.EQ.1 )
THEN 1130 work( indx ) = a( i, j )
1138 work( indx ) = a( i, j )
1144 CALL zhpevx(
'V',
'I', uplo, n, work, vl, vu, il, iu,
1145 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1146 $ iwork( 5*n+1 ), iinfo )
1147 IF( iinfo.NE.0 )
THEN 1148 WRITE( nounit, fmt = 9999 )
'ZHPEVX(V,I,' // uplo //
1149 $
')', iinfo, n, jtype, ioldsd
1151 IF( iinfo.LT.0 )
THEN 1154 result( ntest ) = ulpinv
1155 result( ntest+1 ) = ulpinv
1156 result( ntest+2 ) = ulpinv
1163 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1164 $ v, ldu, tau, work, rwork, result( ntest ) )
1168 IF( iuplo.EQ.1 )
THEN 1172 work( indx ) = a( i, j )
1180 work( indx ) = a( i, j )
1186 CALL zhpevx(
'N',
'I', uplo, n, work, vl, vu, il, iu,
1187 $ abstol, m3, wa3, z, ldu, v, rwork, iwork,
1188 $ iwork( 5*n+1 ), iinfo )
1189 IF( iinfo.NE.0 )
THEN 1190 WRITE( nounit, fmt = 9999 )
'ZHPEVX(N,I,' // uplo //
1191 $
')', iinfo, n, jtype, ioldsd
1193 IF( iinfo.LT.0 )
THEN 1196 result( ntest ) = ulpinv
1203 temp1 =
dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1204 temp2 =
dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1206 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1210 result( ntest ) = ( temp1+temp2 ) /
1211 $ max( unfl, temp3*ulp )
1215 IF( iuplo.EQ.1 )
THEN 1219 work( indx ) = a( i, j )
1227 work( indx ) = a( i, j )
1233 CALL zhpevx(
'V',
'V', uplo, n, work, vl, vu, il, iu,
1234 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1235 $ iwork( 5*n+1 ), iinfo )
1236 IF( iinfo.NE.0 )
THEN 1237 WRITE( nounit, fmt = 9999 )
'ZHPEVX(V,V,' // uplo //
1238 $
')', iinfo, n, jtype, ioldsd
1240 IF( iinfo.LT.0 )
THEN 1243 result( ntest ) = ulpinv
1244 result( ntest+1 ) = ulpinv
1245 result( ntest+2 ) = ulpinv
1252 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1253 $ v, ldu, tau, work, rwork, result( ntest ) )
1257 IF( iuplo.EQ.1 )
THEN 1261 work( indx ) = a( i, j )
1269 work( indx ) = a( i, j )
1275 CALL zhpevx(
'N',
'V', uplo, n, work, vl, vu, il, iu,
1276 $ abstol, m3, wa3, z, ldu, v, rwork, iwork,
1277 $ iwork( 5*n+1 ), iinfo )
1278 IF( iinfo.NE.0 )
THEN 1279 WRITE( nounit, fmt = 9999 )
'ZHPEVX(N,V,' // uplo //
1280 $
')', iinfo, n, jtype, ioldsd
1282 IF( iinfo.LT.0 )
THEN 1285 result( ntest ) = ulpinv
1290 IF( m3.EQ.0 .AND. n.GT.0 )
THEN 1291 result( ntest ) = ulpinv
1297 temp1 =
dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1298 temp2 =
dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1300 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1304 result( ntest ) = ( temp1+temp2 ) /
1305 $ max( unfl, temp3*ulp )
1311 IF( jtype.LE.7 )
THEN 1313 ELSE IF( jtype.GE.8 .AND. jtype.LE.15 )
THEN 1322 IF( iuplo.EQ.1 )
THEN 1324 DO 560 i = max( 1, j-kd ), j
1325 v( kd+1+i-j, j ) = a( i, j )
1330 DO 580 i = j, min( n, j+kd )
1331 v( 1+i-j, j ) = a( i, j )
1337 CALL zhbevd(
'V', uplo, n, kd, v, ldu, d1, z, ldu, work,
1338 $ lwedc, rwork, lrwedc, iwork, liwedc, iinfo )
1339 IF( iinfo.NE.0 )
THEN 1340 WRITE( nounit, fmt = 9998 )
'ZHBEVD(V,' // uplo //
1341 $
')', iinfo, n, kd, jtype, ioldsd
1343 IF( iinfo.LT.0 )
THEN 1346 result( ntest ) = ulpinv
1347 result( ntest+1 ) = ulpinv
1348 result( ntest+2 ) = ulpinv
1355 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1356 $ ldu, tau, work, rwork, result( ntest ) )
1358 IF( iuplo.EQ.1 )
THEN 1360 DO 600 i = max( 1, j-kd ), j
1361 v( kd+1+i-j, j ) = a( i, j )
1366 DO 620 i = j, min( n, j+kd )
1367 v( 1+i-j, j ) = a( i, j )
1374 $ z, ldu, work, lwork, rwork,
1375 $ lrwedc, iwork, liwedc, iinfo )
1376 IF( iinfo.NE.0 )
THEN 1377 WRITE( nounit, fmt = 9998 )
1378 $
'ZHBEVD_2STAGE(N,' // uplo //
1379 $
')', iinfo, n, kd, jtype, ioldsd
1381 IF( iinfo.LT.0 )
THEN 1384 result( ntest ) = ulpinv
1394 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1395 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1397 result( ntest ) = temp2 / max( unfl,
1398 $ ulp*max( temp1, temp2 ) )
1404 IF( iuplo.EQ.1 )
THEN 1406 DO 660 i = max( 1, j-kd ), j
1407 v( kd+1+i-j, j ) = a( i, j )
1412 DO 680 i = j, min( n, j+kd )
1413 v( 1+i-j, j ) = a( i, j )
1419 CALL zhbevx(
'V',
'A', uplo, n, kd, v, ldu, u, ldu, vl,
1420 $ vu, il, iu, abstol, m, wa1, z, ldu, work,
1421 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1422 IF( iinfo.NE.0 )
THEN 1423 WRITE( nounit, fmt = 9999 )
'ZHBEVX(V,A,' // uplo //
1424 $
')', iinfo, n, kd, jtype, ioldsd
1426 IF( iinfo.LT.0 )
THEN 1429 result( ntest ) = ulpinv
1430 result( ntest+1 ) = ulpinv
1431 result( ntest+2 ) = ulpinv
1438 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1439 $ ldu, tau, work, rwork, result( ntest ) )
1443 IF( iuplo.EQ.1 )
THEN 1445 DO 700 i = max( 1, j-kd ), j
1446 v( kd+1+i-j, j ) = a( i, j )
1451 DO 720 i = j, min( n, j+kd )
1452 v( 1+i-j, j ) = a( i, j )
1458 $ u, ldu, vl, vu, il, iu, abstol,
1459 $ m2, wa2, z, ldu, work, lwork,
1460 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1461 IF( iinfo.NE.0 )
THEN 1462 WRITE( nounit, fmt = 9998 )
1463 $
'ZHBEVX_2STAGE(N,A,' // uplo //
1464 $
')', iinfo, n, kd, jtype, ioldsd
1466 IF( iinfo.LT.0 )
THEN 1469 result( ntest ) = ulpinv
1479 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1480 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1482 result( ntest ) = temp2 / max( unfl,
1483 $ ulp*max( temp1, temp2 ) )
1490 IF( iuplo.EQ.1 )
THEN 1492 DO 760 i = max( 1, j-kd ), j
1493 v( kd+1+i-j, j ) = a( i, j )
1498 DO 780 i = j, min( n, j+kd )
1499 v( 1+i-j, j ) = a( i, j )
1504 CALL zhbevx(
'V',
'I', uplo, n, kd, v, ldu, u, ldu, vl,
1505 $ vu, il, iu, abstol, m2, wa2, z, ldu, work,
1506 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1507 IF( iinfo.NE.0 )
THEN 1508 WRITE( nounit, fmt = 9998 )
'ZHBEVX(V,I,' // uplo //
1509 $
')', iinfo, n, kd, jtype, ioldsd
1511 IF( iinfo.LT.0 )
THEN 1514 result( ntest ) = ulpinv
1515 result( ntest+1 ) = ulpinv
1516 result( ntest+2 ) = ulpinv
1523 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1524 $ v, ldu, tau, work, rwork, result( ntest ) )
1528 IF( iuplo.EQ.1 )
THEN 1530 DO 800 i = max( 1, j-kd ), j
1531 v( kd+1+i-j, j ) = a( i, j )
1536 DO 820 i = j, min( n, j+kd )
1537 v( 1+i-j, j ) = a( i, j )
1542 $ u, ldu, vl, vu, il, iu, abstol,
1543 $ m3, wa3, z, ldu, work, lwork,
1544 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1545 IF( iinfo.NE.0 )
THEN 1546 WRITE( nounit, fmt = 9998 )
1547 $
'ZHBEVX_2STAGE(N,I,' // uplo //
1548 $
')', iinfo, n, kd, jtype, ioldsd
1550 IF( iinfo.LT.0 )
THEN 1553 result( ntest ) = ulpinv
1560 temp1 =
dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1561 temp2 =
dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1563 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1567 result( ntest ) = ( temp1+temp2 ) /
1568 $ max( unfl, temp3*ulp )
1575 IF( iuplo.EQ.1 )
THEN 1577 DO 850 i = max( 1, j-kd ), j
1578 v( kd+1+i-j, j ) = a( i, j )
1583 DO 870 i = j, min( n, j+kd )
1584 v( 1+i-j, j ) = a( i, j )
1588 CALL zhbevx(
'V',
'V', uplo, n, kd, v, ldu, u, ldu, vl,
1589 $ vu, il, iu, abstol, m2, wa2, z, ldu, work,
1590 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1591 IF( iinfo.NE.0 )
THEN 1592 WRITE( nounit, fmt = 9998 )
'ZHBEVX(V,V,' // uplo //
1593 $
')', iinfo, n, kd, jtype, ioldsd
1595 IF( iinfo.LT.0 )
THEN 1598 result( ntest ) = ulpinv
1599 result( ntest+1 ) = ulpinv
1600 result( ntest+2 ) = ulpinv
1607 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1608 $ v, ldu, tau, work, rwork, result( ntest ) )
1612 IF( iuplo.EQ.1 )
THEN 1614 DO 890 i = max( 1, j-kd ), j
1615 v( kd+1+i-j, j ) = a( i, j )
1620 DO 910 i = j, min( n, j+kd )
1621 v( 1+i-j, j ) = a( i, j )
1626 $ u, ldu, vl, vu, il, iu, abstol,
1627 $ m3, wa3, z, ldu, work, lwork,
1628 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1629 IF( iinfo.NE.0 )
THEN 1630 WRITE( nounit, fmt = 9998 )
1631 $
'ZHBEVX_2STAGE(N,V,' // uplo //
1632 $
')', iinfo, n, kd, jtype, ioldsd
1634 IF( iinfo.LT.0 )
THEN 1637 result( ntest ) = ulpinv
1642 IF( m3.EQ.0 .AND. n.GT.0 )
THEN 1643 result( ntest ) = ulpinv
1649 temp1 =
dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1650 temp2 =
dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1652 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1656 result( ntest ) = ( temp1+temp2 ) /
1657 $ max( unfl, temp3*ulp )
1663 CALL zlacpy(
' ', n, n, a, lda, v, ldu )
1666 CALL zheev(
'V', uplo, n, a, ldu, d1, work, lwork, rwork,
1668 IF( iinfo.NE.0 )
THEN 1669 WRITE( nounit, fmt = 9999 )
'ZHEEV(V,' // uplo //
')',
1670 $ iinfo, n, jtype, ioldsd
1672 IF( iinfo.LT.0 )
THEN 1675 result( ntest ) = ulpinv
1676 result( ntest+1 ) = ulpinv
1677 result( ntest+2 ) = ulpinv
1684 CALL zhet21( 1, uplo, n, 0, v, ldu, d1, d2, a, ldu, z,
1685 $ ldu, tau, work, rwork, result( ntest ) )
1687 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1691 $ work, lwork, rwork, iinfo )
1692 IF( iinfo.NE.0 )
THEN 1693 WRITE( nounit, fmt = 9999 )
1694 $
'ZHEEV_2STAGE(N,' // uplo //
')',
1695 $ iinfo, n, jtype, ioldsd
1697 IF( iinfo.LT.0 )
THEN 1700 result( ntest ) = ulpinv
1710 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1711 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1713 result( ntest ) = temp2 / max( unfl,
1714 $ ulp*max( temp1, temp2 ) )
1718 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1725 IF( iuplo.EQ.1 )
THEN 1729 work( indx ) = a( i, j )
1737 work( indx ) = a( i, j )
1744 indwrk = n*( n+1 ) / 2 + 1
1745 CALL zhpev(
'V', uplo, n, work, d1, z, ldu,
1746 $ work( indwrk ), rwork, iinfo )
1747 IF( iinfo.NE.0 )
THEN 1748 WRITE( nounit, fmt = 9999 )
'ZHPEV(V,' // uplo //
')',
1749 $ iinfo, n, jtype, ioldsd
1751 IF( iinfo.LT.0 )
THEN 1754 result( ntest ) = ulpinv
1755 result( ntest+1 ) = ulpinv
1756 result( ntest+2 ) = ulpinv
1763 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1764 $ ldu, tau, work, rwork, result( ntest ) )
1766 IF( iuplo.EQ.1 )
THEN 1770 work( indx ) = a( i, j )
1778 work( indx ) = a( i, j )
1785 indwrk = n*( n+1 ) / 2 + 1
1786 CALL zhpev(
'N', uplo, n, work, d3, z, ldu,
1787 $ work( indwrk ), rwork, iinfo )
1788 IF( iinfo.NE.0 )
THEN 1789 WRITE( nounit, fmt = 9999 )
'ZHPEV(N,' // uplo //
')',
1790 $ iinfo, n, jtype, ioldsd
1792 IF( iinfo.LT.0 )
THEN 1795 result( ntest ) = ulpinv
1805 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1806 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1808 result( ntest ) = temp2 / max( unfl,
1809 $ ulp*max( temp1, temp2 ) )
1815 IF( jtype.LE.7 )
THEN 1817 ELSE IF( jtype.GE.8 .AND. jtype.LE.15 )
THEN 1826 IF( iuplo.EQ.1 )
THEN 1828 DO 1060 i = max( 1, j-kd ), j
1829 v( kd+1+i-j, j ) = a( i, j )
1834 DO 1080 i = j, min( n, j+kd )
1835 v( 1+i-j, j ) = a( i, j )
1841 CALL zhbev(
'V', uplo, n, kd, v, ldu, d1, z, ldu, work,
1843 IF( iinfo.NE.0 )
THEN 1844 WRITE( nounit, fmt = 9998 )
'ZHBEV(V,' // uplo //
')',
1845 $ iinfo, n, kd, jtype, ioldsd
1847 IF( iinfo.LT.0 )
THEN 1850 result( ntest ) = ulpinv
1851 result( ntest+1 ) = ulpinv
1852 result( ntest+2 ) = ulpinv
1859 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1860 $ ldu, tau, work, rwork, result( ntest ) )
1862 IF( iuplo.EQ.1 )
THEN 1864 DO 1100 i = max( 1, j-kd ), j
1865 v( kd+1+i-j, j ) = a( i, j )
1870 DO 1120 i = j, min( n, j+kd )
1871 v( 1+i-j, j ) = a( i, j )
1877 CALL zhbev_2stage(
'N', uplo, n, kd, v, ldu, d3, z, ldu,
1878 $ work, lwork, rwork, iinfo )
1879 IF( iinfo.NE.0 )
THEN 1880 WRITE( nounit, fmt = 9998 )
1881 $
'ZHBEV_2STAGE(N,' // uplo //
')',
1882 $ iinfo, n, kd, jtype, ioldsd
1884 IF( iinfo.LT.0 )
THEN 1887 result( ntest ) = ulpinv
1899 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1900 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1902 result( ntest ) = temp2 / max( unfl,
1903 $ ulp*max( temp1, temp2 ) )
1905 CALL zlacpy(
' ', n, n, a, lda, v, ldu )
1907 CALL zheevr(
'V',
'A', uplo, n, a, ldu, vl, vu, il, iu,
1908 $ abstol, m, wa1, z, ldu, iwork, work, lwork,
1909 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
1911 IF( iinfo.NE.0 )
THEN 1912 WRITE( nounit, fmt = 9999 )
'ZHEEVR(V,A,' // uplo //
1913 $
')', iinfo, n, jtype, ioldsd
1915 IF( iinfo.LT.0 )
THEN 1918 result( ntest ) = ulpinv
1919 result( ntest+1 ) = ulpinv
1920 result( ntest+2 ) = ulpinv
1927 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1929 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1930 $ ldu, tau, work, rwork, result( ntest ) )
1934 $ il, iu, abstol, m2, wa2, z, ldu,
1935 $ iwork, work, lwork, rwork, lrwork,
1936 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
1937 IF( iinfo.NE.0 )
THEN 1938 WRITE( nounit, fmt = 9999 )
1939 $
'ZHEEVR_2STAGE(N,A,' // uplo //
1940 $
')', iinfo, n, jtype, ioldsd
1942 IF( iinfo.LT.0 )
THEN 1945 result( ntest ) = ulpinv
1955 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1956 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1958 result( ntest ) = temp2 / max( unfl,
1959 $ ulp*max( temp1, temp2 ) )
1964 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1965 CALL zheevr(
'V',
'I', uplo, n, a, ldu, vl, vu, il, iu,
1966 $ abstol, m2, wa2, z, ldu, iwork, work, lwork,
1967 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
1969 IF( iinfo.NE.0 )
THEN 1970 WRITE( nounit, fmt = 9999 )
'ZHEEVR(V,I,' // uplo //
1971 $
')', iinfo, n, jtype, ioldsd
1973 IF( iinfo.LT.0 )
THEN 1976 result( ntest ) = ulpinv
1977 result( ntest+1 ) = ulpinv
1978 result( ntest+2 ) = ulpinv
1985 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1987 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1988 $ v, ldu, tau, work, rwork, result( ntest ) )
1991 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1993 $ il, iu, abstol, m3, wa3, z, ldu,
1994 $ iwork, work, lwork, rwork, lrwork,
1995 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
1996 IF( iinfo.NE.0 )
THEN 1997 WRITE( nounit, fmt = 9999 )
1998 $
'ZHEEVR_2STAGE(N,I,' // uplo //
1999 $
')', iinfo, n, jtype, ioldsd
2001 IF( iinfo.LT.0 )
THEN 2004 result( ntest ) = ulpinv
2011 temp1 =
dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
2012 temp2 =
dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
2013 result( ntest ) = ( temp1+temp2 ) /
2014 $ max( unfl, ulp*temp3 )
2018 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2019 CALL zheevr(
'V',
'V', uplo, n, a, ldu, vl, vu, il, iu,
2020 $ abstol, m2, wa2, z, ldu, iwork, work, lwork,
2021 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
2023 IF( iinfo.NE.0 )
THEN 2024 WRITE( nounit, fmt = 9999 )
'ZHEEVR(V,V,' // uplo //
2025 $
')', iinfo, n, jtype, ioldsd
2027 IF( iinfo.LT.0 )
THEN 2030 result( ntest ) = ulpinv
2031 result( ntest+1 ) = ulpinv
2032 result( ntest+2 ) = ulpinv
2039 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2041 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
2042 $ v, ldu, tau, work, rwork, result( ntest ) )
2045 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2047 $ il, iu, abstol, m3, wa3, z, ldu,
2048 $ iwork, work, lwork, rwork, lrwork,
2049 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
2050 IF( iinfo.NE.0 )
THEN 2051 WRITE( nounit, fmt = 9999 )
2052 $
'ZHEEVR_2STAGE(N,V,' // uplo //
2053 $
')', iinfo, n, jtype, ioldsd
2055 IF( iinfo.LT.0 )
THEN 2058 result( ntest ) = ulpinv
2063 IF( m3.EQ.0 .AND. n.GT.0 )
THEN 2064 result( ntest ) = ulpinv
2070 temp1 =
dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
2071 temp2 =
dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
2073 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
2077 result( ntest ) = ( temp1+temp2 ) /
2078 $ max( unfl, temp3*ulp )
2080 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2094 ntestt = ntestt + ntest
2095 CALL dlafts(
'ZST', n, n, jtype, ntest, result, ioldsd,
2096 $ thresh, nounit, nerrs )
2103 CALL alasvm(
'ZST', nounit, nerrs, ntestt, 0 )
2105 9999
FORMAT(
' ZDRVST2STG: ', a,
' returned INFO=', i6, / 9x,
'N=', i6,
2106 $
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
')' )
2107 9998
FORMAT(
' ZDRVST2STG: ', a,
' returned INFO=', i6, / 9x,
'N=', i6,
2108 $
', KD=', i6,
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
subroutine zhpev(JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, RWORK, INFO)
ZHPEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrice...
subroutine zheevx_2stage(JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, RWORK, IWORK, IFAIL, INFO)
ZHEEVX_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE ma...
double precision function dlamch(CMACH)
DLAMCH
subroutine alasvm(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASVM
subroutine zheevd_2stage(JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
ZHEEVD_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE ma...
subroutine zheevr(JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
ZHEEVR computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE matrices ...
subroutine zhbevd(JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
ZHBEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matric...
subroutine zheevx(JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, RWORK, IWORK, IFAIL, INFO)
ZHEEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE matrices ...
double precision function dsxt1(IJOB, D1, N1, D2, N2, ABSTOL, ULP, UNFL)
DSXT1
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 zhet21(ITYPE, UPLO, N, KBAND, A, LDA, D, E, U, LDU, V, LDV, TAU, WORK, RWORK, RESULT)
ZHET21
subroutine zlacpy(UPLO, M, N, A, LDA, B, LDB)
ZLACPY copies all or part of one two-dimensional array to another.
subroutine zhbevx_2stage(JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, RWORK, IWORK, IFAIL, INFO)
ZHBEVX_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER...
double precision function dlarnd(IDIST, ISEED)
DLARND
subroutine zheevr_2stage(JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
ZHEEVR_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE ma...
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zhpevx(JOBZ, RANGE, UPLO, N, AP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO)
ZHPEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matric...
subroutine zlatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
ZLATMS
subroutine zhbev_2stage(JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, LWORK, RWORK, INFO)
ZHBEV_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER ...
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 zhbev(JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, RWORK, INFO)
ZHBEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrice...
subroutine dlabad(SMALL, LARGE)
DLABAD
subroutine zheev(JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, INFO)
ZHEEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE matrices ...
subroutine zhpevd(JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
ZHPEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matric...
subroutine zheevd(JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
ZHEEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE matrices ...
subroutine zhbevx(JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO)
ZHBEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matric...
subroutine zheev_2stage(JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, INFO)
ZHEEV_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE mat...
subroutine dlafts(TYPE, M, N, IMAT, NTESTS, RESULT, ISEED, THRESH, IOUNIT, IE)
DLAFTS
subroutine zhbevd_2stage(JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
ZHBEVD_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER...
subroutine zhet22(ITYPE, UPLO, N, M, KBAND, A, LDA, D, E, U, LDU, V, LDV, TAU, WORK, RWORK, RESULT)
ZHET22
subroutine zhetrd_2stage(VECT, UPLO, N, A, LDA, D, E, TAU, HOUS2, LHOUS2, WORK, LWORK, INFO)
ZHETRD_2STAGE