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) |
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
См. также
|
(C++11)(C++11) | вычисляет натуральный логарифм (по основанию e) (\({\small\ln{x}}\)ln(x)) (функция) |
|
(C++11)(C++11)(C++11) | логарифм заданного числа по основанию 2 (\({\small\log_{2}{x}}\)log2(x)) (функция) |
|
(C++11)(C++11)(C++11) | натуральный логарифм (по основанию e) числа, равного единице плюс заданное число (\({\small\ln{(1+x)}}\)ln(1+x)) (функция) |
| комплексный десятичный логарифм с разрезами ветви вдоль отрицательной действительной оси (шаблон функции) |
|
применяет функцию 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