47 const G4int maxNumber = 12;
49 G4double newton0 = 0.0, newton1 = 0.0, temp1 = 0.0, temp2 = 0.0, temp3 = 0.0,
50 temp = 0.0, cofi = 0.0;
60 newton0 = (1.0 + alpha) * (3.0 + 0.92 * alpha) /
61 (1.0 + 2.4 *
fNumber + 1.8 * alpha);
65 newton0 += (15.0 + 6.25 * alpha) / (1.0 + 0.9 * alpha + 2.5 *
fNumber);
70 newton0 += ((1.0 + 2.55 * cofi) / (1.9 * cofi) +
71 1.26 * cofi * alpha / (1.0 + 3.5 * cofi)) *
72 (newton0 -
fAbscissa[i - 3]) / (1.0 + 0.3 * alpha);
74 for(k = 1; k <= maxNumber; ++k)
83 ((2 * j - 1 + alpha - newton0) * temp2 - (j - 1 + alpha) * temp3) / j;
87 newton0 = newton1 - temp1 / temp;
88 if(std::fabs(newton0 - newton1) <= tolerance)
95 G4Exception(
"G4GaussLaguerreQ::G4GaussLaguerreQ()",
"OutOfRange",
97 "Too many iterations in Gauss-Laguerre constructor");
G4double(* function)(G4double)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
G4GaussLaguerreQ(function pFunction, G4double alpha, G4int nLaguerre)
G4double Integral() const
G4double GammaLogarithm(G4double xx)