55 G4Exception(
"G4GaussLegendreQ::G4GaussLegendreQ()",
"InvalidCall",
58 G4double newton0 = 0.0, newton1 = 0.0, temp1 = 0.0, temp2 = 0.0, temp3 = 0.0,
66 newton0 = std::cos(pi * (i - 0.25) / (k + 0.5));
71 for(
G4int j = 1; j <= k; ++j)
75 temp1 = ((2.0 * j - 1.0) * newton0 * temp2 - (j - 1.0) * temp3) / j;
77 temp = k * (newton0 * temp1 - temp2) / (newton0 * newton0 - 1.0);
79 newton0 = newton1 - temp1 / temp;
80 }
while(std::fabs(newton0 - newton1) > tolerance);
83 fWeight[
fNumber - i] = 2.0 / ((1.0 - newton0 * newton0) * temp * temp);
98 G4double xMean = 0.5 * (a + b), xDiff = 0.5 * (b - a), integral = 0.0,
105 return integral *= xDiff;
121 static const G4double abscissa[] = { 0.148874338981631, 0.433395394129247,
122 0.679409568299024, 0.865063366688985,
125 static const G4double weight[] = { 0.295524224714753, 0.269266719309996,
126 0.219086362515982, 0.149451349150581,
128 G4double xMean = 0.5 * (a + b), xDiff = 0.5 * (b - a), integral = 0.0,
130 for(
G4int i = 0; i < 5; ++i)
132 dx = xDiff * abscissa[i];
135 return integral *= xDiff;
151 static const G4double abscissa[] = {
152 0.016276744849602969579, 0.048812985136049731112,
153 0.081297495464425558994, 0.113695850110665920911,
154 0.145973714654896941989, 0.178096882367618602759,
156 0.210031310460567203603, 0.241743156163840012328,
157 0.273198812591049141487, 0.304364944354496353024,
158 0.335208522892625422616, 0.365696861472313635031,
160 0.395797649828908603285, 0.425478988407300545365,
161 0.454709422167743008636, 0.483457973920596359768,
162 0.511694177154667673586, 0.539388108324357436227,
164 0.566510418561397168404, 0.593032364777572080684,
165 0.618925840125468570386, 0.644163403784967106798,
166 0.668718310043916153953, 0.692564536642171561344,
168 0.715676812348967626225, 0.738030643744400132851,
169 0.759602341176647498703, 0.780369043867433217604,
170 0.800308744139140817229, 0.819400310737931675539,
172 0.837623511228187121494, 0.854959033434601455463,
173 0.871388505909296502874, 0.886894517402420416057,
174 0.901460635315852341319, 0.915071423120898074206,
176 0.927712456722308690965, 0.939370339752755216932,
177 0.950032717784437635756, 0.959688291448742539300,
178 0.968326828463264212174, 0.975939174585136466453,
180 0.982517263563014677447, 0.988054126329623799481,
181 0.992543900323762624572, 0.995981842987209290650,
182 0.998364375863181677724, 0.999689503883230766828
186 0.032550614492363166242, 0.032516118713868835987,
187 0.032447163714064269364, 0.032343822568575928429,
188 0.032206204794030250669, 0.032034456231992663218,
190 0.031828758894411006535, 0.031589330770727168558,
191 0.031316425596862355813, 0.031010332586313837423,
192 0.030671376123669149014, 0.030299915420827593794,
194 0.029896344136328385984, 0.029461089958167905970,
195 0.028994614150555236543, 0.028497411065085385646,
196 0.027970007616848334440, 0.027412962726029242823,
198 0.026826866725591762198, 0.026212340735672413913,
199 0.025570036005349361499, 0.024900633222483610288,
200 0.024204841792364691282, 0.023483399085926219842,
202 0.022737069658329374001, 0.021966644438744349195,
203 0.021172939892191298988, 0.020356797154333324595,
204 0.019519081140145022410, 0.018660679627411467385,
206 0.017782502316045260838, 0.016885479864245172450,
207 0.015970562902562291381, 0.015038721026994938006,
208 0.014090941772314860916, 0.013128229566961572637,
210 0.012151604671088319635, 0.011162102099838498591,
211 0.010160770535008415758, 0.009148671230783386633,
212 0.008126876925698759217, 0.007096470791153865269,
214 0.006058545504235961683, 0.005014202742927517693,
215 0.003964554338444686674, 0.002910731817934946408,
216 0.001853960788946921732, 0.000796792065552012429
218 G4double xMean = 0.5 * (a + b), xDiff = 0.5 * (b - a), integral = 0.0,
220 for(
G4int i = 0; i < 48; ++i)
222 dx = xDiff * abscissa[i];
225 return integral *= xDiff;
G4double(* function)(G4double)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
G4double Integral(G4double a, G4double b) const
G4double QuickIntegral(G4double a, G4double b) const
G4GaussLegendreQ(function pFunction)
G4double AccurateIntegral(G4double a, G4double b) const