ddscl.f 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. *DECK DDSCL
  2. SUBROUTINE DDSCL (HMAX, N, NQ, RMAX, H, RC, RH, YH)
  3. C***BEGIN PROLOGUE DDSCL
  4. C***SUBSIDIARY
  5. C***PURPOSE Subroutine DDSCL rescales the YH array whenever the step
  6. C size is changed.
  7. C***LIBRARY SLATEC (SDRIVE)
  8. C***TYPE DOUBLE PRECISION (SDSCL-S, DDSCL-D, CDSCL-C)
  9. C***AUTHOR Kahaner, D. K., (NIST)
  10. C National Institute of Standards and Technology
  11. C Gaithersburg, MD 20899
  12. C Sutherland, C. D., (LANL)
  13. C Mail Stop D466
  14. C Los Alamos National Laboratory
  15. C Los Alamos, NM 87545
  16. C***ROUTINES CALLED (NONE)
  17. C***REVISION HISTORY (YYMMDD)
  18. C 790601 DATE WRITTEN
  19. C 900329 Initial submission to SLATEC.
  20. C***END PROLOGUE DDSCL
  21. INTEGER I, J, N, NQ
  22. DOUBLE PRECISION H, HMAX, RC, RH, RMAX, R1, YH(N,*)
  23. C***FIRST EXECUTABLE STATEMENT DDSCL
  24. IF (H .LT. 1.D0) THEN
  25. RH = MIN(ABS(H)*RH, ABS(H)*RMAX, HMAX)/ABS(H)
  26. ELSE
  27. RH = MIN(RH, RMAX, HMAX/ABS(H))
  28. END IF
  29. R1 = 1.D0
  30. DO 10 J = 1,NQ
  31. R1 = R1*RH
  32. DO 10 I = 1,N
  33. 10 YH(I,J+1) = YH(I,J+1)*R1
  34. H = H*RH
  35. RC = RC*RH
  36. RETURN
  37. END