C-----LSVAL (SINGULAR VALUES OF REAL, RECTANGULAR MATRICES-------------LSV00020 C LSV00030 C CONTAINS MAIN PROGRAM FOR COMPUTING DISTINCT SINGULAR VALUES OF LSV00040 C A REAL M X N MATRIX USING LANCZOS TRIDIAGONALIZATION WITHOUT LSV00050 C REORTHOGONALIZATION AND WITH SPECIAL STARTING VECTORS. LSV00060 C LSV00070 C FOR A GIVEN REAL MATRIX A OF ORDER M X N THE LANCZOS RECURSION LSV00080 C IS APPLIED TO THE ASSOCIATED REAL SYMMETRIC MATRIX B OF ORDER LSV00090 C MN = M + N LSV00100 C LSV00110 C ---- ---- LSV00120 C | 0 A | LSV00130 C B = | | LSV00140 C | A-TRANSPOSE 0 | LSV00150 C ---- ---- LSV00160 C LSV00170 C USING SPECIAL STARTING VECTORS. PLEASE NOTE: ONLY EVEN ORDER LSV00180 C LANCZOS TRIDIAGONAL MATRICES AND ONLY NONNEGATIVE SUBINTERVALS LSV00190 C ARE PERMISSIBLE. LSV00200 C LSV00210 C PFORT VERIFIER IDENTIFIED THE FOLLOWING NONPORTABLE LSV00220 C CONSTRUCTIONS LSV00230 C LSV00240 C 1. DATA/MACHEP/ STATEMENT LSV00250 C 2. ALL READ(5,*) STATEMENTS (FREE FORMAT) LSV00260 C 3. FORMAT(20A4) USED WITH EXPLANATORY HEADER EXPLAN. LSV00270 C 4. HEXADECIMAL FORMAT (4Z20) USED IN BETA FILES. LSV00280 C LSV00290 C-----------------------------------------------------------------------LSV00300 DOUBLE PRECISION BETA(5001),V1(5000),V2(5000),VS(5000) LSV00310 DOUBLE PRECISION LB(20),UB(20) LSV00320 DOUBLE PRECISION BTOL,GAPTOL,TTOL,MACHEP,EPSM,RELTOL LSV00330 DOUBLE PRECISION SCALE1,SCALE2,SCALE3,SCALE4,BISTOL,CONTOL,MULTOLLSV00340 DOUBLE PRECISION ONE,ZERO,TEMP,TKMAX,BETAM,BKMIN,T0,T1 LSV00350 REAL G(5000),EXPLAN(20) LSV00360 INTEGER MP(5000),NMEV(20) LSV00370 INTEGER SVSEED,RHSEED,SVSOLD LSV00380 INTEGER IABS LSV00390 REAL ABS LSV00400 DOUBLE PRECISION DABS, DSQRT, DFLOAT LSV00410 EXTERNAL SVMAT,STRAN LSV00420 C-----------------------------------------------------------------------LSV00430 DATA MACHEP/Z3410000000000000/ LSV00440 EPSM = 2.0D0*MACHEP LSV00450 C-----------------------------------------------------------------------LSV00460 C LSV00470 C ARRAYS MUST BE DIMENSIONED AS FOLLOWS: LSV00480 C 1. BETA: >= (KMAX+1) WHERE KMAX IS READ IN AND IS LSV00490 C THE SIZE OF THE LARGEST T-MATRIX THAT CAN BE CONSIDERED. LSV00500 C 2. V1: >= MAX(M,KMAX+1) LSV00510 C 3. V2: >= MAX(N,KMAX) LSV00520 C 4. VS: >= KMAX LSV00530 C 5. G: >= MAX(2*KMAX,M,N) LSV00540 C 6. MP: >= KMAX LSV00550 C 7. LB,UB: >= NUMBER OF SUBINTERVALS SUPPLIED TO BISEC. LSV00560 C 8. NMEV: >= NUMBER OF T-MATRICES ALLOWED. LSV00570 C 9. EXPLAN: DIMENSION IS 20. LSV00580 C LSV00590 C LSV00600 C IMPORTANT TOLERANCES OR SCALES THAT ARE USED REPEATEDLY LSV00610 C THROUGHOUT THIS PROGRAM ARE THE FOLLOWING: LSV00620 C SCALED MACHINE EPSILON: TTOL = TKMAX*EPSM WHERE LSV00630 C EPSM = 2*MACHINE EPSILON AND LSV00640 C TKMAX = MAX(BETA(J), J = 1,MEV) LSV00650 C BISEC CONVERGENCE TOLERANCE: BISTOL = DSQRT(1000+MEV)*TTOL LSV00660 C BISEC MULTIPLICITY TOLERANCE: MULTOL = (1000+MEV)*TTOL LSV00670 C LANCZOS CONVERGENCE TOLERANCE: CONTOL = BETA(MEV+1)*1.D-10 LSV00680 C-----------------------------------------------------------------------LSV00690 C OUTPUT HEADER LSV00700 WRITE(6,10) LSV00710 10 FORMAT(/' LANCZOS PROCEDURE FOR REAL, RECTANGULAR MATRICES'/) LSV00720 C LSV00730 C SET PROGRAM PARAMETERS LSV00740 C SCALEK ARE USED IN TOLERANCES NEEDED IN SUBROUTINES LUMP, LSV00750 C ISOEV AND PRTEST. USER MUST NOT MODIFY THESE SCALES. LSV00760 SCALE1 = 5.0D2 LSV00770 SCALE2 = 5.0D0 LSV00780 SCALE3 = 5.0D0 LSV00790 SCALE4 = 1.0D4 LSV00800 ONE = 1.0D0 LSV00810 ZERO = 0.0D0 LSV00820 BTOL = 1.0D-8 LSV00830 C BTOL = EPSM LSV00840 GAPTOL = 1.0D-8 LSV00850 ICONV = 0 LSV00860 MOLD = 0 LSV00870 MOLD1 = 1 LSV00880 ICT = 0 LSV00890 MMB = 0 LSV00900 IPROJ = 0 LSV00910 C LSV00920 C READ USER-SPECIFIED PARAMETERS FROM INPUT FILE 5 (FREE FORMAT) LSV00930 C LSV00940 C READ USER-PROVIDED HEADERS FOR RUN LSV00950 READ(5,20) EXPLAN LSV00960 WRITE(6,20) EXPLAN LSV00970 READ(5,20) EXPLAN LSV00980 WRITE(6,20) EXPLAN LSV00990 20 FORMAT(20A4) LSV01000 C LSV01010 C READ THE ROW ORDER M OF THE MATRIX AND THE COLUMN ORDER N. LSV01020 C READ THE MAXIMUM ORDER OF THE T-MATRICES ALLOWED (KMAX), LSV01030 C THE NUMBER OF T-MATRICES ALLOWED (NMEVS), AND A LSV01040 C MATRIX IDENTIFICATION NUMBER (MATNO). LSV01050 READ(5,20) EXPLAN LSV01060 READ(5,*) M,N,KMAX,NMEVS,MATNO LSV01070 NM = M + N LSV01080 C LSV01090 C READ SEEDS FOR LANCZS AND INVERR SUBROUTINES (SVSEED AND RHSEED) LSV01100 C READ MAXIMUM NUMBER OF ITERATIONS ALLOWED FOR EACH INVERSE LSV01110 C ITERATION (MXINIT) AND MAXIMUM NUMBER OF STURM SEQUENCES LSV01120 C ALLOWED (MXSTUR) LSV01130 READ(5,20) EXPLAN LSV01140 READ(5,*) SVSEED,RHSEED,MXINIT,MXSTUR LSV01150 C LSV01160 C ISTART = (0,1): ISTART = 0 MEANS BETA FILE IS NOT LSV01170 C AVAILABLE. ISTART = 1 MEANS BETA FILE IS AVAILABLE ON LSV01180 C FILE 2. LSV01190 C ISTOP = (0,1): ISTOP = 0 MEANS PROCEDURE GENERATES BETA LSV01200 C FILE AND THEN TERMINATES. ISTOP = 1 MEANS PROCEDURE GENERATES LSV01210 C BETAS IF NEEDED AND THEN COMPUTES SINGULAR VALUES AND LSV01220 C ERROR ESTIMATES AND THEN TERMINATES. LSV01230 READ(5,20) EXPLAN LSV01240 READ(5,*) ISTART,ISTOP LSV01250 C LSV01260 C IHIS = (0,1): IHIS = 0 MEANS BETA FILE IS NOT WRITTEN LSV01270 C TO FILE 1. IHIS = 1 MEANS BETA FILE IS WRITTEN TO FILE 1. LSV01280 C IDIST = (0,1): IDIST = 0 MEANS DISTINCT T-EIGENVALUES LSV01290 C ARE NOT WRITTEN TO FILE 11. IDIST = 1 MEANS DISTINCT LSV01300 C T-EIGENVALUES ARE WRITTEN TO FILE 11. LSV01310 C IWRITE = (0,1): IWRITE = 0 MEANS NO INTERMEDIATE OUTPUT LSV01320 C FROM THE COMPUTATIONS IS WRITTEN TO FILE 6. IWRITE = 1 MEANS LSV01330 C T-EIGENVALUES AND ERROR ESTIMATES ARE WRITTEN TO FILE 6 LSV01340 C AS THEY ARE COMPUTED. SPECIFY THE PARITY (IPAR) OF THE LSV01350 C LANCZOS STARTING VECTOR. IF M > N, THEN IPAR = 1, LSV01360 C IF M < N, THEN IPAR = 2. LSV01370 READ(5,20) EXPLAN LSV01380 READ(5,*) IHIS,IDIST,IWRITE,IPAR LSV01390 IF(M.GT.N) IPAR = 1 LSV01400 IF(M.LT.N) IPAR = 2 LSV01410 IPARO = IPAR LSV01420 C LSV01430 C READ IN THE RELATIVE TOLERANCE (RELTOL) FOR USE IN THE LSV01440 C SPURIOUS, T-MULTIPLICITY, AND PRTEST TESTS. LSV01450 READ(5,20) EXPLAN LSV01460 READ(5,*) RELTOL LSV01470 C LSV01480 C READ IN THE SIZES OF THE T-MATRICES TO BE CONSIDERED. LSV01490 C NOTE THAT ONLY EVEN ORDER T-SIZES ARE PERMISSIBLE. LSV01500 READ(5,20) EXPLAN LSV01510 READ(5,*) (NMEV(J), J=1,NMEVS) LSV01520 C LSV01530 C CHECK TO SEE THAT ALL T-SIZES PROVIDED ARE EVEN ORDERED. LSV01540 C TERMINATE IF THAT IS NOT THE CASE. LSV01550 DO 30 I = 1,NMEVS LSV01560 NMEV2 = NMEV(I)/2 LSV01570 IF(2*NMEV2.NE.NMEV(I)) GO TO 670 LSV01580 30 CONTINUE LSV01590 C LSV01600 C READ IN THE NUMBER OF SUBINTERVALS TO BE CONSIDERED. LSV01610 READ(5,20) EXPLAN LSV01620 READ(5,*) NINT LSV01630 C LSV01640 C READ IN THE LEFT-END POINTS OF THE SUBINTERVALS TO BE CONSIDERED. LSV01650 C THESE MUST BE IN ALGEBRAICALLY INCREASING ORDER LSV01660 READ(5,20) EXPLAN LSV01670 READ(5,*) (LB(J), J=1,NINT) LSV01680 C LSV01690 C READ IN THE RIGHT-END POINTS OF THE SUBINTERVALS TO BE CONSIDERED.LSV01700 C THESE MUST BE IN ALGEBRAICALLY INCREASING ORDER LSV01710 READ(5,20) EXPLAN LSV01720 READ(5,*) (UB(J), J=1,NINT) LSV01730 C LSV01740 C-----------------------------------------------------------------------LSV01750 C INITIALIZE THE ARRAYS FOR THE USER-SPECIFIED MATRIX LSV01760 C AND PASS THE STORAGE LOCATIONS OF THESE ARRAYS TO THE LSV01770 C MATRIX-VECTOR MULTIPLY SUBROUTINES SVMAT AND STRAN. LSV01780 C LSV01790 CALL USPEC(M,N,MATNO) LSV01800 C LSV01810 C-----------------------------------------------------------------------LSV01820 C MASK UNDERFLOW AND OVERFLOW LSV01830 C LSV01840 CALL MASK LSV01850 C LSV01860 C-----------------------------------------------------------------------LSV01870 C LSV01880 C WRITE TO FILE 6, A SUMMARY OF THE PARAMETERS FOR THIS RUN LSV01890 C LSV01900 WRITE(6,40) MATNO,M,N,KMAX LSV01910 40 FORMAT(/3X,'MATRIX ID',5X,'M',5X,'N',4X,'MAX ORDER OF T'/ LSV01920 1 I12,2I6,I18/) LSV01930 C LSV01940 WRITE(6,50) ISTART,ISTOP LSV01950 50 FORMAT(/2X,'ISTART',3X,'ISTOP'/2I8/) LSV01960 C LSV01970 WRITE(6,60) IHIS,IDIST,IWRITE,IPAR LSV01980 60 FORMAT(/4X,'IHIS',3X,'IDIST',2X,'IWRITE',4X,'IPAR'/4I8/) LSV01990 C LSV02000 WRITE(6,70) SVSEED,RHSEED LSV02010 70 FORMAT(/' SEEDS FOR RANDOM NUMBER GENERATOR'// LSV02020 1 4X,'LANCZS SEED',4X,'INVERR SEED'/2I15/) LSV02030 C LSV02040 WRITE(6,80) (NMEV(J), J=1,NMEVS) LSV02050 80 FORMAT(/' SIZES OF T-MATRICES TO BE CONSIDERED'/(6I12)) LSV02060 C LSV02070 WRITE(6,90) RELTOL,GAPTOL,BTOL LSV02080 90 FORMAT(/' RELATIVE TOLERANCE USED TO COMBINE COMPUTED T-EIGENVALUELSV02090 1S'/E15.3/' RELATIVE GAP TOLERANCES USED IN INVERSE ITERATION'/ LSV02100 1E15.3/' RELATIVE TOLERANCE FOR CHECK ON SIZE OF BETAS'/E15.3/) LSV02110 C LSV02120 WRITE(6,100) (J,LB(J),UB(J), J=1,NINT) LSV02130 100 FORMAT(/' BISEC WILL BE USED ON THE FOLLOWING INTERVALS'/ LSV02140 1 (I6,2E20.6)/) LSV02150 C LSV02160 IF (ISTART.EQ.0.AND.IPAR.EQ.1) WRITE(6,110) LSV02170 IF (ISTART.EQ.0.AND.IPAR.EQ.2) WRITE(6,120) LSV02180 110 FORMAT(/' STARTING VECTOR IS OF FORM (0,V2)'/) LSV02190 120 FORMAT(/' STARTING VECTOR IS OF FORM (V1,0)'/) LSV02200 C LSV02210 IF (ISTART.EQ.0) GO TO 170 LSV02220 C LSV02230 C READ IN BETA HISTORY FROM FILE 2 LSV02240 C LSV02250 READ(2,130)MOLD,MO,NO,IPARO,IPAR,SVSOLD,MATOLD LSV02260 130 FORMAT(3I6,2I3,I12,I8) LSV02270 C LSV02280 IF (KMAX.LT.MOLD) KMAX = MOLD LSV02290 KMAX1 = KMAX + 1 LSV02300 C LSV02310 C CHECK THAT M, N, MATRIX ID MATNO, AND RANDOM SEED SVSEED LSV02320 C AGREE WITH THOSE IN THE HISTORY FILE. IF NOT PROCEDURE STOPS. LSV02330 C LSV02340 ITEMP = (MO-M)**2+(NO-N)**2+(MATNO-MATOLD)**2+(SVSEED-SVSOLD)**2 LSV02350 C LSV02360 IF (ITEMP.EQ.0) GO TO 150 LSV02370 C LSV02380 WRITE(6,140) LSV02390 140 FORMAT(' PROGRAM TERMINATES'/ ' READ FROM FILE 2 CORRESPONDS TOLSV02400 1 DIFFERENT MATRIX THAN MATRIX SPECIFIED'/) LSV02410 GO TO 690 LSV02420 C LSV02430 150 CONTINUE LSV02440 MOLD1 = MOLD+1 LSV02450 C LSV02460 READ(2,160)(BETA(J), J=1,MOLD1) LSV02470 160 FORMAT(4Z20) LSV02480 C LSV02490 IF (KMAX.EQ.MOLD) GO TO 190 LSV02500 C LSV02510 READ(2,160)(V1(J), J=1,M) LSV02520 READ(2,160)(V2(J), J=1,N) LSV02530 C LSV02540 170 CONTINUE LSV02550 IIX = SVSEED LSV02560 C LSV02570 C-----------------------------------------------------------------------LSV02580 C LSV02590 CALL LANCZS(SVMAT,STRAN,BETA,V1,V2,G,KMAX,MOLD1,M,N,IPAR,IIX) LSV02600 C LSV02610 C-----------------------------------------------------------------------LSV02620 C LSV02630 KMAX1 = KMAX + 1 LSV02640 C LSV02650 IF (IHIS.EQ.0.AND.ISTOP.GT.0) GO TO 190 LSV02660 C LSV02670 WRITE(1,180) KMAX,M,N,IPARO,IPAR,SVSEED,MATNO LSV02680 180 FORMAT(3I6,2I3,I12,I8,' = KMAX,M,N,IPARO,IPAR,SVSEED,MATNO') LSV02690 C LSV02700 WRITE(1,160)(BETA(I), I=1,KMAX1) LSV02710 C LSV02720 WRITE(1,160)(V1(I), I=1,M) LSV02730 WRITE(1,160)(V2(I), I=1,N) LSV02740 C LSV02750 IF (ISTOP.EQ.0) GO TO 570 LSV02760 C LSV02770 190 CONTINUE LSV02780 BKMIN = BTOL LSV02790 WRITE(6,200) LSV02800 200 FORMAT(/' T-MATRICES (BETA) ARE NOW AVAILABLE'/) LSV02810 C LSV02820 C-----------------------------------------------------------------------LSV02830 C SUBROUTINE TNORM CHECKS MIN(BETA)/(ESTIMATED NORM(A)) > BTOL . LSV02840 C IF THIS IS VIOLATED IB IS SET EQUAL TO THE NEGATIVE OF THE INDEX LSV02850 C OF THE MINIMAL BETA. IF(IB < 0) THEN SUBROUTINE TNORM IS LSV02860 C CALLED FOR EACH VALUE OF MEV TO DETERMINE WHETHER OR NOT THERE LSV02870 C IS A BETA IN THE T-MATRIX SPECIFIED THAT VIOLATES THIS TEST. LSV02880 C IF THERE IS SUCH A BETA THE PROGRAM TERMINATES FOR THE USER LSV02890 C TO DECIDE WHAT TO DO. THIS TEST CAN BE OVER-RIDDEN BY LSV02900 C SIMPLY MAKING BTOL SMALLER, BUT THEN THERE IS THE POSSIBILITY LSV02910 C THAT LOSSES IN THE LOCAL ORTHOGONALITY MAY HURT THE COMPUTATIONS. LSV02920 C BTOL = 1.D-8 IS HOWEVER A CONSERVATIVE CHOICE FOR BTOL. LSV02930 C LSV02940 C TNORM ALSO COMPUTES TKMAX = MAX(BETA(K), K=1,KMAX). LSV02950 C TKMAX IS USED TO SCALE THE TOLERANCES USED IN THE LSV02960 C T-MULTIPLICITY AND SPURIOUS TESTS IN BISEC. TKMAX IS ALSO USED IN LSV02970 C THE PROJECTION TEST FOR HIDDEN T-EIGENVALUES THAT HAD 'TOO SMALL' LSV02980 C A PROJECTION ON THE STARTING VECTOR. LSV02990 C LSV03000 CALL TNORM(BETA,BKMIN,TKMAX,KMAX,IB) LSV03010 C LSV03020 C-----------------------------------------------------------------------LSV03030 C LSV03040 TTOL = EPSM*TKMAX LSV03050 C LSV03060 C LOOP ON THE SIZE OF THE T-MATRIX LSV03070 C LSV03080 210 CONTINUE LSV03090 MMB = MMB + 1 LSV03100 C NOTE THAT ONLY EVEN ORDER T-SIZES ARE PERMISSIBLE. LSV03110 MEV = NMEV(MMB) LSV03120 C IS MEV TOO LARGE ? LSV03130 IF(MEV.LE.KMAX) GO TO 230 LSV03140 WRITE(6,220) MMB, MEV, KMAX LSV03150 220 FORMAT(/' TERMINATE PRIOR TO CONSIDERING THE',I6,'TH T-MATRIX'/ LSV03160 1' BECAUSE THE SIZE REQUESTED',I6,' IS GREATER THAN THE MAXIMUM SIZLSV03170 1E ALLOWED',I6/) LSV03180 GO TO 570 LSV03190 C LSV03200 230 MP1 = MEV + 1 LSV03210 BETAM = BETA(MP1) LSV03220 C LSV03230 IF (IB.GE.0) GO TO 240 LSV03240 C LSV03250 T0 = BTOL LSV03260 C LSV03270 C-----------------------------------------------------------------------LSV03280 C LSV03290 CALL TNORM(BETA,T0,T1,MEV,IBMEV) LSV03300 C LSV03310 C-----------------------------------------------------------------------LSV03320 C LSV03330 TEMP = T0/TKMAX LSV03340 IBMEV = IABS(IBMEV) LSV03350 IF (TEMP.GE.BTOL) GO TO 240 LSV03360 IBMEV = -IBMEV LSV03370 GO TO 630 LSV03380 C LSV03390 240 CONTINUE LSV03400 IC = MXSTUR-ICT LSV03410 C LSV03420 C-----------------------------------------------------------------------LSV03430 C BISEC LOOP. THE SUBROUTINE BISEC INCORPORATES DIRECTLY THE LSV03440 C T-MULTIPLICITY AND SPURIOUS TESTS. T-EIGENVALUES WILL BE LSV03450 C CALCULATED BY BISEC SEQUENTIALLY ON INTERVALS LSV03460 C (LB(J),UB(J)), J = 1,NINT). LSV03470 C LSV03480 C ON RETURN FROM BISEC LSV03490 C NDIS = NUMBER OF DISTINCT EIGENVALUES OF T(1,MEV) ON UNION LSV03500 C OF THE (LB,UB) INTERVALS LSV03510 C VS = DISTINCT T-EIGENVALUES IN ALGEBRAICALLY INCREASING ORDER LSV03520 C MP = T-MULTIPLICITIES OF THE T-EIGENVALUES STORED IN VS LSV03530 C MP(I) = (0,1,MI), MI>1, I=1,NDIS MEANS: LSV03540 C (0) VS(I) IS SPURIOUS LSV03550 C (1) VS(I) IS T-SIMPLE AND GOOD LSV03560 C (MI) VS(I) IS T-MULTIPLE AND IS THEREFORE NOT ONLY GOOD BUT LSV03570 C ALSO A CONVERGED GOOD T-EIGENVALUE. LSV03580 C LSV03590 C LSV03600 CALL BISEC(BETA,V1,V2,VS,LB,UB,EPSM,TTOL,MP,NINT, LSV03610 1 MEV,NDIS,IC,IWRITE) LSV03620 C LSV03630 C-----------------------------------------------------------------------LSV03640 C LSV03650 IF (NDIS.EQ.0) GO TO 650 LSV03660 C LSV03670 C COMPUTE THE TOTAL NUMBER OF STURM SEQUENCES USED TO DATE LSV03680 C COMPUTE THE BISEC CONVERGENCE AND T-MULTIPLICITY TOLERANCES USED. LSV03690 C COMPUTE THE CONVERGENCE TOLERANCE FOR T-EIGENVALUES. LSV03700 ICT = ICT + IC LSV03710 TEMP = DFLOAT(MEV+1000) LSV03720 MULTOL = TEMP*TTOL LSV03730 TEMP = DSQRT(TEMP) LSV03740 BISTOL = TTOL*TEMP LSV03750 CONTOL = BETAM*1.D-10 LSV03760 C LSV03770 C-----------------------------------------------------------------------LSV03780 C SUBROUTINE LUMP 'COMBINES' T-EIGENVALUES THAT ARE 'TOO CLOSE'. LSV03790 C NOTE HOWEVER THAT CLOSE SPURIOUS T-EIGENVALUES ARE NOT AVERAGED LSV03800 C WITH GOOD ONES. HOWEVER, THEY MAY BE USED TO INCREASE THE LSV03810 C T-MULTIPLICITY OF A GOOD T-EIGENVALUE. LSV03820 C LSV03830 LOOP = NDIS LSV03840 CALL LUMP(VS,RELTOL,MULTOL,SCALE2,MP,LOOP) LSV03850 C LSV03860 C-----------------------------------------------------------------------LSV03870 C LSV03880 IF(NDIS.EQ.LOOP) GO TO 260 LSV03890 C LSV03900 WRITE(6,250) NDIS, MEV, LOOP LSV03910 250 FORMAT(/I6,' DISTINCT T-EIGENVALUES WERE COMPUTED IN BISEC AT MEV LSV03920 1=',I6/ 2X,' LUMP SUBROUTINE REDUCES NUMBER OF DISTINCT T-EIGENVALULSV03930 1ES TO',I6) LSV03940 C LSV03950 260 CONTINUE LSV03960 NDIS = LOOP LSV03970 BETA(MP1) = BETAM LSV03980 C LSV03990 C-----------------------------------------------------------------------LSV04000 C THE SUBROUTINE ISOEV LABELS THOSE SIMPLE T-EIGENVALUES OF T(1,MEV)LSV04010 C WITH VERY SMALL GAPS BETWEEN NEIGHBORING T-EIGENVALUES OF T(1,MEV)LSV04020 C TO AVOID COMPUTING ERROR ESTIMATES FOR ANY SIMPLE GOOD LSV04030 C T-EIGENVALUE THAT IS TOO CLOSE TO A SPURIOUS T-EIGENVALUE. LSV04040 C ON RETURN FROM ISOEV, G CONTAINS CODED MINIMAL GAPS LSV04050 C BETWEEN THE DISTINCT EIGENVALUES OF T(1,MEV). (G IS REAL). LSV04060 C G(I) < 0 MEANS MINGAP IS DUE TO LEFT GAP G(I) > 0 MEANS DUE TO LSV04070 C RIGHT GAP. MP(I) = -1 MEANS THAT THE GOOD T-EIGENVALUE IS SIMPLE LSV04080 C AND HAS A VERY SMALL MINGAP IN T(1,MEV) DUE TO A SPURIOUS LSV04090 C T-EIGENVALUE. LSV04100 C NG = NUMBER OF GOOD T-EIGENVALUES. LSV04110 C NISO = NUMBER OF ISOLATED, GOOD T-EIGENVALUES. LSV04120 C LSV04130 CALL ISOEV(VS,GAPTOL,MULTOL,SCALE1,G,MP,NDIS,NG,NISO) LSV04140 C LSV04150 C-----------------------------------------------------------------------LSV04160 C LSV04170 WRITE(6,270)NG,NISO,NDIS LSV04180 270 FORMAT(/I6,' SINGULAR VALUES HAVE BEEN COMPUTED'/ LSV04190 1 I6,' OF THESE ARE ISOLATED'/ LSV04200 2 I6,' = NUMBER OF DISTINCT T-EIGENVALUES COMPUTED'/) LSV04210 C LSV04220 C DO WE WRITE DISTINCT T-EIGENVALUES TO FILE 11? LSV04230 IF (IDIST.EQ.0) GO TO 310 LSV04240 C LSV04250 WRITE(11,280) NDIS,NISO,MEV,M,N,SVSEED,MATNO LSV04260 280 FORMAT(5I5,I12,I8,' = NDIS,NISO,MEV,M,N,SVSEED,MATNO'/) LSV04270 C LSV04280 WRITE(11,290) (MP(I),VS(I),G(I), I=1,NDIS) LSV04290 290 FORMAT(2(I3,E25.16,E12.3)) LSV04300 C LSV04310 WRITE(11,300) NDIS, (MP(I), I=1,NDIS) LSV04320 300 FORMAT(/I6,' = NDIS, T-MULTIPLICITIES (0 MEANS SPURIOUS)'/(20I4))LSV04330 C LSV04340 310 CONTINUE LSV04350 C LSV04360 IF (NISO.NE.0) GO TO 340 LSV04370 C LSV04380 WRITE(4,320) MEV LSV04390 320 FORMAT(/' AT MEV = ',I6,' THERE ARE NO ISOLATED T-EIGENVALUES'/ LSV04400 1' SO NO ERROR ESTIMATES WERE COMPUTED/') LSV04410 C LSV04420 WRITE(6,330) LSV04430 330 FORMAT(/' ALL COMPUTED SINGULAR VALUES ARE T-MULTIPLE'/ LSV04440 1 ' THEREFORE ALL COMPUTED SINGULAR VALUES ARE ASSUMED TO HAVE CONVLSV04450 1ERGED'/) LSV04460 C LSV04470 ICONV = 1 LSV04480 GO TO 380 LSV04490 C LSV04500 340 CONTINUE LSV04510 C LSV04520 C-----------------------------------------------------------------------LSV04530 C SUBROUTINE INVERR COMPUTES ERROR ESTIMATES FOR ISOLATED GOOD LSV04540 C T-EIGENVALUES USING INVERSE ITERATION ON T(1,MEV). ON RETURN LSV04550 C G(J) = MINIMUM GAP IN T(1,MEV) FOR EACH VS(J), J=1,NDIS LSV04560 C G(MEV+I) = BETAM*|U(MEV)| = ERROR ESTIMATE FOR ISOLATED GOOD LSV04570 C T-EIGENVALUES, WHERE I = 1, NISO AND BETAM = BETA(MEV+1)LSV04580 C U(MEV) IS MEVTH COMPONENT OF THE UNIT EIGENVECTOR OF T LSV04590 C CORRESPONDING TO THE ITH ISOLATED GOOD T-EIGENVALUE. LSV04600 C A NEGATIVE ERROR ESTIMATE MEANS THAT FOR THAT PARTICULAR LSV04610 C T-EIGENVALUE THE INVERSE ITERATION DID NOT CONVERGE IN <= MXINIT LSV04620 C STEPS AND THAT THE CORRESPONDING ERROR ESTIMATE IS QUESTIONABLE. LSV04630 C LSV04640 C V2 CONTAINS THE ISOLATED GOOD T-EIGENVALUES LSV04650 C V1 CONTAINS THE MINGAPS TO THE NEAREST DISTINCT EIGENVALUE LSV04660 C OF T(1,MEV) FOR EACH ISOLATED GOOD T-EIGENVALUE IN V2. LSV04670 C VS CONTAINS THE NDIS DISTINCT EIGENVALUES OF T(1,MEV) LSV04680 C MP CONTAINS THE CORRESPONDING CODED T-MULTIPLICITIES LSV04690 C LSV04700 IT = MXINIT LSV04710 CALL INVERR(BETA,V1,V2,VS,EPSM,G,MP,MEV,MMB,NDIS,NISO,NM, LSV04720 1 RHSEED,IT,IWRITE) LSV04730 C LSV04740 C-----------------------------------------------------------------------LSV04750 C LSV04760 C SIMPLE CHECK FOR CONVERGENCE. CHECKS TO SEE IF ALL OF THE ERROR LSV04770 C ESTIMATES ARE SMALLER THAN CONTOL. LSV04780 C IF THIS TEST IS SATISFIED, THEN CONVERGENCE FLAG, ICONV IS SET LSV04790 C TO 1. TYPICALLY ERROR ESTIMATES ARE VERY CONSERVATIVE. LSV04800 C LSV04810 WRITE(6,350) CONTOL LSV04820 350 FORMAT(/' CONVERGENCE IS TESTED USING THE CONVERGENCE TOLERANCE', LSV04830 1E13.4/) LSV04840 C LSV04850 II = MEV +1 LSV04860 IF = MEV+NISO LSV04870 DO 360 I = II,IF LSV04880 IF (ABS(G(I)).GT.CONTOL) GO TO 380 LSV04890 360 CONTINUE LSV04900 ICONV = 1 LSV04910 MMB = NMEVS LSV04920 C LSV04930 WRITE(6,370) CONTOL LSV04940 370 FORMAT(' ALL COMPUTED ERROR ESTIMATES WERE LESS THAN',E15.4/ LSV04950 1 ' THEREFORE PROCEDURE TERMINATES'/) LSV04960 C LSV04970 380 CONTINUE LSV04980 C LSV04990 C IF CONVERGENCE IS INDICATED, THAT IS ICONV = 1 ,THEN LSV05000 C THE SUBROUTINE PRTEST IS CALLED TO CHECK FOR ANY CONVERGED LSV05010 C T-EIGENVALUES THAT HAVE BEEN MISLABELLED AS SPURIOUS BECAUSE LSV05020 C THE PROJECTION OF THEIR SINGULAR VECTOR ON THE STARTING LSV05030 C VECTOR WAS TOO SMALL. NUMERICAL TESTS INDICATE THAT LSV05040 C SUCH SINGULAR VALUES ARE RARE. THEREFORE, IF MANY OF LSV05050 C THESE HIDDEN SINGULAR VALUES APPEAR ON SOME RUN, THE USER LSV05060 C CAN BE CERTAIN THAT SOMETHING IS FOULED UP. LSV05070 C LSV05080 IF (ICONV.EQ.0) GO TO 510 LSV05090 C LSV05100 C-----------------------------------------------------------------------LSV05110 C LSV05120 CALL PRTEST (BETA,VS,TKMAX,EPSM,RELTOL,SCALE3,SCALE4, LSV05130 1 MP,NDIS,MEV,IPROJ) LSV05140 C LSV05150 C-----------------------------------------------------------------------LSV05160 C LSV05170 IF(IPROJ.EQ.0) GO TO 500 LSV05180 C LSV05190 IF(IDIST.EQ.1) WRITE(11,390) IPROJ LSV05200 390 FORMAT(' SUBROUTINE PRTEST WANTS TO RELABEL',I6,' SPURIOUS T-EIGENLSV05210 1VALUES'/' WE ACCEPT RELABELLING ONLY IF LAST COMPONENT OF T-EIGENVLSV05220 1ECTOR IS L.T. 1.D-10'/) LSV05230 C LSV05240 IIX = RHSEED LSV05250 C LSV05260 C-----------------------------------------------------------------------LSV05270 C LSV05280 CALL GENRAN(IIX,G,MEV) LSV05290 C LSV05300 C-----------------------------------------------------------------------LSV05310 C LSV05320 ITEN = -10 LSV05330 NISOM = NISO + MEV LSV05340 IWRITO = IWRITE LSV05350 IWRITE = 0 LSV05360 C LSV05370 DO 420 J = 1,NDIS LSV05380 IF(MP(J).NE.ITEN) GO TO 420 LSV05390 T0 = VS(J) LSV05400 C LSV05410 C-----------------------------------------------------------------------LSV05420 C LSV05430 IT = MXINIT LSV05440 CALL INVERM(BETA,V1,V2,T0,TEMP,T1,EPSM,G,MEV,IT,IWRITE) LSV05450 C LSV05460 C-----------------------------------------------------------------------LSV05470 C LSV05480 IF(TEMP.LE.1.D-10) GO TO 410 LSV05490 C ERROR ESTIMATE WAS NOT SMALL REJECT RELABELLING OF THIS LSV05500 C T-EIGENVALUE. LSV05510 IF(IDIST.EQ.1) WRITE(11,400) J,T0,TEMP LSV05520 400 FORMAT(/' LAST COMPONENT FOR',I6,'TH T-EIGENVALUE',E20.12/' IS TOOLSV05530 1 LARGE = ',E15.6,' SO DO NOT ACCEPT PRTEST RELABELLING'/) LSV05540 MP(J) = 0 LSV05550 IPROJ = IPROJ - 1 LSV05560 GO TO 420 LSV05570 C RELABELLING ACCEPTED LSV05580 410 NISOM = NISOM + 1 LSV05590 G(NISOM) = BETAM*TEMP LSV05600 420 CONTINUE LSV05610 IWRITE = IWRITO LSV05620 C LSV05630 IF(IPROJ.EQ.0) GO TO 460 LSV05640 WRITE(6,430) IPROJ LSV05650 430 FORMAT(/I6,' T-EIGENVALUES WERE RECLASSIFIED AS GOOD.'/ LSV05660 1' THESE ARE IDENTIFIED IN FILE 3 BY A T-MULTIPLICITY OF -10'/' USELSV05670 2R SHOULD INSPECT EACH TO MAKE SURE NEIGHBORS HAVE CONVERGED'/) LSV05680 C LSV05690 IF(IDIST.EQ.1) WRITE(11,440) IPROJ LSV05700 440 FORMAT(/I6,' T-EIGENVALUES WERE RELABELLED AS GOOD'/ LSV05710 1' BELOW IS CORRECTED T-MULTIPLICITY PATTERN'/) LSV05720 C LSV05730 WRITE(6,450) NDIS, (MP(I), I=1,NDIS) LSV05740 IF(IDIST.EQ.1) WRITE(11,450) NDIS, (MP(I), I=1,NDIS) LSV05750 450 FORMAT(/I6,' = NDIS, T-MULTIPLICITIES (0 MEANS SPURIOUS)'/ LSV05760 1 6X, ' (-10) MEANS SPURIOUS T-EIGENVALUE RELABELLED AS GOOD'/(20I4LSV05770 1)) LSV05780 C LSV05790 C RECALCULATE MINGAPS FOR DISTINCT T(1,MEV) EIGENVALUES. LSV05800 460 NDIS1 = NDIS - 1 LSV05810 G(NDIS) = VS(NDIS1)-VS(NDIS) LSV05820 G(1) = VS(2)-VS(1) LSV05830 C LSV05840 DO 470 J = 2,NDIS1 LSV05850 T0 = VS(J)-VS(J-1) LSV05860 T1 = VS(J+1)-VS(J) LSV05870 G(J) = T1 LSV05880 IF (T0.LT.T1) G(J) = -T0 LSV05890 470 CONTINUE LSV05900 IF(IPROJ.EQ.0) GO TO 500 LSV05910 C WRITE TO FILE 4 ERROR ESTIMATES FOR THOSE T-EIGENVALUES RELABELLEDLSV05920 NGOOD = 0 LSV05930 DO 480 J = 1,NDIS LSV05940 IF(MP(J).EQ.0) GO TO 480 LSV05950 NGOOD = NGOOD + 1 LSV05960 IF(MP(J).NE.ITEN) GO TO 480 LSV05970 T0 = VS(J) LSV05980 NISO = NISO + 1 LSV05990 NISOM = MEV + NISO LSV06000 WRITE(4,490) NGOOD,T0,G(NISOM),G(J) LSV06010 480 CONTINUE LSV06020 490 FORMAT(I10,E25.16,2E14.3) LSV06030 C LSV06040 500 CONTINUE LSV06050 C LSV06060 C WRITE THE COMPUTED SINGULAR VALUES TO FILE 3. FIRST TRANSFER THEMLSV06070 C TO V2 AND THEIR T-MULTIPLICITIES TO THE CORRESPONDING POSITIONS LSV06080 C IN MP AND COMPUTE THE B-MINGAPS, THE MINIMAL GAPS BETWEEN THE LSV06090 C SINGULAR VALUES CONSIDERED AS EIGENVALUES OF THE B-MATRIX. LSV06100 C THESE GAPS WILL BE PUT IN THE ARRAY G. LSV06110 C SINCE G CURRENTLY CONTAINS THE MINIMAL GAPS BETWEEN THE DISTINCT LSV06120 C EIGENVALUES OF THE T-MATRIX, THESE GAPS WILL FIRST BE LSV06130 C TRANSFERRED TO V1. NOTE THAT V1<0 MEANS THAT THAT MINIMAL GAP LSV06140 C IN THE T-MATRIX IS DUE TO A SPURIOUS T-EIGENVALUE. LSV06150 C ALL THIS INFORMATION IS PRINTED TO FILE 3 LSV06160 C LSV06170 510 CONTINUE LSV06180 C LSV06190 NG = 0 LSV06200 DO 520 I = 1,NDIS LSV06210 IF (MP(I).EQ.0) GO TO 520 LSV06220 NG = NG+1 LSV06230 MP(NG) = MP(I) LSV06240 V2(NG) = VS(I) LSV06250 TEMP = G(I) LSV06260 TEMP = DABS(TEMP) LSV06270 J = I+1 LSV06280 IF (G(I).LT.ZERO) J = I-1 LSV06290 IF (MP(J).EQ.0) TEMP = -TEMP LSV06300 V1(NG) = TEMP LSV06310 520 CONTINUE LSV06320 C LSV06330 WRITE(6,530)MEV LSV06340 530 FORMAT(//' SINGULAR VALUE CALCULATION AT MEV = ',I6,' IS COMPLELSV06350 1TE'//) LSV06360 C LSV06370 C NG = NUMBER OF COMPUTED DISTINCT GOOD T-EIGENVALUES. NEXT LSV06380 C GENERATE GAPS BETWEEN GOOD T-EIGENVALUES (BMINGAPS) AND PUT THEM LSV06390 C IN G. G(J) < 0 MEANS THE BMINGAP IS DUE TO THE LEFT-HAND GAP. LSV06400 C LSV06410 NGM1 = NG - 1 LSV06420 G(NG) = V2(NGM1)-V2(NG) LSV06430 G(1) = V2(2)-V2(1) LSV06440 C LSV06450 DO 540 J = 2,NGM1 LSV06460 T0 = V2(J)-V2(J-1) LSV06470 T1 = V2(J+1)-V2(J) LSV06480 G(J) = T1 LSV06490 IF (T0.LT.T1) G(J) = -T0 LSV06500 540 CONTINUE LSV06510 C LSV06520 C WRITE GOOD T-EIGENVALUES (COMPUTED SINGULAR VALUES) OUT TO FILE 3.LSV06530 C LSV06540 WRITE(3,550)NG,NDIS,MEV,M,N,SVSEED,MATNO,IPARO,MULTOL,IB,BTOL LSV06550 550 FORMAT(5I6,I12,I8,I2,'=NG,ND,MEV,M,N,SEED,MN,IPARO'/ LSV06560 1 E20.12,I6,E13.4,' = MUTOL,INDEX MINIMAL BETA,BTOL'/ LSV06570 1' SV NO',2X,'T-MULT',10X,'SINGULAR VALUE',7X,'BMINGAP',7X,'TMINGAPLSV06580 1') LSV06590 C LSV06600 WRITE(3,560)(I,MP(I),V2(I),G(I),V1(I), I=1,NG) LSV06610 560 FORMAT(I6,I8,E25.16,2E14.3) LSV06620 C LSV06630 C IF CONVERGENCE FLAG ICONV.NE.1 AND NUMBER OF T-MATRICES LSV06640 C CONSIDERED TO DATE IS LESS THAN NUMBER ALLOWED, INCREMENT MEV. LSV06650 C AND LOOP BACK TO 210 TO REPEAT COMPUTATIONS. RESTORE BETA(MEV+1).LSV06660 C LSV06670 BETA(MP1) = BETAM LSV06680 C LSV06690 IF (MMB.LT.NMEVS.AND.ICONV.NE.1) GO TO 210 LSV06700 C LSV06710 C END OF LOOP ON DIFFERENT SIZE T-MATRICES ALLOWED. LSV06720 C LSV06730 570 CONTINUE LSV06740 C LSV06750 IF(ISTOP.EQ.0) WRITE(6,580) LSV06760 580 FORMAT(/' T-MATRICES (BETA) ARE NOW AVAILABLE, TERMINATE'/) LSV06770 IF (IHIS.EQ.1.AND.KMAX.NE.MOLD) WRITE(1,590) LSV06780 590 FORMAT(/' ABOVE ARE THE FOLLOWING VECTORS '/ LSV06790 2 ' BETA(I), I = 1,KMAX+1'/ LSV06800 3 ' FINAL TWO LANCZOS VECTORS OF ORDERS M,N FOR I = KMAX,KMAX+1'/ LSV06810 4 ' ALL VECTORS IN THIS FILE HAVE FORMAT 4Z20'/ LSV06820 5 ' ----- END OF FILE 1 NEW BETA HISTORY---------------'///) LSV06830 C LSV06840 IF (ISTOP.EQ.0) GO TO 690 LSV06850 C LSV06860 WRITE(3,600) LSV06870 600 FORMAT(/' ABOVE ARE COMPUTED SINGULAR VALUES'/ LSV06880 1 ' NG = NUMBER OF SINGULAR VALUES COMPUTED'/ LSV06890 2 ' NDIS = NUMBER OF COMPUTED DISTINCT EIGENVALUES OF T(1,MEV)'/ LSV06900 3 ' M = ROW ORDER OF A N = COLUMN ORDER, MATNO = MATRIX IDENT'/ LSV06910 4 ' MULTOL = T-MULTIPLICITY TOLERANCE FOR T-EIGENVALUES IN BISEC'/ LSV06920 4 ' T-MULT IS THE T-MULTIPLICITY OF SINGULAR VALUE'/ LSV06930 5 ' T-MULT = -1 MEANS SPURIOUS T-EIGENVALUE TOO CLOSE'/ LSV06940 6 ' DO NOT COMPUTE ERROR ESTIMATES FOR SUCH T-EIGENVALUES'/ LSV06950 7 ' BMINGAP = MINIMAL GAP BETWEEN THE COMPUTED SINGULAR VALUES'/ LSV06960 8 ' BMINGAP .LT. 0. MEANS MINIMAL GAP IS DUE TO LEFT-HAND GAP'/ LSV06970 9 ' TMINGAP= MINIMAL GAP W.R.T. DISTINCT EIGENVALUES IN T(1,MEV)'/LSV06980 1 ' TMINGAP .LT. 0. MEANS MINGAP IS DUE TO SPURIOUS T-EIGENVALUE'/ LSV06990 2 ' ----- END OF FILE 3 SINGULAR VALUES------------------------'//)LSV07000 C LSV07010 IF (IDIST.EQ.1) WRITE(11,610) LSV07020 610 FORMAT(/' ABOVE ARE THE DISTINCT EIGENVALUES OF T(1,MEV).'/ LSV07030 2 ' THE FORMAT IS T-MULTIPLICITY T-EIGENVALUE TMINGAP'/ LSV07040 3 ' THIS FORMAT IS REPEATED TWICE ON EACH LINE.'/ LSV07050 4 ' T-MULTIPLICITY = -1 MEANS THAT THE SUBROUTINE ISOEV HAS TAGGED'LSV07060 5 /' THIS COMPUTED SINGULAR VALUE AS HAVING A VERY CLOSE SPURIOUSLSV07070 6 '/' T-EIGENVALUE SO THAT NO ERROR ESTIMATE WILL BE COMPUTED'/ LSV07080 7 ' FOR THAT SINGULAR VALUE IN SUBROUTINE INVERR.'/ LSV07090 8 ' TMINGAP .LT. 0, TMINGAP IS DUE TO LEFT GAP .GT. 0, RIGHT GAP.'/LSV07100 9 ' EACH OF THE DISTINCT T-EIGENVALUE TABLES IS FOLLOWED'/ LSV07110 9 ' BY THE T-MULTIPLICITY PATTERN.'/ LSV07120 1 ' NDIS = NUMBER OF COMPUTED DISTINCT EIGENVALUES OF T(1,MEV).'/ LSV07130 2 ' NG = NUMBER OF COMPUTED SINGULAR VALUES. '/ LSV07140 3 ' NISO = NUMBER OF ISOLATED (IN T-MATRIX) SINGULAR VALUES. '/ LSV07150 4 ' NISO ALSO IS THE COUNT OF +1 ENTRIES IN T-MULTIPLICITY PATTERN.LSV07160 5 '/' ----- END OF FILE 11 DISTINCT T-EIGENVALUES--------------'//)LSV07170 C LSV07180 IF(NISO.NE.0) WRITE(4,620) LSV07190 620 FORMAT(/' ABOVE ARE THE ERROR ESTIMATES OBTAINED FOR THE ISOLATED LSV07200 1GOOD T-EIGENVALUES'/ LSV07210 1' OBTAINED VIA INVERSE ITERATION IN THE SUBROUTINE INVERR.'/ LSV07220 1' ALL OTHER GOOD T-EIGENVALUES HAVE CONVERGED.'/ LSV07230 2' ERROR ESTIMATE = BETAM*ABS(UM)'/ LSV07240 2' WHERE BETAM = BETA(MEV+1) AND UM = U(MEV).'/ LSV07250 3' U = UNIT EIGENVECTOR OF T WHERE T*U = SV*U AND SV = ISOLATED GOOLSV07260 3D T-EIGENVALUE.'/ LSV07270 4' TMINGAP = GAP TO NEAREST DISTINCT EIGENVALUE OF T(1,MEV).'/ LSV07280 5' TMINGAP .LT. 0. MEANS MINGAP IS DUE TO A SPURIOUS T-EIGENVALUE.'LSV07290 6/' ------ END OF FILE 4 ERRINV -------------------------------'//)LSV07300 GO TO 690 LSV07310 C LSV07320 630 CONTINUE LSV07330 C LSV07340 IBB = IABS(IBMEV) LSV07350 IF (IBMEV.LT.0) WRITE(6,640) MEV,IBB,BETA(IBB) LSV07360 640 FORMAT(/' PROGRAM TERMINATES BECAUSE MEV REQUESTED = ',I6,' IS .GTLSV07370 1',I6/' AT WHICH AN ABNORMALLY SMALL BETA = ' , E13.4,' OCCURRED'/)LSV07380 GO TO 690 LSV07390 C LSV07400 650 IF (NDIS.EQ.0.AND.ISTOP.GT.0) WRITE(6,660) LSV07410 660 FORMAT(/' INTERVALS SPECIFIED FOR BISECT DID NOT CONTAIN ANY T-EIGLSV07420 1ENVALUES'/' PROGRAM TERMINATES') LSV07430 GO TO 690 LSV07440 C LSV07450 670 WRITE(6,680) I, NMEV(I) LSV07460 680 FORMAT(//I6,'TH T-SIZE REQUESTED ',I6,' IS ODD'/ LSV07470 1' BUT ONLY EVEN T-SIZES ARE PERMISSIBLE. PROGRAM TERMINATES FOR ULSV07480 1SER TO FIX'//) LSV07490 GO TO 690 LSV07500 C LSV07510 690 CONTINUE LSV07520 C LSV07530 STOP LSV07540 C-----END OF MAIN PROGRAM FOR LANCZOS SINGULAR VALUE COMPUTATIONS-------LSV07550 END LSV07560 .