std::expint...std::expintl(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’… NAME πŸ’…

okay bestie, welcome to the std::expint...std::expintl(3) page from the C++ Standard Libary β€” yes, that exact manual name, and we're talking about std::expint, std::expintf, and std::expintl 🫢

The name line is literally std::expint,std::expintf,std::expintl β€” and then it says std::expint,std::expintf,std::expintl again. iconic repetition, no notes πŸ’–


πŸ¦‹ Synopsis πŸ¦‹

Here's the signature lineup, copied exactly because we do not play with function signatures:

double      expint( double arg );

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

long double expintl( long double arg );
double      expint( IntegralType arg ); (2)
  1. Computes the exponential integral of arg.
  2. A set of overloads or a function template accepting an argument of any integral type. Equivalent to (1) after casting the argument to double.
and because this is a special function, there's a whole availability vibe check: as all special functions, expint is only guaranteed to be available in <cmath> if __STDCPP_MATH_SPEC_FUNCS__ is defined by the implementation to a value at least 201003L and if the user defines __STDCPP_WANT_MATH_SPEC_FUNCS__ before including any standard library headers. periodt.

πŸ“ Parameters πŸ“

  • arg β€” value of a floating-point or Integral type.

πŸ’– Return value πŸ’–

If no errors occur, the value of the exponential integral of arg, that is:

-∫∞
-arg

e^-t
t

dt

is returned. slay πŸ’…


πŸ’€ Error handling πŸ’€

Errors may be reported as specified in math_errhandling. The specific mood:

  • If the argument is NaN, NaN is returned and domain error is not reported.
  • If the argument is Β±0, -∞ is returned.

🧚 Notes 🧚

  • Implementations that do not support TR 29124 but support TR 19768 provide this function in the header tr1/cmath and namespace std::tr1.
  • An implementation of this function is also available in boost.math.

🌸 Example 🌸

(works as shown with gcc 6.0)

// Run this code

#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';
}

πŸ’» Output πŸ’»

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

Weisstein, Eric W. "Exponential Integral." From MathWorld--A Wolfram Web Resource.


mwah πŸ’‹ β€” source/version: http://cppreference.com; date: 2024.06.10; manual: std::expint...std::expintl(3). bye bestie, go compute that exponential integral ✨

πŸ“¦ where this page comes from