C C .................................................................. C C SUBROUTINE DTEAS C C PURPOSE C CALCULATE THE LIMIT OF A GIVEN SEQUENCE BY MEANS OF THE C EPSILON-ALGORITHM. C C USAGE C CALL DTEAS(X,N,FIN,EPS,IER) C C DESCRIPTION OF PARAMETERS C X - DOUBLE PRECISION VECTOR WHOSE COMPONENTS ARE TERMS C OF THE GIVEN SEQUENCE. ON RETURN THE COMPONENTS OF C VECTOR X ARE DESTROYED. C N - DIMENSION OF INPUT VECTOR X. C FIN - RESULTANT SCALAR IN DOUBLE PRECISION CONTAINING ON C RETURN THE LIMIT OF THE GIVEN SEQUENCE. C EPS - SINGLE PRECISION INPUT VALUE, WHICH SPECIFIES THE C UPPER BOUND OF THE RELATIVE (ABSOLUTE) ERROR IF THE C COMPONENTS OF X ARE ABSOLUTELY GREATER (LESS) THAN C ONE. C CALCULATION IS TERMINATED AS SOON AS THREE TIMES IN C SUCCESSION THE RELATIVE (ABSOLUTE) DIFFERENCE C BETWEEN NEIGHBOURING TERMS IS NOT GREATER THAN EPS. C IER - RESULTANT ERROR PARAMETER CODED IN THE FOLLOWING C FORM C IER=0 - NO ERROR C IER=1 - REQUIRED ACCURACY NOT REACHED WITH C MAXIMAL NUMBER OF ITERATIONS C IER=-1 - INTEGER N IS LESS THAN TEN. C C REMARKS C NO ACTION BESIDES ERROR MESSAGE IN CASE N LESS THAN TEN. C THE CHARACTER OF THE GIVEN INFINITE SEQUENCE MUST BE C RECOGNIZABLE BY THOSE N COMPONENTS OF THE INPUT VECTOR X. C C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED C NONE C C METHOD C THE CONVERGENCE OF THE GIVEN SEQUENCE IS ACCELERATED BY C MEANS OF THE E(2)-TRANSFORMATION, USED IN AN ITERATIVE WAY. C FOR REFERENCE, SEE C ALGORITHM 215,SHANKS, CACM 1963, NO. 11, PP. 662. AND C P. WYNN, SINGULAR RULES FOR CERTAIN NON-LINEAR ALGORITHMS C BIT VOL. 3, 1963, PP. 175-195. C C .................................................................. C SUBROUTINE DTEAS(X,N,FIN,EPS,IER) C DIMENSION X(1) DOUBLE PRECISION X,FIN,W1,W2,W3,W4,W5,W6,W7,T C C TEST ON WRONG INPUT PARAMETER N C NEW=N IF(NEW-10)1,2,2 1 IER=-1 RETURN C C CALCULATE INITIAL VALUES FOR THE EPSILON ARRAY C 2 ISW1=0 ISW2=0 W1=1.D38 W7=X(4)-X(3) IF(W7)3,4,3 3 W1=1.D0/W7 C 4 W5=1.D38 W7=X(2)-X(1) IF(W7)5,6,5 5 W5=1.D0/W7 C 6 W4=X(3)-X(2) IF(W4)9,7,9 7 W4=1.D38 T=X(2) W2=X(3) 8 W3=1.D38 GO TO 17 C 9 W4=1.D0/W4 C T=1.D38 W7=W4-W5 IF(W7)10,11,10 10 T=X(2)+1.D0/W7 C 11 W2=W1-W4 IF(W2)15,12,15 12 W2=1.D38 IF(T-1.D38)13,14,14 13 ISW2=1 14 W3=W4 GO TO 17 C 15 W2=X(3)+1.D0/W2 W7=W2-T IF(W7)16,8,16 16 W3=W4+1.D0/W7 C 17 ISW1=ISW2 ISW2=0 IMIN=4 C C CALCULATE DIAGONALS OF THE EPSILON ARRAY IN A DO-LOOP C DO 40 I=5,NEW IAUS=I-IMIN W4=1.D38 W5=X(I-1) W7=X(I)-X(I-1) IF(W7)18,24,18 18 W4=1.D0/W7 C IF(W1-1.D38)19,25,25 19 W6=W4-W1 C C TEST FOR NECESSITY OF A SINGULAR RULE C IF(DABS(W6)-DABS(W4)*1.D-12)20,20,22 20 ISW2=1 IF(W6)22,21,22 21 W5=1.D38 W6=W1 IF(W2-1.D38)28,26,26 22 W5=X(I-1)+1.D0/W6 C C FIRST TEST FOR LOSS OF SIGNIFICANCE C IF(DABS(W5)-DABS(X(I-1))*1.D-10)23,24,24 23 IF(W5)36,24,36 C 24 W7=W5-W2 IF(W7)27,25,27 25 W6=1.D38 26 ISW2=0 X(IAUS)=W2 GO TO 37 27 W6=W1+1.D0/W7 28 IF(ISW1-1)33,29,29 C C CALCULATE X(IAUS) WITH HELP OF SINGULAR RULE C 29 IF(W2-1.D38)30,32,32 30 W7=W5/(W2-W5)+T/(W2-T)+X(I-2)/(X(I-2)-W2) IF(1.D0+W7)31,38,31 31 X(IAUS)=W7*W2/(1.D0+W7) GO TO 39 C 32 X(IAUS)=W5+T-X(I-2) GO TO 39 C 33 W7=W6-W3 IF(W7)34,38,34 34 X(IAUS)=W2+1.D0/W7 C C SECOND TEST FOR LOSS OF SIGNIFICANCE C IF(DABS(X(IAUS))-DABS(W2)*1.D-10)35,37,37 35 IF(X(IAUS))36,37,36 C 36 NEW=IAUS-1 ISW2=0 GO TO 41 C 37 IF(W2-1.D38)39,38,38 38 X(IAUS)=1.D38 IMIN=I C 39 W1=W4 T=W2 W2=W5 W3=W6 ISW1=ISW2 40 ISW2=0 C NEW=NEW-IMIN C C TEST FOR ACCURACY C 41 IEND=NEW-1 DO 47 I=1,IEND HE1=DABS(X(I)-X(I+1)) HE2=DABS(X(I+1)) IF(HE1-EPS)44,44,42 42 IF(HE2-1.)46,46,43 43 IF(HE1-EPS*HE2)44,44,46 44 ISW2=ISW2+1 IF(3-ISW2)45,45,47 45 FIN=X(I) IER=0 RETURN C 46 ISW2=0 47 CONTINUE C IF(NEW-6)48,2,2 48 FIN=X(NEW) IER=1 RETURN END