home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / DOOG / PCSSP1.ZIP / NUMDIFF.ZIP / DGT3.FOR < prev   
Text File  |  1985-11-29  |  3KB  |  91 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE DGT3
  5. C
  6. C        PURPOSE
  7. C           TO COMPUTE A VECTOR OF DERIVATIVE VALUES GIVEN VECTORS OF
  8. C           ARGUMENT VALUES AND CORRESPONDING FUNCTION VALUES.
  9. C
  10. C        USAGE
  11. C           CALL DGT3(X,Y,Z,NDIM,IER)
  12. C
  13. C        DESCRIPTION OF PARAMETERS
  14. C           X     -  GIVEN VECTOR OF ARGUMENT VALUES (DIMENSION NDIM)
  15. C           Y     -  GIVEN VECTOR OF FUNCTION VALUES CORRESPONDING TO X
  16. C                    (DIMENSION NDIM)
  17. C           Z     -  RESULTING VECTOR OF DERIVATIVE VALUES (DIMENSION
  18. C                    NDIM)
  19. C           NDIM  -  DIMENSION OF VECTORS X,Y AND Z
  20. C           IER   -  RESULTING ERROR PARAMETER
  21. C                    IER  = -1  - NDIM IS LESS THAN 3
  22. C                    IER  =  0  - NO ERROR
  23. C                    IER POSITIVE  - X(IER) = X(IER-1) OR X(IER) =
  24. C                                    X(IER-2)
  25. C
  26. C        REMARKS
  27. C           (1)   IF IER = -1,2,3, THEN THERE IS NO COMPUTATION.
  28. C           (2)   IF IER =  4,...,N, THEN THE DERIVATIVE VALUES Z(1)
  29. C                 ,..., Z(IER-1) HAVE BEEN COMPUTED.
  30. C           (3)   Z CAN HAVE THE SAME STORAGE ALLOCATION AS X OR Y.  IF
  31. C                 X OR Y IS DISTINCT FROM Z, THEN IT IS NOT DESTROYED.
  32. C
  33. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  34. C           NONE
  35. C
  36. C        METHOD
  37. C           EXCEPT AT THE ENDPOINTS X(1) AND X(NDIM), Z(I) IS THE
  38. C           DERIVATIVE AT X(I) OF THE LAGRANGIAN INTERPOLATION
  39. C           POLYNOMIAL OF DEGREE 2 RELEVANT TO THE 3 SUCCESSIVE POINTS
  40. C           (X(I+K),Y(I+K)) K = -1,0,1. (SEE HILDEBRAND, F.B.,
  41. C           INTRODUCTION TO NUMERICAL ANALYSIS, MC GRAW-HILL, NEW YORK/
  42. C           TORONTO/LONDON, 1956, PP. 64-68.)
  43. C
  44. C     ..................................................................
  45. C
  46.       SUBROUTINE DGT3(X,Y,Z,NDIM,IER)
  47. C
  48. C
  49.       DIMENSION X(1),Y(1),Z(1)
  50. C
  51. C        TEST OF DIMENSION AND ERROR EXIT IN CASE NDIM IS LESS THAN 3
  52.       IER=-1
  53.       IF(NDIM-3)8,1,1
  54. C
  55. C        PREPARE DIFFERENTIATION LOOP
  56.     1 A=X(1)
  57.       B=Y(1)
  58.       I=2
  59.       DY2=X(2)-A
  60.       IF(DY2)2,9,2
  61.     2 DY2=(Y(2)-B)/DY2
  62. C
  63. C        START DIFFERENTIATION LOOP
  64.       DO 6 I=3,NDIM
  65.       A=X(I)-A
  66.       IF(A)3,9,3
  67.     3 A=(Y(I)-B)/A
  68.       B=X(I)-X(I-1)
  69.       IF(B)4,9,4
  70.     4 DY1=DY2
  71.       DY2=(Y(I)-Y(I-1))/B
  72.       DY3=A
  73.       A=X(I-1)
  74.       B=Y(I-1)
  75.       IF(I-3)5,5,6
  76.     5 Z(1)=DY1+DY3-DY2
  77.     6 Z(I-1)=DY1+DY2-DY3
  78. C        END DIFFERENTIATION LOOP
  79. C
  80. C        NORMAL EXIT
  81.       IER=0
  82.       I=NDIM
  83.     7 Z(I)=DY2+DY3-DY1
  84.     8 RETURN
  85. C
  86. C        ERROR EXIT IN CASE OF IDENTICAL ARGUMENTS
  87.     9 IER=I
  88.       I=I-1
  89.       IF(I-2)8,8,7
  90.       END
  91.