# std::expint, std::expintf, std::expintl

< cpp‎ | numeric‎ | special functions

定义于头文件 `<cmath>` |  |
double expint( double arg ); float expint( float arg ); long double expint( long double arg ); float expintf( float arg ); long double expintl( long double arg ); | (1) | (C++17 起)
double expint( IntegralType arg ); | (2) | (C++17 起)

1) 计算 `arg` 的指数积分。
2) 接受任意整数类型参数的重载集或函数模板。等价于将参数转型到 double 后的 (1) 。

### 参数

arg | - | 浮点或整数类型的值

### 返回值

若不发生错误，则返回 `arg` 的指数积分的值，即 -∫∞
-arg

e-t
t

dt 。

### 错误处理

可能报告 `math_errhandling` 中指定的错误。

- 若参数是 NaN ，则返回 NaN 且不报告定义域错误
- 若参数是 ±0 ，则返回 -∞

### 注解

不支持 C++17 ，但支持 ISO 29124:2010 的实现会提供此函数，若实现定义了 `__STDCPP_MATH_SPEC_FUNCS__` 为至少 201003L 的值，且用户在包含任何标准库头文件前定义了 `__STDCPP_WANT_MATH_SPEC_FUNCS__` 。

不支持 ISO 29124:2010 但支持 TR 19768:2007 (TR1) 的实现，在头文件 `tr1/cmath` 及命名空间 `std::tr1` 中提供此函数。

此函数的一种实现亦可用于 boost.math

### 示例

    #include <cmath>
    #include <iostream>
    int main()
    {
        std::cout << "Ei(0) = " << std::expint(0) << '\n'
                  << "Ei(1) = " << std::expint(1) << '\n'
                  << "Gompetz constant = " << -std::exp(1)*std::expint(-1) << '\n';
    }

输出：

    Ei(0) = -inf
    Ei(1) = 1.89512
    Gompetz constant = 0.596347

### 外部链接

Weisstein, Eric W. “指数积分”来自 MathWorld--A Wolfram Web Resource 。