Skip to main content
`Ctrl`+`K`

# scipy.special.exp1

scipy.special.exp1(z, out=None) = <ufunc 'exp1'>

  Exponential integral E1.

  For complex \(z \ne 0\) the exponential integral can be defined as [1]

  \[E_1(z) = \int_z^\infty \frac{e^{-t}}{t} dt,\]

  where the path of the integral does not cross the negative real axis or pass through the origin.

  Parameters:
    z array_like

      Real or complex argument.

    out ndarray, optional

      Optional output array for the function results

  Returns:
    scalar or ndarray

      Values of the exponential integral E1

  See also

  `expi`

    exponential integral \(Ei\)

  `expn`

    generalization of \(E_1\)

  Notes

  For \(x > 0\) it is related to the exponential integral \(Ei\) (see `expi`) via the relation

  \[E_1(x) = -Ei(-x).\]

  Array API Standard Support

  `exp1` has experimental support for Python Array API Standard compatible backends in addition to NumPy. Please consider testing these features by setting an environment variable `SCIPY_ARRAY_API=1` and providing CuPy, PyTorch, JAX, or Dask arrays as array arguments. The following combinations of backend and device (or other capability) are supported.

  Library | CPU | GPU
  --- | --- | ---
  NumPy | ✅ | n/a
  CuPy | n/a | ✅
  PyTorch | ✅ | ⛔
  JAX | ✅ | ⛔
  Dask | ✅ | n/a

  See Support for the array API standard for more information.

  References

  [1]

  Digital Library of Mathematical Functions, 6.2.1 https://dlmf.nist.gov/6.2#E1

  Examples

      >>> import numpy as np
      >>> import scipy.special as sc

  It has a pole at 0.

      >>> sc.exp1(0)
      inf

  It has a branch cut on the negative real axis.

      >>> sc.exp1(-1)
      nan
      >>> sc.exp1(complex(-1, 0))
      (-1.8951178163559368-3.141592653589793j)
      >>> sc.exp1(complex(-1, -0.0))
      (-1.8951178163559368+3.141592653589793j)

  It approaches 0 along the positive real axis.

      >>> sc.exp1([1, 10, 100, 1000])
      array([2.19383934e-01, 4.15696893e-06, 3.68359776e-46, 0.00000000e+00])

  It is related to `expi`.

      >>> x = np.array([1, 2, 3, 4])
      >>> sc.exp1(x)
      array([0.21938393, 0.04890051, 0.01304838, 0.00377935])
      >>> -sc.expi(-x)
      array([0.21938393, 0.04890051, 0.01304838, 0.00377935])