Added implementations of std::expint to cmath as specified in "29.9.5 Mathematical special functions [sf.cmath]" of the C++17 standard.
The implementation is based on Press, William H., et al. Numerical recipes 3rd edition: The art of scientific computing. Cambridge university press, 2007.
It is tested with a table of values generated by gcc-8.3.1 and boost-1.66.0 (confirmed with msvc-192027508 and boost-1.69.0) using boost::multiprecision::cpp_bin_float_oct (256bit float).
There are also tests for analytical bounds for large arguments and arguments close to the singularity.
And we also check the corner cases when +/- infinity or 0 is passed as an argument.
The implementation is inline for the same reason as mentioned in D60869.
Related revisions: