Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      log1p, log1pf, log1pl

      From cppreference.com
      <c‎ |numeric‎ |math
       
       
       
      Common mathematical functions
      Functions
      Basic operations
      (C99)
      (C99)
      (C99)
      (C99)(C99)(C99)(C23)
      Maximum/minimum operations
      (C99)
      (C99)
      Exponential functions
      (C23)
      (C99)
      (C99)
      (C23)
      (C23)

      (C99)
      log1plogp1
      (C99)(C23)
      (C23)
      (C23)
      Power functions
      (C99)
      (C23)
      (C23)

      (C99)
      (C23)
      (C23)
      Trigonometric and hyperbolic functions
      (C23)
      (C23)
      (C23)
      (C23)
      (C99)
      (C99)
      (C99)
      Nearest integer floating-point
      (C99)(C99)(C99)
      (C23)(C23)(C23)(C23)
      Floating-point manipulation
      (C99)(C99)
      (C99)(C23)
      (C99)
      Narrowing operations
      (C23)
      (C23)
      (C23)
      (C23)
      (C23)
      (C23)
      Quantum and quantum exponent
      Decimal re-encoding functions
      Total order and payload functions
      Classification
      Error and gamma functions
      (C99)
      (C99)
      (C99)
      (C99)
      Types
      Macro constants
      Special floating-point values
      (C99)(C23)
      Arguments and return values
      Error handling
      Fast operation indicators
       
      Defined in header<math.h>
      float       log1pf(float arg);
      (1)(since C99)
      double      log1p(double arg);
      (2)(since C99)
      longdouble log1pl(longdouble arg);
      (3)(since C99)
      Defined in header<tgmath.h>
      #define log1p( arg )
      (4)(since C99)
      1-3) Computes the natural (basee) logarithm of1+ arg. This function is more precise than the expressionlog(1+ arg) ifarg is close to zero.
      4) Type-generic macro: Ifarg has typelongdouble,log1pl is called. Otherwise, ifarg has integer type or the typedouble,log1p is called. Otherwise,log1pf is called.

      Contents

      [edit]Parameters

      arg - floating-point value

      [edit]Return value

      If no errors occurln(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.

      [edit]Error handling

      Errors are reported as specified inmath_errhandling.

      Domain error occurs ifarg is less than-1.

      Pole error may occur ifarg 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 andFE_DIVBYZERO is raised.
      • If the argument is less than -1, NaN is returned andFE_INVALID is raised.
      • If the argument is +∞, +∞ is returned.
      • If the argument is NaN, NaN is returned.

      [edit]Notes

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

      [edit]Example

      Run this code
      #include <errno.h>#include <fenv.h>#include <float.h>#include <math.h>#include <stdio.h>// #pragma STDC FENV_ACCESS ON int main(void){printf("log1p(0) = %f\n", log1p(0));printf("Interest earned in 2 days on $100, compounded daily at 1%%\n"" on a 30/360 calendar = %f\n",100*expm1(2*log1p(0.01/360)));printf("log(1+1e-16) = %g, but log1p(1e-16) = %g\n",log(1+1e-16), log1p(1e-16)); // special valuesprintf("log1p(-0) = %f\n", log1p(-0.0));printf("log1p(+Inf) = %f\n", log1p(INFINITY)); // error handlingerrno=0;feclearexcept(FE_ALL_EXCEPT);printf("log1p(-1) = %f\n", log1p(-1));if(errno==ERANGE)perror("    errno == ERANGE");if(fetestexcept(FE_DIVBYZERO))puts("    FE_DIVBYZERO raised");}

      Possible output:

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

      [edit]References

      • C23 standard (ISO/IEC 9899:2024):
      • 7.12.6.9 The log1p functions (p: TBD)
      • 7.25 Type-generic math <tgmath.h> (p: TBD)
      • F.10.3.9 The log1p functions (p: TBD)
      • C17 standard (ISO/IEC 9899:2018):
      • 7.12.6.9 The log1p functions (p: TBD)
      • 7.25 Type-generic math <tgmath.h> (p: TBD)
      • F.10.3.9 The log1p functions (p: TBD)
      • C11 standard (ISO/IEC 9899:2011):
      • 7.12.6.9 The log1p functions (p: 245)
      • 7.25 Type-generic math <tgmath.h> (p: 373-375)
      • F.10.3.9 The log1p functions (p: 522)
      • C99 standard (ISO/IEC 9899:1999):
      • 7.12.6.9 The log1p functions (p: 226)
      • 7.22 Type-generic math <tgmath.h> (p: 335-337)
      • F.9.3.9 The log1p functions (p: 459)

      [edit]See also

      (C99)(C99)
      computes natural (base-e) logarithm (\({\small \ln{x} }\)ln(x))
      (function)[edit]
      computes common (base-10) logarithm (\({\small \log_{10}{x} }\)log10(x))
      (function)[edit]
      (C99)(C99)(C99)
      computes base-2 logarithm (\({\small \log_{2}{x} }\)log2(x))
      (function)[edit]
      (C99)(C99)(C99)
      computese raised to the given power, minus one (\({\small e^x-1}\)ex-1)
      (function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/numeric/math/log1p&oldid=172045"

      [8]ページ先頭

      ©2009-2025 Movatter.jp