3111
|
1 *DECK DGAMR |
|
2 DOUBLE PRECISION FUNCTION DGAMR (X) |
|
3 C***BEGIN PROLOGUE DGAMR |
|
4 C***PURPOSE Compute the reciprocal of the Gamma function. |
|
5 C***LIBRARY SLATEC (FNLIB) |
|
6 C***CATEGORY C7A |
|
7 C***TYPE DOUBLE PRECISION (GAMR-S, DGAMR-D, CGAMR-C) |
|
8 C***KEYWORDS FNLIB, RECIPROCAL GAMMA FUNCTION, SPECIAL FUNCTIONS |
|
9 C***AUTHOR Fullerton, W., (LANL) |
|
10 C***DESCRIPTION |
|
11 C |
|
12 C DGAMR(X) calculates the double precision reciprocal of the |
|
13 C complete Gamma function for double precision argument X. |
|
14 C |
|
15 C***REFERENCES (NONE) |
|
16 C***ROUTINES CALLED DGAMMA, DLGAMS, XERCLR, XGETF, XSETF |
|
17 C***REVISION HISTORY (YYMMDD) |
|
18 C 770701 DATE WRITTEN |
|
19 C 890531 Changed all specific intrinsics to generic. (WRB) |
|
20 C 890531 REVISION DATE from Version 3.2 |
|
21 C 891214 Prologue converted to Version 4.0 format. (BAB) |
|
22 C 900727 Added EXTERNAL statement. (WRB) |
|
23 C***END PROLOGUE DGAMR |
|
24 DOUBLE PRECISION X, ALNGX, SGNGX, DGAMMA |
|
25 EXTERNAL DGAMMA |
|
26 C***FIRST EXECUTABLE STATEMENT DGAMR |
|
27 DGAMR = 0.0D0 |
|
28 IF (X.LE.0.0D0 .AND. AINT(X).EQ.X) RETURN |
|
29 C |
|
30 CALL XGETF (IROLD) |
|
31 CALL XSETF (1) |
|
32 IF (ABS(X).GT.10.0D0) GO TO 10 |
|
33 DGAMR = 1.0D0/DGAMMA(X) |
|
34 CALL XERCLR |
|
35 CALL XSETF (IROLD) |
|
36 RETURN |
|
37 C |
|
38 10 CALL DLGAMS (X, ALNGX, SGNGX) |
|
39 CALL XERCLR |
|
40 CALL XSETF (IROLD) |
|
41 DGAMR = SGNGX * EXP(-ALNGX) |
|
42 RETURN |
|
43 C |
|
44 END |