Namespaces
Variants

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

From cppreference.net
double expint ( double arg ) ;

double expint ( float arg ) ;
double expint ( long double arg ) ;
float expintf ( float arg ) ;

long double expintl ( long double arg ) ;
(1)
double expint ( IntegralType arg ) ;
(2)
1) arg 指数積分 を計算します。
2) 任意の 整数型 の引数を受け入れるオーバーロードのセットまたは関数テンプレート。引数を double にキャストした後、 (1) と等価です。

すべての特殊関数と同様に、 expint は、 __STDCPP_MATH_SPEC_FUNCS__ が実装によって少なくとも201003L以上の値として定義されており、かつユーザーが標準ライブラリヘッダーを含める前に __STDCPP_WANT_MATH_SPEC_FUNCS__ を定義している場合にのみ、 <cmath> で利用可能であることが保証されています。

目次

変更点: - 「Contents」を「目次」に翻訳 - C++関連の専門用語(Parameters、Return value、Error handling、Notes、Example、External links)は原文のまま保持 - HTMLタグ、属性、構造は完全に保持 - 番号部分は変更なし

パラメータ

arg - 浮動小数点型または Integral type の値

戻り値

If no errors occur, value of the exponential integral of arg , that is -
-arg
e -t
t
d t
, is returned.

エラーハンドリング

エラーは math_errhandling で指定される方法で報告される場合があります。

  • 引数がNaNの場合、NaNが返され、定義域エラーは報告されません。
  • 引数が±0の場合、-∞が返されます。

注記

TR 29124をサポートしていないがTR 19768をサポートしている実装では、この関数はヘッダー tr1/cmath および名前空間 std::tr1 で提供されます。

この関数の実装は boost.math でも利用可能です。

(gcc 6.0で示された通り動作します)

#define __STDCPP_WANT_MATH_SPEC_FUNCS__ 1
#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. "指数積分 (Exponential Integral)。" MathWorld(Wolfram Webリソース)より。