42 const G4int maxNumber = 12 ;
46 G4double newton1=0.0, temp1=0.0, temp2=0.0, temp3=0.0, temp=0.0 ;
57 newton0 = std::sqrt((
G4double)(2*nHermite + 1)) -
58 1.85575001*std::pow((
G4double)(2*nHermite + 1),-0.16666999) ;
62 newton0 -= 1.14001*std::pow((
G4double)nHermite,0.425999)/newton0 ;
66 newton0 = 1.86002*newton0 - 0.86002*
fAbscissa[0] ;
70 newton0 = 1.91001*newton0 - 0.91001*
fAbscissa[1] ;
74 newton0 = 2.0*newton0 -
fAbscissa[i - 3] ;
76 for(k=1;k<=maxNumber;k++)
80 for(j=1;j<=nHermite;j++)
84 temp1 = newton0*std::sqrt(2.0/j)*temp2
85 - std::sqrt(((
G4double)(j - 1))/j)*temp3 ;
87 temp = std::sqrt((
G4double)2*nHermite)*temp2 ;
89 newton0 = newton1 - temp1/temp ;
90 if(std::fabs(newton0 - newton1) <= tolerance)
99 "Too many iterations in Gauss-Hermite constructor.") ;
102 fWeight[i-1] = 2.0/(temp*temp) ;
static const G4float tolerance
G4double Integral() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4GaussHermiteQ(function pFunction, G4int nHermite)