cbeta.f 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. *DECK CBETA
  2. COMPLEX FUNCTION CBETA (A, B)
  3. C***BEGIN PROLOGUE CBETA
  4. C***PURPOSE Compute the complete Beta function.
  5. C***LIBRARY SLATEC (FNLIB)
  6. C***CATEGORY C7B
  7. C***TYPE COMPLEX (BETA-S, DBETA-D, CBETA-C)
  8. C***KEYWORDS COMPLETE BETA FUNCTION, FNLIB, SPECIAL FUNCTIONS
  9. C***AUTHOR Fullerton, W., (LANL)
  10. C***DESCRIPTION
  11. C
  12. C CBETA computes the complete beta function of complex parameters A
  13. C and B.
  14. C Input Parameters:
  15. C A complex and the real part of A positive
  16. C B complex and the real part of B positive
  17. C
  18. C***REFERENCES (NONE)
  19. C***ROUTINES CALLED CGAMMA, CLBETA, GAMLIM, XERMSG
  20. C***REVISION HISTORY (YYMMDD)
  21. C 770701 DATE WRITTEN
  22. C 890206 REVISION DATE from Version 3.2
  23. C 891214 Prologue converted to Version 4.0 format. (BAB)
  24. C 900315 CALLs to XERROR changed to CALLs to XERMSG. (THJ)
  25. C 900326 Removed duplicate information from DESCRIPTION section.
  26. C (WRB)
  27. C 900727 Added EXTERNAL statement. (WRB)
  28. C***END PROLOGUE CBETA
  29. COMPLEX A, B, CGAMMA, CLBETA
  30. EXTERNAL CGAMMA
  31. SAVE XMAX
  32. DATA XMAX / 0.0 /
  33. C***FIRST EXECUTABLE STATEMENT CBETA
  34. IF (XMAX.EQ.0.0) THEN
  35. CALL GAMLIM (XMIN, XMAXT)
  36. XMAX = XMAXT
  37. ENDIF
  38. C
  39. IF (REAL(A) .LE. 0.0 .OR. REAL(B) .LE. 0.0) CALL XERMSG ('SLATEC',
  40. + 'CBETA', 'REAL PART OF BOTH ARGUMENTS MUST BE GT 0', 1, 2)
  41. C
  42. IF (REAL(A)+REAL(B).LT.XMAX) CBETA = CGAMMA(A) * (CGAMMA(B)/
  43. 1 CGAMMA(A+B) )
  44. IF (REAL(A)+REAL(B).LT.XMAX) RETURN
  45. C
  46. CBETA = EXP (CLBETA(A, B))
  47. C
  48. RETURN
  49. END