336 SUBROUTINE cdrvst2stg( NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH,
337 $ nounit, a, lda, d1, d2, d3, wa1, wa2, wa3, u,
338 $ ldu, v, tau, z, work, lwork, rwork, lrwork,
339 $ iwork, liwork, result, info )
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 ),
393 REAL SLAMCH, SLARND, SSXT1
394 EXTERNAL slamch, slarnd, ssxt1
406 INTRINSIC abs,
REAL, 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(
'CDRVST2STG', -info )
453 IF( nsizes.EQ.0 .OR. ntypes.EQ.0 )
458 unfl = slamch(
'Safe minimum' )
459 ovfl = slamch(
'Overflow' )
461 ulp = slamch(
'Epsilon' )*slamch(
'Base' )
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(
REAL( 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 /
REAL( 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 claset(
'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 clatms( 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 clatms( 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 clatmr( 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 clatmr( 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 )*slarnd( 1, iseed3 ) )
605 CALL clatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
606 $ anorm, ihbw, ihbw,
'Z', u, ldu, work,
611 CALL claset(
'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 )*slarnd( 1, iseed2 ) )
640 iu = 1 + int( ( n-1 )*slarnd( 1, iseed2 ) )
652 IF( iuplo.EQ.0 )
THEN
660 CALL clacpy(
' ', n, n, a, lda, v, ldu )
663 CALL cheevd(
'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 )
'CHEEVD(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 chet21( 1, uplo, n, 0, v, ldu, d1, d2, a, ldu, z,
682 $ ldu, tau, work, rwork, result( ntest ) )
684 CALL clacpy(
' ', 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 $
'CHEEVD_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 clacpy(
' ', 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 cheevx(
'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 )
'CHEEVX(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 clacpy(
' ', n, n, v, ldu, a, lda )
761 CALL chet21( 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 $
'CHEEVX_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 clacpy(
' ', n, n, v, ldu, a, lda )
798 CALL cheevx(
'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 )
'CHEEVX(V,I,' // uplo //
803 $
')', iinfo, n, jtype, ioldsd
805 IF( iinfo.LT.0 )
THEN
808 result( ntest ) = ulpinv
815 CALL clacpy(
' ', n, n, v, ldu, a, lda )
817 CALL chet22( 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 $
'CHEEVX_2STAGE(N,I,' // uplo //
829 $
')', iinfo, n, jtype, ioldsd
831 IF( iinfo.LT.0 )
THEN
834 result( ntest ) = ulpinv
841 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
842 temp2 = ssxt1( 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 clacpy(
' ', n, n, v, ldu, a, lda )
856 CALL cheevx(
'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 )
'CHEEVX(V,V,' // uplo //
861 $
')', iinfo, n, jtype, ioldsd
863 IF( iinfo.LT.0 )
THEN
866 result( ntest ) = ulpinv
873 CALL clacpy(
' ', n, n, v, ldu, a, lda )
875 CALL chet22( 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 $
'CHEEVX_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 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
905 temp2 = ssxt1( 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 clacpy(
' ', 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 chpevd(
'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 )
'CHPEVD(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 chet21( 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 chpevd(
'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 )
'CHPEVD(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 chpevx(
'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 )
'CHPEVX(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 chet21( 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 chpevx(
'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 )
'CHPEVX(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 chpevx(
'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 )
'CHPEVX(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 chet22( 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 chpevx(
'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 )
'CHPEVX(N,I,' // uplo //
1192 $
')', iinfo, n, jtype, ioldsd
1194 IF( iinfo.LT.0 )
THEN
1197 result( ntest ) = ulpinv
1204 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1205 temp2 = ssxt1( 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 chpevx(
'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 )
'CHPEVX(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 chet22( 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 chpevx(
'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 )
'CHPEVX(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 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1299 temp2 = ssxt1( 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 chbevd(
'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 )
'CHBEVD(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 chet21( 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 $
'CHBEVD_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 chbevx(
'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 )
'CHBEVX(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 chet21( 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 $
'CHBEVX_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 chbevx(
'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 )
'CHBEVX(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 chet22( 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 $
'CHBEVX_2STAGE(N,I,' // uplo //
1549 $
')', iinfo, n, kd, jtype, ioldsd
1551 IF( iinfo.LT.0 )
THEN
1554 result( ntest ) = ulpinv
1561 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1562 temp2 = ssxt1( 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 chbevx(
'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 )
'CHBEVX(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 chet22( 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 $
'CHBEVX_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 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1651 temp2 = ssxt1( 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 clacpy(
' ', n, n, a, lda, v, ldu )
1667 CALL cheev(
'V', uplo, n, a, ldu, d1, work, lwork, rwork,
1669 IF( iinfo.NE.0 )
THEN
1670 WRITE( nounit, fmt = 9999 )
'CHEEV(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 chet21( 1, uplo, n, 0, v, ldu, d1, d2, a, ldu, z,
1686 $ ldu, tau, work, rwork, result( ntest ) )
1688 CALL clacpy(
' ', n, n, v, ldu, a, lda )
1692 $ work, lwork, rwork, iinfo )
1693 IF( iinfo.NE.0 )
THEN
1694 WRITE( nounit, fmt = 9999 )
1695 $
'CHEEV_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 clacpy(
' ', 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 chpev(
'V', uplo, n, work, d1, z, ldu,
1747 $ work( indwrk ), rwork, iinfo )
1748 IF( iinfo.NE.0 )
THEN
1749 WRITE( nounit, fmt = 9999 )
'CHPEV(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 chet21( 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 chpev(
'N', uplo, n, work, d3, z, ldu,
1788 $ work( indwrk ), rwork, iinfo )
1789 IF( iinfo.NE.0 )
THEN
1790 WRITE( nounit, fmt = 9999 )
'CHPEV(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 chbev(
'V', uplo, n, kd, v, ldu, d1, z, ldu, work,
1844 IF( iinfo.NE.0 )
THEN
1845 WRITE( nounit, fmt = 9998 )
'CHBEV(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 chet21( 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 chbev_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 $
'CHBEV_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 clacpy(
' ', n, n, a, lda, v, ldu )
1908 CALL cheevr(
'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 )
'CHEEVR(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 clacpy(
' ', n, n, v, ldu, a, lda )
1930 CALL chet21( 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 $
'CHEEVR_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 clacpy(
' ', n, n, v, ldu, a, lda )
1966 CALL cheevr(
'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 )
'CHEEVR(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 clacpy(
' ', n, n, v, ldu, a, lda )
1988 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1989 $ v, ldu, tau, work, rwork, result( ntest ) )
1992 CALL clacpy(
' ', 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 $
'CHEEVR_2STAGE(N,I,' // uplo //
2000 $
')', iinfo, n, jtype, ioldsd
2002 IF( iinfo.LT.0 )
THEN
2005 result( ntest ) = ulpinv
2012 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
2013 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
2014 result( ntest ) = ( temp1+temp2 ) /
2015 $ max( unfl, ulp*temp3 )
2019 CALL clacpy(
' ', n, n, v, ldu, a, lda )
2020 CALL cheevr(
'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 )
'CHEEVR(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 clacpy(
' ', n, n, v, ldu, a, lda )
2042 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
2043 $ v, ldu, tau, work, rwork, result( ntest ) )
2046 CALL clacpy(
' ', 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 $
'CHEEVR_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 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
2072 temp2 = ssxt1( 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 clacpy(
' ', n, n, v, ldu, a, lda )
2095 ntestt = ntestt + ntest
2096 CALL slafts(
'CST', n, n, jtype, ntest, result, ioldsd,
2097 $ thresh, nounit, nerrs )
2104 CALL alasvm(
'CST', nounit, nerrs, ntestt, 0 )
2106 9999
FORMAT(
' CDRVST2STG: ', a,
' returned INFO=', i6, / 9x,
'N=', i6,
2107 $
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
')' )
2108 9998
FORMAT(
' CDRVST2STG: ', a,
' returned INFO=', i6, / 9x,
'N=', i6,
2109 $
', KD=', i6,
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
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 alasvm(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASVM
subroutine chet22(ITYPE, UPLO, N, M, KBAND, A, LDA, D, E, U, LDU, V, LDV, TAU, WORK, RWORK, RESULT)
CHET22
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 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 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 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...
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 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 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 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 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 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 chet21(ITYPE, UPLO, N, KBAND, A, LDA, D, E, U, LDU, V, LDV, TAU, WORK, RWORK, RESULT)
CHET21
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 xerbla(SRNAME, INFO)
XERBLA
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 clatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
CLATMS
subroutine clacpy(UPLO, M, N, A, LDA, B, LDB)
CLACPY copies all or part of one two-dimensional array to another.
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 slabad(SMALL, LARGE)
SLABAD
subroutine chetrd_2stage(VECT, UPLO, N, A, LDA, D, E, TAU, HOUS2, LHOUS2, WORK, LWORK, INFO)
CHETRD_2STAGE
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 ...
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 cdrvst2stg(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)
CDRVST2STG
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 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 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 ...