home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / fortran / library / ssp / sequence / dteas.for next >
Encoding:
Text File  |  1985-11-29  |  4.9 KB  |  207 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE DTEAS
  5. C
  6. C        PURPOSE
  7. C           CALCULATE THE LIMIT OF A GIVEN SEQUENCE BY MEANS OF THE
  8. C           EPSILON-ALGORITHM.
  9. C
  10. C        USAGE
  11. C           CALL DTEAS(X,N,FIN,EPS,IER)
  12. C
  13. C        DESCRIPTION OF PARAMETERS
  14. C           X      - DOUBLE PRECISION VECTOR WHOSE COMPONENTS ARE TERMS
  15. C                    OF THE GIVEN SEQUENCE. ON RETURN THE COMPONENTS OF
  16. C                    VECTOR X ARE DESTROYED.
  17. C           N      - DIMENSION OF INPUT VECTOR X.
  18. C           FIN    - RESULTANT SCALAR IN DOUBLE PRECISION CONTAINING ON
  19. C                    RETURN THE LIMIT OF THE GIVEN SEQUENCE.
  20. C           EPS    - SINGLE PRECISION INPUT VALUE, WHICH SPECIFIES THE
  21. C                    UPPER BOUND OF THE RELATIVE (ABSOLUTE) ERROR IF THE
  22. C                    COMPONENTS OF X ARE ABSOLUTELY GREATER (LESS) THAN
  23. C                    ONE.
  24. C                    CALCULATION IS TERMINATED AS SOON AS THREE TIMES IN
  25. C                    SUCCESSION THE RELATIVE (ABSOLUTE) DIFFERENCE
  26. C                    BETWEEN NEIGHBOURING TERMS IS NOT GREATER THAN EPS.
  27. C           IER    - RESULTANT ERROR PARAMETER CODED IN THE FOLLOWING
  28. C                    FORM
  29. C                     IER=0  - NO ERROR
  30. C                     IER=1  - REQUIRED ACCURACY NOT REACHED WITH
  31. C                              MAXIMAL NUMBER OF ITERATIONS
  32. C                     IER=-1 - INTEGER N IS LESS THAN TEN.
  33. C
  34. C        REMARKS
  35. C           NO ACTION BESIDES ERROR MESSAGE IN CASE N LESS THAN TEN.
  36. C           THE CHARACTER OF THE GIVEN INFINITE SEQUENCE MUST BE
  37. C           RECOGNIZABLE BY THOSE N COMPONENTS OF THE INPUT VECTOR X.
  38. C
  39. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  40. C           NONE
  41. C
  42. C        METHOD
  43. C           THE CONVERGENCE OF THE GIVEN SEQUENCE IS ACCELERATED BY
  44. C           MEANS OF THE E(2)-TRANSFORMATION, USED IN AN ITERATIVE WAY.
  45. C           FOR REFERENCE, SEE
  46. C           ALGORITHM 215,SHANKS, CACM 1963, NO. 11, PP. 662. AND
  47. C           P. WYNN, SINGULAR RULES FOR CERTAIN NON-LINEAR ALGORITHMS
  48. C           BIT VOL. 3, 1963, PP. 175-195.
  49. C
  50. C     ..................................................................
  51. C
  52.       SUBROUTINE DTEAS(X,N,FIN,EPS,IER)
  53. C
  54.       DIMENSION X(1)
  55.       DOUBLE PRECISION X,FIN,W1,W2,W3,W4,W5,W6,W7,T
  56. C
  57. C        TEST ON WRONG INPUT PARAMETER N
  58. C
  59.       NEW=N
  60.       IF(NEW-10)1,2,2
  61.     1 IER=-1
  62.       RETURN
  63. C
  64. C        CALCULATE INITIAL VALUES FOR THE EPSILON ARRAY
  65. C
  66.     2 ISW1=0
  67.       ISW2=0
  68.       W1=1.D38
  69.       W7=X(4)-X(3)
  70.       IF(W7)3,4,3
  71.     3 W1=1.D0/W7
  72. C
  73.     4 W5=1.D38
  74.       W7=X(2)-X(1)
  75.       IF(W7)5,6,5
  76.     5 W5=1.D0/W7
  77. C
  78.     6 W4=X(3)-X(2)
  79.       IF(W4)9,7,9
  80.     7 W4=1.D38
  81.       T=X(2)
  82.       W2=X(3)
  83.     8 W3=1.D38
  84.       GO TO 17
  85. C
  86.     9 W4=1.D0/W4
  87. C
  88.       T=1.D38
  89.       W7=W4-W5
  90.       IF(W7)10,11,10
  91.    10 T=X(2)+1.D0/W7
  92. C
  93.    11 W2=W1-W4
  94.       IF(W2)15,12,15
  95.    12 W2=1.D38
  96.       IF(T-1.D38)13,14,14
  97.    13 ISW2=1
  98.    14 W3=W4
  99.       GO TO 17
  100. C
  101.    15 W2=X(3)+1.D0/W2
  102.       W7=W2-T
  103.       IF(W7)16,8,16
  104.    16 W3=W4+1.D0/W7
  105. C
  106.    17 ISW1=ISW2
  107.       ISW2=0
  108.       IMIN=4
  109. C
  110. C        CALCULATE DIAGONALS OF THE EPSILON ARRAY IN A DO-LOOP
  111. C
  112.       DO 40 I=5,NEW
  113.       IAUS=I-IMIN
  114.       W4=1.D38
  115.       W5=X(I-1)
  116.       W7=X(I)-X(I-1)
  117.       IF(W7)18,24,18
  118.    18 W4=1.D0/W7
  119. C
  120.       IF(W1-1.D38)19,25,25
  121.    19 W6=W4-W1
  122. C
  123. C        TEST FOR NECESSITY OF A SINGULAR RULE
  124. C
  125.       IF(DABS(W6)-DABS(W4)*1.D-12)20,20,22
  126.    20 ISW2=1
  127.       IF(W6)22,21,22
  128.    21 W5=1.D38
  129.       W6=W1
  130.       IF(W2-1.D38)28,26,26
  131.    22 W5=X(I-1)+1.D0/W6
  132. C
  133. C        FIRST TEST FOR LOSS OF SIGNIFICANCE
  134. C
  135.       IF(DABS(W5)-DABS(X(I-1))*1.D-10)23,24,24
  136.    23 IF(W5)36,24,36
  137. C
  138.    24 W7=W5-W2
  139.       IF(W7)27,25,27
  140.    25 W6=1.D38
  141.    26 ISW2=0
  142.       X(IAUS)=W2
  143.       GO TO 37
  144.    27 W6=W1+1.D0/W7
  145.    28 IF(ISW1-1)33,29,29
  146. C
  147. C        CALCULATE X(IAUS) WITH HELP OF SINGULAR RULE
  148. C
  149.    29 IF(W2-1.D38)30,32,32
  150.    30 W7=W5/(W2-W5)+T/(W2-T)+X(I-2)/(X(I-2)-W2)
  151.       IF(1.D0+W7)31,38,31
  152.    31 X(IAUS)=W7*W2/(1.D0+W7)
  153.       GO TO 39
  154. C
  155.    32 X(IAUS)=W5+T-X(I-2)
  156.       GO TO 39
  157. C
  158.    33 W7=W6-W3
  159.       IF(W7)34,38,34
  160.    34 X(IAUS)=W2+1.D0/W7
  161. C
  162. C        SECOND TEST FOR LOSS OF SIGNIFICANCE
  163. C
  164.       IF(DABS(X(IAUS))-DABS(W2)*1.D-10)35,37,37
  165.    35 IF(X(IAUS))36,37,36
  166. C
  167.    36 NEW=IAUS-1
  168.       ISW2=0
  169.       GO TO 41
  170. C
  171.    37 IF(W2-1.D38)39,38,38
  172.    38 X(IAUS)=1.D38
  173.       IMIN=I
  174. C
  175.    39 W1=W4
  176.       T=W2
  177.       W2=W5
  178.       W3=W6
  179.       ISW1=ISW2
  180.    40 ISW2=0
  181. C
  182.       NEW=NEW-IMIN
  183. C
  184. C        TEST FOR ACCURACY
  185. C
  186.    41 IEND=NEW-1
  187.       DO 47 I=1,IEND
  188.       HE1=DABS(X(I)-X(I+1))
  189.       HE2=DABS(X(I+1))
  190.       IF(HE1-EPS)44,44,42
  191.    42 IF(HE2-1.)46,46,43
  192.    43 IF(HE1-EPS*HE2)44,44,46
  193.    44 ISW2=ISW2+1
  194.       IF(3-ISW2)45,45,47
  195.    45 FIN=X(I)
  196.       IER=0
  197.       RETURN
  198. C
  199.    46 ISW2=0
  200.    47 CONTINUE
  201. C
  202.       IF(NEW-6)48,2,2
  203.    48 FIN=X(NEW)
  204.       IER=1
  205.       RETURN
  206.       END
  207.