5 * Revision 1.1.1.1 1996/04/01 15:01:56 mclareni
10 #if defined(CERNLIB_SINGLE)
11 FUNCTION C309R2(X,ETA,ZL,P,EPS,LIMIT,KIND,ERR,NITS,
14 C *** evaluate the HYPERGEOMETRIC FUNCTION
16 C F (AA;BB; Z) = SUM (AA) Z / ( (BB) i! )
19 C to accuracy EPS with at most LIMIT terms.
20 C If KIND = 0 : using extended precision but real arithmetic only,
21 C 1 : using normal precision in complex arithmetic,
22 C or 2 : using normal complex arithmetic, but with CDIGAM factor
24 C where AA, BB, and Z are defined below
26 IMPLICIT REAL(A-H,O-Z)
27 COMPLEX X,ETA,ZL,P,AA,BB,Z,C309R2,CDIGAM
28 COMPLEX DD,G,F,AI,BI,T
29 DOUBLE PRECISION AR,BR,GR,GI,DR,DI,TR,TI,UR,UI,FI,FI1,DEN
31 PARAMETER(TBBB = 3D0/2D0)
33 ABSC(AA)=ABS(REAL(AA))+ABS(AIMAG(AA))
34 NINTC(AA)=NINT(REAL(AA))
39 IF(REAL(BB) .LE. 0 .AND. ABS(BB-NINTC(BB)) .LT.
40 1 SQRT(SQRT(ACC8))**3 .AND. REAL(BB)+LIMIT .GE. TBBB) THEN
52 IF(KIND .LE. 0 .AND. ABSC(Z)*ABSC(AA) .GT. ABSC(BB)*1.0) THEN
65 UR=(AR*TR+AIMAG(AA)*TI)*DEN
66 UI=(AIMAG(AA)*TR-AR*TI)*DEN
69 GR=REAL(Z)*TR-AIMAG(Z)*TI
70 GI=REAL(Z)*TI+AIMAG(Z)*TR
74 IF(ERR .GT. FPMAX) GO TO 60
77 IF(ERR .LT. RK*EPS .OR. I .GE. 4 .AND. ERR .LT. ACC16) GO TO 30
86 C* If REAL*16 arithmetic is not available, (or already using it!),
91 IF(KIND .GE. 2) F=CDIGAM(AA)-CDIGAM(BB)-CDIGAM(G)
99 C multiply by (psi(a+r)-psi(b+r)-psi(1+r))
101 IF(KIND .EQ. 2) F=F+1/AI-1/BI-1/R
105 IF(ERR .GT. FPMAX) GO TO 60
108 IF(ERR .LT. RK*EPS .OR. ERR .LT. ACC8 .AND. I .GE. 4) GO TO 50