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
|
DOUBLE PRECISION FUNCTION gamln1(a)
C-----------------------------------------------------------------------
C EVALUATION OF LN(GAMMA(1 + A)) FOR -0.2 .LE. A .LE. 1.25
C-----------------------------------------------------------------------
C .. Scalar Arguments ..
DOUBLE PRECISION a
C ..
C .. Local Scalars ..
DOUBLE PRECISION p0,p1,p2,p3,p4,p5,p6,q1,q2,q3,q4,q5,q6,r0,r1,r2,
+ r3,r4,r5,s1,s2,s3,s4,s5,w,x
C ..
C .. Data statements ..
C----------------------
DATA p0/.577215664901533D+00/,p1/.844203922187225D+00/,
+ p2/-.168860593646662D+00/,p3/-.780427615533591D+00/,
+ p4/-.402055799310489D+00/,p5/-.673562214325671D-01/,
+ p6/-.271935708322958D-02/
DATA q1/.288743195473681D+01/,q2/.312755088914843D+01/,
+ q3/.156875193295039D+01/,q4/.361951990101499D+00/,
+ q5/.325038868253937D-01/,q6/.667465618796164D-03/
DATA r0/.422784335098467D+00/,r1/.848044614534529D+00/,
+ r2/.565221050691933D+00/,r3/.156513060486551D+00/,
+ r4/.170502484022650D-01/,r5/.497958207639485D-03/
DATA s1/.124313399877507D+01/,s2/.548042109832463D+00/,
+ s3/.101552187439830D+00/,s4/.713309612391000D-02/,
+ s5/.116165475989616D-03/
C ..
C .. Executable Statements ..
C----------------------
IF (a.GE.0.6D0) GO TO 10
w = ((((((p6*a+p5)*a+p4)*a+p3)*a+p2)*a+p1)*a+p0)/
+ ((((((q6*a+q5)*a+q4)*a+q3)*a+q2)*a+q1)*a+1.0D0)
gamln1 = -a*w
RETURN
C
10 x = (a-0.5D0) - 0.5D0
w = (((((r5*x+r4)*x+r3)*x+r2)*x+r1)*x+r0)/
+ (((((s5*x+s4)*x+s3)*x+s2)*x+s1)*x+1.0D0)
gamln1 = x*w
RETURN
END
|