sdntp.f 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. *DECK SDNTP
  2. SUBROUTINE SDNTP (H, K, N, NQ, T, TOUT, YH, Y)
  3. C***BEGIN PROLOGUE SDNTP
  4. C***SUBSIDIARY
  5. C***PURPOSE Subroutine SDNTP interpolates the K-th derivative of Y at
  6. C TOUT, using the data in the YH array. If K has a value
  7. C greater than NQ, the NQ-th derivative is calculated.
  8. C***LIBRARY SLATEC (SDRIVE)
  9. C***TYPE SINGLE PRECISION (SDNTP-S, DDNTP-D, CDNTP-C)
  10. C***AUTHOR Kahaner, D. K., (NIST)
  11. C National Institute of Standards and Technology
  12. C Gaithersburg, MD 20899
  13. C Sutherland, C. D., (LANL)
  14. C Mail Stop D466
  15. C Los Alamos National Laboratory
  16. C Los Alamos, NM 87545
  17. C***ROUTINES CALLED (NONE)
  18. C***REVISION HISTORY (YYMMDD)
  19. C 790601 DATE WRITTEN
  20. C 900329 Initial submission to SLATEC.
  21. C***END PROLOGUE SDNTP
  22. INTEGER I, J, JJ, K, KK, KUSED, N, NQ
  23. REAL FACTOR, H, R, T, TOUT, Y(*), YH(N,*)
  24. C***FIRST EXECUTABLE STATEMENT SDNTP
  25. IF (K .EQ. 0) THEN
  26. DO 10 I = 1,N
  27. 10 Y(I) = YH(I,NQ+1)
  28. R = ((TOUT - T)/H)
  29. DO 20 JJ = 1,NQ
  30. J = NQ + 1 - JJ
  31. DO 20 I = 1,N
  32. 20 Y(I) = YH(I,J) + R*Y(I)
  33. ELSE
  34. KUSED = MIN(K, NQ)
  35. FACTOR = 1.E0
  36. DO 40 KK = 1,KUSED
  37. 40 FACTOR = FACTOR*(NQ+1-KK)
  38. DO 50 I = 1,N
  39. 50 Y(I) = FACTOR*YH(I,NQ+1)
  40. R = ((TOUT - T)/H)
  41. DO 80 JJ = KUSED+1,NQ
  42. J = KUSED + 1 + NQ - JJ
  43. FACTOR = 1.E0
  44. DO 60 KK = 1,KUSED
  45. 60 FACTOR = FACTOR*(J-KK)
  46. DO 70 I = 1,N
  47. 70 Y(I) = FACTOR*YH(I,J) + R*Y(I)
  48. 80 CONTINUE
  49. DO 100 I = 1,N
  50. 100 Y(I) = Y(I)*H**(-KUSED)
  51. END IF
  52. RETURN
  53. END