std::log,st...f,std::logl(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

okay bestie, welcome to the std::log,st...f,std::logl(3) page from the C++ Standard Libary manual ✨ this one is all about the natural log function and its overload besties β€” no cap, it’s lowkey iconic.

πŸ’– NAME πŸ’–

std::log,std::logf,std::logl β€” std::log,std::logf,std::logl 🫢


🌈 SYNOPSIS 🌈

bestie, here’s the whole overload situation β€” yes, all of it, don’t skip, this is the main character energy of the page:

Defined in header <cmath>

float       log ( float num );

double      log ( double num );                            (until C++23)

long double log ( long double num );
/* floating-point-type */                                  (since C++23)
            log ( /* floating-point-type */ num );         (constexpr since C++26)

float       logf( float num );                     (1) (2) (since C++11)
                                                                   (constexpr since C++26)

long double logl( 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      log ( Integer num );
  • 1-3) Computes the natural (base e) logarithm of num. πŸ’…
  • The library provides overloads of std::log for all cv-unqualified floating-point types as the type of the parameter. (since C++23) ✨
  • 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 natural (base-e) logarithm of num (that’s ln(num) or log e(num)) is returned. slay. πŸ’–

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. πŸ’€


πŸ’€ ERROR HANDLING πŸ’€

Errors are reported as specified in math_errhandling.

Domain error occurs if num is less than zero.

Pole error may occur if num is zero.

If the implementation supports IEEE floating-point arithmetic (IEC 60559), here’s the tea:

  • If the argument is Β±0, -∞ is returned and FE_DIVBYZERO is raised.
  • If the argument is 1, +0 is returned.
  • If the argument is negative, NaN is returned and FE_INVALID is raised.
  • If the argument is +∞, +∞ is returned.
  • If the argument is NaN, NaN is returned.

πŸ“ NOTES πŸ“

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::log(num) has the same effect as std::log(static_cast<double>(num)). periodt. πŸ’…


πŸ§ͺ EXAMPLE πŸ§ͺ

okay this is the part where you actually run it β€” copy-paste era:

// Run this code

#include <cerrno>
#include <cfenv>
#include <cmath>
#include <cstring>
#include <iostream>
// #pragma STDC FENV_ACCESS ON

int main()
{
    std::cout << "log(1) = " << std::log(1) << '\n'
              << "base-5 logarithm of 125 = " << std::log(125) /
                 std::log(5) << '\n';

    // special values
    std::cout << "log(1) = " << std::log(1) << '\n'
              << "log(+Inf) = " << std::log(INFINITY) << '\n';

    // error handling
    errno = 0;
    std::feclearexcept(FE_ALL_EXCEPT);

    std::cout << "log(0) = " << std::log(0) << '\n';

    if (errno == ERANGE)
        std::cout << "    errno == ERANGE: " << std::strerror(errno) <<
                     '\n';
    if (std::fetestexcept(FE_DIVBYZERO))
        std::cout << "    FE_DIVBYZERO raised\n";
}

πŸ’» Possible output πŸ’»

log(1) = 0
base-5 logarithm of 125 = 3
log(1) = 0
log(+Inf) = inf
log(0) = -inf
    errno == ERANGE: Numerical result out of range
    FE_DIVBYZERO raised

πŸ‘€ SEE ALSO πŸ‘€

  • log10, log10f, log10l β€” computes common (base 10) logarithm; log10l is log[10](x). (C++11) (function) (C++11)
  • log2, log2f, log2l β€” base 2 logarithm of the given number; log2l is log[2](x). (C++11) (function) (C++11) (C++11)
  • log1p, log1pf, log1pl β€” natural logarithm (to base e) of 1 plus the given number; log1pl is ln(1+x). (C++11) (function) (C++11) (C++11)
  • exp, expf, expl β€” returns e raised to the given power (e^x). (function) (C++11) (C++11)
  • log(std::complex) β€” complex natural logarithm with the branch cuts along the negative real axis. (function template)
  • log(std::valarray) β€” applies the function std::log to each element of valarray. (function template)
  • C documentation for log

πŸ’– that’s the whole page, bestie! source: http://cppreference.com, version/date: 2024.06.10, page: std::log,st...f,std::logl(3) β€” mwah πŸŽ€βœ¨
πŸ“¦ where this page comes from