Spec-Zone.ru › C++

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

Определено в заголовочном файле <cmath>
float       log10 ( float num );
double      log10 ( double num );
long double log10 ( long double num );
(1) (до 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)
Перегрузка SIMD (начиная с C++26)
Определено в заголовочном файле <simd>
template< /*math-floating-point*/ V >
constexpr /*deduced-simd-t*/<V> 
            log10 ( const V& v_num );
(S) (начиная с 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)
S) Перегрузка SIMD выполняет поэлементное вычисление std::log10 над v_num. (Определения см. в разделах math-floating-point и deduced-simd-t.) (начиная с C++26)
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) числа, равного единице плюс заданное число (\({\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/cpp/numeric/math/log10

Spec-Zone.ru

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