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