home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / DOOG / PCSSP1.ZIP / ITRPAPSM.ZIP / DALI.FOR < prev    next >
Text File  |  1985-11-29  |  4KB  |  112 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE DALI
  5. C
  6. C        PURPOSE
  7. C           TO INTERPOLATE FUNCTION VALUE Y FOR A GIVEN ARGUMENT VALUE
  8. C           X USING A GIVEN TABLE (ARG,VAL) OF ARGUMENT AND FUNCTION
  9. C           VALUES.
  10. C
  11. C        USAGE
  12. C           CALL DALI (X,ARG,VAL,Y,NDIM,EPS,IER)
  13. C
  14. C        DESCRIPTION OF PARAMETERS
  15. C           X      - DOUBLE PRECISION ARGUMENT VALUE SPECIFIED BY INPUT.
  16. C           ARG    - DOUBLE PRECISION INPUT VECTOR (DIMENSION NDIM) OF
  17. C                    ARGUMENT VALUES OF THE TABLE (NOT DESTROYED).
  18. C           VAL    - DOUBLE PRECISION INPUT VECTOR (DIMENSION NDIM) OF
  19. C                    FUNCTION VALUES OF THE TABLE (DESTROYED).
  20. C           Y      - RESULTING INTERPOLATED DOUBLE PRECISION FUNCTION
  21. C                    VALUE.
  22. C           NDIM   - AN INPUT VALUE WHICH SPECIFIES THE NUMBER OF
  23. C                    POINTS IN TABLE (ARG,VAL).
  24. C           EPS    - SINGLE PRECISION INPUT CONSTANT WHICH IS USED AS
  25. C                    UPPER BOUND FOR THE ABSOLUTE ERROR.
  26. C                    FOR THE ABSOLUTE ERROR.
  27. C           IER    - A RESULTING ERROR PARAMETER.
  28. C
  29. C        REMARKS
  30. C           (1) TABLE (ARG,VAL) SHOULD REPRESENT A SINGLE-VALUED
  31. C               FUNCTION AND SHOULD BE STORED IN SUCH A WAY, THAT THE
  32. C               DISTANCES ABS(ARG(I)-X) INCREASE WITH INCREASING
  33. C               SUBSCRIPT I. TO GENERATE THIS ORDER IN TABLE (ARG,VAL),
  34. C               SUBROUTINES DATSG, DATSM OR DATSE COULD BE USED IN A
  35. C               PREVIOUS STAGE.
  36. C           (2) NO ACTION BESIDES ERROR MESSAGE IN CASE NDIM LESS
  37. C               THAN 1.
  38. C           (3) INTERPOLATION IS TERMINATED EITHER IF THE DIFFERENCE
  39. C               BETWEEN TWO SUCCESSIVE INTERPOLATED VALUES IS
  40. C               ABSOLUTELY LESS THAN TOLERANCE EPS, OR IF THE ABSOLUTE
  41. C               VALUE OF THIS DIFFERENCE STOPS DIMINISHING, OR AFTER
  42. C               (NDIM-1) STEPS. FURTHER IT IS TERMINATED IF THE
  43. C               PROCEDURE DISCOVERS TWO ARGUMENT VALUES IN VECTOR ARG
  44. C               WHICH ARE IDENTICAL. DEPENDENT ON THESE FOUR CASES,
  45. C               ERROR PARAMETER IER IS CODED IN THE FOLLOWING FORM
  46. C                IER=0 - IT WAS POSSIBLE TO REACH THE REQUIRED
  47. C                        ACCURACY (NO ERROR).
  48. C                IER=1 - IT WAS IMPOSSIBLE TO REACH THE REQUIRED
  49. C                        ACCURACY BECAUSE OF ROUNDING ERRORS.
  50. C                IER=2 - IT WAS IMPOSSIBLE TO CHECK ACCURACY BECAUSE
  51. C                        NDIM IS LESS THAN 3, OR THE REQUIRED ACCURACY
  52. C                        COULD NOT BE REACHED BY MEANS OF THE GIVEN
  53. C                        TABLE. NDIM SHOULD BE INCREASED.
  54. C                IER=3 - THE PROCEDURE DISCOVERED TWO ARGUMENT VALUES
  55. C                        IN VECTOR ARG WHICH ARE IDENTICAL.
  56. C
  57. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  58. C           NONE
  59. C
  60. C        METHOD
  61. C           INTERPOLATION IS DONE BY MEANS OF AITKENS SCHEME OF
  62. C           LAGRANGE INTERPOLATION. ON RETURN Y CONTAINS AN INTERPOLATED
  63. C           FUNCTION VALUE AT POINT X, WHICH IS IN THE SENSE OF REMARK
  64. C           (3) OPTIMAL WITH RESPECT TO GIVEN TABLE. FOR REFERENCE, SEE
  65. C           F.B.HILDEBRAND, INTRODUCTION TO NUMERICAL ANALYSIS,
  66. C           MCGRAW-HILL, NEW YORK/TORONTO/LONDON, 1956, PP.49-50.
  67. C
  68. C     ..................................................................
  69. C
  70.       SUBROUTINE DALI(X,ARG,VAL,Y,NDIM,EPS,IER)
  71. C
  72. C
  73.       DIMENSION ARG(1),VAL(1)
  74.       DOUBLE PRECISION ARG,VAL,X,Y,H
  75.       IER=2
  76.       DELT2=0.
  77.       IF(NDIM-1)9,7,1
  78. C
  79. C     START OF AITKEN-LOOP
  80.     1 DO 6 J=2,NDIM
  81.       DELT1=DELT2
  82.       IEND=J-1
  83.       DO 2 I=1,IEND
  84.       H=ARG(I)-ARG(J)
  85.       IF(H)2,13,2
  86.     2 VAL(J)=(VAL(I)*(X-ARG(J))-VAL(J)*(X-ARG(I)))/H
  87.       DELT2=DABS(VAL(J)-VAL(IEND))
  88.       IF(J-2)6,6,3
  89.     3 IF(DELT2-EPS)10,10,4
  90.     4 IF(J-8)6,5,5
  91.     5 IF(DELT2-DELT1)6,11,11
  92.     6 CONTINUE
  93. C     END OF AITKEN-LOOP
  94. C
  95.     7 J=NDIM
  96.     8 Y=VAL(J)
  97.     9 RETURN
  98. C
  99. C     THERE IS SUFFICIENT ACCURACY WITHIN NDIM-1 ITERATION STEPS
  100.    10 IER=0
  101.       GOTO 8
  102. C
  103. C     TEST VALUE DELT2 STARTS OSCILLATING
  104.    11 IER=1
  105.    12 J=IEND
  106.       GOTO 8
  107. C
  108. C     THERE ARE TWO IDENTICAL ARGUMENT VALUES IN VECTOR ARG
  109.    13 IER=3
  110.       GOTO 12
  111.       END
  112.