dgami.f 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. *DECK DGAMI
  2. DOUBLE PRECISION FUNCTION DGAMI (A, X)
  3. C***BEGIN PROLOGUE DGAMI
  4. C***PURPOSE Evaluate the incomplete Gamma function.
  5. C***LIBRARY SLATEC (FNLIB)
  6. C***CATEGORY C7E
  7. C***TYPE DOUBLE PRECISION (GAMI-S, DGAMI-D)
  8. C***KEYWORDS FNLIB, INCOMPLETE GAMMA FUNCTION, SPECIAL FUNCTIONS
  9. C***AUTHOR Fullerton, W., (LANL)
  10. C***DESCRIPTION
  11. C
  12. C Evaluate the incomplete gamma function defined by
  13. C
  14. C DGAMI = integral from T = 0 to X of EXP(-T) * T**(A-1.0) .
  15. C
  16. C DGAMI is evaluated for positive values of A and non-negative values
  17. C of X. A slight deterioration of 2 or 3 digits accuracy will occur
  18. C when DGAMI is very large or very small, because logarithmic variables
  19. C are used. The function and both arguments are double precision.
  20. C
  21. C***REFERENCES (NONE)
  22. C***ROUTINES CALLED DGAMIT, DLNGAM, XERMSG
  23. C***REVISION HISTORY (YYMMDD)
  24. C 770701 DATE WRITTEN
  25. C 890531 Changed all specific intrinsics to generic. (WRB)
  26. C 890531 REVISION DATE from Version 3.2
  27. C 891214 Prologue converted to Version 4.0 format. (BAB)
  28. C 900315 CALLs to XERROR changed to CALLs to XERMSG. (THJ)
  29. C***END PROLOGUE DGAMI
  30. DOUBLE PRECISION A, X, FACTOR, DLNGAM, DGAMIT
  31. C***FIRST EXECUTABLE STATEMENT DGAMI
  32. IF (A .LE. 0.D0) CALL XERMSG ('SLATEC', 'DGAMI',
  33. + 'A MUST BE GT ZERO', 1, 2)
  34. IF (X .LT. 0.D0) CALL XERMSG ('SLATEC', 'DGAMI',
  35. + 'X MUST BE GE ZERO', 2, 2)
  36. C
  37. DGAMI = 0.D0
  38. IF (X.EQ.0.0D0) RETURN
  39. C
  40. C THE ONLY ERROR POSSIBLE IN THE EXPRESSION BELOW IS A FATAL OVERFLOW.
  41. FACTOR = EXP (DLNGAM(A) + A*LOG(X))
  42. C
  43. DGAMI = FACTOR * DGAMIT (A, X)
  44. C
  45. RETURN
  46. END