std::exp,st...f,std::expl(3)
π std::exp, std::expf, std::expl π
Okay bestie, this is the std::exp,st...f,std::expl(3) page from the C++ Standard Libary (their spelling, not mine π
). Itβs all about the exponential function, and yes, itβs giving math-girlie main character energy. β¨
π NAME π
std::exp,std::expf,std::expl - std::exp,std::expf,std::expl
πΈ Synopsis πΈ
So the original synopsis is a little feral with the line wraps, but every signature, label, and version tag is right here, bestie. π«Ά
Defined in header <cmath>
float exp ( float num );
double exp ( double num ); (until C++23)
long double exp ( long double num );
/* floating-point-type */ (since C++23)
exp ( /* floating-point-type */ num ); (constexpr since C++26)
float expf( float num ); (1) (2) (since C++11)
(constexpr since C++26)
long double expl( long double num ); (3) (since C++11)
(constexpr since C++26)
Additional overloads (since C++11)
Defined in header <cmath>
template< class Integer > (A) (constexpr since C++26)
double exp ( Integer num );
1-3) Computes e (Euler's number, 2.7182818...) raised to the given power num. π§
Since C++23, the library provides overloads of std::exp for all cv-unqualified floating-point types as the type of the parameter. β¨
A) Additional overloads are provided for all integer types, which are treated as double. (since C++11) π
π Parameters π
numβ floating-point or integer value.
π₯ Return value π₯
If no errors occur, the base-e exponential of num (thatβs e^num, periodt) is returned. π
If a range error occurs due to overflow, +HUGE_VAL, +HUGE_VALF, or +HUGE_VALL is returned. π
If a range error occurs due to underflow, the correct result (after rounding) is returned. π
π Error handling π
Errors are reported as specified in math_errhandling. π«Ά
If the implementation supports IEEE floating-point arithmetic (IEC 60559), then:
- If the argument is Β±0,
1is returned. - If the argument is -β,
+0is returned. - If the argument is +β,
+βis returned. - If the argument is
NaN,NaNis returned.
π¦ Notes π¦
For IEEE-compatible type double, overflow is guaranteed if 709.8 < num, and underflow is guaranteed if num < -708.4. π₯
The additional overloads are not required to be provided exactly as (A). They only need to be sufficient to ensure that for their argument num of integer type, std::exp(num) has the same effect as std::exp(static_cast<double>(num)). π
π Example π
// Run this code β yes bestie, run it. πββοΈπ¨
// Run this code
#include <cerrno>
#include <cfenv>
#include <cmath>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <numbers>
// #pragma STDC FENV_ACCESS ON
consteval double approx_e()
{
long double e{1.0};
for (auto fac{1ull}, n{1llu}; n != 18; ++n, fac *= n)
e += 1.0 / fac;
return e;
}
int main()
{
std::cout << std::setprecision(16)
<< "exp(1) = eΒΉ = " << std::exp(1) << '\n'
<< "numbers::e = " << std::numbers::e << '\n'
<< "approx_e = " << approx_e() << '\n'
<< "FV of $100, continuously compounded at 3% for 1 year = "
<< std::setprecision(6) << 100 * std::exp(0.03) << '\n';
// special values
std::cout << "exp(-0) = " << std::exp(-0.0) << '\n'
<< "exp(-Inf) = " << std::exp(-INFINITY) << '\n';
// error handling
errno = 0;
std::feclearexcept(FE_ALL_EXCEPT);
std::cout << "exp(710) = " << std::exp(710) << '\n';
if (errno == ERANGE)
std::cout << " errno == ERANGE: " << std::strerror(errno) << '\n';
if (std::fetestexcept(FE_OVERFLOW))
std::cout << " FE_OVERFLOW raised\n";
}
β¨ Possible output β¨
exp(1) = eΒΉ = 2.718281828459045
numbers::e = 2.718281828459045
approx_e = 2.718281828459045
FV of $100, continuously compounded at 3% for 1 year = 103.045
exp(-0) = 1
exp(-Inf) = 0
exp(710) = inf
errno == ERANGE: Numerical result out of range
FE_OVERFLOW raised
π See also π
exp2,exp2f,exp2lβ returns 2 raised to the given power (2^x);(function);(C++11)(C++11)(C++11).expm1,expm1f,expm1lβ returns e raised to the given power, minus one (e^x-1);(function);(C++11)(C++11)(C++11).log,logf,loglβ computes natural (base e) logarithm (ln(x));(function);(C++11)(C++11).exp(std::complex)β complex base e exponential;(function template).exp(std::valarray)β applies the functionstd::expto each element of valarray;(function template).- C documentation for
exp.
Source/version/date tea: http://cppreference.com, version 2024.06.10, page std::exp,st...f,std::expl(3) β byeee bestie, go exponentiate something iconic ππ«Άπ
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms