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' )
456 ulp = slamch(
'Epsilon' )*slamch(
'Base' )
458 rtunfl = sqrt( unfl )
459 rtovfl = sqrt( ovfl )
464 iseed2( i ) = iseed( i )
465 iseed3( i ) = iseed( i )
471 DO 1220 jsize = 1, nsizes
474 lgn = int( log( real( n ) ) / log( two ) )
479 lwedc = max( 2*n+n*n, 2*n*n )
480 lrwedc = 1 + 4*n + 2*n*lgn + 3*n**2
487 aninv = one / real( max( 1, n ) )
489 IF( nsizes.NE.1 )
THEN
490 mtypes = min( maxtyp, ntypes )
492 mtypes = min( maxtyp+1, ntypes )
495 DO 1210 jtype = 1, mtypes
496 IF( .NOT.dotype( jtype ) )
502 ioldsd( j ) = iseed( j )
520 IF( mtypes.GT.maxtyp )
523 itype = ktype( jtype )
524 imode = kmode( jtype )
528 GO TO ( 40, 50, 60 )kmagn( jtype )
535 anorm = ( rtovfl*ulp )*aninv
539 anorm = rtunfl*n*ulpinv
544 CALL claset(
'Full', lda, n, czero, czero, a, lda )
552 IF( itype.EQ.1 )
THEN
555 ELSE IF( itype.EQ.2 )
THEN
560 a( jcol, jcol ) = anorm
563 ELSE IF( itype.EQ.4 )
THEN
567 CALL clatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
568 $ anorm, 0, 0,
'N', a, lda, work, iinfo )
570 ELSE IF( itype.EQ.5 )
THEN
574 CALL clatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
575 $ anorm, n, n,
'N', a, lda, work, iinfo )
577 ELSE IF( itype.EQ.7 )
THEN
581 CALL clatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
582 $
'T',
'N', work( n+1 ), 1, one,
583 $ work( 2*n+1 ), 1, one,
'N', idumma, 0, 0,
584 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
586 ELSE IF( itype.EQ.8 )
THEN
590 CALL clatmr( n, n,
'S', iseed,
'H', work, 6, one, cone,
591 $
'T',
'N', work( n+1 ), 1, one,
592 $ work( 2*n+1 ), 1, one,
'N', idumma, n, n,
593 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
595 ELSE IF( itype.EQ.9 )
THEN
599 ihbw = int( ( n-1 )*slarnd( 1, iseed3 ) )
600 CALL clatms( n, n,
'S', iseed,
'H', rwork, imode, cond,
601 $ anorm, ihbw, ihbw,
'Z', u, ldu, work,
606 CALL claset(
'Full', lda, n, czero, czero, a, lda )
607 DO 100 idiag = -ihbw, ihbw
608 irow = ihbw - idiag + 1
609 j1 = max( 1, idiag+1 )
610 j2 = min( n, n+idiag )
613 a( i, j ) = u( irow, j )
620 IF( iinfo.NE.0 )
THEN
621 WRITE( nounit, fmt = 9999 )
'Generator', iinfo, n, jtype,
634 il = 1 + int( ( n-1 )*slarnd( 1, iseed2 ) )
635 iu = 1 + int( ( n-1 )*slarnd( 1, iseed2 ) )
647 IF( iuplo.EQ.0 )
THEN
655 CALL clacpy(
' ', n, n, a, lda, v, ldu )
658 CALL cheevd(
'V', uplo, n, a, ldu, d1, work, lwedc,
659 $ rwork, lrwedc, iwork, liwedc, iinfo )
660 IF( iinfo.NE.0 )
THEN
661 WRITE( nounit, fmt = 9999 )
'CHEEVD(V,' // uplo //
662 $
')', iinfo, n, jtype, ioldsd
664 IF( iinfo.LT.0 )
THEN
667 result( ntest ) = ulpinv
668 result( ntest+1 ) = ulpinv
669 result( ntest+2 ) = ulpinv
676 CALL chet21( 1, uplo, n, 0, v, ldu, d1, d2, a, ldu, z,
677 $ ldu, tau, work, rwork, result( ntest ) )
679 CALL clacpy(
' ', n, n, v, ldu, a, lda )
683 $ lwork, rwork, lrwedc, iwork, liwedc, iinfo )
684 IF( iinfo.NE.0 )
THEN
685 WRITE( nounit, fmt = 9999 )
686 $
'CHEEVD_2STAGE(N,' // uplo //
687 $
')', iinfo, n, jtype, ioldsd
689 IF( iinfo.LT.0 )
THEN
692 result( ntest ) = ulpinv
702 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
703 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
705 result( ntest ) = temp2 / max( unfl,
706 $ ulp*max( temp1, temp2 ) )
709 CALL clacpy(
' ', n, n, v, ldu, a, lda )
714 temp3 = max( abs( d1( 1 ) ), abs( d1( n ) ) )
716 vl = d1( il ) - max( half*( d1( il )-d1( il-1 ) ),
717 $ ten*ulp*temp3, ten*rtunfl )
718 ELSE IF( n.GT.0 )
THEN
719 vl = d1( 1 ) - max( half*( d1( n )-d1( 1 ) ),
720 $ ten*ulp*temp3, ten*rtunfl )
723 vu = d1( iu ) + max( half*( d1( iu+1 )-d1( iu ) ),
724 $ ten*ulp*temp3, ten*rtunfl )
725 ELSE IF( n.GT.0 )
THEN
726 vu = d1( n ) + max( half*( d1( n )-d1( 1 ) ),
727 $ ten*ulp*temp3, ten*rtunfl )
735 CALL cheevx(
'V',
'A', uplo, n, a, ldu, vl, vu, il, iu,
736 $ abstol, m, wa1, z, ldu, work, lwork, rwork,
737 $ iwork, iwork( 5*n+1 ), iinfo )
738 IF( iinfo.NE.0 )
THEN
739 WRITE( nounit, fmt = 9999 )
'CHEEVX(V,A,' // uplo //
740 $
')', iinfo, n, jtype, ioldsd
742 IF( iinfo.LT.0 )
THEN
745 result( ntest ) = ulpinv
746 result( ntest+1 ) = ulpinv
747 result( ntest+2 ) = ulpinv
754 CALL clacpy(
' ', n, n, v, ldu, a, lda )
756 CALL chet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
757 $ ldu, tau, work, rwork, result( ntest ) )
761 $ il, iu, abstol, m2, wa2, z, ldu,
762 $ work, lwork, rwork, iwork,
763 $ iwork( 5*n+1 ), iinfo )
764 IF( iinfo.NE.0 )
THEN
765 WRITE( nounit, fmt = 9999 )
766 $
'CHEEVX_2STAGE(N,A,' // uplo //
767 $
')', iinfo, n, jtype, ioldsd
769 IF( iinfo.LT.0 )
THEN
772 result( ntest ) = ulpinv
782 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
783 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
785 result( ntest ) = temp2 / max( unfl,
786 $ ulp*max( temp1, temp2 ) )
789 CALL clacpy(
' ', n, n, v, ldu, a, lda )
793 CALL cheevx(
'V',
'I', uplo, n, a, ldu, vl, vu, il, iu,
794 $ abstol, m2, wa2, z, ldu, work, lwork, rwork,
795 $ iwork, iwork( 5*n+1 ), iinfo )
796 IF( iinfo.NE.0 )
THEN
797 WRITE( nounit, fmt = 9999 )
'CHEEVX(V,I,' // uplo //
798 $
')', iinfo, n, jtype, ioldsd
800 IF( iinfo.LT.0 )
THEN
803 result( ntest ) = ulpinv
810 CALL clacpy(
' ', n, n, v, ldu, a, lda )
812 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
813 $ v, ldu, tau, work, rwork, result( ntest ) )
818 $ il, iu, abstol, m3, wa3, z, ldu,
819 $ work, lwork, rwork, iwork,
820 $ iwork( 5*n+1 ), iinfo )
821 IF( iinfo.NE.0 )
THEN
822 WRITE( nounit, fmt = 9999 )
823 $
'CHEEVX_2STAGE(N,I,' // uplo //
824 $
')', iinfo, n, jtype, ioldsd
826 IF( iinfo.LT.0 )
THEN
829 result( ntest ) = ulpinv
836 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
837 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
839 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
843 result( ntest ) = ( temp1+temp2 ) /
844 $ max( unfl, temp3*ulp )
847 CALL clacpy(
' ', n, n, v, ldu, a, lda )
851 CALL cheevx(
'V',
'V', uplo, n, a, ldu, vl, vu, il, iu,
852 $ abstol, m2, wa2, z, ldu, work, lwork, rwork,
853 $ iwork, iwork( 5*n+1 ), iinfo )
854 IF( iinfo.NE.0 )
THEN
855 WRITE( nounit, fmt = 9999 )
'CHEEVX(V,V,' // uplo //
856 $
')', iinfo, n, jtype, ioldsd
858 IF( iinfo.LT.0 )
THEN
861 result( ntest ) = ulpinv
868 CALL clacpy(
' ', n, n, v, ldu, a, lda )
870 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
871 $ v, ldu, tau, work, rwork, result( ntest ) )
876 $ il, iu, abstol, m3, wa3, z, ldu,
877 $ work, lwork, rwork, iwork,
878 $ iwork( 5*n+1 ), iinfo )
879 IF( iinfo.NE.0 )
THEN
880 WRITE( nounit, fmt = 9999 )
881 $
'CHEEVX_2STAGE(N,V,' // uplo //
882 $
')', iinfo, n, jtype, ioldsd
884 IF( iinfo.LT.0 )
THEN
887 result( ntest ) = ulpinv
892 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
893 result( ntest ) = ulpinv
899 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
900 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
902 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
906 result( ntest ) = ( temp1+temp2 ) /
907 $ max( unfl, temp3*ulp )
913 CALL clacpy(
' ', n, n, v, ldu, a, lda )
918 IF( iuplo.EQ.1 )
THEN
922 work( indx ) = a( i, j )
930 work( indx ) = a( i, j )
937 indwrk = n*( n+1 ) / 2 + 1
938 CALL chpevd(
'V', uplo, n, work, d1, z, ldu,
939 $ work( indwrk ), lwedc, rwork, lrwedc, iwork,
941 IF( iinfo.NE.0 )
THEN
942 WRITE( nounit, fmt = 9999 )
'CHPEVD(V,' // uplo //
943 $
')', iinfo, n, jtype, ioldsd
945 IF( iinfo.LT.0 )
THEN
948 result( ntest ) = ulpinv
949 result( ntest+1 ) = ulpinv
950 result( ntest+2 ) = ulpinv
957 CALL chet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
958 $ ldu, tau, work, rwork, result( ntest ) )
960 IF( iuplo.EQ.1 )
THEN
964 work( indx ) = a( i, j )
972 work( indx ) = a( i, j )
979 indwrk = n*( n+1 ) / 2 + 1
980 CALL chpevd(
'N', uplo, n, work, d3, z, ldu,
981 $ work( indwrk ), lwedc, rwork, lrwedc, iwork,
983 IF( iinfo.NE.0 )
THEN
984 WRITE( nounit, fmt = 9999 )
'CHPEVD(N,' // uplo //
985 $
')', iinfo, n, jtype, ioldsd
987 IF( iinfo.LT.0 )
THEN
990 result( ntest ) = ulpinv
1000 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1001 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1003 result( ntest ) = temp2 / max( unfl,
1004 $ ulp*max( temp1, temp2 ) )
1010 IF( iuplo.EQ.1 )
THEN
1014 work( indx ) = a( i, j )
1022 work( indx ) = a( i, j )
1031 temp3 = max( abs( d1( 1 ) ), abs( d1( n ) ) )
1033 vl = d1( il ) - max( half*( d1( il )-d1( il-1 ) ),
1034 $ ten*ulp*temp3, ten*rtunfl )
1035 ELSE IF( n.GT.0 )
THEN
1036 vl = d1( 1 ) - max( half*( d1( n )-d1( 1 ) ),
1037 $ ten*ulp*temp3, ten*rtunfl )
1040 vu = d1( iu ) + max( half*( d1( iu+1 )-d1( iu ) ),
1041 $ ten*ulp*temp3, ten*rtunfl )
1042 ELSE IF( n.GT.0 )
THEN
1043 vu = d1( n ) + max( half*( d1( n )-d1( 1 ) ),
1044 $ ten*ulp*temp3, ten*rtunfl )
1052 CALL chpevx(
'V',
'A', uplo, n, work, vl, vu, il, iu,
1053 $ abstol, m, wa1, z, ldu, v, rwork, iwork,
1054 $ iwork( 5*n+1 ), iinfo )
1055 IF( iinfo.NE.0 )
THEN
1056 WRITE( nounit, fmt = 9999 )
'CHPEVX(V,A,' // uplo //
1057 $
')', iinfo, n, jtype, ioldsd
1059 IF( iinfo.LT.0 )
THEN
1062 result( ntest ) = ulpinv
1063 result( ntest+1 ) = ulpinv
1064 result( ntest+2 ) = ulpinv
1071 CALL chet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1072 $ ldu, tau, work, rwork, result( ntest ) )
1076 IF( iuplo.EQ.1 )
THEN
1080 work( indx ) = a( i, j )
1088 work( indx ) = a( i, j )
1094 CALL chpevx(
'N',
'A', uplo, n, work, vl, vu, il, iu,
1095 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1096 $ iwork( 5*n+1 ), iinfo )
1097 IF( iinfo.NE.0 )
THEN
1098 WRITE( nounit, fmt = 9999 )
'CHPEVX(N,A,' // uplo //
1099 $
')', iinfo, n, jtype, ioldsd
1101 IF( iinfo.LT.0 )
THEN
1104 result( ntest ) = ulpinv
1114 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1115 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1117 result( ntest ) = temp2 / max( unfl,
1118 $ ulp*max( temp1, temp2 ) )
1122 IF( iuplo.EQ.1 )
THEN
1126 work( indx ) = a( i, j )
1134 work( indx ) = a( i, j )
1140 CALL chpevx(
'V',
'I', uplo, n, work, vl, vu, il, iu,
1141 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1142 $ iwork( 5*n+1 ), iinfo )
1143 IF( iinfo.NE.0 )
THEN
1144 WRITE( nounit, fmt = 9999 )
'CHPEVX(V,I,' // uplo //
1145 $
')', iinfo, n, jtype, ioldsd
1147 IF( iinfo.LT.0 )
THEN
1150 result( ntest ) = ulpinv
1151 result( ntest+1 ) = ulpinv
1152 result( ntest+2 ) = ulpinv
1159 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1160 $ v, ldu, tau, work, rwork, result( ntest ) )
1164 IF( iuplo.EQ.1 )
THEN
1168 work( indx ) = a( i, j )
1176 work( indx ) = a( i, j )
1182 CALL chpevx(
'N',
'I', uplo, n, work, vl, vu, il, iu,
1183 $ abstol, m3, wa3, z, ldu, v, rwork, iwork,
1184 $ iwork( 5*n+1 ), iinfo )
1185 IF( iinfo.NE.0 )
THEN
1186 WRITE( nounit, fmt = 9999 )
'CHPEVX(N,I,' // uplo //
1187 $
')', iinfo, n, jtype, ioldsd
1189 IF( iinfo.LT.0 )
THEN
1192 result( ntest ) = ulpinv
1199 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1200 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1202 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1206 result( ntest ) = ( temp1+temp2 ) /
1207 $ max( unfl, temp3*ulp )
1211 IF( iuplo.EQ.1 )
THEN
1215 work( indx ) = a( i, j )
1223 work( indx ) = a( i, j )
1229 CALL chpevx(
'V',
'V', uplo, n, work, vl, vu, il, iu,
1230 $ abstol, m2, wa2, z, ldu, v, rwork, iwork,
1231 $ iwork( 5*n+1 ), iinfo )
1232 IF( iinfo.NE.0 )
THEN
1233 WRITE( nounit, fmt = 9999 )
'CHPEVX(V,V,' // uplo //
1234 $
')', iinfo, n, jtype, ioldsd
1236 IF( iinfo.LT.0 )
THEN
1239 result( ntest ) = ulpinv
1240 result( ntest+1 ) = ulpinv
1241 result( ntest+2 ) = ulpinv
1248 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1249 $ v, ldu, tau, work, rwork, result( ntest ) )
1253 IF( iuplo.EQ.1 )
THEN
1257 work( indx ) = a( i, j )
1265 work( indx ) = a( i, j )
1271 CALL chpevx(
'N',
'V', uplo, n, work, vl, vu, il, iu,
1272 $ abstol, m3, wa3, z, ldu, v, rwork, iwork,
1273 $ iwork( 5*n+1 ), iinfo )
1274 IF( iinfo.NE.0 )
THEN
1275 WRITE( nounit, fmt = 9999 )
'CHPEVX(N,V,' // uplo //
1276 $
')', iinfo, n, jtype, ioldsd
1278 IF( iinfo.LT.0 )
THEN
1281 result( ntest ) = ulpinv
1286 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
1287 result( ntest ) = ulpinv
1293 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1294 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1296 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1300 result( ntest ) = ( temp1+temp2 ) /
1301 $ max( unfl, temp3*ulp )
1307 IF( jtype.LE.7 )
THEN
1309 ELSE IF( jtype.GE.8 .AND. jtype.LE.15 )
THEN
1318 IF( iuplo.EQ.1 )
THEN
1320 DO 560 i = max( 1, j-kd ), j
1321 v( kd+1+i-j, j ) = a( i, j )
1326 DO 580 i = j, min( n, j+kd )
1327 v( 1+i-j, j ) = a( i, j )
1333 CALL chbevd(
'V', uplo, n, kd, v, ldu, d1, z, ldu, work,
1334 $ lwedc, rwork, lrwedc, iwork, liwedc, iinfo )
1335 IF( iinfo.NE.0 )
THEN
1336 WRITE( nounit, fmt = 9998 )
'CHBEVD(V,' // uplo //
1337 $
')', iinfo, n, kd, jtype, ioldsd
1339 IF( iinfo.LT.0 )
THEN
1342 result( ntest ) = ulpinv
1343 result( ntest+1 ) = ulpinv
1344 result( ntest+2 ) = ulpinv
1351 CALL chet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1352 $ ldu, tau, work, rwork, result( ntest ) )
1354 IF( iuplo.EQ.1 )
THEN
1356 DO 600 i = max( 1, j-kd ), j
1357 v( kd+1+i-j, j ) = a( i, j )
1362 DO 620 i = j, min( n, j+kd )
1363 v( 1+i-j, j ) = a( i, j )
1370 $ z, ldu, work, lwork, rwork,
1371 $ lrwedc, iwork, liwedc, iinfo )
1372 IF( iinfo.NE.0 )
THEN
1373 WRITE( nounit, fmt = 9998 )
1374 $
'CHBEVD_2STAGE(N,' // uplo //
1375 $
')', iinfo, n, kd, jtype, ioldsd
1377 IF( iinfo.LT.0 )
THEN
1380 result( ntest ) = ulpinv
1390 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1391 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1393 result( ntest ) = temp2 / max( unfl,
1394 $ ulp*max( temp1, temp2 ) )
1400 IF( iuplo.EQ.1 )
THEN
1402 DO 660 i = max( 1, j-kd ), j
1403 v( kd+1+i-j, j ) = a( i, j )
1408 DO 680 i = j, min( n, j+kd )
1409 v( 1+i-j, j ) = a( i, j )
1415 CALL chbevx(
'V',
'A', uplo, n, kd, v, ldu, u, ldu, vl,
1416 $ vu, il, iu, abstol, m, wa1, z, ldu, work,
1417 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1418 IF( iinfo.NE.0 )
THEN
1419 WRITE( nounit, fmt = 9999 )
'CHBEVX(V,A,' // uplo //
1420 $
')', iinfo, n, kd, jtype, ioldsd
1422 IF( iinfo.LT.0 )
THEN
1425 result( ntest ) = ulpinv
1426 result( ntest+1 ) = ulpinv
1427 result( ntest+2 ) = ulpinv
1434 CALL chet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1435 $ ldu, tau, work, rwork, result( ntest ) )
1439 IF( iuplo.EQ.1 )
THEN
1441 DO 700 i = max( 1, j-kd ), j
1442 v( kd+1+i-j, j ) = a( i, j )
1447 DO 720 i = j, min( n, j+kd )
1448 v( 1+i-j, j ) = a( i, j )
1454 $ u, ldu, vl, vu, il, iu, abstol,
1455 $ m2, wa2, z, ldu, work, lwork,
1456 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1457 IF( iinfo.NE.0 )
THEN
1458 WRITE( nounit, fmt = 9998 )
1459 $
'CHBEVX_2STAGE(N,A,' // uplo //
1460 $
')', iinfo, n, kd, jtype, ioldsd
1462 IF( iinfo.LT.0 )
THEN
1465 result( ntest ) = ulpinv
1475 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1476 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1478 result( ntest ) = temp2 / max( unfl,
1479 $ ulp*max( temp1, temp2 ) )
1486 IF( iuplo.EQ.1 )
THEN
1488 DO 760 i = max( 1, j-kd ), j
1489 v( kd+1+i-j, j ) = a( i, j )
1494 DO 780 i = j, min( n, j+kd )
1495 v( 1+i-j, j ) = a( i, j )
1500 CALL chbevx(
'V',
'I', uplo, n, kd, v, ldu, u, ldu, vl,
1501 $ vu, il, iu, abstol, m2, wa2, z, ldu, work,
1502 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1503 IF( iinfo.NE.0 )
THEN
1504 WRITE( nounit, fmt = 9998 )
'CHBEVX(V,I,' // uplo //
1505 $
')', iinfo, n, kd, jtype, ioldsd
1507 IF( iinfo.LT.0 )
THEN
1510 result( ntest ) = ulpinv
1511 result( ntest+1 ) = ulpinv
1512 result( ntest+2 ) = ulpinv
1519 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1520 $ v, ldu, tau, work, rwork, result( ntest ) )
1524 IF( iuplo.EQ.1 )
THEN
1526 DO 800 i = max( 1, j-kd ), j
1527 v( kd+1+i-j, j ) = a( i, j )
1532 DO 820 i = j, min( n, j+kd )
1533 v( 1+i-j, j ) = a( i, j )
1538 $ u, ldu, vl, vu, il, iu, abstol,
1539 $ m3, wa3, z, ldu, work, lwork,
1540 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1541 IF( iinfo.NE.0 )
THEN
1542 WRITE( nounit, fmt = 9998 )
1543 $
'CHBEVX_2STAGE(N,I,' // uplo //
1544 $
')', iinfo, n, kd, jtype, ioldsd
1546 IF( iinfo.LT.0 )
THEN
1549 result( ntest ) = ulpinv
1556 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1557 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1559 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1563 result( ntest ) = ( temp1+temp2 ) /
1564 $ max( unfl, temp3*ulp )
1571 IF( iuplo.EQ.1 )
THEN
1573 DO 850 i = max( 1, j-kd ), j
1574 v( kd+1+i-j, j ) = a( i, j )
1579 DO 870 i = j, min( n, j+kd )
1580 v( 1+i-j, j ) = a( i, j )
1584 CALL chbevx(
'V',
'V', uplo, n, kd, v, ldu, u, ldu, vl,
1585 $ vu, il, iu, abstol, m2, wa2, z, ldu, work,
1586 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1587 IF( iinfo.NE.0 )
THEN
1588 WRITE( nounit, fmt = 9998 )
'CHBEVX(V,V,' // uplo //
1589 $
')', iinfo, n, kd, jtype, ioldsd
1591 IF( iinfo.LT.0 )
THEN
1594 result( ntest ) = ulpinv
1595 result( ntest+1 ) = ulpinv
1596 result( ntest+2 ) = ulpinv
1603 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1604 $ v, ldu, tau, work, rwork, result( ntest ) )
1608 IF( iuplo.EQ.1 )
THEN
1610 DO 890 i = max( 1, j-kd ), j
1611 v( kd+1+i-j, j ) = a( i, j )
1616 DO 910 i = j, min( n, j+kd )
1617 v( 1+i-j, j ) = a( i, j )
1622 $ u, ldu, vl, vu, il, iu, abstol,
1623 $ m3, wa3, z, ldu, work, lwork,
1624 $ rwork, iwork, iwork( 5*n+1 ), iinfo )
1625 IF( iinfo.NE.0 )
THEN
1626 WRITE( nounit, fmt = 9998 )
1627 $
'CHBEVX_2STAGE(N,V,' // uplo //
1628 $
')', iinfo, n, kd, jtype, ioldsd
1630 IF( iinfo.LT.0 )
THEN
1633 result( ntest ) = ulpinv
1638 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
1639 result( ntest ) = ulpinv
1645 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
1646 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
1648 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
1652 result( ntest ) = ( temp1+temp2 ) /
1653 $ max( unfl, temp3*ulp )
1659 CALL clacpy(
' ', n, n, a, lda, v, ldu )
1662 CALL cheev(
'V', uplo, n, a, ldu, d1, work, lwork, rwork,
1664 IF( iinfo.NE.0 )
THEN
1665 WRITE( nounit, fmt = 9999 )
'CHEEV(V,' // uplo //
')',
1666 $ iinfo, n, jtype, ioldsd
1668 IF( iinfo.LT.0 )
THEN
1671 result( ntest ) = ulpinv
1672 result( ntest+1 ) = ulpinv
1673 result( ntest+2 ) = ulpinv
1680 CALL chet21( 1, uplo, n, 0, v, ldu, d1, d2, a, ldu, z,
1681 $ ldu, tau, work, rwork, result( ntest ) )
1683 CALL clacpy(
' ', n, n, v, ldu, a, lda )
1687 $ work, lwork, rwork, iinfo )
1688 IF( iinfo.NE.0 )
THEN
1689 WRITE( nounit, fmt = 9999 )
1690 $
'CHEEV_2STAGE(N,' // uplo //
')',
1691 $ iinfo, n, jtype, ioldsd
1693 IF( iinfo.LT.0 )
THEN
1696 result( ntest ) = ulpinv
1706 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1707 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1709 result( ntest ) = temp2 / max( unfl,
1710 $ ulp*max( temp1, temp2 ) )
1714 CALL clacpy(
' ', n, n, v, ldu, a, lda )
1721 IF( iuplo.EQ.1 )
THEN
1725 work( indx ) = a( i, j )
1733 work( indx ) = a( i, j )
1740 indwrk = n*( n+1 ) / 2 + 1
1741 CALL chpev(
'V', uplo, n, work, d1, z, ldu,
1742 $ work( indwrk ), rwork, iinfo )
1743 IF( iinfo.NE.0 )
THEN
1744 WRITE( nounit, fmt = 9999 )
'CHPEV(V,' // uplo //
')',
1745 $ iinfo, n, jtype, ioldsd
1747 IF( iinfo.LT.0 )
THEN
1750 result( ntest ) = ulpinv
1751 result( ntest+1 ) = ulpinv
1752 result( ntest+2 ) = ulpinv
1759 CALL chet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1760 $ ldu, tau, work, rwork, result( ntest ) )
1762 IF( iuplo.EQ.1 )
THEN
1766 work( indx ) = a( i, j )
1774 work( indx ) = a( i, j )
1781 indwrk = n*( n+1 ) / 2 + 1
1782 CALL chpev(
'N', uplo, n, work, d3, z, ldu,
1783 $ work( indwrk ), rwork, iinfo )
1784 IF( iinfo.NE.0 )
THEN
1785 WRITE( nounit, fmt = 9999 )
'CHPEV(N,' // uplo //
')',
1786 $ iinfo, n, jtype, ioldsd
1788 IF( iinfo.LT.0 )
THEN
1791 result( ntest ) = ulpinv
1801 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1802 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1804 result( ntest ) = temp2 / max( unfl,
1805 $ ulp*max( temp1, temp2 ) )
1811 IF( jtype.LE.7 )
THEN
1813 ELSE IF( jtype.GE.8 .AND. jtype.LE.15 )
THEN
1822 IF( iuplo.EQ.1 )
THEN
1824 DO 1060 i = max( 1, j-kd ), j
1825 v( kd+1+i-j, j ) = a( i, j )
1830 DO 1080 i = j, min( n, j+kd )
1831 v( 1+i-j, j ) = a( i, j )
1837 CALL chbev(
'V', uplo, n, kd, v, ldu, d1, z, ldu, work,
1839 IF( iinfo.NE.0 )
THEN
1840 WRITE( nounit, fmt = 9998 )
'CHBEV(V,' // uplo //
')',
1841 $ iinfo, n, kd, jtype, ioldsd
1843 IF( iinfo.LT.0 )
THEN
1846 result( ntest ) = ulpinv
1847 result( ntest+1 ) = ulpinv
1848 result( ntest+2 ) = ulpinv
1855 CALL chet21( 1, uplo, n, 0, a, lda, d1, d2, z, ldu, v,
1856 $ ldu, tau, work, rwork, result( ntest ) )
1858 IF( iuplo.EQ.1 )
THEN
1860 DO 1100 i = max( 1, j-kd ), j
1861 v( kd+1+i-j, j ) = a( i, j )
1866 DO 1120 i = j, min( n, j+kd )
1867 v( 1+i-j, j ) = a( i, j )
1873 CALL chbev_2stage(
'N', uplo, n, kd, v, ldu, d3, z, ldu,
1874 $ work, lwork, rwork, iinfo )
1875 IF( iinfo.NE.0 )
THEN
1876 WRITE( nounit, fmt = 9998 )
1877 $
'CHBEV_2STAGE(N,' // uplo //
')',
1878 $ iinfo, n, kd, jtype, ioldsd
1880 IF( iinfo.LT.0 )
THEN
1883 result( ntest ) = ulpinv
1895 temp1 = max( temp1, abs( d1( j ) ), abs( d3( j ) ) )
1896 temp2 = max( temp2, abs( d1( j )-d3( j ) ) )
1898 result( ntest ) = temp2 / max( unfl,
1899 $ ulp*max( temp1, temp2 ) )
1901 CALL clacpy(
' ', n, n, a, lda, v, ldu )
1903 CALL cheevr(
'V',
'A', uplo, n, a, ldu, vl, vu, il, iu,
1904 $ abstol, m, wa1, z, ldu, iwork, work, lwork,
1905 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
1907 IF( iinfo.NE.0 )
THEN
1908 WRITE( nounit, fmt = 9999 )
'CHEEVR(V,A,' // uplo //
1909 $
')', iinfo, n, jtype, ioldsd
1911 IF( iinfo.LT.0 )
THEN
1914 result( ntest ) = ulpinv
1915 result( ntest+1 ) = ulpinv
1916 result( ntest+2 ) = ulpinv
1923 CALL clacpy(
' ', n, n, v, ldu, a, lda )
1925 CALL chet21( 1, uplo, n, 0, a, ldu, wa1, d2, z, ldu, v,
1926 $ ldu, tau, work, rwork, result( ntest ) )
1930 $ il, iu, abstol, m2, wa2, z, ldu,
1931 $ iwork, work, lwork, rwork, lrwork,
1932 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
1933 IF( iinfo.NE.0 )
THEN
1934 WRITE( nounit, fmt = 9999 )
1935 $
'CHEEVR_2STAGE(N,A,' // uplo //
1936 $
')', iinfo, n, jtype, ioldsd
1938 IF( iinfo.LT.0 )
THEN
1941 result( ntest ) = ulpinv
1951 temp1 = max( temp1, abs( wa1( j ) ), abs( wa2( j ) ) )
1952 temp2 = max( temp2, abs( wa1( j )-wa2( j ) ) )
1954 result( ntest ) = temp2 / max( unfl,
1955 $ ulp*max( temp1, temp2 ) )
1960 CALL clacpy(
' ', n, n, v, ldu, a, lda )
1961 CALL cheevr(
'V',
'I', uplo, n, a, ldu, vl, vu, il, iu,
1962 $ abstol, m2, wa2, z, ldu, iwork, work, lwork,
1963 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
1965 IF( iinfo.NE.0 )
THEN
1966 WRITE( nounit, fmt = 9999 )
'CHEEVR(V,I,' // uplo //
1967 $
')', iinfo, n, jtype, ioldsd
1969 IF( iinfo.LT.0 )
THEN
1972 result( ntest ) = ulpinv
1973 result( ntest+1 ) = ulpinv
1974 result( ntest+2 ) = ulpinv
1981 CALL clacpy(
' ', n, n, v, ldu, a, lda )
1983 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
1984 $ v, ldu, tau, work, rwork, result( ntest ) )
1987 CALL clacpy(
' ', n, n, v, ldu, a, lda )
1989 $ il, iu, abstol, m3, wa3, z, ldu,
1990 $ iwork, work, lwork, rwork, lrwork,
1991 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
1992 IF( iinfo.NE.0 )
THEN
1993 WRITE( nounit, fmt = 9999 )
1994 $
'CHEEVR_2STAGE(N,I,' // uplo //
1995 $
')', iinfo, n, jtype, ioldsd
1997 IF( iinfo.LT.0 )
THEN
2000 result( ntest ) = ulpinv
2007 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
2008 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
2009 result( ntest ) = ( temp1+temp2 ) /
2010 $ max( unfl, ulp*temp3 )
2014 CALL clacpy(
' ', n, n, v, ldu, a, lda )
2015 CALL cheevr(
'V',
'V', uplo, n, a, ldu, vl, vu, il, iu,
2016 $ abstol, m2, wa2, z, ldu, iwork, work, lwork,
2017 $ rwork, lrwork, iwork( 2*n+1 ), liwork-2*n,
2019 IF( iinfo.NE.0 )
THEN
2020 WRITE( nounit, fmt = 9999 )
'CHEEVR(V,V,' // uplo //
2021 $
')', iinfo, n, jtype, ioldsd
2023 IF( iinfo.LT.0 )
THEN
2026 result( ntest ) = ulpinv
2027 result( ntest+1 ) = ulpinv
2028 result( ntest+2 ) = ulpinv
2035 CALL clacpy(
' ', n, n, v, ldu, a, lda )
2037 CALL chet22( 1, uplo, n, m2, 0, a, ldu, wa2, d2, z, ldu,
2038 $ v, ldu, tau, work, rwork, result( ntest ) )
2041 CALL clacpy(
' ', n, n, v, ldu, a, lda )
2043 $ il, iu, abstol, m3, wa3, z, ldu,
2044 $ iwork, work, lwork, rwork, lrwork,
2045 $ iwork( 2*n+1 ), liwork-2*n, iinfo )
2046 IF( iinfo.NE.0 )
THEN
2047 WRITE( nounit, fmt = 9999 )
2048 $
'CHEEVR_2STAGE(N,V,' // uplo //
2049 $
')', iinfo, n, jtype, ioldsd
2051 IF( iinfo.LT.0 )
THEN
2054 result( ntest ) = ulpinv
2059 IF( m3.EQ.0 .AND. n.GT.0 )
THEN
2060 result( ntest ) = ulpinv
2066 temp1 = ssxt1( 1, wa2, m2, wa3, m3, abstol, ulp, unfl )
2067 temp2 = ssxt1( 1, wa3, m3, wa2, m2, abstol, ulp, unfl )
2069 temp3 = max( abs( wa1( 1 ) ), abs( wa1( n ) ) )
2073 result( ntest ) = ( temp1+temp2 ) /
2074 $ max( unfl, temp3*ulp )
2076 CALL clacpy(
' ', n, n, v, ldu, a, lda )
2090 ntestt = ntestt + ntest
2091 CALL slafts(
'CST', n, n, jtype, ntest, result, ioldsd,
2092 $ thresh, nounit, nerrs )
2099 CALL alasvm(
'CST', nounit, nerrs, ntestt, 0 )
2101 9999
FORMAT(
' CDRVST2STG: ', a,
' returned INFO=', i6, / 9x,
'N=', i6,
2102 $
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
')' )
2103 9998
FORMAT(
' CDRVST2STG: ', a,
' returned INFO=', i6, / 9x,
'N=', i6,
2104 $
', KD=', i6,
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
subroutine alasvm(type, nout, nfail, nrun, nerrs)
ALASVM
subroutine xerbla(srname, info)
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 chet21(itype, uplo, n, kband, a, lda, d, e, u, ldu, v, ldv, tau, work, rwork, result)
CHET21
subroutine chet22(itype, uplo, n, m, kband, a, lda, d, e, u, ldu, v, ldv, tau, work, rwork, result)
CHET22
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 clatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
CLATMS
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 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 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_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 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 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 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 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 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 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 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 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 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 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 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 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 clacpy(uplo, m, n, a, lda, b, ldb)
CLACPY copies all or part of one two-dimensional array to another.
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