GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::expm1,std::expm1f,std::expm1l(3) C++ Standard Libary std::expm1,std::expm1f,std::expm1l(3)

std::expm1,std::expm1f,std::expm1l - std::expm1,std::expm1f,std::expm1l


Defined in header <cmath>
float expm1 ( float arg ); (1) (since C++11)
float expm1f( float arg );
double expm1 ( double arg ); (2) (since C++11)
long double expm1 ( long double arg ); (3) (since C++11)
long double expm1l( long double arg );
double expm1 ( IntegralType arg ); (4) (since C++11)


1-3) Computes the e (Euler's number, 2.7182818) raised to the given power arg, minus
1.0. This function is more accurate than the expression std::exp(arg)-1.0 if arg is
close to zero.
4) A set of overloads or a function template accepting an argument of any integral
type. Equivalent to (2) (the argument is cast to double).


arg - value of floating-point or Integral type


If no errors occur earg
-1 is returned.


If a range error due to overflow occurs, +HUGE_VAL, +HUGE_VALF, or +HUGE_VALL is
returned.


If a range error occurs due to underflow, the correct result (after rounding) is
returned.


Errors are reported as specified in math_errhandling.


If the implementation supports IEEE floating-point arithmetic (IEC 60559),


* If the argument is ±0, it is returned, unmodified
* If the argument is -∞, -1 is returned
* If the argument is +∞, +∞ is returned
* If the argument is NaN, NaN is returned


The functions std::expm1 and std::log1p are useful for financial calculations, for
example, when calculating small daily interest rates: (1+x)n
-1 can be expressed as std::expm1(n * std::log1p(x)). These functions also simplify
writing accurate inverse hyperbolic functions.


For IEEE-compatible type double, overflow is guaranteed if 709.8 < arg

// Run this code


#include <iostream>
#include <cmath>
#include <cerrno>
#include <cstring>
#include <cfenv>
// #pragma STDC FENV_ACCESS ON
int main()
{
std::cout << "expm1(1) = " << std::expm1(1) << '\n'
<< "Interest earned in 2 days on on $100, compounded daily at 1%\n"
<< " on a 30/360 calendar = "
<< 100*std::expm1(2*std::log1p(0.01/360)) << '\n'
<< "exp(1e-16)-1 = " << std::exp(1e-16)-1
<< ", but expm1(1e-16) = " << std::expm1(1e-16) << '\n';
// special values
std::cout << "expm1(-0) = " << std::expm1(-0.0) << '\n'
<< "expm1(-Inf) = " << std::expm1(-INFINITY) << '\n';
// error handling
errno = 0;
std::feclearexcept(FE_ALL_EXCEPT);
std::cout << "expm1(710) = " << std::expm1(710) << '\n';
if (errno == ERANGE)
std::cout << " errno == ERANGE: " << std::strerror(errno) << '\n';
if (std::fetestexcept(FE_OVERFLOW))
std::cout << " FE_OVERFLOW raised\n";
}


expm1(1) = 1.71828
Interest earned in 2 days on on $100, compounded daily at 1%
on a 30/360 calendar = 0.00555563
exp(1e-16)-1 = 0 expm1(1e-16) = 1e-16
expm1(-0) = -0
expm1(-Inf) = -1
expm1(710) = inf
errno == ERANGE: Result too large
FE_OVERFLOW raised


exp
expf returns e raised to the given power (\({\small e^x}\)e^x)
expl (function)
(C++11)
(C++11)
exp2
exp2f
exp2l returns 2 raised to the given power (\({\small 2^x}\)2^x)
(C++11) (function)
(C++11)
(C++11)
log1p
log1pf natural logarithm (to base e) of 1 plus the given number (\({\small
log1pl \ln{(1+x)} }\)ln(1+x))
(C++11) (function)
(C++11)
(C++11)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.