File DTEAS.FT (FORTRAN source file)

Directory of image this file is from
This file as a plain text file

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



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search