334 SUBROUTINE cdrvst2stg( NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH,
335 $ NOUNIT, A, LDA, D1, D2, D3, WA1, WA2, WA3, U,
336 $ LDU, V, TAU, Z, WORK, LWORK, RWORK, LRWORK,
337 $ IWORK, LIWORK, RESULT, INFO )
344 INTEGER INFO, LDA, LDU, LIWORK, LRWORK, LWORK, NOUNIT,
350 INTEGER ISEED( 4 ), IWORK( * ), NN( * )
351 REAL D1( * ), D2( * ), D3( * ), RESULT( * ),
352 $ rwork( * ), wa1( * ), wa2( * ), wa3( * )
353 COMPLEX A( LDA, * ), TAU( * ), U( LDU, * ),
354 $ v( ldu, * ), work( * ), z( ldu, * )
361 REAL ZERO, ONE, TWO, TEN
362 PARAMETER ( ZERO = 0.0e+0, one = 1.0e+0, two = 2.0e+0,
365 parameter( half = one / two )
367 parameter( czero = ( 0.0e+0, 0.0e+0 ),
368 $ cone = ( 1.0e+0, 0.0e+0 ) )
370 parameter( maxtyp = 18 )
375 INTEGER I, IDIAG, IHBW, IINFO, IL, IMODE, INDWRK, INDX,
376 $ irow, itemp, itype, iu, iuplo, j, j1, j2, jcol,
377 $ jsize, jtype, kd, lgn, liwedc, lrwedc, lwedc,
378 $ m, m2, m3, mtypes, n, nerrs, nmats, nmax,
380 REAL ABSTOL, ANINV, ANORM, COND, OVFL, RTOVFL,
381 $ RTUNFL, TEMP1, TEMP2, TEMP3, ULP, ULPINV, UNFL,
385 INTEGER IDUMMA( 1 ), IOLDSD( 4 ), ISEED2( 4 ),
386 $ ISEED3( 4 ), KMAGN( MAXTYP ), KMODE( MAXTYP ),
390 REAL SLAMCH, SLARND, SSXT1
391 EXTERNAL SLAMCH, SLARND, SSXT1
402 INTRINSIC abs, real, int, log, max, min, sqrt
405 DATA ktype / 1, 2, 5*4, 5*5, 3*8, 3*9 /
406 DATA kmagn / 2*1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 3, 1,
408 DATA kmode / 2*0, 4, 3, 1, 4, 4, 4, 3, 1, 4, 4, 0,
421 nmax = max( nmax, nn( j ) )
428 IF( nsizes.LT.0 )
THEN
430 ELSE IF( badnn )
THEN
432 ELSE IF( ntypes.LT.0 )
THEN
434 ELSE IF( lda.LT.nmax )
THEN
436 ELSE IF( ldu.LT.nmax )
THEN
438 ELSE IF( 2*max( 2, nmax )**2.GT.lwork )
THEN
443 CALL xerbla(
'CDRVST2STG', -info )
449 IF( nsizes.EQ.0 .OR. ntypes.EQ.0 )
454 unfl = slamch(
'Safe minimum' )
455 ovfl = slamch(
'Overflow' )
457 ulp = slamch(
'Epsilon' )*slamch(
'Base' )
459 rtunfl = sqrt( unfl )
460 rtovfl = sqrt( ovfl )
465 iseed2( i ) = iseed( i )
466 iseed3( i ) = iseed( i )
472 DO 1220 jsize = 1, nsizes
475 lgn = int( log( real( n ) ) / log( two ) )
480 lwedc = max( 2*n+n*n, 2*n*n )
481 lrwedc = 1 + 4*n + 2*n*lgn + 3*n**2
488 aninv = one / real( max( 1, n ) )
490 IF( nsizes.NE.1 )
THEN
491 mtypes = min( maxtyp, ntypes )
493 mtypes = min( maxtyp+1, ntypes )
496 DO 1210 jtype = 1, mtypes
497 IF( .NOT.dotype( jtype ) )
503 ioldsd( j ) = iseed( j )
521 IF( mtypes.GT.maxtyp )
524 itype = ktype( jtype )
525 imode = kmode( jtype )
529 GO TO ( 40, 50, 60 )kmagn( jtype )
536 anorm = ( rtovfl*ulp )*aninv
540 anorm = rtunfl*n*ulpinv
545 CALL claset(
'Full', lda, n, czero, czero, a, lda )
553 IF( itype.EQ.1 )
THEN
556 ELSE IF( itype.EQ.2 )
THEN
561 a( jcol, jcol ) = anorm
564 ELSE IF( itype.EQ.4 )
THEN
568 CALL clatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
569 $ anorm, 0, 0,
'N', a, lda, work, iinfo )
571 ELSE IF( itype.EQ.5 )
THEN
575 CALL clatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
576 $ anorm, n, n,
'N', a, lda, work, iinfo )
578 ELSE IF( itype.EQ.7 )
THEN
582 CALL clatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
583 $
'T',
'N', work( n+1 ), 1, one,
584 $ work( 2*n+1 ), 1, one,
'N', idumma, 0, 0,
585 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
587 ELSE IF( itype.EQ.8 )
THEN
591 CALL clatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
592 $
'T',
'N', work( n+1 ), 1, one,
593 $ work( 2*n+1 ), 1, one,
'N', idumma, n, n,
594 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
596 ELSE IF( itype.EQ.9 )
THEN
600 ihbw = int( ( n-1 )*slarnd( 1, iseed3 ) )
601 CALL clatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
602 $ anorm, ihbw, ihbw,
'Z', u, ldu, work,
607 CALL claset(
'Full', lda, n, czero, czero, a, lda )
608 DO 100 idiag = -ihbw, ihbw
609 irow = ihbw - idiag + 1
610 j1 = max( 1, idiag+1 )
611 j2 = min( n, n+idiag )
614 a( i, j ) = u( irow, j )
621 IF( iinfo.NE.0 )
THEN
622 WRITE( nounit, fmt = 9999 )
'Generator', iinfo, n, jtype,
635 il = 1 + int( ( n-1 )*slarnd( 1, iseed2 ) )
636 iu = 1 + int( ( n-1 )*slarnd( 1, iseed2 ) )
648 IF( iuplo.EQ.0 )
THEN
656 CALL clacpy(
' ', n, n, a, lda, v, ldu )
659 CALL cheevd(
'V', uplo, n, a, ldu, d1, work, lwedc,
660 $ rwork, lrwedc, iwork, liwedc, iinfo )
661 IF( iinfo.NE.0 )
THEN
662 WRITE( nounit, fmt = 9999 )
'CHEEVD(V,' // uplo //
663 $
')', iinfo, n, jtype, ioldsd
665 IF( iinfo.LT.0 )
THEN
668 result( ntest ) = ulpinv
669 result( ntest+1 ) = ulpinv
670 result( ntest+2 ) = ulpinv
677 CALL chet21( 1, uplo, n, 0, v, ldu, d1, d2, a, ldu, z,
678 $ ldu, tau, work, rwork, result( ntest ) )
680 CALL clacpy(
' ', n, n, v, ldu, a, lda )
684 $ lwork, rwork, lrwedc, iwork, liwedc, iinfo )
685 IF( iinfo.NE.0 )
THEN
686 WRITE( nounit, fmt = 9999 )
687 $
'CHEEVD_2STAGE(N,' // uplo //
688 $
')', iinfo, n, jtype, ioldsd
690 IF( iinfo.LT.0 )
THEN
693 result( ntest ) = ulpinv
703 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
704 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
706 result( ntest ) = temp2 / max( unfl,
707 $ ulp*max( temp1, temp2 ) )
710 CALL clacpy(
' ', n, n, v, ldu, a, lda )
715 temp3 = max( abs( d1( 1 ) ), abs( d1( n ) ) )
717 vl = d1( il ) - max( half*( d1( il )-d1( il-1 ) ),
718 $ ten*ulp*temp3, ten*rtunfl )
719 ELSE IF( n.GT.0 )
THEN
720 vl = d1( 1 ) - max( half*( d1( n )-d1( 1 ) ),
721 $ ten*ulp*temp3, ten*rtunfl )
724 vu = d1( iu ) + max( half*( d1( iu+1 )-d1( iu ) ),
725 $ ten*ulp*temp3, ten*rtunfl )
726 ELSE IF( n.GT.0 )
THEN
727 vu = d1( n ) + max( half*( d1( n )-d1( 1 ) ),
728 $ ten*ulp*temp3, ten*rtunfl )
736 CALL cheevx(
'V',
'A', uplo, n, a, ldu, vl, vu, il, iu,
737 $ abstol, m, wa1, z, ldu, work, lwork, rwork,
738 $ iwork, iwork( 5*n+1 ), iinfo )
739 IF( iinfo.NE.0 )
THEN
740 WRITE( nounit, fmt = 9999 )
'CHEEVX(V,A,' // uplo //
741 $
')', iinfo, n, jtype, ioldsd
743 IF( iinfo.LT.0 )
THEN
746 result( ntest ) = ulpinv
747 result( ntest+1 ) = ulpinv
748 result( ntest+2 ) = ulpinv
755 CALL clacpy(
' ', n, n, v, ldu, a, lda )
757 CALL chet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
758 $ ldu, tau, work, rwork, result( ntest ) )
762 $ il, iu, abstol, m2, wa2, z, ldu,
763 $ work, lwork, rwork, iwork,
764 $ iwork( 5*n+1 ), iinfo )
765 IF( iinfo.NE.0 )
THEN
766 WRITE( nounit, fmt = 9999 )
767 $
'CHEEVX_2STAGE(N,A,' // uplo //
768 $
')', iinfo, n, jtype, ioldsd
770 IF( iinfo.LT.0 )
THEN
773 result( ntest ) = ulpinv
783 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
784 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
786 result( ntest ) = temp2 / max( unfl,
787 $ ulp*max( temp1, temp2 ) )
790 CALL clacpy(
' ', n, n, v, ldu, a, lda )
794 CALL cheevx(
'V',
'I', uplo, n, a, ldu, vl, vu, il, iu,
795 $ abstol, m2, wa2, z, ldu, work, lwork, rwork,
796 $ iwork, iwork( 5*n+1 ), iinfo )
797 IF( iinfo.NE.0 )
THEN
798 WRITE( nounit, fmt = 9999 )
'CHEEVX(V,I,' // uplo //
799 $
')', iinfo, n, jtype, ioldsd
801 IF( iinfo.LT.0 )
THEN
804 result( ntest ) = ulpinv
811 CALL clacpy(
' ', n, n, v, ldu, a, lda )
813 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
814 $ v, ldu, tau, work, rwork, result( ntest ) )
819 $ il, iu, abstol, m3, wa3, z, ldu,
820 $ work, lwork, rwork, iwork,
821 $ iwork( 5*n+1 ), iinfo )
822 IF( iinfo.NE.0 )
THEN
823 WRITE( nounit, fmt = 9999 )
824 $
'CHEEVX_2STAGE(N,I,' // uplo //
825 $
')', iinfo, n, jtype, ioldsd
827 IF( iinfo.LT.0 )
THEN
830 result( ntest ) = ulpinv
837 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
838 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
840 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
844 result( ntest ) = ( temp1+temp2 ) /
845 $ max( unfl, temp3*ulp )
848 CALL clacpy(
' ', n, n, v, ldu, a, lda )
852 CALL cheevx(
'V',
'V', uplo, n, a, ldu, vl, vu, il, iu,
853 $ abstol, m2, wa2, z, ldu, work, lwork, rwork,
854 $ iwork, iwork( 5*n+1 ), iinfo )
855 IF( iinfo.NE.0 )
THEN
856 WRITE( nounit, fmt = 9999 )
'CHEEVX(V,V,' // uplo //
857 $
')', iinfo, n, jtype, ioldsd
859 IF( iinfo.LT.0 )
THEN
862 result( ntest ) = ulpinv
869 CALL clacpy(
' ', n, n, v, ldu, a, lda )
871 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
872 $ v, ldu, tau, work, rwork, result( ntest ) )
877 $ il, iu, abstol, m3, wa3, z, ldu,
878 $ work, lwork, rwork, iwork,
879 $ iwork( 5*n+1 ), iinfo )
880 IF( iinfo.NE.0 )
THEN
881 WRITE( nounit, fmt = 9999 )
882 $
'CHEEVX_2STAGE(N,V,' // uplo //
883 $
')', iinfo, n, jtype, ioldsd
885 IF( iinfo.LT.0 )
THEN
888 result( ntest ) = ulpinv
893 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
894 result( ntest ) = ulpinv
900 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
901 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
903 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
907 result( ntest ) = ( temp1+temp2 ) /
908 $ max( unfl, temp3*ulp )
914 CALL clacpy(
' ', n, n, v, ldu, a, lda )
919 IF( iuplo.EQ.1 )
THEN
923 work( indx ) = a( i, j )
931 work( indx ) = a( i, j )
938 indwrk = n*( n+1 ) / 2 + 1
939 CALL chpevd(
'V', uplo, n, work, d1, z, ldu,
940 $ work( indwrk ), lwedc, rwork, lrwedc, iwork,
942 IF( iinfo.NE.0 )
THEN
943 WRITE( nounit, fmt = 9999 )
'CHPEVD(V,' // uplo //
944 $
')', iinfo, n, jtype, ioldsd
946 IF( iinfo.LT.0 )
THEN
949 result( ntest ) = ulpinv
950 result( ntest+1 ) = ulpinv
951 result( ntest+2 ) = ulpinv
958 CALL chet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
959 $ ldu, tau, work, rwork, result( ntest ) )
961 IF( iuplo.EQ.1 )
THEN
965 work( indx ) = a( i, j )
973 work( indx ) = a( i, j )
980 indwrk = n*( n+1 ) / 2 + 1
981 CALL chpevd(
'N', uplo, n, work, d3, z, ldu,
982 $ work( indwrk ), lwedc, rwork, lrwedc, iwork,
984 IF( iinfo.NE.0 )
THEN
985 WRITE( nounit, fmt = 9999 )
'CHPEVD(N,' // uplo //
986 $
')', iinfo, n, jtype, ioldsd
988 IF( iinfo.LT.0 )
THEN
991 result( ntest ) = ulpinv
1001 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1002 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1004 result( ntest ) = temp2 / max( unfl,
1005 $ ulp*max( temp1, temp2 ) )
1011 IF( iuplo.EQ.1 )
THEN
1015 work( indx ) = a( i, j )
1023 work( indx ) = a( i, j )
1032 temp3 = max( abs( d1( 1 ) ), abs( d1( n ) ) )
1034 vl = d1( il ) - max( half*( d1( il )-d1( il-1 ) ),
1035 $ ten*ulp*temp3, ten*rtunfl )
1036 ELSE IF( n.GT.0 )
THEN
1037 vl = d1( 1 ) - max( half*( d1( n )-d1( 1 ) ),
1038 $ ten*ulp*temp3, ten*rtunfl )
1041 vu = d1( iu ) + max( half*( d1( iu+1 )-d1( iu ) ),
1042 $ ten*ulp*temp3, ten*rtunfl )
1043 ELSE IF( n.GT.0 )
THEN
1044 vu = d1( n ) + max( half*( d1( n )-d1( 1 ) ),
1045 $ ten*ulp*temp3, ten*rtunfl )
1053 CALL chpevx(
'V',
'A', uplo, n, work, vl, vu, il, iu,
1054 $ abstol, m, wa1, z, ldu, v, rwork, iwork,
1055 $ iwork( 5*n+1 ), iinfo )
1056 IF( iinfo.NE.0 )
THEN
1057 WRITE( nounit, fmt = 9999 )
'CHPEVX(V,A,' // uplo //
1058 $
')', iinfo, n, jtype, ioldsd
1060 IF( iinfo.LT.0 )
THEN
1063 result( ntest ) = ulpinv
1064 result( ntest+1 ) = ulpinv
1065 result( ntest+2 ) = ulpinv
1072 CALL chet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1073 $ ldu, tau, work, rwork, result( ntest ) )
1077 IF( iuplo.EQ.1 )
THEN
1081 work( indx ) = a( i, j )
1089 work( indx ) = a( i, j )
1095 CALL chpevx(
'N',
'A', uplo, n, work, vl, vu, il, iu,
1096 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1097 $ iwork( 5*n+1 ), iinfo )
1098 IF( iinfo.NE.0 )
THEN
1099 WRITE( nounit, fmt = 9999 )
'CHPEVX(N,A,' // uplo //
1100 $
')', iinfo, n, jtype, ioldsd
1102 IF( iinfo.LT.0 )
THEN
1105 result( ntest ) = ulpinv
1115 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1116 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1118 result( ntest ) = temp2 / max( unfl,
1119 $ ulp*max( temp1, temp2 ) )
1123 IF( iuplo.EQ.1 )
THEN
1127 work( indx ) = a( i, j )
1135 work( indx ) = a( i, j )
1141 CALL chpevx(
'V',
'I', uplo, n, work, vl, vu, il, iu,
1142 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1143 $ iwork( 5*n+1 ), iinfo )
1144 IF( iinfo.NE.0 )
THEN
1145 WRITE( nounit, fmt = 9999 )
'CHPEVX(V,I,' // uplo //
1146 $
')', iinfo, n, jtype, ioldsd
1148 IF( iinfo.LT.0 )
THEN
1151 result( ntest ) = ulpinv
1152 result( ntest+1 ) = ulpinv
1153 result( ntest+2 ) = ulpinv
1160 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1161 $ v, ldu, tau, work, rwork, result( ntest ) )
1165 IF( iuplo.EQ.1 )
THEN
1169 work( indx ) = a( i, j )
1177 work( indx ) = a( i, j )
1183 CALL chpevx(
'N',
'I', uplo, n, work, vl, vu, il, iu,
1184 $ abstol, m3, wa3, z, ldu, v, rwork, iwork,
1185 $ iwork( 5*n+1 ), iinfo )
1186 IF( iinfo.NE.0 )
THEN
1187 WRITE( nounit, fmt = 9999 )
'CHPEVX(N,I,' // uplo //
1188 $
')', iinfo, n, jtype, ioldsd
1190 IF( iinfo.LT.0 )
THEN
1193 result( ntest ) = ulpinv
1200 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1201 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1203 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1207 result( ntest ) = ( temp1+temp2 ) /
1208 $ max( unfl, temp3*ulp )
1212 IF( iuplo.EQ.1 )
THEN
1216 work( indx ) = a( i, j )
1224 work( indx ) = a( i, j )
1230 CALL chpevx(
'V',
'V', uplo, n, work, vl, vu, il, iu,
1231 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1232 $ iwork( 5*n+1 ), iinfo )
1233 IF( iinfo.NE.0 )
THEN
1234 WRITE( nounit, fmt = 9999 )
'CHPEVX(V,V,' // uplo //
1235 $
')', iinfo, n, jtype, ioldsd
1237 IF( iinfo.LT.0 )
THEN
1240 result( ntest ) = ulpinv
1241 result( ntest+1 ) = ulpinv
1242 result( ntest+2 ) = ulpinv
1249 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1250 $ v, ldu, tau, work, rwork, result( ntest ) )
1254 IF( iuplo.EQ.1 )
THEN
1258 work( indx ) = a( i, j )
1266 work( indx ) = a( i, j )
1272 CALL chpevx(
'N',
'V', uplo, n, work, vl, vu, il, iu,
1273 $ abstol, m3, wa3, z, ldu, v, rwork, iwork,
1274 $ iwork( 5*n+1 ), iinfo )
1275 IF( iinfo.NE.0 )
THEN
1276 WRITE( nounit, fmt = 9999 )
'CHPEVX(N,V,' // uplo //
1277 $
')', iinfo, n, jtype, ioldsd
1279 IF( iinfo.LT.0 )
THEN
1282 result( ntest ) = ulpinv
1287 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
1288 result( ntest ) = ulpinv
1294 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1295 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1297 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1301 result( ntest ) = ( temp1+temp2 ) /
1302 $ max( unfl, temp3*ulp )
1308 IF( jtype.LE.7 )
THEN
1310 ELSE IF( jtype.GE.8 .AND. jtype.LE.15 )
THEN
1319 IF( iuplo.EQ.1 )
THEN
1321 DO 560 i = max( 1, j-kd ), j
1322 v( kd+1+i-j, j ) = a( i, j )
1327 DO 580 i = j, min( n, j+kd )
1328 v( 1+i-j, j ) = a( i, j )
1334 CALL chbevd(
'V', uplo, n, kd, v, ldu, d1, z, ldu, work,
1335 $ lwedc, rwork, lrwedc, iwork, liwedc, iinfo )
1336 IF( iinfo.NE.0 )
THEN
1337 WRITE( nounit, fmt = 9998 )
'CHBEVD(V,' // uplo //
1338 $
')', iinfo, n, kd, jtype, ioldsd
1340 IF( iinfo.LT.0 )
THEN
1343 result( ntest ) = ulpinv
1344 result( ntest+1 ) = ulpinv
1345 result( ntest+2 ) = ulpinv
1352 CALL chet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1353 $ ldu, tau, work, rwork, result( ntest ) )
1355 IF( iuplo.EQ.1 )
THEN
1357 DO 600 i = max( 1, j-kd ), j
1358 v( kd+1+i-j, j ) = a( i, j )
1363 DO 620 i = j, min( n, j+kd )
1364 v( 1+i-j, j ) = a( i, j )
1371 $ z, ldu, work, lwork, rwork,
1372 $ lrwedc, iwork, liwedc, iinfo )
1373 IF( iinfo.NE.0 )
THEN
1374 WRITE( nounit, fmt = 9998 )
1375 $
'CHBEVD_2STAGE(N,' // uplo //
1376 $
')', iinfo, n, kd, jtype, ioldsd
1378 IF( iinfo.LT.0 )
THEN
1381 result( ntest ) = ulpinv
1391 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1392 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1394 result( ntest ) = temp2 / max( unfl,
1395 $ ulp*max( temp1, temp2 ) )
1401 IF( iuplo.EQ.1 )
THEN
1403 DO 660 i = max( 1, j-kd ), j
1404 v( kd+1+i-j, j ) = a( i, j )
1409 DO 680 i = j, min( n, j+kd )
1410 v( 1+i-j, j ) = a( i, j )
1416 CALL chbevx(
'V',
'A', uplo, n, kd, v, ldu, u, ldu, vl,
1417 $ vu, il, iu, abstol, m, wa1, z, ldu, work,
1418 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1419 IF( iinfo.NE.0 )
THEN
1420 WRITE( nounit, fmt = 9999 )
'CHBEVX(V,A,' // uplo //
1421 $
')', iinfo, n, kd, jtype, ioldsd
1423 IF( iinfo.LT.0 )
THEN
1426 result( ntest ) = ulpinv
1427 result( ntest+1 ) = ulpinv
1428 result( ntest+2 ) = ulpinv
1435 CALL chet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1436 $ ldu, tau, work, rwork, result( ntest ) )
1440 IF( iuplo.EQ.1 )
THEN
1442 DO 700 i = max( 1, j-kd ), j
1443 v( kd+1+i-j, j ) = a( i, j )
1448 DO 720 i = j, min( n, j+kd )
1449 v( 1+i-j, j ) = a( i, j )
1455 $ u, ldu, vl, vu, il, iu, abstol,
1456 $ m2, wa2, z, ldu, work, lwork,
1457 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1458 IF( iinfo.NE.0 )
THEN
1459 WRITE( nounit, fmt = 9998 )
1460 $
'CHBEVX_2STAGE(N,A,' // uplo //
1461 $
')', iinfo, n, kd, jtype, ioldsd
1463 IF( iinfo.LT.0 )
THEN
1466 result( ntest ) = ulpinv
1476 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1477 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1479 result( ntest ) = temp2 / max( unfl,
1480 $ ulp*max( temp1, temp2 ) )
1487 IF( iuplo.EQ.1 )
THEN
1489 DO 760 i = max( 1, j-kd ), j
1490 v( kd+1+i-j, j ) = a( i, j )
1495 DO 780 i = j, min( n, j+kd )
1496 v( 1+i-j, j ) = a( i, j )
1501 CALL chbevx(
'V',
'I', uplo, n, kd, v, ldu, u, ldu, vl,
1502 $ vu, il, iu, abstol, m2, wa2, z, ldu, work,
1503 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1504 IF( iinfo.NE.0 )
THEN
1505 WRITE( nounit, fmt = 9998 )
'CHBEVX(V,I,' // uplo //
1506 $
')', iinfo, n, kd, jtype, ioldsd
1508 IF( iinfo.LT.0 )
THEN
1511 result( ntest ) = ulpinv
1512 result( ntest+1 ) = ulpinv
1513 result( ntest+2 ) = ulpinv
1520 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1521 $ v, ldu, tau, work, rwork, result( ntest ) )
1525 IF( iuplo.EQ.1 )
THEN
1527 DO 800 i = max( 1, j-kd ), j
1528 v( kd+1+i-j, j ) = a( i, j )
1533 DO 820 i = j, min( n, j+kd )
1534 v( 1+i-j, j ) = a( i, j )
1539 $ u, ldu, vl, vu, il, iu, abstol,
1540 $ m3, wa3, z, ldu, work, lwork,
1541 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1542 IF( iinfo.NE.0 )
THEN
1543 WRITE( nounit, fmt = 9998 )
1544 $
'CHBEVX_2STAGE(N,I,' // uplo //
1545 $
')', iinfo, n, kd, jtype, ioldsd
1547 IF( iinfo.LT.0 )
THEN
1550 result( ntest ) = ulpinv
1557 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1558 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1560 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1564 result( ntest ) = ( temp1+temp2 ) /
1565 $ max( unfl, temp3*ulp )
1572 IF( iuplo.EQ.1 )
THEN
1574 DO 850 i = max( 1, j-kd ), j
1575 v( kd+1+i-j, j ) = a( i, j )
1580 DO 870 i = j, min( n, j+kd )
1581 v( 1+i-j, j ) = a( i, j )
1585 CALL chbevx(
'V',
'V', uplo, n, kd, v, ldu, u, ldu, vl,
1586 $ vu, il, iu, abstol, m2, wa2, z, ldu, work,
1587 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1588 IF( iinfo.NE.0 )
THEN
1589 WRITE( nounit, fmt = 9998 )
'CHBEVX(V,V,' // uplo //
1590 $
')', iinfo, n, kd, jtype, ioldsd
1592 IF( iinfo.LT.0 )
THEN
1595 result( ntest ) = ulpinv
1596 result( ntest+1 ) = ulpinv
1597 result( ntest+2 ) = ulpinv
1604 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1605 $ v, ldu, tau, work, rwork, result( ntest ) )
1609 IF( iuplo.EQ.1 )
THEN
1611 DO 890 i = max( 1, j-kd ), j
1612 v( kd+1+i-j, j ) = a( i, j )
1617 DO 910 i = j, min( n, j+kd )
1618 v( 1+i-j, j ) = a( i, j )
1623 $ u, ldu, vl, vu, il, iu, abstol,
1624 $ m3, wa3, z, ldu, work, lwork,
1625 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1626 IF( iinfo.NE.0 )
THEN
1627 WRITE( nounit, fmt = 9998 )
1628 $
'CHBEVX_2STAGE(N,V,' // uplo //
1629 $
')', iinfo, n, kd, jtype, ioldsd
1631 IF( iinfo.LT.0 )
THEN
1634 result( ntest ) = ulpinv
1639 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
1640 result( ntest ) = ulpinv
1646 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1647 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1649 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1653 result( ntest ) = ( temp1+temp2 ) /
1654 $ max( unfl, temp3*ulp )
1660 CALL clacpy(
' ', n, n, a, lda, v, ldu )
1663 CALL cheev(
'V', uplo, n, a, ldu, d1, work, lwork, rwork,
1665 IF( iinfo.NE.0 )
THEN
1666 WRITE( nounit, fmt = 9999 )
'CHEEV(V,' // uplo //
')',
1667 $ iinfo, n, jtype, ioldsd
1669 IF( iinfo.LT.0 )
THEN
1672 result( ntest ) = ulpinv
1673 result( ntest+1 ) = ulpinv
1674 result( ntest+2 ) = ulpinv
1681 CALL chet21( 1, uplo, n, 0, v, ldu, d1, d2, a, ldu, z,
1682 $ ldu, tau, work, rwork, result( ntest ) )
1684 CALL clacpy(
' ', n, n, v, ldu, a, lda )
1688 $ work, lwork, rwork, iinfo )
1689 IF( iinfo.NE.0 )
THEN
1690 WRITE( nounit, fmt = 9999 )
1691 $
'CHEEV_2STAGE(N,' // uplo //
')',
1692 $ iinfo, n, jtype, ioldsd
1694 IF( iinfo.LT.0 )
THEN
1697 result( ntest ) = ulpinv
1707 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1708 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1710 result( ntest ) = temp2 / max( unfl,
1711 $ ulp*max( temp1, temp2 ) )
1715 CALL clacpy(
' ', n, n, v, ldu, a, lda )
1722 IF( iuplo.EQ.1 )
THEN
1726 work( indx ) = a( i, j )
1734 work( indx ) = a( i, j )
1741 indwrk = n*( n+1 ) / 2 + 1
1742 CALL chpev(
'V', uplo, n, work, d1, z, ldu,
1743 $ work( indwrk ), rwork, iinfo )
1744 IF( iinfo.NE.0 )
THEN
1745 WRITE( nounit, fmt = 9999 )
'CHPEV(V,' // uplo //
')',
1746 $ iinfo, n, jtype, ioldsd
1748 IF( iinfo.LT.0 )
THEN
1751 result( ntest ) = ulpinv
1752 result( ntest+1 ) = ulpinv
1753 result( ntest+2 ) = ulpinv
1760 CALL chet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1761 $ ldu, tau, work, rwork, result( ntest ) )
1763 IF( iuplo.EQ.1 )
THEN
1767 work( indx ) = a( i, j )
1775 work( indx ) = a( i, j )
1782 indwrk = n*( n+1 ) / 2 + 1
1783 CALL chpev(
'N', uplo, n, work, d3, z, ldu,
1784 $ work( indwrk ), rwork, iinfo )
1785 IF( iinfo.NE.0 )
THEN
1786 WRITE( nounit, fmt = 9999 )
'CHPEV(N,' // uplo //
')',
1787 $ iinfo, n, jtype, ioldsd
1789 IF( iinfo.LT.0 )
THEN
1792 result( ntest ) = ulpinv
1802 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1803 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1805 result( ntest ) = temp2 / max( unfl,
1806 $ ulp*max( temp1, temp2 ) )
1812 IF( jtype.LE.7 )
THEN
1814 ELSE IF( jtype.GE.8 .AND. jtype.LE.15 )
THEN
1823 IF( iuplo.EQ.1 )
THEN
1825 DO 1060 i = max( 1, j-kd ), j
1826 v( kd+1+i-j, j ) = a( i, j )
1831 DO 1080 i = j, min( n, j+kd )
1832 v( 1+i-j, j ) = a( i, j )
1838 CALL chbev(
'V', uplo, n, kd, v, ldu, d1, z, ldu, work,
1840 IF( iinfo.NE.0 )
THEN
1841 WRITE( nounit, fmt = 9998 )
'CHBEV(V,' // uplo //
')',
1842 $ iinfo, n, kd, jtype, ioldsd
1844 IF( iinfo.LT.0 )
THEN
1847 result( ntest ) = ulpinv
1848 result( ntest+1 ) = ulpinv
1849 result( ntest+2 ) = ulpinv
1856 CALL chet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1857 $ ldu, tau, work, rwork, result( ntest ) )
1859 IF( iuplo.EQ.1 )
THEN
1861 DO 1100 i = max( 1, j-kd ), j
1862 v( kd+1+i-j, j ) = a( i, j )
1867 DO 1120 i = j, min( n, j+kd )
1868 v( 1+i-j, j ) = a( i, j )
1874 CALL chbev_2stage(
'N', uplo, n, kd, v, ldu, d3, z, ldu,
1875 $ work, lwork, rwork, iinfo )
1876 IF( iinfo.NE.0 )
THEN
1877 WRITE( nounit, fmt = 9998 )
1878 $
'CHBEV_2STAGE(N,' // uplo //
')',
1879 $ iinfo, n, kd, jtype, ioldsd
1881 IF( iinfo.LT.0 )
THEN
1884 result( ntest ) = ulpinv
1896 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1897 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1899 result( ntest ) = temp2 / max( unfl,
1900 $ ulp*max( temp1, temp2 ) )
1902 CALL clacpy(
' ', n, n, a, lda, v, ldu )
1904 CALL cheevr(
'V',
'A', uplo, n, a, ldu, vl, vu, il, iu,
1905 $ abstol, m, wa1, z, ldu, iwork, work, lwork,
1906 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
1908 IF( iinfo.NE.0 )
THEN
1909 WRITE( nounit, fmt = 9999 )
'CHEEVR(V,A,' // uplo //
1910 $
')', iinfo, n, jtype, ioldsd
1912 IF( iinfo.LT.0 )
THEN
1915 result( ntest ) = ulpinv
1916 result( ntest+1 ) = ulpinv
1917 result( ntest+2 ) = ulpinv
1924 CALL clacpy(
' ', n, n, v, ldu, a, lda )
1926 CALL chet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1927 $ ldu, tau, work, rwork, result( ntest ) )
1931 $ il, iu, abstol, m2, wa2, z, ldu,
1932 $ iwork, work, lwork, rwork, lrwork,
1933 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
1934 IF( iinfo.NE.0 )
THEN
1935 WRITE( nounit, fmt = 9999 )
1936 $
'CHEEVR_2STAGE(N,A,' // uplo //
1937 $
')', iinfo, n, jtype, ioldsd
1939 IF( iinfo.LT.0 )
THEN
1942 result( ntest ) = ulpinv
1952 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1953 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1955 result( ntest ) = temp2 / max( unfl,
1956 $ ulp*max( temp1, temp2 ) )
1961 CALL clacpy(
' ', n, n, v, ldu, a, lda )
1962 CALL cheevr(
'V',
'I', uplo, n, a, ldu, vl, vu, il, iu,
1963 $ abstol, m2, wa2, z, ldu, iwork, work, lwork,
1964 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
1966 IF( iinfo.NE.0 )
THEN
1967 WRITE( nounit, fmt = 9999 )
'CHEEVR(V,I,' // uplo //
1968 $
')', iinfo, n, jtype, ioldsd
1970 IF( iinfo.LT.0 )
THEN
1973 result( ntest ) = ulpinv
1974 result( ntest+1 ) = ulpinv
1975 result( ntest+2 ) = ulpinv
1982 CALL clacpy(
' ', n, n, v, ldu, a, lda )
1984 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1985 $ v, ldu, tau, work, rwork, result( ntest ) )
1988 CALL clacpy(
' ', n, n, v, ldu, a, lda )
1990 $ il, iu, abstol, m3, wa3, z, ldu,
1991 $ iwork, work, lwork, rwork, lrwork,
1992 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
1993 IF( iinfo.NE.0 )
THEN
1994 WRITE( nounit, fmt = 9999 )
1995 $
'CHEEVR_2STAGE(N,I,' // uplo //
1996 $
')', iinfo, n, jtype, ioldsd
1998 IF( iinfo.LT.0 )
THEN
2001 result( ntest ) = ulpinv
2008 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
2009 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
2010 result( ntest ) = ( temp1+temp2 ) /
2011 $ max( unfl, ulp*temp3 )
2015 CALL clacpy(
' ', n, n, v, ldu, a, lda )
2016 CALL cheevr(
'V',
'V', uplo, n, a, ldu, vl, vu, il, iu,
2017 $ abstol, m2, wa2, z, ldu, iwork, work, lwork,
2018 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
2020 IF( iinfo.NE.0 )
THEN
2021 WRITE( nounit, fmt = 9999 )
'CHEEVR(V,V,' // uplo //
2022 $
')', iinfo, n, jtype, ioldsd
2024 IF( iinfo.LT.0 )
THEN
2027 result( ntest ) = ulpinv
2028 result( ntest+1 ) = ulpinv
2029 result( ntest+2 ) = ulpinv
2036 CALL clacpy(
' ', n, n, v, ldu, a, lda )
2038 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
2039 $ v, ldu, tau, work, rwork, result( ntest ) )
2042 CALL clacpy(
' ', n, n, v, ldu, a, lda )
2044 $ il, iu, abstol, m3, wa3, z, ldu,
2045 $ iwork, work, lwork, rwork, lrwork,
2046 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
2047 IF( iinfo.NE.0 )
THEN
2048 WRITE( nounit, fmt = 9999 )
2049 $
'CHEEVR_2STAGE(N,V,' // uplo //
2050 $
')', iinfo, n, jtype, ioldsd
2052 IF( iinfo.LT.0 )
THEN
2055 result( ntest ) = ulpinv
2060 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
2061 result( ntest ) = ulpinv
2067 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
2068 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
2070 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
2074 result( ntest ) = ( temp1+temp2 ) /
2075 $ max( unfl, temp3*ulp )
2077 CALL clacpy(
' ', n, n, v, ldu, a, lda )
2091 ntestt = ntestt + ntest
2092 CALL slafts(
'CST', n, n, jtype, ntest, result, ioldsd,
2093 $ thresh, nounit, nerrs )
2100 CALL alasvm(
'CST', nounit, nerrs, ntestt, 0 )
2102 9999
FORMAT(
' CDRVST2STG: ', a,
' returned INFO=', i6, / 9x,
'N=', i6,
2103 $
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
')' )
2104 9998
FORMAT(
' CDRVST2STG: ', a,
' returned INFO=', i6, / 9x,
'N=', i6,
2105 $
', KD=', i6,
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
subroutine slabad(SMALL, LARGE)
SLABAD
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine alasvm(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASVM
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 chet22(ITYPE, UPLO, N, M, KBAND, A, LDA, D, E, U, LDU, V, LDV, TAU, WORK, RWORK, RESULT)
CHET22
subroutine chet21(ITYPE, UPLO, N, KBAND, A, LDA, D, E, U, LDU, V, LDV, TAU, WORK, RWORK, RESULT)
CHET21
subroutine clatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
CLATMS
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 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 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 mat...
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 mat...
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 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 mat...
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 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 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 matr...
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 clacpy(UPLO, M, N, A, LDA, B, LDB)
CLACPY copies all or part of one two-dimensional array to another.
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 matrices
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 matrices
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 m...
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 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 matrice...
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 matrice...
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 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 matrice...
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 matrice...
subroutine slafts(TYPE, M, N, IMAT, NTESTS, RESULT, ISEED, THRESH, IOUNIT, IE)
SLAFTS