r9lgic.f 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. *DECK R9LGIC
  2. FUNCTION R9LGIC (A, X, ALX)
  3. C***BEGIN PROLOGUE R9LGIC
  4. C***SUBSIDIARY
  5. C***PURPOSE Compute the log complementary incomplete Gamma function
  6. C for large X and for A .LE. X.
  7. C***LIBRARY SLATEC (FNLIB)
  8. C***CATEGORY C7E
  9. C***TYPE SINGLE PRECISION (R9LGIC-S, D9LGIC-D)
  10. C***KEYWORDS COMPLEMENTARY INCOMPLETE GAMMA FUNCTION, FNLIB, LARGE X,
  11. C LOGARITHM, SPECIAL FUNCTIONS
  12. C***AUTHOR Fullerton, W., (LANL)
  13. C***DESCRIPTION
  14. C
  15. C Compute the log complementary incomplete gamma function for large X
  16. C and for A .LE. X.
  17. C
  18. C***REFERENCES (NONE)
  19. C***ROUTINES CALLED R1MACH, XERMSG
  20. C***REVISION HISTORY (YYMMDD)
  21. C 770701 DATE WRITTEN
  22. C 890531 Changed all specific intrinsics to generic. (WRB)
  23. C 890531 REVISION DATE from Version 3.2
  24. C 891214 Prologue converted to Version 4.0 format. (BAB)
  25. C 900315 CALLs to XERROR changed to CALLs to XERMSG. (THJ)
  26. C 900720 Routine changed from user-callable to subsidiary. (WRB)
  27. C***END PROLOGUE R9LGIC
  28. SAVE EPS
  29. DATA EPS / 0.0 /
  30. C***FIRST EXECUTABLE STATEMENT R9LGIC
  31. IF (EPS.EQ.0.0) EPS = 0.5*R1MACH(3)
  32. C
  33. XPA = X + 1.0 - A
  34. XMA = X - 1.0 - A
  35. C
  36. R = 0.0
  37. P = 1.0
  38. S = P
  39. DO 10 K=1,200
  40. FK = K
  41. T = FK*(A-FK)*(1.0+R)
  42. R = -T/((XMA+2.0*FK)*(XPA+2.0*FK)+T)
  43. P = R*P
  44. S = S + P
  45. IF (ABS(P).LT.EPS*S) GO TO 20
  46. 10 CONTINUE
  47. CALL XERMSG ('SLATEC', 'R9LGIC',
  48. + 'NO CONVERGENCE IN 200 TERMS OF CONTINUED FRACTION', 1, 2)
  49. C
  50. 20 R9LGIC = A*ALX - X + LOG(S/XPA)
  51. C
  52. RETURN
  53. END