347 INTEGER info, lda, ldu, liwork, lrwork, lwork, nounit,
349 DOUBLE PRECISION thresh
353 INTEGER iseed( 4 ), iwork( * ), nn( * )
354 DOUBLE PRECISION d1( * ), d2( * ), d3( * ), result( * ),
355 $ rwork( * ), wa1( * ), wa2( * ), wa3( * )
356 COMPLEX*16 a( lda, * ), tau( * ), u( ldu, * ),
357 $ v( ldu, * ), work( * ), z( ldu, * )
364 DOUBLE PRECISION zero, one, two, ten
365 parameter ( zero = 0.0d+0, one = 1.0d+0, two = 2.0d+0,
367 DOUBLE PRECISION half
368 parameter ( half = one / two )
369 COMPLEX*16 czero, cone
370 parameter ( czero = ( 0.0d+0, 0.0d+0 ),
371 $ cone = ( 1.0d+0, 0.0d+0 ) )
373 parameter ( maxtyp = 18 )
378 INTEGER i, idiag, ihbw, iinfo, il, imode, indwrk, indx,
379 $ irow, itemp, itype, iu, iuplo, j, j1, j2, jcol,
380 $ jsize, jtype, kd, lgn, liwedc, lrwedc, lwedc,
381 $ m, m2, m3, mtypes, n, nerrs, nmats, nmax,
383 DOUBLE PRECISION abstol, aninv, anorm, cond, ovfl, rtovfl,
384 $ rtunfl, temp1, temp2, temp3, ulp, ulpinv, unfl,
388 INTEGER idumma( 1 ), ioldsd( 4 ), iseed2( 4 ),
389 $ iseed3( 4 ), kmagn( maxtyp ), kmode( maxtyp ),
406 INTRINSIC abs, dble, int, log, max, min, sqrt
409 DATA ktype / 1, 2, 5*4, 5*5, 3*8, 3*9 /
410 DATA kmagn / 2*1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 3, 1,
412 DATA kmode / 2*0, 4, 3, 1, 4, 4, 4, 3, 1, 4, 4, 0,
425 nmax = max( nmax, nn( j ) )
432 IF( nsizes.LT.0 )
THEN
434 ELSE IF( badnn )
THEN
436 ELSE IF( ntypes.LT.0 )
THEN
438 ELSE IF( lda.LT.nmax )
THEN
440 ELSE IF( ldu.LT.nmax )
THEN
442 ELSE IF( 2*max( 2, nmax )**2.GT.lwork )
THEN
447 CALL xerbla(
'ZDRVST2STG', -info )
453 IF( nsizes.EQ.0 .OR. ntypes.EQ.0 )
458 unfl =
dlamch(
'Safe minimum' )
459 ovfl =
dlamch(
'Overflow' )
463 rtunfl = sqrt( unfl )
464 rtovfl = sqrt( ovfl )
469 iseed2( i ) = iseed( i )
470 iseed3( i ) = iseed( i )
476 DO 1220 jsize = 1, nsizes
479 lgn = int( log( dble( n ) ) / log( two ) )
484 lwedc = max( 2*n+n*n, 2*n*n )
485 lrwedc = 1 + 4*n + 2*n*lgn + 3*n**2
492 aninv = one / dble( max( 1, n ) )
494 IF( nsizes.NE.1 )
THEN
495 mtypes = min( maxtyp, ntypes )
497 mtypes = min( maxtyp+1, ntypes )
500 DO 1210 jtype = 1, mtypes
501 IF( .NOT.dotype( jtype ) )
507 ioldsd( j ) = iseed( j )
525 IF( mtypes.GT.maxtyp )
528 itype = ktype( jtype )
529 imode = kmode( jtype )
533 GO TO ( 40, 50, 60 )kmagn( jtype )
540 anorm = ( rtovfl*ulp )*aninv
544 anorm = rtunfl*n*ulpinv
549 CALL zlaset(
'Full', lda, n, czero, czero, a, lda )
557 IF( itype.EQ.1 )
THEN
560 ELSE IF( itype.EQ.2 )
THEN
565 a( jcol, jcol ) = anorm
568 ELSE IF( itype.EQ.4 )
THEN
572 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
573 $ anorm, 0, 0,
'N', a, lda, work, iinfo )
575 ELSE IF( itype.EQ.5 )
THEN
579 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
580 $ anorm, n, n,
'N', a, lda, work, iinfo )
582 ELSE IF( itype.EQ.7 )
THEN
586 CALL zlatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
587 $
'T',
'N', work( n+1 ), 1, one,
588 $ work( 2*n+1 ), 1, one,
'N', idumma, 0, 0,
589 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
591 ELSE IF( itype.EQ.8 )
THEN
595 CALL zlatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
596 $
'T',
'N', work( n+1 ), 1, one,
597 $ work( 2*n+1 ), 1, one,
'N', idumma, n, n,
598 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
600 ELSE IF( itype.EQ.9 )
THEN
604 ihbw = int( ( n-1 )*
dlarnd( 1, iseed3 ) )
605 CALL zlatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
606 $ anorm, ihbw, ihbw,
'Z', u, ldu, work,
611 CALL zlaset(
'Full', lda, n, czero, czero, a, lda )
612 DO 100 idiag = -ihbw, ihbw
613 irow = ihbw - idiag + 1
614 j1 = max( 1, idiag+1 )
615 j2 = min( n, n+idiag )
618 a( i, j ) = u( irow, j )
625 IF( iinfo.NE.0 )
THEN
626 WRITE( nounit, fmt = 9999 )
'Generator', iinfo, n, jtype,
639 il = 1 + int( ( n-1 )*
dlarnd( 1, iseed2 ) )
640 iu = 1 + int( ( n-1 )*
dlarnd( 1, iseed2 ) )
652 IF( iuplo.EQ.0 )
THEN
660 CALL zlacpy(
' ', n, n, a, lda, v, ldu )
663 CALL zheevd(
'V', uplo, n, a, ldu, d1, work, lwedc,
664 $ rwork, lrwedc, iwork, liwedc, iinfo )
665 IF( iinfo.NE.0 )
THEN
666 WRITE( nounit, fmt = 9999 )
'ZHEEVD(V,' // uplo //
667 $
')', iinfo, n, jtype, ioldsd
669 IF( iinfo.LT.0 )
THEN
672 result( ntest ) = ulpinv
673 result( ntest+1 ) = ulpinv
674 result( ntest+2 ) = ulpinv
681 CALL zhet21( 1, uplo, n, 0, v, ldu, d1, d2, a, ldu, z,
682 $ ldu, tau, work, rwork, result( ntest ) )
684 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
688 $ lwork, rwork, lrwedc, iwork, liwedc, iinfo )
689 IF( iinfo.NE.0 )
THEN
690 WRITE( nounit, fmt = 9999 )
691 $
'ZHEEVD_2STAGE(N,' // uplo //
692 $
')', iinfo, n, jtype, ioldsd
694 IF( iinfo.LT.0 )
THEN
697 result( ntest ) = ulpinv
707 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
708 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
710 result( ntest ) = temp2 / max( unfl,
711 $ ulp*max( temp1, temp2 ) )
714 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
719 temp3 = max( abs( d1( 1 ) ), abs( d1( n ) ) )
721 vl = d1( il ) - max( half*( d1( il )-d1( il-1 ) ),
722 $ ten*ulp*temp3, ten*rtunfl )
723 ELSE IF( n.GT.0 )
THEN
724 vl = d1( 1 ) - max( half*( d1( n )-d1( 1 ) ),
725 $ ten*ulp*temp3, ten*rtunfl )
728 vu = d1( iu ) + max( half*( d1( iu+1 )-d1( iu ) ),
729 $ ten*ulp*temp3, ten*rtunfl )
730 ELSE IF( n.GT.0 )
THEN
731 vu = d1( n ) + max( half*( d1( n )-d1( 1 ) ),
732 $ ten*ulp*temp3, ten*rtunfl )
740 CALL zheevx(
'V',
'A', uplo, n, a, ldu, vl, vu, il, iu,
741 $ abstol, m, wa1, z, ldu, work, lwork, rwork,
742 $ iwork, iwork( 5*n+1 ), iinfo )
743 IF( iinfo.NE.0 )
THEN
744 WRITE( nounit, fmt = 9999 )
'ZHEEVX(V,A,' // uplo //
745 $
')', iinfo, n, jtype, ioldsd
747 IF( iinfo.LT.0 )
THEN
750 result( ntest ) = ulpinv
751 result( ntest+1 ) = ulpinv
752 result( ntest+2 ) = ulpinv
759 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
761 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
762 $ ldu, tau, work, rwork, result( ntest ) )
766 $ il, iu, abstol, m2, wa2, z, ldu,
767 $ work, lwork, rwork, iwork,
768 $ iwork( 5*n+1 ), iinfo )
769 IF( iinfo.NE.0 )
THEN
770 WRITE( nounit, fmt = 9999 )
771 $
'ZHEEVX_2STAGE(N,A,' // uplo //
772 $
')', iinfo, n, jtype, ioldsd
774 IF( iinfo.LT.0 )
THEN
777 result( ntest ) = ulpinv
787 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
788 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
790 result( ntest ) = temp2 / max( unfl,
791 $ ulp*max( temp1, temp2 ) )
794 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
798 CALL zheevx(
'V',
'I', uplo, n, a, ldu, vl, vu, il, iu,
799 $ abstol, m2, wa2, z, ldu, work, lwork, rwork,
800 $ iwork, iwork( 5*n+1 ), iinfo )
801 IF( iinfo.NE.0 )
THEN
802 WRITE( nounit, fmt = 9999 )
'ZHEEVX(V,I,' // uplo //
803 $
')', iinfo, n, jtype, ioldsd
805 IF( iinfo.LT.0 )
THEN
808 result( ntest ) = ulpinv
815 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
817 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
818 $ v, ldu, tau, work, rwork, result( ntest ) )
823 $ il, iu, abstol, m3, wa3, z, ldu,
824 $ work, lwork, rwork, iwork,
825 $ iwork( 5*n+1 ), iinfo )
826 IF( iinfo.NE.0 )
THEN
827 WRITE( nounit, fmt = 9999 )
828 $
'ZHEEVX_2STAGE(N,I,' // uplo //
829 $
')', iinfo, n, jtype, ioldsd
831 IF( iinfo.LT.0 )
THEN
834 result( ntest ) = ulpinv
841 temp1 =
dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
842 temp2 =
dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
844 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
848 result( ntest ) = ( temp1+temp2 ) /
849 $ max( unfl, temp3*ulp )
852 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
856 CALL zheevx(
'V',
'V', uplo, n, a, ldu, vl, vu, il, iu,
857 $ abstol, m2, wa2, z, ldu, work, lwork, rwork,
858 $ iwork, iwork( 5*n+1 ), iinfo )
859 IF( iinfo.NE.0 )
THEN
860 WRITE( nounit, fmt = 9999 )
'ZHEEVX(V,V,' // uplo //
861 $
')', iinfo, n, jtype, ioldsd
863 IF( iinfo.LT.0 )
THEN
866 result( ntest ) = ulpinv
873 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
875 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
876 $ v, ldu, tau, work, rwork, result( ntest ) )
881 $ il, iu, abstol, m3, wa3, z, ldu,
882 $ work, lwork, rwork, iwork,
883 $ iwork( 5*n+1 ), iinfo )
884 IF( iinfo.NE.0 )
THEN
885 WRITE( nounit, fmt = 9999 )
886 $
'ZHEEVX_2STAGE(N,V,' // uplo //
887 $
')', iinfo, n, jtype, ioldsd
889 IF( iinfo.LT.0 )
THEN
892 result( ntest ) = ulpinv
897 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
898 result( ntest ) = ulpinv
904 temp1 =
dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
905 temp2 =
dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
907 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
911 result( ntest ) = ( temp1+temp2 ) /
912 $ max( unfl, temp3*ulp )
918 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
923 IF( iuplo.EQ.1 )
THEN
927 work( indx ) = a( i, j )
935 work( indx ) = a( i, j )
942 indwrk = n*( n+1 ) / 2 + 1
943 CALL zhpevd(
'V', uplo, n, work, d1, z, ldu,
944 $ work( indwrk ), lwedc, rwork, lrwedc, iwork,
946 IF( iinfo.NE.0 )
THEN
947 WRITE( nounit, fmt = 9999 )
'ZHPEVD(V,' // uplo //
948 $
')', iinfo, n, jtype, ioldsd
950 IF( iinfo.LT.0 )
THEN
953 result( ntest ) = ulpinv
954 result( ntest+1 ) = ulpinv
955 result( ntest+2 ) = ulpinv
962 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
963 $ ldu, tau, work, rwork, result( ntest ) )
965 IF( iuplo.EQ.1 )
THEN
969 work( indx ) = a( i, j )
977 work( indx ) = a( i, j )
984 indwrk = n*( n+1 ) / 2 + 1
985 CALL zhpevd(
'N', uplo, n, work, d3, z, ldu,
986 $ work( indwrk ), lwedc, rwork, lrwedc, iwork,
988 IF( iinfo.NE.0 )
THEN
989 WRITE( nounit, fmt = 9999 )
'ZHPEVD(N,' // uplo //
990 $
')', iinfo, n, jtype, ioldsd
992 IF( iinfo.LT.0 )
THEN
995 result( ntest ) = ulpinv
1005 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1006 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1008 result( ntest ) = temp2 / max( unfl,
1009 $ ulp*max( temp1, temp2 ) )
1015 IF( iuplo.EQ.1 )
THEN
1019 work( indx ) = a( i, j )
1027 work( indx ) = a( i, j )
1036 temp3 = max( abs( d1( 1 ) ), abs( d1( n ) ) )
1038 vl = d1( il ) - max( half*( d1( il )-d1( il-1 ) ),
1039 $ ten*ulp*temp3, ten*rtunfl )
1040 ELSE IF( n.GT.0 )
THEN
1041 vl = d1( 1 ) - max( half*( d1( n )-d1( 1 ) ),
1042 $ ten*ulp*temp3, ten*rtunfl )
1045 vu = d1( iu ) + max( half*( d1( iu+1 )-d1( iu ) ),
1046 $ ten*ulp*temp3, ten*rtunfl )
1047 ELSE IF( n.GT.0 )
THEN
1048 vu = d1( n ) + max( half*( d1( n )-d1( 1 ) ),
1049 $ ten*ulp*temp3, ten*rtunfl )
1057 CALL zhpevx(
'V',
'A', uplo, n, work, vl, vu, il, iu,
1058 $ abstol, m, wa1, z, ldu, v, rwork, iwork,
1059 $ iwork( 5*n+1 ), iinfo )
1060 IF( iinfo.NE.0 )
THEN
1061 WRITE( nounit, fmt = 9999 )
'ZHPEVX(V,A,' // uplo //
1062 $
')', iinfo, n, jtype, ioldsd
1064 IF( iinfo.LT.0 )
THEN
1067 result( ntest ) = ulpinv
1068 result( ntest+1 ) = ulpinv
1069 result( ntest+2 ) = ulpinv
1076 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1077 $ ldu, tau, work, rwork, result( ntest ) )
1081 IF( iuplo.EQ.1 )
THEN
1085 work( indx ) = a( i, j )
1093 work( indx ) = a( i, j )
1099 CALL zhpevx(
'N',
'A', uplo, n, work, vl, vu, il, iu,
1100 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1101 $ iwork( 5*n+1 ), iinfo )
1102 IF( iinfo.NE.0 )
THEN
1103 WRITE( nounit, fmt = 9999 )
'ZHPEVX(N,A,' // uplo //
1104 $
')', iinfo, n, jtype, ioldsd
1106 IF( iinfo.LT.0 )
THEN
1109 result( ntest ) = ulpinv
1119 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1120 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1122 result( ntest ) = temp2 / max( unfl,
1123 $ ulp*max( temp1, temp2 ) )
1127 IF( iuplo.EQ.1 )
THEN
1131 work( indx ) = a( i, j )
1139 work( indx ) = a( i, j )
1145 CALL zhpevx(
'V',
'I', uplo, n, work, vl, vu, il, iu,
1146 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1147 $ iwork( 5*n+1 ), iinfo )
1148 IF( iinfo.NE.0 )
THEN
1149 WRITE( nounit, fmt = 9999 )
'ZHPEVX(V,I,' // uplo //
1150 $
')', iinfo, n, jtype, ioldsd
1152 IF( iinfo.LT.0 )
THEN
1155 result( ntest ) = ulpinv
1156 result( ntest+1 ) = ulpinv
1157 result( ntest+2 ) = ulpinv
1164 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1165 $ v, ldu, tau, work, rwork, result( ntest ) )
1169 IF( iuplo.EQ.1 )
THEN
1173 work( indx ) = a( i, j )
1181 work( indx ) = a( i, j )
1187 CALL zhpevx(
'N',
'I', uplo, n, work, vl, vu, il, iu,
1188 $ abstol, m3, wa3, z, ldu, v, rwork, iwork,
1189 $ iwork( 5*n+1 ), iinfo )
1190 IF( iinfo.NE.0 )
THEN
1191 WRITE( nounit, fmt = 9999 )
'ZHPEVX(N,I,' // uplo //
1192 $
')', iinfo, n, jtype, ioldsd
1194 IF( iinfo.LT.0 )
THEN
1197 result( ntest ) = ulpinv
1204 temp1 =
dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1205 temp2 =
dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1207 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1211 result( ntest ) = ( temp1+temp2 ) /
1212 $ max( unfl, temp3*ulp )
1216 IF( iuplo.EQ.1 )
THEN
1220 work( indx ) = a( i, j )
1228 work( indx ) = a( i, j )
1234 CALL zhpevx(
'V',
'V', uplo, n, work, vl, vu, il, iu,
1235 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1236 $ iwork( 5*n+1 ), iinfo )
1237 IF( iinfo.NE.0 )
THEN
1238 WRITE( nounit, fmt = 9999 )
'ZHPEVX(V,V,' // uplo //
1239 $
')', iinfo, n, jtype, ioldsd
1241 IF( iinfo.LT.0 )
THEN
1244 result( ntest ) = ulpinv
1245 result( ntest+1 ) = ulpinv
1246 result( ntest+2 ) = ulpinv
1253 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1254 $ v, ldu, tau, work, rwork, result( ntest ) )
1258 IF( iuplo.EQ.1 )
THEN
1262 work( indx ) = a( i, j )
1270 work( indx ) = a( i, j )
1276 CALL zhpevx(
'N',
'V', uplo, n, work, vl, vu, il, iu,
1277 $ abstol, m3, wa3, z, ldu, v, rwork, iwork,
1278 $ iwork( 5*n+1 ), iinfo )
1279 IF( iinfo.NE.0 )
THEN
1280 WRITE( nounit, fmt = 9999 )
'ZHPEVX(N,V,' // uplo //
1281 $
')', iinfo, n, jtype, ioldsd
1283 IF( iinfo.LT.0 )
THEN
1286 result( ntest ) = ulpinv
1291 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
1292 result( ntest ) = ulpinv
1298 temp1 =
dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1299 temp2 =
dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1301 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1305 result( ntest ) = ( temp1+temp2 ) /
1306 $ max( unfl, temp3*ulp )
1312 IF( jtype.LE.7 )
THEN
1314 ELSE IF( jtype.GE.8 .AND. jtype.LE.15 )
THEN
1323 IF( iuplo.EQ.1 )
THEN
1325 DO 560 i = max( 1, j-kd ), j
1326 v( kd+1+i-j, j ) = a( i, j )
1331 DO 580 i = j, min( n, j+kd )
1332 v( 1+i-j, j ) = a( i, j )
1338 CALL zhbevd(
'V', uplo, n, kd, v, ldu, d1, z, ldu, work,
1339 $ lwedc, rwork, lrwedc, iwork, liwedc, iinfo )
1340 IF( iinfo.NE.0 )
THEN
1341 WRITE( nounit, fmt = 9998 )
'ZHBEVD(V,' // uplo //
1342 $
')', iinfo, n, kd, jtype, ioldsd
1344 IF( iinfo.LT.0 )
THEN
1347 result( ntest ) = ulpinv
1348 result( ntest+1 ) = ulpinv
1349 result( ntest+2 ) = ulpinv
1356 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1357 $ ldu, tau, work, rwork, result( ntest ) )
1359 IF( iuplo.EQ.1 )
THEN
1361 DO 600 i = max( 1, j-kd ), j
1362 v( kd+1+i-j, j ) = a( i, j )
1367 DO 620 i = j, min( n, j+kd )
1368 v( 1+i-j, j ) = a( i, j )
1375 $ z, ldu, work, lwork, rwork,
1376 $ lrwedc, iwork, liwedc, iinfo )
1377 IF( iinfo.NE.0 )
THEN
1378 WRITE( nounit, fmt = 9998 )
1379 $
'ZHBEVD_2STAGE(N,' // uplo //
1380 $
')', iinfo, n, kd, jtype, ioldsd
1382 IF( iinfo.LT.0 )
THEN
1385 result( ntest ) = ulpinv
1395 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1396 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1398 result( ntest ) = temp2 / max( unfl,
1399 $ ulp*max( temp1, temp2 ) )
1405 IF( iuplo.EQ.1 )
THEN
1407 DO 660 i = max( 1, j-kd ), j
1408 v( kd+1+i-j, j ) = a( i, j )
1413 DO 680 i = j, min( n, j+kd )
1414 v( 1+i-j, j ) = a( i, j )
1420 CALL zhbevx(
'V',
'A', uplo, n, kd, v, ldu, u, ldu, vl,
1421 $ vu, il, iu, abstol, m, wa1, z, ldu, work,
1422 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1423 IF( iinfo.NE.0 )
THEN
1424 WRITE( nounit, fmt = 9999 )
'ZHBEVX(V,A,' // uplo //
1425 $
')', iinfo, n, kd, jtype, ioldsd
1427 IF( iinfo.LT.0 )
THEN
1430 result( ntest ) = ulpinv
1431 result( ntest+1 ) = ulpinv
1432 result( ntest+2 ) = ulpinv
1439 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1440 $ ldu, tau, work, rwork, result( ntest ) )
1444 IF( iuplo.EQ.1 )
THEN
1446 DO 700 i = max( 1, j-kd ), j
1447 v( kd+1+i-j, j ) = a( i, j )
1452 DO 720 i = j, min( n, j+kd )
1453 v( 1+i-j, j ) = a( i, j )
1459 $ u, ldu, vl, vu, il, iu, abstol,
1460 $ m2, wa2, z, ldu, work, lwork,
1461 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1462 IF( iinfo.NE.0 )
THEN
1463 WRITE( nounit, fmt = 9998 )
1464 $
'ZHBEVX_2STAGE(N,A,' // uplo //
1465 $
')', iinfo, n, kd, jtype, ioldsd
1467 IF( iinfo.LT.0 )
THEN
1470 result( ntest ) = ulpinv
1480 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1481 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1483 result( ntest ) = temp2 / max( unfl,
1484 $ ulp*max( temp1, temp2 ) )
1491 IF( iuplo.EQ.1 )
THEN
1493 DO 760 i = max( 1, j-kd ), j
1494 v( kd+1+i-j, j ) = a( i, j )
1499 DO 780 i = j, min( n, j+kd )
1500 v( 1+i-j, j ) = a( i, j )
1505 CALL zhbevx(
'V',
'I', uplo, n, kd, v, ldu, u, ldu, vl,
1506 $ vu, il, iu, abstol, m2, wa2, z, ldu, work,
1507 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1508 IF( iinfo.NE.0 )
THEN
1509 WRITE( nounit, fmt = 9998 )
'ZHBEVX(V,I,' // uplo //
1510 $
')', iinfo, n, kd, jtype, ioldsd
1512 IF( iinfo.LT.0 )
THEN
1515 result( ntest ) = ulpinv
1516 result( ntest+1 ) = ulpinv
1517 result( ntest+2 ) = ulpinv
1524 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1525 $ v, ldu, tau, work, rwork, result( ntest ) )
1529 IF( iuplo.EQ.1 )
THEN
1531 DO 800 i = max( 1, j-kd ), j
1532 v( kd+1+i-j, j ) = a( i, j )
1537 DO 820 i = j, min( n, j+kd )
1538 v( 1+i-j, j ) = a( i, j )
1543 $ u, ldu, vl, vu, il, iu, abstol,
1544 $ m3, wa3, z, ldu, work, lwork,
1545 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1546 IF( iinfo.NE.0 )
THEN
1547 WRITE( nounit, fmt = 9998 )
1548 $
'ZHBEVX_2STAGE(N,I,' // uplo //
1549 $
')', iinfo, n, kd, jtype, ioldsd
1551 IF( iinfo.LT.0 )
THEN
1554 result( ntest ) = ulpinv
1561 temp1 =
dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1562 temp2 =
dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1564 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1568 result( ntest ) = ( temp1+temp2 ) /
1569 $ max( unfl, temp3*ulp )
1576 IF( iuplo.EQ.1 )
THEN
1578 DO 850 i = max( 1, j-kd ), j
1579 v( kd+1+i-j, j ) = a( i, j )
1584 DO 870 i = j, min( n, j+kd )
1585 v( 1+i-j, j ) = a( i, j )
1589 CALL zhbevx(
'V',
'V', uplo, n, kd, v, ldu, u, ldu, vl,
1590 $ vu, il, iu, abstol, m2, wa2, z, ldu, work,
1591 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1592 IF( iinfo.NE.0 )
THEN
1593 WRITE( nounit, fmt = 9998 )
'ZHBEVX(V,V,' // uplo //
1594 $
')', iinfo, n, kd, jtype, ioldsd
1596 IF( iinfo.LT.0 )
THEN
1599 result( ntest ) = ulpinv
1600 result( ntest+1 ) = ulpinv
1601 result( ntest+2 ) = ulpinv
1608 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1609 $ v, ldu, tau, work, rwork, result( ntest ) )
1613 IF( iuplo.EQ.1 )
THEN
1615 DO 890 i = max( 1, j-kd ), j
1616 v( kd+1+i-j, j ) = a( i, j )
1621 DO 910 i = j, min( n, j+kd )
1622 v( 1+i-j, j ) = a( i, j )
1627 $ u, ldu, vl, vu, il, iu, abstol,
1628 $ m3, wa3, z, ldu, work, lwork,
1629 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1630 IF( iinfo.NE.0 )
THEN
1631 WRITE( nounit, fmt = 9998 )
1632 $
'ZHBEVX_2STAGE(N,V,' // uplo //
1633 $
')', iinfo, n, kd, jtype, ioldsd
1635 IF( iinfo.LT.0 )
THEN
1638 result( ntest ) = ulpinv
1643 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
1644 result( ntest ) = ulpinv
1650 temp1 =
dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1651 temp2 =
dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1653 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1657 result( ntest ) = ( temp1+temp2 ) /
1658 $ max( unfl, temp3*ulp )
1664 CALL zlacpy(
' ', n, n, a, lda, v, ldu )
1667 CALL zheev(
'V', uplo, n, a, ldu, d1, work, lwork, rwork,
1669 IF( iinfo.NE.0 )
THEN
1670 WRITE( nounit, fmt = 9999 )
'ZHEEV(V,' // uplo //
')',
1671 $ iinfo, n, jtype, ioldsd
1673 IF( iinfo.LT.0 )
THEN
1676 result( ntest ) = ulpinv
1677 result( ntest+1 ) = ulpinv
1678 result( ntest+2 ) = ulpinv
1685 CALL zhet21( 1, uplo, n, 0, v, ldu, d1, d2, a, ldu, z,
1686 $ ldu, tau, work, rwork, result( ntest ) )
1688 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1692 $ work, lwork, rwork, iinfo )
1693 IF( iinfo.NE.0 )
THEN
1694 WRITE( nounit, fmt = 9999 )
1695 $
'ZHEEV_2STAGE(N,' // uplo //
')',
1696 $ iinfo, n, jtype, ioldsd
1698 IF( iinfo.LT.0 )
THEN
1701 result( ntest ) = ulpinv
1711 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1712 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1714 result( ntest ) = temp2 / max( unfl,
1715 $ ulp*max( temp1, temp2 ) )
1719 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1726 IF( iuplo.EQ.1 )
THEN
1730 work( indx ) = a( i, j )
1738 work( indx ) = a( i, j )
1745 indwrk = n*( n+1 ) / 2 + 1
1746 CALL zhpev(
'V', uplo, n, work, d1, z, ldu,
1747 $ work( indwrk ), rwork, iinfo )
1748 IF( iinfo.NE.0 )
THEN
1749 WRITE( nounit, fmt = 9999 )
'ZHPEV(V,' // uplo //
')',
1750 $ iinfo, n, jtype, ioldsd
1752 IF( iinfo.LT.0 )
THEN
1755 result( ntest ) = ulpinv
1756 result( ntest+1 ) = ulpinv
1757 result( ntest+2 ) = ulpinv
1764 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1765 $ ldu, tau, work, rwork, result( ntest ) )
1767 IF( iuplo.EQ.1 )
THEN
1771 work( indx ) = a( i, j )
1779 work( indx ) = a( i, j )
1786 indwrk = n*( n+1 ) / 2 + 1
1787 CALL zhpev(
'N', uplo, n, work, d3, z, ldu,
1788 $ work( indwrk ), rwork, iinfo )
1789 IF( iinfo.NE.0 )
THEN
1790 WRITE( nounit, fmt = 9999 )
'ZHPEV(N,' // uplo //
')',
1791 $ iinfo, n, jtype, ioldsd
1793 IF( iinfo.LT.0 )
THEN
1796 result( ntest ) = ulpinv
1806 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1807 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1809 result( ntest ) = temp2 / max( unfl,
1810 $ ulp*max( temp1, temp2 ) )
1816 IF( jtype.LE.7 )
THEN
1818 ELSE IF( jtype.GE.8 .AND. jtype.LE.15 )
THEN
1827 IF( iuplo.EQ.1 )
THEN
1829 DO 1060 i = max( 1, j-kd ), j
1830 v( kd+1+i-j, j ) = a( i, j )
1835 DO 1080 i = j, min( n, j+kd )
1836 v( 1+i-j, j ) = a( i, j )
1842 CALL zhbev(
'V', uplo, n, kd, v, ldu, d1, z, ldu, work,
1844 IF( iinfo.NE.0 )
THEN
1845 WRITE( nounit, fmt = 9998 )
'ZHBEV(V,' // uplo //
')',
1846 $ iinfo, n, kd, jtype, ioldsd
1848 IF( iinfo.LT.0 )
THEN
1851 result( ntest ) = ulpinv
1852 result( ntest+1 ) = ulpinv
1853 result( ntest+2 ) = ulpinv
1860 CALL zhet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1861 $ ldu, tau, work, rwork, result( ntest ) )
1863 IF( iuplo.EQ.1 )
THEN
1865 DO 1100 i = max( 1, j-kd ), j
1866 v( kd+1+i-j, j ) = a( i, j )
1871 DO 1120 i = j, min( n, j+kd )
1872 v( 1+i-j, j ) = a( i, j )
1878 CALL zhbev_2stage(
'N', uplo, n, kd, v, ldu, d3, z, ldu,
1879 $ work, lwork, rwork, iinfo )
1880 IF( iinfo.NE.0 )
THEN
1881 WRITE( nounit, fmt = 9998 )
1882 $
'ZHBEV_2STAGE(N,' // uplo //
')',
1883 $ iinfo, n, kd, jtype, ioldsd
1885 IF( iinfo.LT.0 )
THEN
1888 result( ntest ) = ulpinv
1900 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1901 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1903 result( ntest ) = temp2 / max( unfl,
1904 $ ulp*max( temp1, temp2 ) )
1906 CALL zlacpy(
' ', n, n, a, lda, v, ldu )
1908 CALL zheevr(
'V',
'A', uplo, n, a, ldu, vl, vu, il, iu,
1909 $ abstol, m, wa1, z, ldu, iwork, work, lwork,
1910 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
1912 IF( iinfo.NE.0 )
THEN
1913 WRITE( nounit, fmt = 9999 )
'ZHEEVR(V,A,' // uplo //
1914 $
')', iinfo, n, jtype, ioldsd
1916 IF( iinfo.LT.0 )
THEN
1919 result( ntest ) = ulpinv
1920 result( ntest+1 ) = ulpinv
1921 result( ntest+2 ) = ulpinv
1928 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1930 CALL zhet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1931 $ ldu, tau, work, rwork, result( ntest ) )
1935 $ il, iu, abstol, m2, wa2, z, ldu,
1936 $ iwork, work, lwork, rwork, lrwork,
1937 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
1938 IF( iinfo.NE.0 )
THEN
1939 WRITE( nounit, fmt = 9999 )
1940 $
'ZHEEVR_2STAGE(N,A,' // uplo //
1941 $
')', iinfo, n, jtype, ioldsd
1943 IF( iinfo.LT.0 )
THEN
1946 result( ntest ) = ulpinv
1956 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1957 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1959 result( ntest ) = temp2 / max( unfl,
1960 $ ulp*max( temp1, temp2 ) )
1965 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1966 CALL zheevr(
'V',
'I', uplo, n, a, ldu, vl, vu, il, iu,
1967 $ abstol, m2, wa2, z, ldu, iwork, work, lwork,
1968 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
1970 IF( iinfo.NE.0 )
THEN
1971 WRITE( nounit, fmt = 9999 )
'ZHEEVR(V,I,' // uplo //
1972 $
')', iinfo, n, jtype, ioldsd
1974 IF( iinfo.LT.0 )
THEN
1977 result( ntest ) = ulpinv
1978 result( ntest+1 ) = ulpinv
1979 result( ntest+2 ) = ulpinv
1986 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1988 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1989 $ v, ldu, tau, work, rwork, result( ntest ) )
1992 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
1994 $ il, iu, abstol, m3, wa3, z, ldu,
1995 $ iwork, work, lwork, rwork, lrwork,
1996 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
1997 IF( iinfo.NE.0 )
THEN
1998 WRITE( nounit, fmt = 9999 )
1999 $
'ZHEEVR_2STAGE(N,I,' // uplo //
2000 $
')', iinfo, n, jtype, ioldsd
2002 IF( iinfo.LT.0 )
THEN
2005 result( ntest ) = ulpinv
2012 temp1 =
dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
2013 temp2 =
dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
2014 result( ntest ) = ( temp1+temp2 ) /
2015 $ max( unfl, ulp*temp3 )
2019 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2020 CALL zheevr(
'V',
'V', uplo, n, a, ldu, vl, vu, il, iu,
2021 $ abstol, m2, wa2, z, ldu, iwork, work, lwork,
2022 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
2024 IF( iinfo.NE.0 )
THEN
2025 WRITE( nounit, fmt = 9999 )
'ZHEEVR(V,V,' // uplo //
2026 $
')', iinfo, n, jtype, ioldsd
2028 IF( iinfo.LT.0 )
THEN
2031 result( ntest ) = ulpinv
2032 result( ntest+1 ) = ulpinv
2033 result( ntest+2 ) = ulpinv
2040 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2042 CALL zhet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
2043 $ v, ldu, tau, work, rwork, result( ntest ) )
2046 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2048 $ il, iu, abstol, m3, wa3, z, ldu,
2049 $ iwork, work, lwork, rwork, lrwork,
2050 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
2051 IF( iinfo.NE.0 )
THEN
2052 WRITE( nounit, fmt = 9999 )
2053 $
'ZHEEVR_2STAGE(N,V,' // uplo //
2054 $
')', iinfo, n, jtype, ioldsd
2056 IF( iinfo.LT.0 )
THEN
2059 result( ntest ) = ulpinv
2064 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
2065 result( ntest ) = ulpinv
2071 temp1 =
dsxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
2072 temp2 =
dsxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
2074 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
2078 result( ntest ) = ( temp1+temp2 ) /
2079 $ max( unfl, temp3*ulp )
2081 CALL zlacpy(
' ', n, n, v, ldu, a, lda )
2095 ntestt = ntestt + ntest
2096 CALL dlafts(
'ZST', n, n, jtype, ntest, result, ioldsd,
2097 $ thresh, nounit, nerrs )
2104 CALL alasvm(
'ZST', nounit, nerrs, ntestt, 0 )
2106 9999
FORMAT(
' ZDRVST2STG: ', a,
' returned INFO=', i6, / 9x,
'N=', i6,
2107 $
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
')' )
2108 9998
FORMAT(
' ZDRVST2STG: ', a,
' returned INFO=', i6, / 9x,
'N=', i6,
2109 $
', KD=', i6,
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
double precision function dlamch(CMACH)
DLAMCH
subroutine alasvm(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASVM
subroutine zhbevx(JOBZ, RANGE, UPLO, N, KD, AB, LDAB, Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO)
ZHBEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matric...
subroutine 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 zhbevd(JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
ZHBEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matric...
subroutine zhetrd_2stage(VECT, UPLO, N, A, LDA, D, E, TAU, HOUS2, LHOUS2, WORK, LWORK, INFO)
ZHETRD_2STAGE
double precision function dsxt1(IJOB, D1, N1, D2, N2, ABSTOL, ULP, UNFL)
DSXT1
subroutine zhbev(JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, RWORK, INFO)
ZHBEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrice...
subroutine zheevd_2stage(JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
ZHEEVD_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE ma...
subroutine zlacpy(UPLO, M, N, A, LDA, B, LDB)
ZLACPY copies all or part of one two-dimensional array to another.
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 zheevx_2stage(JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, RWORK, IWORK, IFAIL, INFO)
ZHEEVX_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE ma...
subroutine zhpev(JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, RWORK, INFO)
ZHPEV computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matrice...
double precision function dlarnd(IDIST, ISEED)
DLARND
subroutine dlafts(TYPE, M, N, IMAT, NTESTS, RESULT, ISEED, THRESH, IOUNIT, IE)
DLAFTS
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zhet22(ITYPE, UPLO, N, M, KBAND, A, LDA, D, E, U, LDU, V, LDV, TAU, WORK, RWORK, RESULT)
ZHET22
subroutine zheevr_2stage(JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
ZHEEVR_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE ma...
subroutine 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 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 dlabad(SMALL, LARGE)
DLABAD
subroutine zhbev_2stage(JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, LWORK, RWORK, INFO)
ZHBEV_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER ...
subroutine 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 zlatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
ZLATMS
subroutine zhet21(ITYPE, UPLO, N, KBAND, A, LDA, D, E, U, LDU, V, LDV, TAU, WORK, RWORK, RESULT)
ZHET21
subroutine zhpevd(JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
ZHPEVD computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matric...
subroutine 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 zheev_2stage(JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, INFO)
ZHEEV_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE mat...
subroutine zhpevx(JOBZ, RANGE, UPLO, N, AP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, IFAIL, INFO)
ZHPEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for OTHER matric...
subroutine 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 ...