1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
DOUBLE PRECISION FUNCTION rcomp(a,x)
C -------------------
C EVALUATION OF EXP(-X)*X**A/GAMMA(A)
C -------------------
C RT2PIN = 1/SQRT(2*PI)
C -------------------
C .. Scalar Arguments ..
DOUBLE PRECISION a,x
C ..
C .. Local Scalars ..
DOUBLE PRECISION rt2pin,t,t1,u
C ..
C .. External Functions ..
DOUBLE PRECISION gam1,gamma,rlog
EXTERNAL gam1,gamma,rlog
C ..
C .. Intrinsic Functions ..
INTRINSIC dlog,exp,sqrt
C ..
C .. Data statements ..
DATA rt2pin/.398942280401433D0/
C ..
C .. Executable Statements ..
C -------------------
rcomp = 0.0D0
IF (a.GE.20.0D0) GO TO 20
t = a*dlog(x) - x
IF (a.GE.1.0D0) GO TO 10
rcomp = (a*exp(t))* (1.0D0+gam1(a))
RETURN
10 rcomp = exp(t)/gamma(a)
RETURN
C
20 u = x/a
IF (u.EQ.0.0D0) RETURN
t = (1.0D0/a)**2
t1 = (((0.75D0*t-1.0D0)*t+3.5D0)*t-105.0D0)/ (a*1260.0D0)
t1 = t1 - a*rlog(u)
rcomp = rt2pin*sqrt(a)*exp(t1)
RETURN
END
|