dgamr.f 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. *DECK DGAMR
  2. DOUBLE PRECISION FUNCTION DGAMR (X)
  3. C***BEGIN PROLOGUE DGAMR
  4. C***PURPOSE Compute the reciprocal of the Gamma function.
  5. C***LIBRARY SLATEC (FNLIB)
  6. C***CATEGORY C7A
  7. C***TYPE DOUBLE PRECISION (GAMR-S, DGAMR-D, CGAMR-C)
  8. C***KEYWORDS FNLIB, RECIPROCAL GAMMA FUNCTION, SPECIAL FUNCTIONS
  9. C***AUTHOR Fullerton, W., (LANL)
  10. C***DESCRIPTION
  11. C
  12. C DGAMR(X) calculates the double precision reciprocal of the
  13. C complete Gamma function for double precision argument X.
  14. C
  15. C***REFERENCES (NONE)
  16. C***ROUTINES CALLED DGAMMA, DLGAMS, XERCLR, XGETF, XSETF
  17. C***REVISION HISTORY (YYMMDD)
  18. C 770701 DATE WRITTEN
  19. C 890531 Changed all specific intrinsics to generic. (WRB)
  20. C 890531 REVISION DATE from Version 3.2
  21. C 891214 Prologue converted to Version 4.0 format. (BAB)
  22. C 900727 Added EXTERNAL statement. (WRB)
  23. C***END PROLOGUE DGAMR
  24. DOUBLE PRECISION X, ALNGX, SGNGX, DGAMMA
  25. EXTERNAL DGAMMA
  26. C***FIRST EXECUTABLE STATEMENT DGAMR
  27. DGAMR = 0.0D0
  28. IF (X.LE.0.0D0 .AND. AINT(X).EQ.X) RETURN
  29. C
  30. CALL XGETF (IROLD)
  31. CALL XSETF (1)
  32. IF (ABS(X).GT.10.0D0) GO TO 10
  33. DGAMR = 1.0D0/DGAMMA(X)
  34. CALL XERCLR
  35. CALL XSETF (IROLD)
  36. RETURN
  37. C
  38. 10 CALL DLGAMS (X, ALNGX, SGNGX)
  39. CALL XERCLR
  40. CALL XSETF (IROLD)
  41. DGAMR = SGNGX * EXP(-ALNGX)
  42. RETURN
  43. C
  44. END