Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
gammln.cc
Go to the documentation of this file.
1// -*- C++ -*-
2//
3// -----------------------------------------------------------------------
4// HEP Random
5// --- HepStat::gammln ---
6// method implementation file
7// -----------------------------------------------------------------------
8
9// =======================================================================
10// M. Fischler - moved the gammln from RandPoisson to here. 01/26/00
11// =======================================================================
12
13#include "CLHEP/Random/Stat.h"
14#include <cmath>
15
16namespace CLHEP {
17
18double HepStat::gammln(double xx) {
19
20// Returns the value ln(Gamma(xx) for xx > 0. Full accuracy is obtained for
21// xx > 1. For 0 < xx < 1. the reflection formula (6.1.4) can be used first.
22// (Adapted from Numerical Recipes in C. Relative to that routine, this
23// subtracts one from x at the very start, and in exchange does not have to
24// divide ser by x at the end. The results are formally equal, and practically
25// indistinguishable.)
26
27 static const double cof[6] = {76.18009172947146,-86.50532032941677,
28 24.01409824083091, -1.231739572450155,
29 0.1208650973866179e-2, -0.5395239384953e-5};
30 int j;
31 double x = xx - 1.0;
32 double tmp = x + 5.5;
33 tmp -= (x + 0.5) * std::log(tmp);
34 double ser = 1.000000000190015;
35
36 for ( j = 0; j <= 5; j++ ) {
37 x += 1.0;
38 ser += cof[j]/x;
39 }
40 return -tmp + std::log(2.5066282746310005*ser);
41}
42
43} // namespace CLHEP
44
45
static double gammln(double x)
Definition: gammln.cc:18
Definition: DoubConv.h:17