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

来自cppreference.com
 
 
数值库
常用数学函数
数学特殊函数 (C++17)
数学常数 (C++20)
浮点环境 (C++11)
复数
数值数组
伪随机数生成
编译时有理数算术 (C++11)
数值算法
(C++17)
(C++17)
插值
(C++20)
(C++20)
通用数值运算
(C++11)
位操作
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
 
 
定义于头文件 <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 。