Go to the source code of this file.
|
#define | EULER 0.57721566490153286 /* Euler's constant gamma */ |
|
#define | MAXIT 100 /* Maximum allowed number of iterations. */ |
|
#define | FPMIN 1.0e-300 /* close to the smallest representable floting-point number. */ |
|
#define | EPS 1.0e-15 /* Desired relative error, not smaller than the machine precision. */ |
|
#define EPS 1.0e-15 /* Desired relative error, not smaller than the machine precision. */ |
#define EULER 0.57721566490153286 /* Euler's constant gamma */ |
#define FPMIN 1.0e-300 /* close to the smallest representable floting-point number. */ |
#define MAXIT 100 /* Maximum allowed number of iterations. */ |
double nf_exponentialIntegral |
( |
int |
n, |
|
|
double |
x, |
|
|
nfu_status * |
status |
|
) |
| |
Definition at line 28 of file nf_exponentialIntegral.cc.
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 ) );
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 );
std::vector< ExP01TrackerHit * > a
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.