334 SUBROUTINE zdrvst2stg( NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH,
335 $ NOUNIT, A, LDA, D1, D2, D3, WA1, WA2, WA3, U,
336 $ LDU, V, TAU, Z, WORK, LWORK, RWORK, LRWORK,
337 $ IWORK, LIWORK, RESULT, INFO )
344 INTEGER INFO, LDA, LDU, LIWORK, LRWORK, LWORK, NOUNIT,
346 DOUBLE PRECISION THRESH
350 INTEGER ISEED( 4 ), IWORK( * ), NN( * )
351 DOUBLE PRECISION D1( * ), D2( * ), D3( * ), RESULT( * ),
352 $ rwork( * ), wa1( * ), wa2( * ), wa3( * )
353 COMPLEX*16 A( LDA, * ), TAU( * ), U( LDU, * ),
354 $ v( ldu, * ), work( * ), z( ldu, * )
361 DOUBLE PRECISION ZERO, ONE, TWO, TEN
362 PARAMETER ( ZERO = 0.0d+0, one = 1.0d+0, two = 2.0d+0,
364 DOUBLE PRECISION HALF
365 parameter( half = one / two )
366 COMPLEX*16 CZERO, CONE
367 parameter( czero = ( 0.0d+0, 0.0d+0 ),
368 $ cone = ( 1.0d+0, 0.0d+0 ) )
370 parameter( maxtyp = 18 )
375 INTEGER I, IDIAG, IHBW, IINFO, IL, IMODE, INDWRK, INDX,
376 $ irow, itemp, itype, iu, iuplo, j, j1, j2, jcol,
377 $ jsize, jtype, kd, lgn, liwedc, lrwedc, lwedc,
378 $ m, m2, m3, mtypes, n, nerrs, nmats, nmax,
380 DOUBLE PRECISION ABSTOL, ANINV, ANORM, COND, OVFL, RTOVFL,
381 $ RTUNFL, TEMP1, TEMP2, TEMP3, ULP, ULPINV, UNFL,
385 INTEGER IDUMMA( 1 ), IOLDSD( 4 ), ISEED2( 4 ),
386 $ ISEED3( 4 ), KMAGN( MAXTYP ), KMODE( MAXTYP ),
390 DOUBLE PRECISION DLAMCH, DLARND, DSXT1
391 EXTERNAL DLAMCH, DLARND, DSXT1
402 INTRINSIC abs, dble, int, log, max, min, sqrt
405 DATA ktype / 1, 2, 5*4, 5*5, 3*8, 3*9 /
406 DATA kmagn / 2*1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 3, 1,
408 DATA kmode / 2*0, 4, 3, 1, 4, 4, 4, 3, 1, 4, 4, 0,
421 nmax = max( nmax, nn( j ) )
428 IF( nsizes.LT.0 )
THEN
430 ELSE IF( badnn )
THEN
432 ELSE IF( ntypes.LT.0 )
THEN
434 ELSE IF( lda.LT.nmax )
THEN
436 ELSE IF( ldu.LT.nmax )
THEN
438 ELSE IF( 2*max( 2, nmax )**2.GT.lwork )
THEN
443 CALL xerbla(
'ZDRVST2STG', -info )
449 IF( nsizes.EQ.0 .OR. ntypes.EQ.0 )
454 unfl = dlamch(
'Safe minimum' )
455 ovfl = dlamch(
'Overflow' )
457 ulp = dlamch(
'Epsilon' )*dlamch(
'Base' )
459 rtunfl = sqrt( unfl )
460 rtovfl = sqrt( ovfl )
465 iseed2( i ) = iseed( i )
466 iseed3( i ) = iseed( i )
472 DO 1220 jsize = 1, nsizes
475 lgn = int( log( dble( n ) ) / log( two ) )
480 lwedc = max( 2*n+n*n, 2*n*n )
481 lrwedc = 1 + 4*n + 2*n*lgn + 3*n**2
488 aninv = one / dble( max( 1, n ) )
490 IF( nsizes.NE.1 )
THEN
491 mtypes = min( maxtyp, ntypes )
493 mtypes = min( maxtyp+1, ntypes )
496 DO 1210 jtype = 1, mtypes
497 IF( .NOT.dotype( jtype ) )
503 ioldsd( j ) = iseed( j )
521 IF( mtypes.GT.maxtyp )
524 itype = ktype( jtype )
525 imode = kmode( jtype )
529 GO TO ( 40, 50, 60 )kmagn( jtype )
536 anorm = ( rtovfl*ulp )*aninv
540 anorm = rtunfl*n*ulpinv
545 CALL zlaset(
'Full', lda, n, czero, czero, a, lda )
553 IF( itype.EQ.1 )
THEN
556 ELSE IF( itype.EQ.2 )
THEN
561 a( jcol, jcol ) = anorm
564 ELSE IF( itype.EQ.4 )
THEN
568 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
569 $ anorm, 0, 0,
'N', a, lda, work, iinfo )
571 ELSE IF( itype.EQ.5 )
THEN
575 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
576 $ anorm, n, n,
'N', a, lda, work, iinfo )
578 ELSE IF( itype.EQ.7 )
THEN
582 CALL zlatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
583 $
'T',
'N', work( n+1 ), 1, one,
584 $ work( 2*n+1 ), 1, one,
'N', idumma, 0, 0,
585 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
587 ELSE IF( itype.EQ.8 )
THEN
591 CALL zlatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
592 $
'T',
'N', work( n+1 ), 1, one,
593 $ work( 2*n+1 ), 1, one,
'N', idumma, n, n,
594 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
596 ELSE IF( itype.EQ.9 )
THEN
600 ihbw = int( ( n-1 )*dlarnd( 1, iseed3 ) )
601 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
602 $ anorm, ihbw, ihbw,
'Z', u, ldu, work,
607 CALL zlaset(
'Full', lda, n, czero, czero, a, lda )
608 DO 100 idiag = -ihbw, ihbw
609 irow = ihbw - idiag + 1
610 j1 = max( 1, idiag+1 )
611 j2 = min( n, n+idiag )
614 a( i, j ) = u( irow, j )
621 IF( iinfo.NE.0 )
THEN
622 WRITE( nounit, fmt = 9999 )
'Generator', iinfo, n, jtype,
635 il = 1 + int( ( n-1 )*dlarnd( 1, iseed2 ) )
636 iu = 1 + int( ( n-1 )*dlarnd( 1, iseed2 ) )
648 IF( iuplo.EQ.0 )
THEN
656 CALL zlacpy(
' ', n, n, a, lda, v, ldu )
659 CALL zheevd(
'V', uplo, n, a, ldu, d1, work, lwedc,
660 $ rwork, lrwedc, iwork, liwedc, iinfo )
661 IF( iinfo.NE.0 )
THEN
662 WRITE( nounit, fmt = 9999 )
'ZHEEVD(V,' // uplo //
663 $
')', iinfo, n, jtype, ioldsd
665 IF( iinfo.LT.0 )
THEN
668 result( ntest ) = ulpinv
669 result( ntest+1 ) = ulpinv
670 result( ntest+2 ) = ulpinv
677 CALL zhet21( 1, uplo, n, 0, v, ldu, d1, d2, a, ldu, z,
678 $ ldu, tau, work, rwork, result( ntest ) )
680 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
684 $ lwork, rwork, lrwedc, iwork, liwedc, iinfo )
685 IF( iinfo.NE.0 )
THEN
686 WRITE( nounit, fmt = 9999 )
687 $
'ZHEEVD_2STAGE(N,' // uplo //
688 $
')', iinfo, n, jtype, ioldsd
690 IF( iinfo.LT.0 )
THEN
693 result( ntest ) = ulpinv
703 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
704 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
706 result( ntest ) = temp2 / max( unfl,
707 $ ulp*max( temp1, temp2 ) )
710 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
715 temp3 = max( abs( d1( 1 ) ), abs( d1( n ) ) )
717 vl = d1( il ) - max( half*( d1( il )-d1( il-1 ) ),
718 $ ten*ulp*temp3, ten*rtunfl )
719 ELSE IF( n.GT.0 )
THEN
720 vl = d1( 1 ) - max( half*( d1( n )-d1( 1 ) ),
721 $ ten*ulp*temp3, ten*rtunfl )
724 vu = d1( iu ) + max( half*( d1( iu+1 )-d1( iu ) ),
725 $ ten*ulp*temp3, ten*rtunfl )
726 ELSE IF( n.GT.0 )
THEN
727 vu = d1( n ) + max( half*( d1( n )-d1( 1 ) ),
728 $ ten*ulp*temp3, ten*rtunfl )
736 CALL zheevx(
'V',
'A', uplo, n, a, ldu, vl, vu, il, iu,
737 $ abstol, m, wa1, z, ldu, work, lwork, rwork,
738 $ iwork, iwork( 5*n+1 ), iinfo )
739 IF( iinfo.NE.0 )
THEN
740 WRITE( nounit, fmt = 9999 )
'ZHEEVX(V,A,' // uplo //
741 $
')', iinfo, n, jtype, ioldsd
743 IF( iinfo.LT.0 )
THEN
746 result( ntest ) = ulpinv
747 result( ntest+1 ) = ulpinv
748 result( ntest+2 ) = ulpinv
755 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
757 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
758 $ ldu, tau, work, rwork, result( ntest ) )
762 $ il, iu, abstol, m2, wa2, z, ldu,
763 $ work, lwork, rwork, iwork,
764 $ iwork( 5*n+1 ), iinfo )
765 IF( iinfo.NE.0 )
THEN
766 WRITE( nounit, fmt = 9999 )
767 $
'ZHEEVX_2STAGE(N,A,' // uplo //
768 $
')', iinfo, n, jtype, ioldsd
770 IF( iinfo.LT.0 )
THEN
773 result( ntest ) = ulpinv
783 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
784 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
786 result( ntest ) = temp2 / max( unfl,
787 $ ulp*max( temp1, temp2 ) )
790 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
794 CALL zheevx(
'V',
'I', uplo, n, a, ldu, vl, vu, il, iu,
795 $ abstol, m2, wa2, z, ldu, work, lwork, rwork,
796 $ iwork, iwork( 5*n+1 ), iinfo )
797 IF( iinfo.NE.0 )
THEN
798 WRITE( nounit, fmt = 9999 )
'ZHEEVX(V,I,' // uplo //
799 $
')', iinfo, n, jtype, ioldsd
801 IF( iinfo.LT.0 )
THEN
804 result( ntest ) = ulpinv
811 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
813 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
814 $ v, ldu, tau, work, rwork, result( ntest ) )
819 $ il, iu, abstol, m3, wa3, z, ldu,
820 $ work, lwork, rwork, iwork,
821 $ iwork( 5*n+1 ), iinfo )
822 IF( iinfo.NE.0 )
THEN
823 WRITE( nounit, fmt = 9999 )
824 $
'ZHEEVX_2STAGE(N,I,' // uplo //
825 $
')', iinfo, n, jtype, ioldsd
827 IF( iinfo.LT.0 )
THEN
830 result( ntest ) = ulpinv
837 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
838 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
840 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
844 result( ntest ) = ( temp1+temp2 ) /
845 $ max( unfl, temp3*ulp )
848 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
852 CALL zheevx(
'V',
'V', uplo, n, a, ldu, vl, vu, il, iu,
853 $ abstol, m2, wa2, z, ldu, work, lwork, rwork,
854 $ iwork, iwork( 5*n+1 ), iinfo )
855 IF( iinfo.NE.0 )
THEN
856 WRITE( nounit, fmt = 9999 )
'ZHEEVX(V,V,' // uplo //
857 $
')', iinfo, n, jtype, ioldsd
859 IF( iinfo.LT.0 )
THEN
862 result( ntest ) = ulpinv
869 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
871 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
872 $ v, ldu, tau, work, rwork, result( ntest ) )
877 $ il, iu, abstol, m3, wa3, z, ldu,
878 $ work, lwork, rwork, iwork,
879 $ iwork( 5*n+1 ), iinfo )
880 IF( iinfo.NE.0 )
THEN
881 WRITE( nounit, fmt = 9999 )
882 $
'ZHEEVX_2STAGE(N,V,' // uplo //
883 $
')', iinfo, n, jtype, ioldsd
885 IF( iinfo.LT.0 )
THEN
888 result( ntest ) = ulpinv
893 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
894 result( ntest ) = ulpinv
900 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
901 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
903 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
907 result( ntest ) = ( temp1+temp2 ) /
908 $ max( unfl, temp3*ulp )
914 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
919 IF( iuplo.EQ.1 )
THEN
923 work( indx ) = a( i, j )
931 work( indx ) = a( i, j )
938 indwrk = n*( n+1 ) / 2 + 1
939 CALL zhpevd(
'V', uplo, n, work, d1, z, ldu,
940 $ work( indwrk ), lwedc, rwork, lrwedc, iwork,
942 IF( iinfo.NE.0 )
THEN
943 WRITE( nounit, fmt = 9999 )
'ZHPEVD(V,' // uplo //
944 $
')', iinfo, n, jtype, ioldsd
946 IF( iinfo.LT.0 )
THEN
949 result( ntest ) = ulpinv
950 result( ntest+1 ) = ulpinv
951 result( ntest+2 ) = ulpinv
958 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
959 $ ldu, tau, work, rwork, result( ntest ) )
961 IF( iuplo.EQ.1 )
THEN
965 work( indx ) = a( i, j )
973 work( indx ) = a( i, j )
980 indwrk = n*( n+1 ) / 2 + 1
981 CALL zhpevd(
'N', uplo, n, work, d3, z, ldu,
982 $ work( indwrk ), lwedc, rwork, lrwedc, iwork,
984 IF( iinfo.NE.0 )
THEN
985 WRITE( nounit, fmt = 9999 )
'ZHPEVD(N,' // uplo //
986 $
')', iinfo, n, jtype, ioldsd
988 IF( iinfo.LT.0 )
THEN
991 result( ntest ) = ulpinv
1001 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1002 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1004 result( ntest ) = temp2 / max( unfl,
1005 $ ulp*max( temp1, temp2 ) )
1011 IF( iuplo.EQ.1 )
THEN
1015 work( indx ) = a( i, j )
1023 work( indx ) = a( i, j )
1032 temp3 = max( abs( d1( 1 ) ), abs( d1( n ) ) )
1034 vl = d1( il ) - max( half*( d1( il )-d1( il-1 ) ),
1035 $ ten*ulp*temp3, ten*rtunfl )
1036 ELSE IF( n.GT.0 )
THEN
1037 vl = d1( 1 ) - max( half*( d1( n )-d1( 1 ) ),
1038 $ ten*ulp*temp3, ten*rtunfl )
1041 vu = d1( iu ) + max( half*( d1( iu+1 )-d1( iu ) ),
1042 $ ten*ulp*temp3, ten*rtunfl )
1043 ELSE IF( n.GT.0 )
THEN
1044 vu = d1( n ) + max( half*( d1( n )-d1( 1 ) ),
1045 $ ten*ulp*temp3, ten*rtunfl )
1053 CALL zhpevx(
'V',
'A', uplo, n, work, vl, vu, il, iu,
1054 $ abstol, m, wa1, z, ldu, v, rwork, iwork,
1055 $ iwork( 5*n+1 ), iinfo )
1056 IF( iinfo.NE.0 )
THEN
1057 WRITE( nounit, fmt = 9999 )
'ZHPEVX(V,A,' // uplo //
1058 $
')', iinfo, n, jtype, ioldsd
1060 IF( iinfo.LT.0 )
THEN
1063 result( ntest ) = ulpinv
1064 result( ntest+1 ) = ulpinv
1065 result( ntest+2 ) = ulpinv
1072 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1073 $ ldu, tau, work, rwork, result( ntest ) )
1077 IF( iuplo.EQ.1 )
THEN
1081 work( indx ) = a( i, j )
1089 work( indx ) = a( i, j )
1095 CALL zhpevx(
'N',
'A', uplo, n, work, vl, vu, il, iu,
1096 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1097 $ iwork( 5*n+1 ), iinfo )
1098 IF( iinfo.NE.0 )
THEN
1099 WRITE( nounit, fmt = 9999 )
'ZHPEVX(N,A,' // uplo //
1100 $
')', iinfo, n, jtype, ioldsd
1102 IF( iinfo.LT.0 )
THEN
1105 result( ntest ) = ulpinv
1115 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1116 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1118 result( ntest ) = temp2 / max( unfl,
1119 $ ulp*max( temp1, temp2 ) )
1123 IF( iuplo.EQ.1 )
THEN
1127 work( indx ) = a( i, j )
1135 work( indx ) = a( i, j )
1141 CALL zhpevx(
'V',
'I', uplo, n, work, vl, vu, il, iu,
1142 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1143 $ iwork( 5*n+1 ), iinfo )
1144 IF( iinfo.NE.0 )
THEN
1145 WRITE( nounit, fmt = 9999 )
'ZHPEVX(V,I,' // uplo //
1146 $
')', iinfo, n, jtype, ioldsd
1148 IF( iinfo.LT.0 )
THEN
1151 result( ntest ) = ulpinv
1152 result( ntest+1 ) = ulpinv
1153 result( ntest+2 ) = ulpinv
1160 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1161 $ v, ldu, tau, work, rwork, result( ntest ) )
1165 IF( iuplo.EQ.1 )
THEN
1169 work( indx ) = a( i, j )
1177 work( indx ) = a( i, j )
1183 CALL zhpevx(
'N',
'I', uplo, n, work, vl, vu, il, iu,
1184 $ abstol, m3, wa3, z, ldu, v, rwork, iwork,
1185 $ iwork( 5*n+1 ), iinfo )
1186 IF( iinfo.NE.0 )
THEN
1187 WRITE( nounit, fmt = 9999 )
'ZHPEVX(N,I,' // uplo //
1188 $
')', iinfo, n, jtype, ioldsd
1190 IF( iinfo.LT.0 )
THEN
1193 result( ntest ) = ulpinv
1200 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1201 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1203 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1207 result( ntest ) = ( temp1+temp2 ) /
1208 $ max( unfl, temp3*ulp )
1212 IF( iuplo.EQ.1 )
THEN
1216 work( indx ) = a( i, j )
1224 work( indx ) = a( i, j )
1230 CALL zhpevx(
'V',
'V', uplo, n, work, vl, vu, il, iu,
1231 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1232 $ iwork( 5*n+1 ), iinfo )
1233 IF( iinfo.NE.0 )
THEN
1234 WRITE( nounit, fmt = 9999 )
'ZHPEVX(V,V,' // uplo //
1235 $
')', iinfo, n, jtype, ioldsd
1237 IF( iinfo.LT.0 )
THEN
1240 result( ntest ) = ulpinv
1241 result( ntest+1 ) = ulpinv
1242 result( ntest+2 ) = ulpinv
1249 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1250 $ v, ldu, tau, work, rwork, result( ntest ) )
1254 IF( iuplo.EQ.1 )
THEN
1258 work( indx ) = a( i, j )
1266 work( indx ) = a( i, j )
1272 CALL zhpevx(
'N',
'V', uplo, n, work, vl, vu, il, iu,
1273 $ abstol, m3, wa3, z, ldu, v, rwork, iwork,
1274 $ iwork( 5*n+1 ), iinfo )
1275 IF( iinfo.NE.0 )
THEN
1276 WRITE( nounit, fmt = 9999 )
'ZHPEVX(N,V,' // uplo //
1277 $
')', iinfo, n, jtype, ioldsd
1279 IF( iinfo.LT.0 )
THEN
1282 result( ntest ) = ulpinv
1287 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
1288 result( ntest ) = ulpinv
1294 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1295 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1297 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1301 result( ntest ) = ( temp1+temp2 ) /
1302 $ max( unfl, temp3*ulp )
1308 IF( jtype.LE.7 )
THEN
1310 ELSE IF( jtype.GE.8 .AND. jtype.LE.15 )
THEN
1319 IF( iuplo.EQ.1 )
THEN
1321 DO 560 i = max( 1, j-kd ), j
1322 v( kd+1+i-j, j ) = a( i, j )
1327 DO 580 i = j, min( n, j+kd )
1328 v( 1+i-j, j ) = a( i, j )
1334 CALL zhbevd(
'V', uplo, n, kd, v, ldu, d1, z, ldu, work,
1335 $ lwedc, rwork, lrwedc, iwork, liwedc, iinfo )
1336 IF( iinfo.NE.0 )
THEN
1337 WRITE( nounit, fmt = 9998 )
'ZHBEVD(V,' // uplo //
1338 $
')', iinfo, n, kd, jtype, ioldsd
1340 IF( iinfo.LT.0 )
THEN
1343 result( ntest ) = ulpinv
1344 result( ntest+1 ) = ulpinv
1345 result( ntest+2 ) = ulpinv
1352 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1353 $ ldu, tau, work, rwork, result( ntest ) )
1355 IF( iuplo.EQ.1 )
THEN
1357 DO 600 i = max( 1, j-kd ), j
1358 v( kd+1+i-j, j ) = a( i, j )
1363 DO 620 i = j, min( n, j+kd )
1364 v( 1+i-j, j ) = a( i, j )
1371 $ z, ldu, work, lwork, rwork,
1372 $ lrwedc, iwork, liwedc, iinfo )
1373 IF( iinfo.NE.0 )
THEN
1374 WRITE( nounit, fmt = 9998 )
1375 $
'ZHBEVD_2STAGE(N,' // uplo //
1376 $
')', iinfo, n, kd, jtype, ioldsd
1378 IF( iinfo.LT.0 )
THEN
1381 result( ntest ) = ulpinv
1391 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1392 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1394 result( ntest ) = temp2 / max( unfl,
1395 $ ulp*max( temp1, temp2 ) )
1401 IF( iuplo.EQ.1 )
THEN
1403 DO 660 i = max( 1, j-kd ), j
1404 v( kd+1+i-j, j ) = a( i, j )
1409 DO 680 i = j, min( n, j+kd )
1410 v( 1+i-j, j ) = a( i, j )
1416 CALL zhbevx(
'V',
'A', uplo, n, kd, v, ldu, u, ldu, vl,
1417 $ vu, il, iu, abstol, m, wa1, z, ldu, work,
1418 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1419 IF( iinfo.NE.0 )
THEN
1420 WRITE( nounit, fmt = 9999 )
'ZHBEVX(V,A,' // uplo //
1421 $
')', iinfo, n, kd, jtype, ioldsd
1423 IF( iinfo.LT.0 )
THEN
1426 result( ntest ) = ulpinv
1427 result( ntest+1 ) = ulpinv
1428 result( ntest+2 ) = ulpinv
1435 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1436 $ ldu, tau, work, rwork, result( ntest ) )
1440 IF( iuplo.EQ.1 )
THEN
1442 DO 700 i = max( 1, j-kd ), j
1443 v( kd+1+i-j, j ) = a( i, j )
1448 DO 720 i = j, min( n, j+kd )
1449 v( 1+i-j, j ) = a( i, j )
1455 $ u, ldu, vl, vu, il, iu, abstol,
1456 $ m2, wa2, z, ldu, work, lwork,
1457 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1458 IF( iinfo.NE.0 )
THEN
1459 WRITE( nounit, fmt = 9998 )
1460 $
'ZHBEVX_2STAGE(N,A,' // uplo //
1461 $
')', iinfo, n, kd, jtype, ioldsd
1463 IF( iinfo.LT.0 )
THEN
1466 result( ntest ) = ulpinv
1476 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1477 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1479 result( ntest ) = temp2 / max( unfl,
1480 $ ulp*max( temp1, temp2 ) )
1487 IF( iuplo.EQ.1 )
THEN
1489 DO 760 i = max( 1, j-kd ), j
1490 v( kd+1+i-j, j ) = a( i, j )
1495 DO 780 i = j, min( n, j+kd )
1496 v( 1+i-j, j ) = a( i, j )
1501 CALL zhbevx(
'V',
'I', uplo, n, kd, v, ldu, u, ldu, vl,
1502 $ vu, il, iu, abstol, m2, wa2, z, ldu, work,
1503 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1504 IF( iinfo.NE.0 )
THEN
1505 WRITE( nounit, fmt = 9998 )
'ZHBEVX(V,I,' // uplo //
1506 $
')', iinfo, n, kd, jtype, ioldsd
1508 IF( iinfo.LT.0 )
THEN
1511 result( ntest ) = ulpinv
1512 result( ntest+1 ) = ulpinv
1513 result( ntest+2 ) = ulpinv
1520 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1521 $ v, ldu, tau, work, rwork, result( ntest ) )
1525 IF( iuplo.EQ.1 )
THEN
1527 DO 800 i = max( 1, j-kd ), j
1528 v( kd+1+i-j, j ) = a( i, j )
1533 DO 820 i = j, min( n, j+kd )
1534 v( 1+i-j, j ) = a( i, j )
1539 $ u, ldu, vl, vu, il, iu, abstol,
1540 $ m3, wa3, z, ldu, work, lwork,
1541 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1542 IF( iinfo.NE.0 )
THEN
1543 WRITE( nounit, fmt = 9998 )
1544 $
'ZHBEVX_2STAGE(N,I,' // uplo //
1545 $
')', iinfo, n, kd, jtype, ioldsd
1547 IF( iinfo.LT.0 )
THEN
1550 result( ntest ) = ulpinv
1557 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1558 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1560 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1564 result( ntest ) = ( temp1+temp2 ) /
1565 $ max( unfl, temp3*ulp )
1572 IF( iuplo.EQ.1 )
THEN
1574 DO 850 i = max( 1, j-kd ), j
1575 v( kd+1+i-j, j ) = a( i, j )
1580 DO 870 i = j, min( n, j+kd )
1581 v( 1+i-j, j ) = a( i, j )
1585 CALL zhbevx(
'V',
'V', uplo, n, kd, v, ldu, u, ldu, vl,
1586 $ vu, il, iu, abstol, m2, wa2, z, ldu, work,
1587 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1588 IF( iinfo.NE.0 )
THEN
1589 WRITE( nounit, fmt = 9998 )
'ZHBEVX(V,V,' // uplo //
1590 $
')', iinfo, n, kd, jtype, ioldsd
1592 IF( iinfo.LT.0 )
THEN
1595 result( ntest ) = ulpinv
1596 result( ntest+1 ) = ulpinv
1597 result( ntest+2 ) = ulpinv
1604 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1605 $ v, ldu, tau, work, rwork, result( ntest ) )
1609 IF( iuplo.EQ.1 )
THEN
1611 DO 890 i = max( 1, j-kd ), j
1612 v( kd+1+i-j, j ) = a( i, j )
1617 DO 910 i = j, min( n, j+kd )
1618 v( 1+i-j, j ) = a( i, j )
1623 $ u, ldu, vl, vu, il, iu, abstol,
1624 $ m3, wa3, z, ldu, work, lwork,
1625 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1626 IF( iinfo.NE.0 )
THEN
1627 WRITE( nounit, fmt = 9998 )
1628 $
'ZHBEVX_2STAGE(N,V,' // uplo //
1629 $
')', iinfo, n, kd, jtype, ioldsd
1631 IF( iinfo.LT.0 )
THEN
1634 result( ntest ) = ulpinv
1639 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
1640 result( ntest ) = ulpinv
1646 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1647 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1649 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1653 result( ntest ) = ( temp1+temp2 ) /
1654 $ max( unfl, temp3*ulp )
1660 CALL zlacpy(
' ', n, n, a, lda, v, ldu )
1663 CALL zheev(
'V', uplo, n, a, ldu, d1, work, lwork, rwork,
1665 IF( iinfo.NE.0 )
THEN
1666 WRITE( nounit, fmt = 9999 )
'ZHEEV(V,' // uplo //
')',
1667 $ iinfo, n, jtype, ioldsd
1669 IF( iinfo.LT.0 )
THEN
1672 result( ntest ) = ulpinv
1673 result( ntest+1 ) = ulpinv
1674 result( ntest+2 ) = ulpinv
1681 CALL zhet21( 1, uplo, n, 0, v, ldu, d1, d2, a, ldu, z,
1682 $ ldu, tau, work, rwork, result( ntest ) )
1684 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1688 $ work, lwork, rwork, iinfo )
1689 IF( iinfo.NE.0 )
THEN
1690 WRITE( nounit, fmt = 9999 )
1691 $
'ZHEEV_2STAGE(N,' // uplo //
')',
1692 $ iinfo, n, jtype, ioldsd
1694 IF( iinfo.LT.0 )
THEN
1697 result( ntest ) = ulpinv
1707 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1708 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1710 result( ntest ) = temp2 / max( unfl,
1711 $ ulp*max( temp1, temp2 ) )
1715 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1722 IF( iuplo.EQ.1 )
THEN
1726 work( indx ) = a( i, j )
1734 work( indx ) = a( i, j )
1741 indwrk = n*( n+1 ) / 2 + 1
1742 CALL zhpev(
'V', uplo, n, work, d1, z, ldu,
1743 $ work( indwrk ), rwork, iinfo )
1744 IF( iinfo.NE.0 )
THEN
1745 WRITE( nounit, fmt = 9999 )
'ZHPEV(V,' // uplo //
')',
1746 $ iinfo, n, jtype, ioldsd
1748 IF( iinfo.LT.0 )
THEN
1751 result( ntest ) = ulpinv
1752 result( ntest+1 ) = ulpinv
1753 result( ntest+2 ) = ulpinv
1760 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1761 $ ldu, tau, work, rwork, result( ntest ) )
1763 IF( iuplo.EQ.1 )
THEN
1767 work( indx ) = a( i, j )
1775 work( indx ) = a( i, j )
1782 indwrk = n*( n+1 ) / 2 + 1
1783 CALL zhpev(
'N', uplo, n, work, d3, z, ldu,
1784 $ work( indwrk ), rwork, iinfo )
1785 IF( iinfo.NE.0 )
THEN
1786 WRITE( nounit, fmt = 9999 )
'ZHPEV(N,' // uplo //
')',
1787 $ iinfo, n, jtype, ioldsd
1789 IF( iinfo.LT.0 )
THEN
1792 result( ntest ) = ulpinv
1802 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1803 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1805 result( ntest ) = temp2 / max( unfl,
1806 $ ulp*max( temp1, temp2 ) )
1812 IF( jtype.LE.7 )
THEN
1814 ELSE IF( jtype.GE.8 .AND. jtype.LE.15 )
THEN
1823 IF( iuplo.EQ.1 )
THEN
1825 DO 1060 i = max( 1, j-kd ), j
1826 v( kd+1+i-j, j ) = a( i, j )
1831 DO 1080 i = j, min( n, j+kd )
1832 v( 1+i-j, j ) = a( i, j )
1838 CALL zhbev(
'V', uplo, n, kd, v, ldu, d1, z, ldu, work,
1840 IF( iinfo.NE.0 )
THEN
1841 WRITE( nounit, fmt = 9998 )
'ZHBEV(V,' // uplo //
')',
1842 $ iinfo, n, kd, jtype, ioldsd
1844 IF( iinfo.LT.0 )
THEN
1847 result( ntest ) = ulpinv
1848 result( ntest+1 ) = ulpinv
1849 result( ntest+2 ) = ulpinv
1856 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1857 $ ldu, tau, work, rwork, result( ntest ) )
1859 IF( iuplo.EQ.1 )
THEN
1861 DO 1100 i = max( 1, j-kd ), j
1862 v( kd+1+i-j, j ) = a( i, j )
1867 DO 1120 i = j, min( n, j+kd )
1868 v( 1+i-j, j ) = a( i, j )
1874 CALL zhbev_2stage(
'N', uplo, n, kd, v, ldu, d3, z, ldu,
1875 $ work, lwork, rwork, iinfo )
1876 IF( iinfo.NE.0 )
THEN
1877 WRITE( nounit, fmt = 9998 )
1878 $
'ZHBEV_2STAGE(N,' // uplo //
')',
1879 $ iinfo, n, kd, jtype, ioldsd
1881 IF( iinfo.LT.0 )
THEN
1884 result( ntest ) = ulpinv
1896 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1897 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1899 result( ntest ) = temp2 / max( unfl,
1900 $ ulp*max( temp1, temp2 ) )
1902 CALL zlacpy(
' ', n, n, a, lda, v, ldu )
1904 CALL zheevr(
'V',
'A', uplo, n, a, ldu, vl, vu, il, iu,
1905 $ abstol, m, wa1, z, ldu, iwork, work, lwork,
1906 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
1908 IF( iinfo.NE.0 )
THEN
1909 WRITE( nounit, fmt = 9999 )
'ZHEEVR(V,A,' // uplo //
1910 $
')', iinfo, n, jtype, ioldsd
1912 IF( iinfo.LT.0 )
THEN
1915 result( ntest ) = ulpinv
1916 result( ntest+1 ) = ulpinv
1917 result( ntest+2 ) = ulpinv
1924 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1926 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1927 $ ldu, tau, work, rwork, result( ntest ) )
1931 $ il, iu, abstol, m2, wa2, z, ldu,
1932 $ iwork, work, lwork, rwork, lrwork,
1933 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
1934 IF( iinfo.NE.0 )
THEN
1935 WRITE( nounit, fmt = 9999 )
1936 $
'ZHEEVR_2STAGE(N,A,' // uplo //
1937 $
')', iinfo, n, jtype, ioldsd
1939 IF( iinfo.LT.0 )
THEN
1942 result( ntest ) = ulpinv
1952 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1953 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1955 result( ntest ) = temp2 / max( unfl,
1956 $ ulp*max( temp1, temp2 ) )
1961 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1962 CALL zheevr(
'V',
'I', uplo, n, a, ldu, vl, vu, il, iu,
1963 $ abstol, m2, wa2, z, ldu, iwork, work, lwork,
1964 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
1966 IF( iinfo.NE.0 )
THEN
1967 WRITE( nounit, fmt = 9999 )
'ZHEEVR(V,I,' // uplo //
1968 $
')', iinfo, n, jtype, ioldsd
1970 IF( iinfo.LT.0 )
THEN
1973 result( ntest ) = ulpinv
1974 result( ntest+1 ) = ulpinv
1975 result( ntest+2 ) = ulpinv
1982 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1984 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1985 $ v, ldu, tau, work, rwork, result( ntest ) )
1988 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1990 $ il, iu, abstol, m3, wa3, z, ldu,
1991 $ iwork, work, lwork, rwork, lrwork,
1992 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
1993 IF( iinfo.NE.0 )
THEN
1994 WRITE( nounit, fmt = 9999 )
1995 $
'ZHEEVR_2STAGE(N,I,' // uplo //
1996 $
')', iinfo, n, jtype, ioldsd
1998 IF( iinfo.LT.0 )
THEN
2001 result( ntest ) = ulpinv
2008 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
2009 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
2010 result( ntest ) = ( temp1+temp2 ) /
2011 $ max( unfl, ulp*temp3 )
2015 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2016 CALL zheevr(
'V',
'V', uplo, n, a, ldu, vl, vu, il, iu,
2017 $ abstol, m2, wa2, z, ldu, iwork, work, lwork,
2018 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
2020 IF( iinfo.NE.0 )
THEN
2021 WRITE( nounit, fmt = 9999 )
'ZHEEVR(V,V,' // uplo //
2022 $
')', iinfo, n, jtype, ioldsd
2024 IF( iinfo.LT.0 )
THEN
2027 result( ntest ) = ulpinv
2028 result( ntest+1 ) = ulpinv
2029 result( ntest+2 ) = ulpinv
2036 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2038 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
2039 $ v, ldu, tau, work, rwork, result( ntest ) )
2042 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2044 $ il, iu, abstol, m3, wa3, z, ldu,
2045 $ iwork, work, lwork, rwork, lrwork,
2046 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
2047 IF( iinfo.NE.0 )
THEN
2048 WRITE( nounit, fmt = 9999 )
2049 $
'ZHEEVR_2STAGE(N,V,' // uplo //
2050 $
')', iinfo, n, jtype, ioldsd
2052 IF( iinfo.LT.0 )
THEN
2055 result( ntest ) = ulpinv
2060 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
2061 result( ntest ) = ulpinv
2067 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
2068 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
2070 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
2074 result( ntest ) = ( temp1+temp2 ) /
2075 $ max( unfl, temp3*ulp )
2077 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2091 ntestt = ntestt + ntest
2092 CALL dlafts(
'ZST', n, n, jtype, ntest, result, ioldsd,
2093 $ thresh, nounit, nerrs )
2100 CALL alasvm(
'ZST', nounit, nerrs, ntestt, 0 )
2102 9999
FORMAT(
' ZDRVST2STG: ', a,
' returned INFO=', i6, / 9x,
'N=', i6,
2103 $
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
')' )
2104 9998
FORMAT(
' ZDRVST2STG: ', a,
' returned INFO=', i6, / 9x,
'N=', i6,
2105 $
', KD=', i6,
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
subroutine dlabad(SMALL, LARGE)
DLABAD
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine alasvm(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASVM
subroutine zhet21(ITYPE, UPLO, N, KBAND, A, LDA, D, E, U, LDU, V, LDV, TAU, WORK, RWORK, RESULT)
ZHET21
subroutine zdrvst2stg(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, D1, D2, D3, WA1, WA2, WA3, U, LDU, V, TAU, Z, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, RESULT, INFO)
ZDRVST2STG
subroutine zhet22(ITYPE, UPLO, N, M, KBAND, A, LDA, D, E, U, LDU, V, LDV, TAU, WORK, RWORK, RESULT)
ZHET22
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 zhetrd_2stage(VECT, UPLO, N, A, LDA, D, E, TAU, HOUS2, LHOUS2, WORK, LWORK, INFO)
ZHETRD_2STAGE
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 mat...
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 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 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
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 mat...
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 matr...
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 mat...
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 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 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 matrices
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 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 matrice...
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 matrice...
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 ...
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 matrice...
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 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 matrice...
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 m...
subroutine dlafts(TYPE, M, N, IMAT, NTESTS, RESULT, ISEED, THRESH, IOUNIT, IE)
DLAFTS