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