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

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE DDET5
  5. C
  6. C        PURPOSE
  7. C           TO COMPUTE A VECTOR OF DERIVATIVE VALUES GIVEN A VECTOR OF
  8. C           FUNCTION VALUES WHOSE ENTRIES CORRESPOND TO EQUIDISTANTLY
  9. C           SPACED ARGUMENT VALUES.
  10. C
  11. C        USAGE
  12. C           CALL DDET5(H,Y,Z,NDIM,IER)
  13. C
  14. C        DESCRIPTION OF PARAMETERS
  15. C           H     -  DOUBLE PRECISION CONSTANT DIFFERENCE BETWEEN
  16. C                    SUCCESSIVE ARGUMENT VALUES (H IS POSITIVE IF THE
  17. C                    ARGUMENT VALUES INCREASE AND NEGATIVE OTHERWISE)
  18. C           Y     -  GIVEN VECTOR OF DOUBLE PRECISION FUNCTION VALUES
  19. C                    (DIMENSION NDIM)
  20. C           Z     -  RESULTING VECTOR OF DOUBLE PRECISION DERIVATIVE
  21. C                    VALUES (DIMENSION NDIM)
  22. C           NDIM  -  DIMENSION OF VECTORS Y AND Z
  23. C           IER   -  RESULTING ERROR PARAMETER
  24. C                    IER = -1  - NDIM IS LESS THAN 5
  25. C                    IER =  0  - NO ERROR
  26. C                    IER =  1  - H = 0
  27. C
  28. C        REMARKS
  29. C           (1)   IF IER = -1,1, THEN THERE IS NO COMPUTATION.
  30. C           (2)   Z CAN HAVE THE SAME STORAGE ALLOCATION AS Y.  IF Y IS
  31. C                 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           IF X IS THE (SUPPRESSED) VECTOR OF ARGUMENT VALUES, THEN
  38. C           EXCEPT AT THE POINTS X(1),X(2),X(NDIM-1) AND X(NDIM), Z(I)
  39. C           IS THE DERIVATIVE AT X(I) OF THE LAGRANGIAN INTERPOLATION
  40. C           POLYNOMIAL OF DEGREE 4 RELEVANT TO THE 5 SUCCESSIVE POINTS
  41. C           (X(I+K),Y(I+K)) K = -2,-1,...,2.  (SEE HILDEBRAND, F.B.,
  42. C           INTRODUCTION TO NUMERICAL ANALYSIS, MC GRAW-HILL, NEW YORK/
  43. C           TORONTO/LONDON, 1956, PP. 82-84.)
  44. C
  45. C     ..................................................................
  46. C
  47.       SUBROUTINE DDET5(H,Y,Z,NDIM,IER)
  48. C
  49. C
  50.       DIMENSION Y(1),Z(1)
  51.       DOUBLE PRECISION H,Y,Z,HH,YY,A,B,C
  52. C
  53. C        TEST OF DIMENSION
  54.       IF(NDIM-5)4,1,1
  55. C
  56. C        TEST OF STEPSIZE
  57.     1 IF(H)2,5,2
  58. C
  59. C        PREPARE DIFFERENTIATION LOOP
  60.     2 HH=.08333333333333333D0/H
  61.       YY=Y(NDIM-4)
  62.       B=HH*(-25.D0*Y(1)+48.D0*Y(2)-36.D0*Y(3)+16.D0*Y(4)-3.D0*Y(5))
  63.       C=HH*(-3.D0*Y(1)-10.D0*Y(2)+18.D0*Y(3)-6.D0*Y(4)+Y(5))
  64. C
  65. C        START DIFFERENTIATION LOOP
  66.       DO 3 I=5,NDIM
  67.       A=B
  68.       B=C
  69.       C=HH*(Y(I-4)-Y(I)+8.D0*(Y(I-1)-Y(I-3)))
  70.     3 Z(I-4)=A
  71. C        END OF DIFFERENTIATION LOOP
  72. C
  73. C        NORMAL EXIT
  74.       IER=0
  75.      0A=HH*(-YY+6.D0*Y(NDIM-3)-18.D0*Y(NDIM-2)+10.D0*Y(NDIM-1)
  76.      1      +3.D0*Y(NDIM))
  77.      0Z(NDIM)=HH*(3.D0*YY-16.D0*Y(NDIM-3)+36.D0*Y(NDIM-2)
  78.      1            -48.D0*Y(NDIM-1)+25.D0*Y(NDIM))
  79.       Z(NDIM-1)=A
  80.       Z(NDIM-2)=C
  81.       Z(NDIM-3)=B
  82.       RETURN
  83. C
  84. C        ERROR EXIT IN CASE NDIM IS LESS THAN 5
  85.     4 IER=-1
  86.       RETURN
  87. C
  88. C        ERROR EXIT IN CASE OF ZERO STEPSIZE
  89.     5 IER=1
  90.       RETURN
  91.       END
  92.