11 #if defined __cplusplus 
   20 #define EULER 0.57721566490153286    
   22 #define FPMIN 1.0e-300               
   31     double a, 
b, 
c, d, del, fact, h, psi;
 
   39     if( ( n < 0 ) || ( x < 0.0 ) || ( ( x == 0.0 ) && ( ( n == 0 ) || ( n == 1 ) ) ) ) {
 
   51             for( i = 1; i <= 
MAXIT; i++ ) {
 
   54                 d = 1.0 / ( a * d + 
b );            
 
   58                 if( fabs( del - 1.0 ) < 
EPS ) 
return( h * 
G4Exp( -x ) );
 
   62             ans = ( nm1 != 0 ) ? 1.0 / nm1 : -
G4Log(x) - 
EULER;   
 
   64             for( i = 1; i <= 
MAXIT; i++ ) {
 
   67                     del = -fact / ( i - nm1 ); }
 
   70                     for( ii = 1; ii <= nm1; ii++ ) psi += 1.0 / ii;
 
   71                     del = fact * ( -
G4Log( x ) + psi );
 
   74                 if( fabs( del ) < fabs( ans ) * 
EPS ) 
return( ans );
 
   82 #if defined __cplusplus 
std::vector< ExP01TrackerHit * > a
 
enum nfu_status_e nfu_status
 
G4double G4Log(G4double x)
 
G4double G4Exp(G4double initial_x)
Exponential Function double precision. 
 
double nf_exponentialIntegral(int n, double x, nfu_status *status)