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::log1p,std::log1pf,std::log1pl(3) C++ Standard Libary std::log1p,std::log1pf,std::log1pl(3)

std::log1p,std::log1pf,std::log1pl - std::log1p,std::log1pf,std::log1pl


Defined in header <cmath>
float log1p ( float arg ); (1) (since C++11)
float log1pf( float arg );
double log1p ( double arg ); (2) (since C++11)
long double log1p ( long double arg ); (3) (since C++11)
long double log1pl( long double arg );
double log1p ( IntegralType arg ); (4) (since C++11)


1-3) Computes the natural (base e) logarithm of 1+arg. This function is more precise
than the expression std::log(1+arg) 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 ln(1+arg) is returned.


If a domain error occurs, an implementation-defined value is returned (NaN where
supported)


If a pole error 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.


Domain error occurs if arg is less than -1.


Pole error may occur if arg is -1.


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 and FE_DIVBYZERO is raised.
* If the argument is less than -1, NaN is returned and FE_INVALID is raised.
* 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.

// Run this code


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


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


log
logf computes natural (base e) logarithm (\({\small \ln{x} }\)ln(x))
logl (function)
(C++11)
(C++11)
log10
log10f computes common (base 10) logarithm (\({\small \log_{10}{x} }\)log[10](x))
log10l (function)
(C++11)
(C++11)
log2
log2f
log2l base 2 logarithm of the given number (\({\small \log_{2}{x} }\)log[2](x))
(C++11) (function)
(C++11)
(C++11)
expm1
expm1f
expm1l returns e raised to the given power, minus one (\({\small e^x-1}\)e^x-1)
(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.