334 SUBROUTINE zdrvst( 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
400 INTRINSIC abs, dble, int, log, max, min, sqrt
403 DATA ktype / 1, 2, 5*4, 5*5, 3*8, 3*9 /
404 DATA kmagn / 2*1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 3, 1,
406 DATA kmode / 2*0, 4, 3, 1, 4, 4, 4, 3, 1, 4, 4, 0,
419 nmax = max( nmax, nn( j ) )
426 IF( nsizes.LT.0 )
THEN
428 ELSE IF( badnn )
THEN
430 ELSE IF( ntypes.LT.0 )
THEN
432 ELSE IF( lda.LT.nmax )
THEN
434 ELSE IF( ldu.LT.nmax )
THEN
436 ELSE IF( 2*max( 2, nmax )**2.GT.lwork )
THEN
441 CALL xerbla(
'ZDRVST', -info )
447 IF( nsizes.EQ.0 .OR. ntypes.EQ.0 )
452 unfl = dlamch(
'Safe minimum' )
453 ovfl = dlamch(
'Overflow' )
455 ulp = dlamch(
'Epsilon' )*dlamch(
'Base' )
457 rtunfl = sqrt( unfl )
458 rtovfl = sqrt( ovfl )
463 iseed2( i ) = iseed( i )
464 iseed3( i ) = iseed( i )
470 DO 1220 jsize = 1, nsizes
473 lgn = int( log( dble( n ) ) / log( two ) )
478 lwedc = max( 2*n+n*n, 2*n*n )
479 lrwedc = 1 + 4*n + 2*n*lgn + 3*n**2
486 aninv = one / dble( max( 1, n ) )
488 IF( nsizes.NE.1 )
THEN
489 mtypes = min( maxtyp, ntypes )
491 mtypes = min( maxtyp+1, ntypes )
494 DO 1210 jtype = 1, mtypes
495 IF( .NOT.dotype( jtype ) )
501 ioldsd( j ) = iseed( j )
519 IF( mtypes.GT.maxtyp )
522 itype = ktype( jtype )
523 imode = kmode( jtype )
527 GO TO ( 40, 50, 60 )kmagn( jtype )
534 anorm = ( rtovfl*ulp )*aninv
538 anorm = rtunfl*n*ulpinv
543 CALL zlaset(
'Full', lda, n, czero, czero, a, lda )
551 IF( itype.EQ.1 )
THEN
554 ELSE IF( itype.EQ.2 )
THEN
559 a( jcol, jcol ) = anorm
562 ELSE IF( itype.EQ.4 )
THEN
566 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
567 $ anorm, 0, 0,
'N', a, lda, work, iinfo )
569 ELSE IF( itype.EQ.5 )
THEN
573 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
574 $ anorm, n, n,
'N', a, lda, work, iinfo )
576 ELSE IF( itype.EQ.7 )
THEN
580 CALL zlatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
581 $
'T',
'N', work( n+1 ), 1, one,
582 $ work( 2*n+1 ), 1, one,
'N', idumma, 0, 0,
583 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
585 ELSE IF( itype.EQ.8 )
THEN
589 CALL zlatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
590 $
'T',
'N', work( n+1 ), 1, one,
591 $ work( 2*n+1 ), 1, one,
'N', idumma, n, n,
592 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
594 ELSE IF( itype.EQ.9 )
THEN
598 ihbw = int( ( n-1 )*dlarnd( 1, iseed3 ) )
599 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
600 $ anorm, ihbw, ihbw,
'Z', u, ldu, work,
605 CALL zlaset(
'Full', lda, n, czero, czero, a, lda )
606 DO 100 idiag = -ihbw, ihbw
607 irow = ihbw - idiag + 1
608 j1 = max( 1, idiag+1 )
609 j2 = min( n, n+idiag )
612 a( i, j ) = u( irow, j )
619 IF( iinfo.NE.0 )
THEN
620 WRITE( nounit, fmt = 9999 )
'Generator', iinfo, n, jtype,
633 il = 1 + int( ( n-1 )*dlarnd( 1, iseed2 ) )
634 iu = 1 + int( ( n-1 )*dlarnd( 1, iseed2 ) )
646 IF( iuplo.EQ.0 )
THEN
654 CALL zlacpy(
' ', n, n, a, lda, v, ldu )
657 CALL zheevd(
'V', uplo, n, a, ldu, d1, work, lwedc,
658 $ rwork, lrwedc, iwork, liwedc, iinfo )
659 IF( iinfo.NE.0 )
THEN
660 WRITE( nounit, fmt = 9999 )
'ZHEEVD(V,' // uplo //
661 $
')', iinfo, n, jtype, ioldsd
663 IF( iinfo.LT.0 )
THEN
666 result( ntest ) = ulpinv
667 result( ntest+1 ) = ulpinv
668 result( ntest+2 ) = ulpinv
675 CALL zhet21( 1, uplo, n, 0, v, ldu, d1, d2, a, ldu, z,
676 $ ldu, tau, work, rwork, result( ntest ) )
678 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
681 CALL zheevd(
'N', uplo, n, a, ldu, d3, work, lwedc,
682 $ rwork, lrwedc, iwork, liwedc, iinfo )
683 IF( iinfo.NE.0 )
THEN
684 WRITE( nounit, fmt = 9999 )
'ZHEEVD(N,' // uplo //
685 $
')', iinfo, n, jtype, ioldsd
687 IF( iinfo.LT.0 )
THEN
690 result( ntest ) = ulpinv
700 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
701 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
703 result( ntest ) = temp2 / max( unfl,
704 $ ulp*max( temp1, temp2 ) )
707 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
712 temp3 = max( abs( d1( 1 ) ), abs( d1( n ) ) )
714 vl = d1( il ) - max( half*( d1( il )-d1( il-1 ) ),
715 $ ten*ulp*temp3, ten*rtunfl )
716 ELSE IF( n.GT.0 )
THEN
717 vl = d1( 1 ) - max( half*( d1( n )-d1( 1 ) ),
718 $ ten*ulp*temp3, ten*rtunfl )
721 vu = d1( iu ) + max( half*( d1( iu+1 )-d1( iu ) ),
722 $ ten*ulp*temp3, ten*rtunfl )
723 ELSE IF( n.GT.0 )
THEN
724 vu = d1( n ) + max( half*( d1( n )-d1( 1 ) ),
725 $ ten*ulp*temp3, ten*rtunfl )
733 CALL zheevx(
'V',
'A', uplo, n, a, ldu, vl, vu, il, iu,
734 $ abstol, m, wa1, z, ldu, work, lwork, rwork,
735 $ iwork, iwork( 5*n+1 ), iinfo )
736 IF( iinfo.NE.0 )
THEN
737 WRITE( nounit, fmt = 9999 )
'ZHEEVX(V,A,' // uplo //
738 $
')', iinfo, n, jtype, ioldsd
740 IF( iinfo.LT.0 )
THEN
743 result( ntest ) = ulpinv
744 result( ntest+1 ) = ulpinv
745 result( ntest+2 ) = ulpinv
752 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
754 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
755 $ ldu, tau, work, rwork, result( ntest ) )
758 CALL zheevx(
'N',
'A', uplo, n, a, ldu, vl, vu, il, iu,
759 $ abstol, m2, wa2, z, ldu, work, lwork, rwork,
760 $ iwork, iwork( 5*n+1 ), iinfo )
761 IF( iinfo.NE.0 )
THEN
762 WRITE( nounit, fmt = 9999 )
'ZHEEVX(N,A,' // uplo //
763 $
')', iinfo, n, jtype, ioldsd
765 IF( iinfo.LT.0 )
THEN
768 result( ntest ) = ulpinv
778 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
779 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
781 result( ntest ) = temp2 / max( unfl,
782 $ ulp*max( temp1, temp2 ) )
785 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
789 CALL zheevx(
'V',
'I', uplo, n, a, ldu, vl, vu, il, iu,
790 $ abstol, m2, wa2, z, ldu, work, lwork, rwork,
791 $ iwork, iwork( 5*n+1 ), iinfo )
792 IF( iinfo.NE.0 )
THEN
793 WRITE( nounit, fmt = 9999 )
'ZHEEVX(V,I,' // uplo //
794 $
')', iinfo, n, jtype, ioldsd
796 IF( iinfo.LT.0 )
THEN
799 result( ntest ) = ulpinv
806 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
808 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
809 $ v, ldu, tau, work, rwork, result( ntest ) )
813 CALL zheevx(
'N',
'I', uplo, n, a, ldu, vl, vu, il, iu,
814 $ abstol, m3, wa3, z, ldu, work, lwork, rwork,
815 $ iwork, iwork( 5*n+1 ), iinfo )
816 IF( iinfo.NE.0 )
THEN
817 WRITE( nounit, fmt = 9999 )
'ZHEEVX(N,I,' // uplo //
818 $
')', iinfo, n, jtype, ioldsd
820 IF( iinfo.LT.0 )
THEN
823 result( ntest ) = ulpinv
830 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
831 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
833 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
837 result( ntest ) = ( temp1+temp2 ) /
838 $ max( unfl, temp3*ulp )
841 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
845 CALL zheevx(
'V',
'V', uplo, n, a, ldu, vl, vu, il, iu,
846 $ abstol, m2, wa2, z, ldu, work, lwork, rwork,
847 $ iwork, iwork( 5*n+1 ), iinfo )
848 IF( iinfo.NE.0 )
THEN
849 WRITE( nounit, fmt = 9999 )
'ZHEEVX(V,V,' // uplo //
850 $
')', iinfo, n, jtype, ioldsd
852 IF( iinfo.LT.0 )
THEN
855 result( ntest ) = ulpinv
862 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
864 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
865 $ v, ldu, tau, work, rwork, result( ntest ) )
869 CALL zheevx(
'N',
'V', uplo, n, a, ldu, vl, vu, il, iu,
870 $ abstol, m3, wa3, z, ldu, work, lwork, rwork,
871 $ iwork, iwork( 5*n+1 ), iinfo )
872 IF( iinfo.NE.0 )
THEN
873 WRITE( nounit, fmt = 9999 )
'ZHEEVX(N,V,' // uplo //
874 $
')', iinfo, n, jtype, ioldsd
876 IF( iinfo.LT.0 )
THEN
879 result( ntest ) = ulpinv
884 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
885 result( ntest ) = ulpinv
891 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
892 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
894 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
898 result( ntest ) = ( temp1+temp2 ) /
899 $ max( unfl, temp3*ulp )
905 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
910 IF( iuplo.EQ.1 )
THEN
914 work( indx ) = a( i, j )
922 work( indx ) = a( i, j )
929 indwrk = n*( n+1 ) / 2 + 1
930 CALL zhpevd(
'V', uplo, n, work, d1, z, ldu,
931 $ work( indwrk ), lwedc, rwork, lrwedc, iwork,
933 IF( iinfo.NE.0 )
THEN
934 WRITE( nounit, fmt = 9999 )
'ZHPEVD(V,' // uplo //
935 $
')', iinfo, n, jtype, ioldsd
937 IF( iinfo.LT.0 )
THEN
940 result( ntest ) = ulpinv
941 result( ntest+1 ) = ulpinv
942 result( ntest+2 ) = ulpinv
949 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
950 $ ldu, tau, work, rwork, result( ntest ) )
952 IF( iuplo.EQ.1 )
THEN
956 work( indx ) = a( i, j )
964 work( indx ) = a( i, j )
971 indwrk = n*( n+1 ) / 2 + 1
972 CALL zhpevd(
'N', uplo, n, work, d3, z, ldu,
973 $ work( indwrk ), lwedc, rwork, lrwedc, iwork,
975 IF( iinfo.NE.0 )
THEN
976 WRITE( nounit, fmt = 9999 )
'ZHPEVD(N,' // uplo //
977 $
')', iinfo, n, jtype, ioldsd
979 IF( iinfo.LT.0 )
THEN
982 result( ntest ) = ulpinv
992 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
993 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
995 result( ntest ) = temp2 / max( unfl,
996 $ ulp*max( temp1, temp2 ) )
1002 IF( iuplo.EQ.1 )
THEN
1006 work( indx ) = a( i, j )
1014 work( indx ) = a( i, j )
1023 temp3 = max( abs( d1( 1 ) ), abs( d1( n ) ) )
1025 vl = d1( il ) - max( half*( d1( il )-d1( il-1 ) ),
1026 $ ten*ulp*temp3, ten*rtunfl )
1027 ELSE IF( n.GT.0 )
THEN
1028 vl = d1( 1 ) - max( half*( d1( n )-d1( 1 ) ),
1029 $ ten*ulp*temp3, ten*rtunfl )
1032 vu = d1( iu ) + max( half*( d1( iu+1 )-d1( iu ) ),
1033 $ ten*ulp*temp3, ten*rtunfl )
1034 ELSE IF( n.GT.0 )
THEN
1035 vu = d1( n ) + max( half*( d1( n )-d1( 1 ) ),
1036 $ ten*ulp*temp3, ten*rtunfl )
1044 CALL zhpevx(
'V',
'A', uplo, n, work, vl, vu, il, iu,
1045 $ abstol, m, wa1, z, ldu, v, rwork, iwork,
1046 $ iwork( 5*n+1 ), iinfo )
1047 IF( iinfo.NE.0 )
THEN
1048 WRITE( nounit, fmt = 9999 )
'ZHPEVX(V,A,' // uplo //
1049 $
')', iinfo, n, jtype, ioldsd
1051 IF( iinfo.LT.0 )
THEN
1054 result( ntest ) = ulpinv
1055 result( ntest+1 ) = ulpinv
1056 result( ntest+2 ) = ulpinv
1063 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1064 $ ldu, tau, work, rwork, result( ntest ) )
1068 IF( iuplo.EQ.1 )
THEN
1072 work( indx ) = a( i, j )
1080 work( indx ) = a( i, j )
1086 CALL zhpevx(
'N',
'A', uplo, n, work, vl, vu, il, iu,
1087 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1088 $ iwork( 5*n+1 ), iinfo )
1089 IF( iinfo.NE.0 )
THEN
1090 WRITE( nounit, fmt = 9999 )
'ZHPEVX(N,A,' // uplo //
1091 $
')', iinfo, n, jtype, ioldsd
1093 IF( iinfo.LT.0 )
THEN
1096 result( ntest ) = ulpinv
1106 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1107 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1109 result( ntest ) = temp2 / max( unfl,
1110 $ ulp*max( temp1, temp2 ) )
1114 IF( iuplo.EQ.1 )
THEN
1118 work( indx ) = a( i, j )
1126 work( indx ) = a( i, j )
1132 CALL zhpevx(
'V',
'I', uplo, n, work, vl, vu, il, iu,
1133 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1134 $ iwork( 5*n+1 ), iinfo )
1135 IF( iinfo.NE.0 )
THEN
1136 WRITE( nounit, fmt = 9999 )
'ZHPEVX(V,I,' // uplo //
1137 $
')', iinfo, n, jtype, ioldsd
1139 IF( iinfo.LT.0 )
THEN
1142 result( ntest ) = ulpinv
1143 result( ntest+1 ) = ulpinv
1144 result( ntest+2 ) = ulpinv
1151 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1152 $ v, ldu, tau, work, rwork, result( ntest ) )
1156 IF( iuplo.EQ.1 )
THEN
1160 work( indx ) = a( i, j )
1168 work( indx ) = a( i, j )
1174 CALL zhpevx(
'N',
'I', uplo, n, work, vl, vu, il, iu,
1175 $ abstol, m3, wa3, z, ldu, v, rwork, iwork,
1176 $ iwork( 5*n+1 ), iinfo )
1177 IF( iinfo.NE.0 )
THEN
1178 WRITE( nounit, fmt = 9999 )
'ZHPEVX(N,I,' // uplo //
1179 $
')', iinfo, n, jtype, ioldsd
1181 IF( iinfo.LT.0 )
THEN
1184 result( ntest ) = ulpinv
1191 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1192 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1194 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1198 result( ntest ) = ( temp1+temp2 ) /
1199 $ max( unfl, temp3*ulp )
1203 IF( iuplo.EQ.1 )
THEN
1207 work( indx ) = a( i, j )
1215 work( indx ) = a( i, j )
1221 CALL zhpevx(
'V',
'V', uplo, n, work, vl, vu, il, iu,
1222 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1223 $ iwork( 5*n+1 ), iinfo )
1224 IF( iinfo.NE.0 )
THEN
1225 WRITE( nounit, fmt = 9999 )
'ZHPEVX(V,V,' // uplo //
1226 $
')', iinfo, n, jtype, ioldsd
1228 IF( iinfo.LT.0 )
THEN
1231 result( ntest ) = ulpinv
1232 result( ntest+1 ) = ulpinv
1233 result( ntest+2 ) = ulpinv
1240 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1241 $ v, ldu, tau, work, rwork, result( ntest ) )
1245 IF( iuplo.EQ.1 )
THEN
1249 work( indx ) = a( i, j )
1257 work( indx ) = a( i, j )
1263 CALL zhpevx(
'N',
'V', uplo, n, work, vl, vu, il, iu,
1264 $ abstol, m3, wa3, z, ldu, v, rwork, iwork,
1265 $ iwork( 5*n+1 ), iinfo )
1266 IF( iinfo.NE.0 )
THEN
1267 WRITE( nounit, fmt = 9999 )
'ZHPEVX(N,V,' // uplo //
1268 $
')', iinfo, n, jtype, ioldsd
1270 IF( iinfo.LT.0 )
THEN
1273 result( ntest ) = ulpinv
1278 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
1279 result( ntest ) = ulpinv
1285 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1286 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1288 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1292 result( ntest ) = ( temp1+temp2 ) /
1293 $ max( unfl, temp3*ulp )
1299 IF( jtype.LE.7 )
THEN
1301 ELSE IF( jtype.GE.8 .AND. jtype.LE.15 )
THEN
1310 IF( iuplo.EQ.1 )
THEN
1312 DO 560 i = max( 1, j-kd ), j
1313 v( kd+1+i-j, j ) = a( i, j )
1318 DO 580 i = j, min( n, j+kd )
1319 v( 1+i-j, j ) = a( i, j )
1325 CALL zhbevd(
'V', uplo, n, kd, v, ldu, d1, z, ldu, work,
1326 $ lwedc, rwork, lrwedc, iwork, liwedc, iinfo )
1327 IF( iinfo.NE.0 )
THEN
1328 WRITE( nounit, fmt = 9998 )
'ZHBEVD(V,' // uplo //
1329 $
')', iinfo, n, kd, jtype, ioldsd
1331 IF( iinfo.LT.0 )
THEN
1334 result( ntest ) = ulpinv
1335 result( ntest+1 ) = ulpinv
1336 result( ntest+2 ) = ulpinv
1343 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1344 $ ldu, tau, work, rwork, result( ntest ) )
1346 IF( iuplo.EQ.1 )
THEN
1348 DO 600 i = max( 1, j-kd ), j
1349 v( kd+1+i-j, j ) = a( i, j )
1354 DO 620 i = j, min( n, j+kd )
1355 v( 1+i-j, j ) = a( i, j )
1361 CALL zhbevd(
'N', uplo, n, kd, v, ldu, d3, z, ldu, work,
1362 $ lwedc, rwork, lrwedc, iwork, liwedc, iinfo )
1363 IF( iinfo.NE.0 )
THEN
1364 WRITE( nounit, fmt = 9998 )
'ZHBEVD(N,' // uplo //
1365 $
')', iinfo, n, kd, jtype, ioldsd
1367 IF( iinfo.LT.0 )
THEN
1370 result( ntest ) = ulpinv
1380 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1381 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1383 result( ntest ) = temp2 / max( unfl,
1384 $ ulp*max( temp1, temp2 ) )
1390 IF( iuplo.EQ.1 )
THEN
1392 DO 660 i = max( 1, j-kd ), j
1393 v( kd+1+i-j, j ) = a( i, j )
1398 DO 680 i = j, min( n, j+kd )
1399 v( 1+i-j, j ) = a( i, j )
1405 CALL zhbevx(
'V',
'A', uplo, n, kd, v, ldu, u, ldu, vl,
1406 $ vu, il, iu, abstol, m, wa1, z, ldu, work,
1407 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1408 IF( iinfo.NE.0 )
THEN
1409 WRITE( nounit, fmt = 9999 )
'ZHBEVX(V,A,' // uplo //
1410 $
')', iinfo, n, kd, jtype, ioldsd
1412 IF( iinfo.LT.0 )
THEN
1415 result( ntest ) = ulpinv
1416 result( ntest+1 ) = ulpinv
1417 result( ntest+2 ) = ulpinv
1424 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1425 $ ldu, tau, work, rwork, result( ntest ) )
1429 IF( iuplo.EQ.1 )
THEN
1431 DO 700 i = max( 1, j-kd ), j
1432 v( kd+1+i-j, j ) = a( i, j )
1437 DO 720 i = j, min( n, j+kd )
1438 v( 1+i-j, j ) = a( i, j )
1443 CALL zhbevx(
'N',
'A', uplo, n, kd, v, ldu, u, ldu, vl,
1444 $ vu, il, iu, abstol, m2, wa2, z, ldu, work,
1445 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1446 IF( iinfo.NE.0 )
THEN
1447 WRITE( nounit, fmt = 9998 )
'ZHBEVX(N,A,' // uplo //
1448 $
')', iinfo, n, kd, jtype, ioldsd
1450 IF( iinfo.LT.0 )
THEN
1453 result( ntest ) = ulpinv
1463 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1464 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1466 result( ntest ) = temp2 / max( unfl,
1467 $ ulp*max( temp1, temp2 ) )
1474 IF( iuplo.EQ.1 )
THEN
1476 DO 760 i = max( 1, j-kd ), j
1477 v( kd+1+i-j, j ) = a( i, j )
1482 DO 780 i = j, min( n, j+kd )
1483 v( 1+i-j, j ) = a( i, j )
1488 CALL zhbevx(
'V',
'I', uplo, n, kd, v, ldu, u, ldu, vl,
1489 $ vu, il, iu, abstol, m2, wa2, z, ldu, work,
1490 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1491 IF( iinfo.NE.0 )
THEN
1492 WRITE( nounit, fmt = 9998 )
'ZHBEVX(V,I,' // uplo //
1493 $
')', iinfo, n, kd, jtype, ioldsd
1495 IF( iinfo.LT.0 )
THEN
1498 result( ntest ) = ulpinv
1499 result( ntest+1 ) = ulpinv
1500 result( ntest+2 ) = ulpinv
1507 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1508 $ v, ldu, tau, work, rwork, result( ntest ) )
1512 IF( iuplo.EQ.1 )
THEN
1514 DO 800 i = max( 1, j-kd ), j
1515 v( kd+1+i-j, j ) = a( i, j )
1520 DO 820 i = j, min( n, j+kd )
1521 v( 1+i-j, j ) = a( i, j )
1525 CALL zhbevx(
'N',
'I', uplo, n, kd, v, ldu, u, ldu, vl,
1526 $ vu, il, iu, abstol, m3, wa3, z, ldu, work,
1527 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1528 IF( iinfo.NE.0 )
THEN
1529 WRITE( nounit, fmt = 9998 )
'ZHBEVX(N,I,' // uplo //
1530 $
')', iinfo, n, kd, jtype, ioldsd
1532 IF( iinfo.LT.0 )
THEN
1535 result( ntest ) = ulpinv
1542 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1543 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1545 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1549 result( ntest ) = ( temp1+temp2 ) /
1550 $ max( unfl, temp3*ulp )
1557 IF( iuplo.EQ.1 )
THEN
1559 DO 850 i = max( 1, j-kd ), j
1560 v( kd+1+i-j, j ) = a( i, j )
1565 DO 870 i = j, min( n, j+kd )
1566 v( 1+i-j, j ) = a( i, j )
1570 CALL zhbevx(
'V',
'V', uplo, n, kd, v, ldu, u, ldu, vl,
1571 $ vu, il, iu, abstol, m2, wa2, z, ldu, work,
1572 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1573 IF( iinfo.NE.0 )
THEN
1574 WRITE( nounit, fmt = 9998 )
'ZHBEVX(V,V,' // uplo //
1575 $
')', iinfo, n, kd, jtype, ioldsd
1577 IF( iinfo.LT.0 )
THEN
1580 result( ntest ) = ulpinv
1581 result( ntest+1 ) = ulpinv
1582 result( ntest+2 ) = ulpinv
1589 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1590 $ v, ldu, tau, work, rwork, result( ntest ) )
1594 IF( iuplo.EQ.1 )
THEN
1596 DO 890 i = max( 1, j-kd ), j
1597 v( kd+1+i-j, j ) = a( i, j )
1602 DO 910 i = j, min( n, j+kd )
1603 v( 1+i-j, j ) = a( i, j )
1607 CALL zhbevx(
'N',
'V', uplo, n, kd, v, ldu, u, ldu, vl,
1608 $ vu, il, iu, abstol, m3, wa3, z, ldu, work,
1609 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1610 IF( iinfo.NE.0 )
THEN
1611 WRITE( nounit, fmt = 9998 )
'ZHBEVX(N,V,' // uplo //
1612 $
')', iinfo, n, kd, jtype, ioldsd
1614 IF( iinfo.LT.0 )
THEN
1617 result( ntest ) = ulpinv
1622 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
1623 result( ntest ) = ulpinv
1629 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1630 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1632 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1636 result( ntest ) = ( temp1+temp2 ) /
1637 $ max( unfl, temp3*ulp )
1643 CALL zlacpy(
' ', n, n, a, lda, v, ldu )
1646 CALL zheev(
'V', uplo, n, a, ldu, d1, work, lwork, rwork,
1648 IF( iinfo.NE.0 )
THEN
1649 WRITE( nounit, fmt = 9999 )
'ZHEEV(V,' // uplo //
')',
1650 $ iinfo, n, jtype, ioldsd
1652 IF( iinfo.LT.0 )
THEN
1655 result( ntest ) = ulpinv
1656 result( ntest+1 ) = ulpinv
1657 result( ntest+2 ) = ulpinv
1664 CALL zhet21( 1, uplo, n, 0, v, ldu, d1, d2, a, ldu, z,
1665 $ ldu, tau, work, rwork, result( ntest ) )
1667 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1670 CALL zheev(
'N', uplo, n, a, ldu, d3, work, lwork, rwork,
1672 IF( iinfo.NE.0 )
THEN
1673 WRITE( nounit, fmt = 9999 )
'ZHEEV(N,' // uplo //
')',
1674 $ iinfo, n, jtype, ioldsd
1676 IF( iinfo.LT.0 )
THEN
1679 result( ntest ) = ulpinv
1689 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1690 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1692 result( ntest ) = temp2 / max( unfl,
1693 $ ulp*max( temp1, temp2 ) )
1697 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1704 IF( iuplo.EQ.1 )
THEN
1708 work( indx ) = a( i, j )
1716 work( indx ) = a( i, j )
1723 indwrk = n*( n+1 ) / 2 + 1
1724 CALL zhpev(
'V', uplo, n, work, d1, z, ldu,
1725 $ work( indwrk ), rwork, iinfo )
1726 IF( iinfo.NE.0 )
THEN
1727 WRITE( nounit, fmt = 9999 )
'ZHPEV(V,' // uplo //
')',
1728 $ iinfo, n, jtype, ioldsd
1730 IF( iinfo.LT.0 )
THEN
1733 result( ntest ) = ulpinv
1734 result( ntest+1 ) = ulpinv
1735 result( ntest+2 ) = ulpinv
1742 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1743 $ ldu, tau, work, rwork, result( ntest ) )
1745 IF( iuplo.EQ.1 )
THEN
1749 work( indx ) = a( i, j )
1757 work( indx ) = a( i, j )
1764 indwrk = n*( n+1 ) / 2 + 1
1765 CALL zhpev(
'N', uplo, n, work, d3, z, ldu,
1766 $ work( indwrk ), rwork, iinfo )
1767 IF( iinfo.NE.0 )
THEN
1768 WRITE( nounit, fmt = 9999 )
'ZHPEV(N,' // uplo //
')',
1769 $ iinfo, n, jtype, ioldsd
1771 IF( iinfo.LT.0 )
THEN
1774 result( ntest ) = ulpinv
1784 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1785 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1787 result( ntest ) = temp2 / max( unfl,
1788 $ ulp*max( temp1, temp2 ) )
1794 IF( jtype.LE.7 )
THEN
1796 ELSE IF( jtype.GE.8 .AND. jtype.LE.15 )
THEN
1805 IF( iuplo.EQ.1 )
THEN
1807 DO 1060 i = max( 1, j-kd ), j
1808 v( kd+1+i-j, j ) = a( i, j )
1813 DO 1080 i = j, min( n, j+kd )
1814 v( 1+i-j, j ) = a( i, j )
1820 CALL zhbev(
'V', uplo, n, kd, v, ldu, d1, z, ldu, work,
1822 IF( iinfo.NE.0 )
THEN
1823 WRITE( nounit, fmt = 9998 )
'ZHBEV(V,' // uplo //
')',
1824 $ iinfo, n, kd, jtype, ioldsd
1826 IF( iinfo.LT.0 )
THEN
1829 result( ntest ) = ulpinv
1830 result( ntest+1 ) = ulpinv
1831 result( ntest+2 ) = ulpinv
1838 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1839 $ ldu, tau, work, rwork, result( ntest ) )
1841 IF( iuplo.EQ.1 )
THEN
1843 DO 1100 i = max( 1, j-kd ), j
1844 v( kd+1+i-j, j ) = a( i, j )
1849 DO 1120 i = j, min( n, j+kd )
1850 v( 1+i-j, j ) = a( i, j )
1856 CALL zhbev(
'N', uplo, n, kd, v, ldu, d3, z, ldu, work,
1858 IF( iinfo.NE.0 )
THEN
1859 WRITE( nounit, fmt = 9998 )
'ZHBEV(N,' // uplo //
')',
1860 $ iinfo, n, kd, jtype, ioldsd
1862 IF( iinfo.LT.0 )
THEN
1865 result( ntest ) = ulpinv
1877 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1878 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1880 result( ntest ) = temp2 / max( unfl,
1881 $ ulp*max( temp1, temp2 ) )
1883 CALL zlacpy(
' ', n, n, a, lda, v, ldu )
1885 CALL zheevr(
'V',
'A', uplo, n, a, ldu, vl, vu, il, iu,
1886 $ abstol, m, wa1, z, ldu, iwork, work, lwork,
1887 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
1889 IF( iinfo.NE.0 )
THEN
1890 WRITE( nounit, fmt = 9999 )
'ZHEEVR(V,A,' // uplo //
1891 $
')', iinfo, n, jtype, ioldsd
1893 IF( iinfo.LT.0 )
THEN
1896 result( ntest ) = ulpinv
1897 result( ntest+1 ) = ulpinv
1898 result( ntest+2 ) = ulpinv
1905 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1907 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1908 $ ldu, tau, work, rwork, result( ntest ) )
1911 CALL zheevr(
'N',
'A', uplo, n, a, ldu, vl, vu, il, iu,
1912 $ abstol, m2, wa2, z, ldu, iwork, work, lwork,
1913 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
1915 IF( iinfo.NE.0 )
THEN
1916 WRITE( nounit, fmt = 9999 )
'ZHEEVR(N,A,' // uplo //
1917 $
')', iinfo, n, jtype, ioldsd
1919 IF( iinfo.LT.0 )
THEN
1922 result( ntest ) = ulpinv
1932 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1933 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1935 result( ntest ) = temp2 / max( unfl,
1936 $ ulp*max( temp1, temp2 ) )
1941 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1942 CALL zheevr(
'V',
'I', uplo, n, a, ldu, vl, vu, il, iu,
1943 $ abstol, m2, wa2, z, ldu, iwork, work, lwork,
1944 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
1946 IF( iinfo.NE.0 )
THEN
1947 WRITE( nounit, fmt = 9999 )
'ZHEEVR(V,I,' // uplo //
1948 $
')', iinfo, n, jtype, ioldsd
1950 IF( iinfo.LT.0 )
THEN
1953 result( ntest ) = ulpinv
1954 result( ntest+1 ) = ulpinv
1955 result( ntest+2 ) = ulpinv
1962 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1964 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1965 $ v, ldu, tau, work, rwork, result( ntest ) )
1968 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1969 CALL zheevr(
'N',
'I', uplo, n, a, ldu, vl, vu, il, iu,
1970 $ abstol, m3, wa3, z, ldu, iwork, work, lwork,
1971 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
1973 IF( iinfo.NE.0 )
THEN
1974 WRITE( nounit, fmt = 9999 )
'ZHEEVR(N,I,' // uplo //
1975 $
')', iinfo, n, jtype, ioldsd
1977 IF( iinfo.LT.0 )
THEN
1980 result( ntest ) = ulpinv
1987 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1988 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1989 result( ntest ) = ( temp1+temp2 ) /
1990 $ max( unfl, ulp*temp3 )
1994 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1995 CALL zheevr(
'V',
'V', uplo, n, a, ldu, vl, vu, il, iu,
1996 $ abstol, m2, wa2, z, ldu, iwork, work, lwork,
1997 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
1999 IF( iinfo.NE.0 )
THEN
2000 WRITE( nounit, fmt = 9999 )
'ZHEEVR(V,V,' // uplo //
2001 $
')', iinfo, n, jtype, ioldsd
2003 IF( iinfo.LT.0 )
THEN
2006 result( ntest ) = ulpinv
2007 result( ntest+1 ) = ulpinv
2008 result( ntest+2 ) = ulpinv
2015 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2017 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
2018 $ v, ldu, tau, work, rwork, result( ntest ) )
2021 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2022 CALL zheevr(
'N',
'V', uplo, n, a, ldu, vl, vu, il, iu,
2023 $ abstol, m3, wa3, z, ldu, iwork, work, lwork,
2024 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
2026 IF( iinfo.NE.0 )
THEN
2027 WRITE( nounit, fmt = 9999 )
'ZHEEVR(N,V,' // uplo //
2028 $
')', iinfo, n, jtype, ioldsd
2030 IF( iinfo.LT.0 )
THEN
2033 result( ntest ) = ulpinv
2038 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
2039 result( ntest ) = ulpinv
2045 temp1 = dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
2046 temp2 = dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
2048 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
2052 result( ntest ) = ( temp1+temp2 ) /
2053 $ max( unfl, temp3*ulp )
2055 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2069 ntestt = ntestt + ntest
2070 CALL dlafts(
'ZST', n, n, jtype, ntest, result, ioldsd,
2071 $ thresh, nounit, nerrs )
2078 CALL alasvm(
'ZST', nounit, nerrs, ntestt, 0 )
2080 9999
FORMAT(
' ZDRVST: ', a,
' returned INFO=', i6, / 9x,
'N=', i6,
2081 $
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
')' )
2082 9998
FORMAT(
' ZDRVST: ', a,
' returned INFO=', i6, / 9x,
'N=', i6,
2083 $
', 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 zdrvst(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)
ZDRVST
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 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 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 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 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 dlafts(TYPE, M, N, IMAT, NTESTS, RESULT, ISEED, THRESH, IOUNIT, IE)
DLAFTS