Spec-Zone.ru › C++

std::log10, std::log10f, std::log10l

Определено в заголовке <cmath>
(1)
float       log10 ( float num );
double      log10 ( double num );
long double log10 ( long double num );
(до C++23)
/* floating-point-type */
            log10 ( /* floating-point-type */ num );
(с C++23)
(constexpr с C++26)
float       log10f( float num );
(2) (с C++11)
(constexpr с C++26)
long double log10l( long double num );
(3) (с C++11)
(constexpr с C++26)
Дополнительные перегрузки (с C++11)
Определено в заголовке <cmath>
template< class Integer >
double      log10 ( Integer num );
(A) (constexpr с C++26)
1-3) Вычисляет общий (логарифм по основанию 10) логарифм num. Библиотека предоставляет перегрузки std::log10 для всех типов с плавающей точкой без квалификаторов cv, как тип параметра.(с C++23)
A) Дополнительные перегрузки предоставляются для всех целочисленных типов, которые рассматриваются как double. (с C++11)

Параметры

num - значение с плавающей точкой или целое число

Значение результата

Если ошибки не возникло, возвращается общий (логарифм по основанию 10) логарифм num (log10(num) или lg(num)).

Если возникает ошибка области определения, возвращается определённое реализацией значение (NaN при поддержке).

Если возникает ошибка полюса, возвращается -HUGE_VAL, -HUGE_VALF, или -HUGE_VALL.

Обработка ошибок

Ошибки сообщаются, как указано в math_errhandling.

Ошибка области определения возникает, если num меньше нуля.

Ошибка полюса может возникнуть, если num равно нулю.

Если реализация поддерживает арифметику с плавающей точкой IEEE (IEC 60559),

  • Если аргумент равен ±0, возвращается -∞ и FE_DIVBYZERO поднимается.
  • Если аргумент равен 1, возвращается +0.
  • Если аргумент отрицательный, возвращается NaN и FE_INVALID поднимается.
  • Если аргумент равен +∞, возвращается +∞.
  • Если аргумент равен NaN, возвращается NaN.

Примечания

Дополнительные перегрузки не обязаны быть предоставлены точно как (A). Они должны лишь быть достаточными, чтобы для аргумента num целочисленного типа std::log10(num) действовал так же, как и std::log10(static_cast<double>(num)).

Пример

#include <cerrno>
#include <cfenv>
#include <cmath>
#include <cstring>
#include <iostream>
// #pragma STDC FENV_ACCESS ON
 
int main()
{
    std::cout << "log10(1000) = " << std::log10(1000) << '\n'
              << "log10(0.001) = " << std::log10(0.001) << '\n'
              << "base-5 logarithm of 125 = "
              << std::log10(125) / std::log10(5) << '\n';
 
    // special values
    std::cout << "log10(1) = " << std::log10(1) << '\n'
              << "log10(+Inf) = " << std::log10(INFINITY) << '\n';
 
    // error handling
    errno = 0;
    std::feclearexcept(FE_ALL_EXCEPT);
 
    std::cout << "log10(0) = " << std::log10(0) << '\n';
 
    if (errno == ERANGE)
        std::cout << "    errno == ERANGE: " << std::strerror(errno) << '\n';
    if (std::fetestexcept(FE_DIVBYZERO))
        std::cout << "    FE_DIVBYZERO raised\n";
}

Возможный вывод:

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

См. также

loglogflogl
(C++11)(C++11)
вычисляет натуральный (по основанию e) логарифм (\({\small\ln{x}}\)ln(x))
(функция)
log2log2flog2l
(C++11)(C++11)(C++11)
логарифм по основанию 2 заданного числа (\({\small\log_{2}{x}}\)log2(x))
(функция)
log1plog1pflog1pl
(C++11)(C++11)(C++11)
натуральный логарифм (по основанию e) от 1 плюс заданное число (\({\small\ln{(1+x)}}\)ln(1+x))
(функция)
log10(std::complex)
комплексный общий логарифм с разрывами ветвей вдоль отрицательной действительной оси
(функция-шаблон)
log10(std::valarray)
применяет функцию std::log10 к каждому элементу valarray
(функция-шаблон)
C документация для log10

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/math/log10

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API