1      DOUBLE PRECISION FUNCTION gengam(a,r)
2C**********************************************************************
3C
4C     DOUBLE PRECISION FUNCTION GENGAM( A, R )
5C           GENerates random deviates from GAMma distribution
6C
7C
8C                              Function
9C
10C
11C     Generates random deviates from the gamma distribution whose
12C     density is
13C          (A**R)/Gamma(R) * X**(R-1) * Exp(-A*X)
14C
15C
16C                              Arguments
17C
18C
19C     JJV added the argument ranges supported
20C     A --> Location parameter of Gamma distribution
21C                              DOUBLE PRECISION A ( A > 0 )
22C
23C     R --> Shape parameter of Gamma distribution
24C                              DOUBLE PRECISION R ( R > 0 )
25C
26C
27C                              Method
28C
29C
30C     Renames SGAMMA from TOMS as slightly modified by BWB to use RANF
31C     instead of SUNIF.
32C
33C     For details see:
34C               (Case R >= 1.0)
35C               Ahrens, J.H. and Dieter, U.
36C               Generating Gamma Variates by a
37C               Modified Rejection Technique.
38C               Comm. ACM, 25,1 (Jan. 1982), 47 - 54.
39C     Algorithm GD
40C
41C     JJV altered the following to reflect sgamma argument ranges
42C               (Case 0.0 < R < 1.0)
43C               Ahrens, J.H. and Dieter, U.
44C               Computer Methods for Sampling from Gamma,
45C               Beta, Poisson and Binomial Distributions.
46C               Computing, 12 (1974), 223-246/
47C     Adapted algorithm GS.
48C
49C**********************************************************************
50C     .. Scalar Arguments ..
51      DOUBLE PRECISION a,r
52C     ..
53C     .. External Functions ..
54      DOUBLE PRECISION sgamma
55      EXTERNAL sgamma
56C     ..
57C     .. Executable Statements ..
58
59C     JJV added argument value checker
60C     JPC : argument checks are moved in the interface
61C     JJV end addition
62
63 10   gengam = sgamma(r)/a
64C      gengam = gengam/a
65      RETURN
66
67      END
68