cdntp.f 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. *DECK CDNTP
  2. SUBROUTINE CDNTP (H, K, N, NQ, T, TOUT, YH, Y)
  3. C***BEGIN PROLOGUE CDNTP
  4. C***SUBSIDIARY
  5. C***PURPOSE Subroutine CDNTP 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 COMPLEX (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 CDNTP
  22. INTEGER I, J, JJ, K, KK, KUSED, N, NQ
  23. COMPLEX Y(*), YH(N,*)
  24. REAL FACTOR, H, R, T, TOUT
  25. C***FIRST EXECUTABLE STATEMENT CDNTP
  26. IF (K .EQ. 0) THEN
  27. DO 10 I = 1,N
  28. 10 Y(I) = YH(I,NQ+1)
  29. R = ((TOUT - T)/H)
  30. DO 20 JJ = 1,NQ
  31. J = NQ + 1 - JJ
  32. DO 20 I = 1,N
  33. 20 Y(I) = YH(I,J) + R*Y(I)
  34. ELSE
  35. KUSED = MIN(K, NQ)
  36. FACTOR = 1.E0
  37. DO 40 KK = 1,KUSED
  38. 40 FACTOR = FACTOR*(NQ+1-KK)
  39. DO 50 I = 1,N
  40. 50 Y(I) = FACTOR*YH(I,NQ+1)
  41. R = ((TOUT - T)/H)
  42. DO 80 JJ = KUSED+1,NQ
  43. J = KUSED + 1 + NQ - JJ
  44. FACTOR = 1.E0
  45. DO 60 KK = 1,KUSED
  46. 60 FACTOR = FACTOR*(J-KK)
  47. DO 70 I = 1,N
  48. 70 Y(I) = FACTOR*YH(I,J) + R*Y(I)
  49. 80 CONTINUE
  50. DO 100 I = 1,N
  51. 100 Y(I) = Y(I)*H**(-KUSED)
  52. END IF
  53. RETURN
  54. END