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' )
456 ulp = dlamch(
'Epsilon' )*dlamch(
'Base' )
458 rtunfl = sqrt( unfl )
459 rtovfl = sqrt( ovfl )
464 iseed2( i ) = iseed( i )
465 iseed3( i ) = iseed( i )
471 DO 1220 jsize = 1, nsizes
474 lgn = int( log( dble( n ) ) / log( two ) )
479 lwedc = max( 2*n+n*n, 2*n*n )
480 lrwedc = 1 + 4*n + 2*n*lgn + 3*n**2
487 aninv = one / dble( max( 1, n ) )
489 IF( nsizes.NE.1 )
THEN
490 mtypes = min( maxtyp, ntypes )
492 mtypes = min( maxtyp+1, ntypes )
495 DO 1210 jtype = 1, mtypes
496 IF( .NOT.dotype( jtype ) )
502 ioldsd( j ) = iseed( j )
520 IF( mtypes.GT.maxtyp )
523 itype = ktype( jtype )
524 imode = kmode( jtype )
528 GO TO ( 40, 50, 60 )kmagn( jtype )
535 anorm = ( rtovfl*ulp )*aninv
539 anorm = rtunfl*n*ulpinv
544 CALL zlaset(
'Full', lda, n, czero, czero, a, lda )
552 IF( itype.EQ.1 )
THEN
555 ELSE IF( itype.EQ.2 )
THEN
560 a( jcol, jcol ) = anorm
563 ELSE IF( itype.EQ.4 )
THEN
567 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
568 $ anorm, 0, 0,
'N', a, lda, work, iinfo )
570 ELSE IF( itype.EQ.5 )
THEN
574 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
575 $ anorm, n, n,
'N', a, lda, work, iinfo )
577 ELSE IF( itype.EQ.7 )
THEN
581 CALL zlatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
582 $
'T',
'N', work( n+1 ), 1, one,
583 $ work( 2*n+1 ), 1, one,
'N', idumma, 0, 0,
584 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
586 ELSE IF( itype.EQ.8 )
THEN
590 CALL zlatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
591 $
'T',
'N', work( n+1 ), 1, one,
592 $ work( 2*n+1 ), 1, one,
'N', idumma, n, n,
593 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
595 ELSE IF( itype.EQ.9 )
THEN
599 ihbw = int( ( n-1 )*dlarnd( 1, iseed3 ) )
600 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
601 $ anorm, ihbw, ihbw,
'Z', u, ldu, work,
606 CALL zlaset(
'Full', lda, n, czero, czero, a, lda )
607 DO 100 idiag = -ihbw, ihbw
608 irow = ihbw - idiag + 1
609 j1 = max( 1, idiag+1 )
610 j2 = min( n, n+idiag )
613 a( i, j ) = u( irow, j )
620 IF( iinfo.NE.0 )
THEN
621 WRITE( nounit, fmt = 9999 )
'Generator', iinfo, n, jtype,
634 il = 1 + int( ( n-1 )*dlarnd( 1, iseed2 ) )
635 iu = 1 + int( ( n-1 )*dlarnd( 1, iseed2 ) )
647 IF( iuplo.EQ.0 )
THEN
655 CALL zlacpy(
' ', n, n, a, lda, v, ldu )
658 CALL zheevd(
'V', uplo, n, a, ldu, d1, work, lwedc,
659 $ rwork, lrwedc, iwork, liwedc, iinfo )
660 IF( iinfo.NE.0 )
THEN
661 WRITE( nounit, fmt = 9999 )
'ZHEEVD(V,' // uplo //
662 $
')', iinfo, n, jtype, ioldsd
664 IF( iinfo.LT.0 )
THEN
667 result( ntest ) = ulpinv
668 result( ntest+1 ) = ulpinv
669 result( ntest+2 ) = ulpinv
676 CALL zhet21( 1, uplo, n, 0, v, ldu, d1, d2, a, ldu, z,
677 $ ldu, tau, work, rwork, result( ntest ) )
679 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
683 $ lwork, rwork, lrwedc, iwork, liwedc, iinfo )
684 IF( iinfo.NE.0 )
THEN
685 WRITE( nounit, fmt = 9999 )
686 $
'ZHEEVD_2STAGE(N,' // uplo //
687 $
')', iinfo, n, jtype, ioldsd
689 IF( iinfo.LT.0 )
THEN
692 result( ntest ) = ulpinv
702 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
703 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
705 result( ntest ) = temp2 / max( unfl,
706 $ ulp*max( temp1, temp2 ) )
709 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
714 temp3 = max( abs( d1( 1 ) ), abs( d1( n ) ) )
716 vl = d1( il ) - max( half*( d1( il )-d1( il-1 ) ),
717 $ ten*ulp*temp3, ten*rtunfl )
718 ELSE IF( n.GT.0 )
THEN
719 vl = d1( 1 ) - max( half*( d1( n )-d1( 1 ) ),
720 $ ten*ulp*temp3, ten*rtunfl )
723 vu = d1( iu ) + max( half*( d1( iu+1 )-d1( iu ) ),
724 $ ten*ulp*temp3, ten*rtunfl )
725 ELSE IF( n.GT.0 )
THEN
726 vu = d1( n ) + max( half*( d1( n )-d1( 1 ) ),
727 $ ten*ulp*temp3, ten*rtunfl )
735 CALL zheevx(
'V',
'A', uplo, n, a, ldu, vl, vu, il, iu,
736 $ abstol, m, wa1, z, ldu, work, lwork, rwork,
737 $ iwork, iwork( 5*n+1 ), iinfo )
738 IF( iinfo.NE.0 )
THEN
739 WRITE( nounit, fmt = 9999 )
'ZHEEVX(V,A,' // uplo //
740 $
')', iinfo, n, jtype, ioldsd
742 IF( iinfo.LT.0 )
THEN
745 result( ntest ) = ulpinv
746 result( ntest+1 ) = ulpinv
747 result( ntest+2 ) = ulpinv
754 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
756 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
757 $ ldu, tau, work, rwork, result( ntest ) )
761 $ il, iu, abstol, m2, wa2, z, ldu,
762 $ work, lwork, rwork, iwork,
763 $ iwork( 5*n+1 ), iinfo )
764 IF( iinfo.NE.0 )
THEN
765 WRITE( nounit, fmt = 9999 )
766 $
'ZHEEVX_2STAGE(N,A,' // uplo //
767 $
')', iinfo, n, jtype, ioldsd
769 IF( iinfo.LT.0 )
THEN
772 result( ntest ) = ulpinv
782 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
783 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
785 result( ntest ) = temp2 / max( unfl,
786 $ ulp*max( temp1, temp2 ) )
789 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
793 CALL zheevx(
'V',
'I', uplo, n, a, ldu, vl, vu, il, iu,
794 $ abstol, m2, wa2, z, ldu, work, lwork, rwork,
795 $ iwork, iwork( 5*n+1 ), iinfo )
796 IF( iinfo.NE.0 )
THEN
797 WRITE( nounit, fmt = 9999 )
'ZHEEVX(V,I,' // uplo //
798 $
')', iinfo, n, jtype, ioldsd
800 IF( iinfo.LT.0 )
THEN
803 result( ntest ) = ulpinv
810 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
812 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
813 $ v, ldu, tau, work, rwork, result( ntest ) )
818 $ il, iu, abstol, m3, wa3, z, ldu,
819 $ work, lwork, rwork, iwork,
820 $ iwork( 5*n+1 ), iinfo )
821 IF( iinfo.NE.0 )
THEN
822 WRITE( nounit, fmt = 9999 )
823 $
'ZHEEVX_2STAGE(N,I,' // uplo //
824 $
')', iinfo, n, jtype, ioldsd
826 IF( iinfo.LT.0 )
THEN
829 result( ntest ) = ulpinv
836 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
837 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
839 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
843 result( ntest ) = ( temp1+temp2 ) /
844 $ max( unfl, temp3*ulp )
847 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
851 CALL zheevx(
'V',
'V', uplo, n, a, ldu, vl, vu, il, iu,
852 $ abstol, m2, wa2, z, ldu, work, lwork, rwork,
853 $ iwork, iwork( 5*n+1 ), iinfo )
854 IF( iinfo.NE.0 )
THEN
855 WRITE( nounit, fmt = 9999 )
'ZHEEVX(V,V,' // uplo //
856 $
')', iinfo, n, jtype, ioldsd
858 IF( iinfo.LT.0 )
THEN
861 result( ntest ) = ulpinv
868 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
870 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
871 $ v, ldu, tau, work, rwork, result( ntest ) )
876 $ il, iu, abstol, m3, wa3, z, ldu,
877 $ work, lwork, rwork, iwork,
878 $ iwork( 5*n+1 ), iinfo )
879 IF( iinfo.NE.0 )
THEN
880 WRITE( nounit, fmt = 9999 )
881 $
'ZHEEVX_2STAGE(N,V,' // uplo //
882 $
')', iinfo, n, jtype, ioldsd
884 IF( iinfo.LT.0 )
THEN
887 result( ntest ) = ulpinv
892 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
893 result( ntest ) = ulpinv
899 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
900 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
902 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
906 result( ntest ) = ( temp1+temp2 ) /
907 $ max( unfl, temp3*ulp )
913 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
918 IF( iuplo.EQ.1 )
THEN
922 work( indx ) = a( i, j )
930 work( indx ) = a( i, j )
937 indwrk = n*( n+1 ) / 2 + 1
938 CALL zhpevd(
'V', uplo, n, work, d1, z, ldu,
939 $ work( indwrk ), lwedc, rwork, lrwedc, iwork,
941 IF( iinfo.NE.0 )
THEN
942 WRITE( nounit, fmt = 9999 )
'ZHPEVD(V,' // uplo //
943 $
')', iinfo, n, jtype, ioldsd
945 IF( iinfo.LT.0 )
THEN
948 result( ntest ) = ulpinv
949 result( ntest+1 ) = ulpinv
950 result( ntest+2 ) = ulpinv
957 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
958 $ ldu, tau, work, rwork, result( ntest ) )
960 IF( iuplo.EQ.1 )
THEN
964 work( indx ) = a( i, j )
972 work( indx ) = a( i, j )
979 indwrk = n*( n+1 ) / 2 + 1
980 CALL zhpevd(
'N', uplo, n, work, d3, z, ldu,
981 $ work( indwrk ), lwedc, rwork, lrwedc, iwork,
983 IF( iinfo.NE.0 )
THEN
984 WRITE( nounit, fmt = 9999 )
'ZHPEVD(N,' // uplo //
985 $
')', iinfo, n, jtype, ioldsd
987 IF( iinfo.LT.0 )
THEN
990 result( ntest ) = ulpinv
1000 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1001 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1003 result( ntest ) = temp2 / max( unfl,
1004 $ ulp*max( temp1, temp2 ) )
1010 IF( iuplo.EQ.1 )
THEN
1014 work( indx ) = a( i, j )
1022 work( indx ) = a( i, j )
1031 temp3 = max( abs( d1( 1 ) ), abs( d1( n ) ) )
1033 vl = d1( il ) - max( half*( d1( il )-d1( il-1 ) ),
1034 $ ten*ulp*temp3, ten*rtunfl )
1035 ELSE IF( n.GT.0 )
THEN
1036 vl = d1( 1 ) - max( half*( d1( n )-d1( 1 ) ),
1037 $ ten*ulp*temp3, ten*rtunfl )
1040 vu = d1( iu ) + max( half*( d1( iu+1 )-d1( iu ) ),
1041 $ ten*ulp*temp3, ten*rtunfl )
1042 ELSE IF( n.GT.0 )
THEN
1043 vu = d1( n ) + max( half*( d1( n )-d1( 1 ) ),
1044 $ ten*ulp*temp3, ten*rtunfl )
1052 CALL zhpevx(
'V',
'A', uplo, n, work, vl, vu, il, iu,
1053 $ abstol, m, wa1, z, ldu, v, rwork, iwork,
1054 $ iwork( 5*n+1 ), iinfo )
1055 IF( iinfo.NE.0 )
THEN
1056 WRITE( nounit, fmt = 9999 )
'ZHPEVX(V,A,' // uplo //
1057 $
')', iinfo, n, jtype, ioldsd
1059 IF( iinfo.LT.0 )
THEN
1062 result( ntest ) = ulpinv
1063 result( ntest+1 ) = ulpinv
1064 result( ntest+2 ) = ulpinv
1071 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1072 $ ldu, tau, work, rwork, result( ntest ) )
1076 IF( iuplo.EQ.1 )
THEN
1080 work( indx ) = a( i, j )
1088 work( indx ) = a( i, j )
1094 CALL zhpevx(
'N',
'A', uplo, n, work, vl, vu, il, iu,
1095 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1096 $ iwork( 5*n+1 ), iinfo )
1097 IF( iinfo.NE.0 )
THEN
1098 WRITE( nounit, fmt = 9999 )
'ZHPEVX(N,A,' // uplo //
1099 $
')', iinfo, n, jtype, ioldsd
1101 IF( iinfo.LT.0 )
THEN
1104 result( ntest ) = ulpinv
1114 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1115 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1117 result( ntest ) = temp2 / max( unfl,
1118 $ ulp*max( temp1, temp2 ) )
1122 IF( iuplo.EQ.1 )
THEN
1126 work( indx ) = a( i, j )
1134 work( indx ) = a( i, j )
1140 CALL zhpevx(
'V',
'I', uplo, n, work, vl, vu, il, iu,
1141 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1142 $ iwork( 5*n+1 ), iinfo )
1143 IF( iinfo.NE.0 )
THEN
1144 WRITE( nounit, fmt = 9999 )
'ZHPEVX(V,I,' // uplo //
1145 $
')', iinfo, n, jtype, ioldsd
1147 IF( iinfo.LT.0 )
THEN
1150 result( ntest ) = ulpinv
1151 result( ntest+1 ) = ulpinv
1152 result( ntest+2 ) = ulpinv
1159 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1160 $ v, ldu, tau, work, rwork, result( ntest ) )
1164 IF( iuplo.EQ.1 )
THEN
1168 work( indx ) = a( i, j )
1176 work( indx ) = a( i, j )
1182 CALL zhpevx(
'N',
'I', uplo, n, work, vl, vu, il, iu,
1183 $ abstol, m3, wa3, z, ldu, v, rwork, iwork,
1184 $ iwork( 5*n+1 ), iinfo )
1185 IF( iinfo.NE.0 )
THEN
1186 WRITE( nounit, fmt = 9999 )
'ZHPEVX(N,I,' // uplo //
1187 $
')', iinfo, n, jtype, ioldsd
1189 IF( iinfo.LT.0 )
THEN
1192 result( ntest ) = ulpinv
1199 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1200 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1202 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1206 result( ntest ) = ( temp1+temp2 ) /
1207 $ max( unfl, temp3*ulp )
1211 IF( iuplo.EQ.1 )
THEN
1215 work( indx ) = a( i, j )
1223 work( indx ) = a( i, j )
1229 CALL zhpevx(
'V',
'V', uplo, n, work, vl, vu, il, iu,
1230 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1231 $ iwork( 5*n+1 ), iinfo )
1232 IF( iinfo.NE.0 )
THEN
1233 WRITE( nounit, fmt = 9999 )
'ZHPEVX(V,V,' // uplo //
1234 $
')', iinfo, n, jtype, ioldsd
1236 IF( iinfo.LT.0 )
THEN
1239 result( ntest ) = ulpinv
1240 result( ntest+1 ) = ulpinv
1241 result( ntest+2 ) = ulpinv
1248 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1249 $ v, ldu, tau, work, rwork, result( ntest ) )
1253 IF( iuplo.EQ.1 )
THEN
1257 work( indx ) = a( i, j )
1265 work( indx ) = a( i, j )
1271 CALL zhpevx(
'N',
'V', uplo, n, work, vl, vu, il, iu,
1272 $ abstol, m3, wa3, z, ldu, v, rwork, iwork,
1273 $ iwork( 5*n+1 ), iinfo )
1274 IF( iinfo.NE.0 )
THEN
1275 WRITE( nounit, fmt = 9999 )
'ZHPEVX(N,V,' // uplo //
1276 $
')', iinfo, n, jtype, ioldsd
1278 IF( iinfo.LT.0 )
THEN
1281 result( ntest ) = ulpinv
1286 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
1287 result( ntest ) = ulpinv
1293 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1294 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1296 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1300 result( ntest ) = ( temp1+temp2 ) /
1301 $ max( unfl, temp3*ulp )
1307 IF( jtype.LE.7 )
THEN
1309 ELSE IF( jtype.GE.8 .AND. jtype.LE.15 )
THEN
1318 IF( iuplo.EQ.1 )
THEN
1320 DO 560 i = max( 1, j-kd ), j
1321 v( kd+1+i-j, j ) = a( i, j )
1326 DO 580 i = j, min( n, j+kd )
1327 v( 1+i-j, j ) = a( i, j )
1333 CALL zhbevd(
'V', uplo, n, kd, v, ldu, d1, z, ldu, work,
1334 $ lwedc, rwork, lrwedc, iwork, liwedc, iinfo )
1335 IF( iinfo.NE.0 )
THEN
1336 WRITE( nounit, fmt = 9998 )
'ZHBEVD(V,' // uplo //
1337 $
')', iinfo, n, kd, jtype, ioldsd
1339 IF( iinfo.LT.0 )
THEN
1342 result( ntest ) = ulpinv
1343 result( ntest+1 ) = ulpinv
1344 result( ntest+2 ) = ulpinv
1351 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1352 $ ldu, tau, work, rwork, result( ntest ) )
1354 IF( iuplo.EQ.1 )
THEN
1356 DO 600 i = max( 1, j-kd ), j
1357 v( kd+1+i-j, j ) = a( i, j )
1362 DO 620 i = j, min( n, j+kd )
1363 v( 1+i-j, j ) = a( i, j )
1370 $ z, ldu, work, lwork, rwork,
1371 $ lrwedc, iwork, liwedc, iinfo )
1372 IF( iinfo.NE.0 )
THEN
1373 WRITE( nounit, fmt = 9998 )
1374 $
'ZHBEVD_2STAGE(N,' // uplo //
1375 $
')', iinfo, n, kd, jtype, ioldsd
1377 IF( iinfo.LT.0 )
THEN
1380 result( ntest ) = ulpinv
1390 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1391 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1393 result( ntest ) = temp2 / max( unfl,
1394 $ ulp*max( temp1, temp2 ) )
1400 IF( iuplo.EQ.1 )
THEN
1402 DO 660 i = max( 1, j-kd ), j
1403 v( kd+1+i-j, j ) = a( i, j )
1408 DO 680 i = j, min( n, j+kd )
1409 v( 1+i-j, j ) = a( i, j )
1415 CALL zhbevx(
'V',
'A', uplo, n, kd, v, ldu, u, ldu, vl,
1416 $ vu, il, iu, abstol, m, wa1, z, ldu, work,
1417 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1418 IF( iinfo.NE.0 )
THEN
1419 WRITE( nounit, fmt = 9999 )
'ZHBEVX(V,A,' // uplo //
1420 $
')', iinfo, n, kd, jtype, ioldsd
1422 IF( iinfo.LT.0 )
THEN
1425 result( ntest ) = ulpinv
1426 result( ntest+1 ) = ulpinv
1427 result( ntest+2 ) = ulpinv
1434 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1435 $ ldu, tau, work, rwork, result( ntest ) )
1439 IF( iuplo.EQ.1 )
THEN
1441 DO 700 i = max( 1, j-kd ), j
1442 v( kd+1+i-j, j ) = a( i, j )
1447 DO 720 i = j, min( n, j+kd )
1448 v( 1+i-j, j ) = a( i, j )
1454 $ u, ldu, vl, vu, il, iu, abstol,
1455 $ m2, wa2, z, ldu, work, lwork,
1456 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1457 IF( iinfo.NE.0 )
THEN
1458 WRITE( nounit, fmt = 9998 )
1459 $
'ZHBEVX_2STAGE(N,A,' // uplo //
1460 $
')', iinfo, n, kd, jtype, ioldsd
1462 IF( iinfo.LT.0 )
THEN
1465 result( ntest ) = ulpinv
1475 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1476 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1478 result( ntest ) = temp2 / max( unfl,
1479 $ ulp*max( temp1, temp2 ) )
1486 IF( iuplo.EQ.1 )
THEN
1488 DO 760 i = max( 1, j-kd ), j
1489 v( kd+1+i-j, j ) = a( i, j )
1494 DO 780 i = j, min( n, j+kd )
1495 v( 1+i-j, j ) = a( i, j )
1500 CALL zhbevx(
'V',
'I', uplo, n, kd, v, ldu, u, ldu, vl,
1501 $ vu, il, iu, abstol, m2, wa2, z, ldu, work,
1502 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1503 IF( iinfo.NE.0 )
THEN
1504 WRITE( nounit, fmt = 9998 )
'ZHBEVX(V,I,' // uplo //
1505 $
')', iinfo, n, kd, jtype, ioldsd
1507 IF( iinfo.LT.0 )
THEN
1510 result( ntest ) = ulpinv
1511 result( ntest+1 ) = ulpinv
1512 result( ntest+2 ) = ulpinv
1519 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1520 $ v, ldu, tau, work, rwork, result( ntest ) )
1524 IF( iuplo.EQ.1 )
THEN
1526 DO 800 i = max( 1, j-kd ), j
1527 v( kd+1+i-j, j ) = a( i, j )
1532 DO 820 i = j, min( n, j+kd )
1533 v( 1+i-j, j ) = a( i, j )
1538 $ u, ldu, vl, vu, il, iu, abstol,
1539 $ m3, wa3, z, ldu, work, lwork,
1540 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1541 IF( iinfo.NE.0 )
THEN
1542 WRITE( nounit, fmt = 9998 )
1543 $
'ZHBEVX_2STAGE(N,I,' // uplo //
1544 $
')', iinfo, n, kd, jtype, ioldsd
1546 IF( iinfo.LT.0 )
THEN
1549 result( ntest ) = ulpinv
1556 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1557 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1559 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1563 result( ntest ) = ( temp1+temp2 ) /
1564 $ max( unfl, temp3*ulp )
1571 IF( iuplo.EQ.1 )
THEN
1573 DO 850 i = max( 1, j-kd ), j
1574 v( kd+1+i-j, j ) = a( i, j )
1579 DO 870 i = j, min( n, j+kd )
1580 v( 1+i-j, j ) = a( i, j )
1584 CALL zhbevx(
'V',
'V', uplo, n, kd, v, ldu, u, ldu, vl,
1585 $ vu, il, iu, abstol, m2, wa2, z, ldu, work,
1586 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1587 IF( iinfo.NE.0 )
THEN
1588 WRITE( nounit, fmt = 9998 )
'ZHBEVX(V,V,' // uplo //
1589 $
')', iinfo, n, kd, jtype, ioldsd
1591 IF( iinfo.LT.0 )
THEN
1594 result( ntest ) = ulpinv
1595 result( ntest+1 ) = ulpinv
1596 result( ntest+2 ) = ulpinv
1603 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1604 $ v, ldu, tau, work, rwork, result( ntest ) )
1608 IF( iuplo.EQ.1 )
THEN
1610 DO 890 i = max( 1, j-kd ), j
1611 v( kd+1+i-j, j ) = a( i, j )
1616 DO 910 i = j, min( n, j+kd )
1617 v( 1+i-j, j ) = a( i, j )
1622 $ u, ldu, vl, vu, il, iu, abstol,
1623 $ m3, wa3, z, ldu, work, lwork,
1624 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1625 IF( iinfo.NE.0 )
THEN
1626 WRITE( nounit, fmt = 9998 )
1627 $
'ZHBEVX_2STAGE(N,V,' // uplo //
1628 $
')', iinfo, n, kd, jtype, ioldsd
1630 IF( iinfo.LT.0 )
THEN
1633 result( ntest ) = ulpinv
1638 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
1639 result( ntest ) = ulpinv
1645 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1646 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1648 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1652 result( ntest ) = ( temp1+temp2 ) /
1653 $ max( unfl, temp3*ulp )
1659 CALL zlacpy(
' ', n, n, a, lda, v, ldu )
1662 CALL zheev(
'V', uplo, n, a, ldu, d1, work, lwork, rwork,
1664 IF( iinfo.NE.0 )
THEN
1665 WRITE( nounit, fmt = 9999 )
'ZHEEV(V,' // uplo //
')',
1666 $ iinfo, n, jtype, ioldsd
1668 IF( iinfo.LT.0 )
THEN
1671 result( ntest ) = ulpinv
1672 result( ntest+1 ) = ulpinv
1673 result( ntest+2 ) = ulpinv
1680 CALL zhet21( 1, uplo, n, 0, v, ldu, d1, d2, a, ldu, z,
1681 $ ldu, tau, work, rwork, result( ntest ) )
1683 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1687 $ work, lwork, rwork, iinfo )
1688 IF( iinfo.NE.0 )
THEN
1689 WRITE( nounit, fmt = 9999 )
1690 $
'ZHEEV_2STAGE(N,' // uplo //
')',
1691 $ iinfo, n, jtype, ioldsd
1693 IF( iinfo.LT.0 )
THEN
1696 result( ntest ) = ulpinv
1706 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1707 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1709 result( ntest ) = temp2 / max( unfl,
1710 $ ulp*max( temp1, temp2 ) )
1714 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1721 IF( iuplo.EQ.1 )
THEN
1725 work( indx ) = a( i, j )
1733 work( indx ) = a( i, j )
1740 indwrk = n*( n+1 ) / 2 + 1
1741 CALL zhpev(
'V', uplo, n, work, d1, z, ldu,
1742 $ work( indwrk ), rwork, iinfo )
1743 IF( iinfo.NE.0 )
THEN
1744 WRITE( nounit, fmt = 9999 )
'ZHPEV(V,' // uplo //
')',
1745 $ iinfo, n, jtype, ioldsd
1747 IF( iinfo.LT.0 )
THEN
1750 result( ntest ) = ulpinv
1751 result( ntest+1 ) = ulpinv
1752 result( ntest+2 ) = ulpinv
1759 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1760 $ ldu, tau, work, rwork, result( ntest ) )
1762 IF( iuplo.EQ.1 )
THEN
1766 work( indx ) = a( i, j )
1774 work( indx ) = a( i, j )
1781 indwrk = n*( n+1 ) / 2 + 1
1782 CALL zhpev(
'N', uplo, n, work, d3, z, ldu,
1783 $ work( indwrk ), rwork, iinfo )
1784 IF( iinfo.NE.0 )
THEN
1785 WRITE( nounit, fmt = 9999 )
'ZHPEV(N,' // uplo //
')',
1786 $ iinfo, n, jtype, ioldsd
1788 IF( iinfo.LT.0 )
THEN
1791 result( ntest ) = ulpinv
1801 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1802 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1804 result( ntest ) = temp2 / max( unfl,
1805 $ ulp*max( temp1, temp2 ) )
1811 IF( jtype.LE.7 )
THEN
1813 ELSE IF( jtype.GE.8 .AND. jtype.LE.15 )
THEN
1822 IF( iuplo.EQ.1 )
THEN
1824 DO 1060 i = max( 1, j-kd ), j
1825 v( kd+1+i-j, j ) = a( i, j )
1830 DO 1080 i = j, min( n, j+kd )
1831 v( 1+i-j, j ) = a( i, j )
1837 CALL zhbev(
'V', uplo, n, kd, v, ldu, d1, z, ldu, work,
1839 IF( iinfo.NE.0 )
THEN
1840 WRITE( nounit, fmt = 9998 )
'ZHBEV(V,' // uplo //
')',
1841 $ iinfo, n, kd, jtype, ioldsd
1843 IF( iinfo.LT.0 )
THEN
1846 result( ntest ) = ulpinv
1847 result( ntest+1 ) = ulpinv
1848 result( ntest+2 ) = ulpinv
1855 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1856 $ ldu, tau, work, rwork, result( ntest ) )
1858 IF( iuplo.EQ.1 )
THEN
1860 DO 1100 i = max( 1, j-kd ), j
1861 v( kd+1+i-j, j ) = a( i, j )
1866 DO 1120 i = j, min( n, j+kd )
1867 v( 1+i-j, j ) = a( i, j )
1873 CALL zhbev_2stage(
'N', uplo, n, kd, v, ldu, d3, z, ldu,
1874 $ work, lwork, rwork, iinfo )
1875 IF( iinfo.NE.0 )
THEN
1876 WRITE( nounit, fmt = 9998 )
1877 $
'ZHBEV_2STAGE(N,' // uplo //
')',
1878 $ iinfo, n, kd, jtype, ioldsd
1880 IF( iinfo.LT.0 )
THEN
1883 result( ntest ) = ulpinv
1895 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1896 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1898 result( ntest ) = temp2 / max( unfl,
1899 $ ulp*max( temp1, temp2 ) )
1901 CALL zlacpy(
' ', n, n, a, lda, v, ldu )
1903 CALL zheevr(
'V',
'A', uplo, n, a, ldu, vl, vu, il, iu,
1904 $ abstol, m, wa1, z, ldu, iwork, work, lwork,
1905 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
1907 IF( iinfo.NE.0 )
THEN
1908 WRITE( nounit, fmt = 9999 )
'ZHEEVR(V,A,' // uplo //
1909 $
')', iinfo, n, jtype, ioldsd
1911 IF( iinfo.LT.0 )
THEN
1914 result( ntest ) = ulpinv
1915 result( ntest+1 ) = ulpinv
1916 result( ntest+2 ) = ulpinv
1923 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1925 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1926 $ ldu, tau, work, rwork, result( ntest ) )
1930 $ il, iu, abstol, m2, wa2, z, ldu,
1931 $ iwork, work, lwork, rwork, lrwork,
1932 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
1933 IF( iinfo.NE.0 )
THEN
1934 WRITE( nounit, fmt = 9999 )
1935 $
'ZHEEVR_2STAGE(N,A,' // uplo //
1936 $
')', iinfo, n, jtype, ioldsd
1938 IF( iinfo.LT.0 )
THEN
1941 result( ntest ) = ulpinv
1951 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1952 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1954 result( ntest ) = temp2 / max( unfl,
1955 $ ulp*max( temp1, temp2 ) )
1960 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1961 CALL zheevr(
'V',
'I', uplo, n, a, ldu, vl, vu, il, iu,
1962 $ abstol, m2, wa2, z, ldu, iwork, work, lwork,
1963 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
1965 IF( iinfo.NE.0 )
THEN
1966 WRITE( nounit, fmt = 9999 )
'ZHEEVR(V,I,' // uplo //
1967 $
')', iinfo, n, jtype, ioldsd
1969 IF( iinfo.LT.0 )
THEN
1972 result( ntest ) = ulpinv
1973 result( ntest+1 ) = ulpinv
1974 result( ntest+2 ) = ulpinv
1981 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1983 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1984 $ v, ldu, tau, work, rwork, result( ntest ) )
1987 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1989 $ il, iu, abstol, m3, wa3, z, ldu,
1990 $ iwork, work, lwork, rwork, lrwork,
1991 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
1992 IF( iinfo.NE.0 )
THEN
1993 WRITE( nounit, fmt = 9999 )
1994 $
'ZHEEVR_2STAGE(N,I,' // uplo //
1995 $
')', iinfo, n, jtype, ioldsd
1997 IF( iinfo.LT.0 )
THEN
2000 result( ntest ) = ulpinv
2007 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
2008 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
2009 result( ntest ) = ( temp1+temp2 ) /
2010 $ max( unfl, ulp*temp3 )
2014 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2015 CALL zheevr(
'V',
'V', uplo, n, a, ldu, vl, vu, il, iu,
2016 $ abstol, m2, wa2, z, ldu, iwork, work, lwork,
2017 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
2019 IF( iinfo.NE.0 )
THEN
2020 WRITE( nounit, fmt = 9999 )
'ZHEEVR(V,V,' // uplo //
2021 $
')', iinfo, n, jtype, ioldsd
2023 IF( iinfo.LT.0 )
THEN
2026 result( ntest ) = ulpinv
2027 result( ntest+1 ) = ulpinv
2028 result( ntest+2 ) = ulpinv
2035 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2037 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
2038 $ v, ldu, tau, work, rwork, result( ntest ) )
2041 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2043 $ il, iu, abstol, m3, wa3, z, ldu,
2044 $ iwork, work, lwork, rwork, lrwork,
2045 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
2046 IF( iinfo.NE.0 )
THEN
2047 WRITE( nounit, fmt = 9999 )
2048 $
'ZHEEVR_2STAGE(N,V,' // uplo //
2049 $
')', iinfo, n, jtype, ioldsd
2051 IF( iinfo.LT.0 )
THEN
2054 result( ntest ) = ulpinv
2059 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
2060 result( ntest ) = ulpinv
2066 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
2067 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
2069 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
2073 result( ntest ) = ( temp1+temp2 ) /
2074 $ max( unfl, temp3*ulp )
2076 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2090 ntestt = ntestt + ntest
2091 CALL dlafts(
'ZST', n, n, jtype, ntest, result, ioldsd,
2092 $ thresh, nounit, nerrs )
2099 CALL alasvm(
'ZST', nounit, nerrs, ntestt, 0 )
2101 9999
FORMAT(
' ZDRVST2STG: ', a,
' returned INFO=', i6, / 9x,
'N=', i6,
2102 $
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
')' )
2103 9998
FORMAT(
' ZDRVST2STG: ', a,
' returned INFO=', i6, / 9x,
'N=', i6,
2104 $
', KD=', i6,
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
subroutine alasvm(type, nout, nfail, nrun, nerrs)
ALASVM
subroutine xerbla(srname, info)
subroutine dlafts(type, m, n, imat, ntests, result, iseed, thresh, iounit, ie)
DLAFTS
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 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 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 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 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 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 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 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 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 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 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 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 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 zhetrd_2stage(vect, uplo, n, a, lda, d, e, tau, hous2, lhous2, work, lwork, info)
ZHETRD_2STAGE
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 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 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 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 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 zhet21(itype, uplo, n, kband, a, lda, d, e, u, ldu, v, ldv, tau, work, rwork, result)
ZHET21
subroutine zhet22(itype, uplo, n, m, kband, a, lda, d, e, u, ldu, v, ldv, tau, work, rwork, result)
ZHET22
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