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

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE DDET3
  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 DDET3(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 3
  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 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.82-84.)
  44. C
  45. C     ..................................................................
  46. C
  47.       SUBROUTINE DDET3(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
  52. C
  53. C        TEST OF DIMENSION
  54.       IF(NDIM-3)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=.5D0/H
  61.       YY=Y(NDIM-2)
  62.       B=Y(2)+Y(2)
  63.       B=HH*(B+B-Y(3)-Y(1)-Y(1)-Y(1))
  64. C
  65. C        START DIFFERENTIATION LOOP
  66.       DO 3 I=3,NDIM
  67.       A=B
  68.       B=HH*(Y(I)-Y(I-2))
  69.     3 Z(I-2)=A
  70. C        END OF DIFFERENTIATION LOOP
  71. C
  72. C        NORMAL EXIT
  73.       IER=0
  74.       A=Y(NDIM-1)+Y(NDIM-1)
  75.       Z(NDIM)=HH*(Y(NDIM)+Y(NDIM)+Y(NDIM)-A-A+YY)
  76.       Z(NDIM-1)=B
  77.       RETURN
  78. C
  79. C        ERROR EXIT IN CASE NDIM IS LESS THAN 3
  80.     4 IER=-1
  81.       RETURN
  82. C
  83. C        ERROR EXIT IN CASE OF ZERO STEPSIZE
  84.     5 IER=1
  85.       RETURN
  86.       END
  87.