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

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