The EXPINT function returns the value of the exponential integral En(x).

EXPINT is based on the routine expint described in section 6.3 of Numerical Recipes in C: The Art of Scientific Computing (Second Edition), published by Cambridge University Press, and is used by permission.


To compute the value of the exponential integral at the following X values:

; Define the parametric X values:
X = [1.00, 1.05, 1.27, 1.34, 1.38, 1.50]
; Compute the exponential integral of order 1:
result = EXPINT(1, X)
; Print the result:
PRINT, result

IDL prints:

  0.219384 0.201873 0.141911 0.127354 0.119803 0.100020

This is the exact solution vector to six-decimal accuracy.


Result = EXPINT( N, X [, /DOUBLE] [, EPS=value] [, ITER=variable] [, ITMAX=value] )

Return Value

Returns the exponential integral En(x).



An integer specifying the order of En(x). N can be either a scalar or an array.

Note: If EXPINT is complex then only the real part is used for the computation.


The value at which En(x) is evaluated. X can be either a scalar or an array.

Note: If an array is specified for both N and X, then EXPINT evaluates En(x) for each Ni and Xi. If either N or X is a scalar and the other an array, the scalar is paired with each array element in turn.



Set this keyword to force the computation to be done in double-precision arithmetic. Set this keyword to zero to return a single-precision result.

Note: All internal computations are done using double-precision arithmetic.


Use this keyword to specify a number close to the desired relative error. The default value is 3.0 x 10-12.


Set this keyword equal to a named variable that will contain the actual number of iterations performed.


An input integer specifying the maximum allowed number of iterations. The default value is 100000.

Thread Pool Keywords

This routine is written to make use of IDL’s thread pool, which can increase execution speed on systems with multiple CPUs. The values stored in the !CPU system variable control whether IDL uses the thread pool for a given computation. In addition, you can use the thread pool keywords TPOOL_MAX_ELTS, TPOOL_MIN_ELTS, and TPOOL_NOTHREAD to override the defaults established by !CPU for a single invocation of this routine. See Thread Pool Keywords for details.

Version History




Added ITER keyword

See Also