std::log, std::logf, std::logl
Определено в заголовочном файле <cmath> | ||
|---|---|---|
float log ( float num ); double log ( double num ); long double log ( long double num ); | (1) | (до C++23) |
/*floating-point-type*/
log ( /*floating-point-type*/ num );
|
(начиная с C++23) (constexpr начиная с C++26) | |
float logf( float num ); | (2) |
(начиная с C++11) (constexpr начиная с C++26) |
long double logl( long double num ); | (3) |
(начиная с C++11) (constexpr начиная с C++26) |
| Перегрузка SIMD (начиная с C++26) | ||
Определено в заголовочном файле <simd> | ||
template< /*math-floating-point*/ V >
constexpr /*deduced-simd-t*/<V>
log ( const V& v_num );
| (S) | (начиная с C++26) |
| Дополнительные перегрузки (начиная с C++11) | ||
Определено в заголовочном файле <cmath> | ||
template< class Integer > double log ( Integer num ); | (A) | (constexpr начиная с C++26) |
num. Библиотека предоставляет перегрузки std::log для всех типов с плавающей точкой без квалификаторов cv в качестве типа параметра.(начиная с C++23)
S) Перегрузка SIMD выполняет поэлементное std::log над v_num. (Определения см. в разделах math-floating-point и deduced-simd-t.) | (начиная с C++26) |
| A) Предоставляются дополнительные перегрузки для всех целочисленных типов, которые рассматриваются как double. | (начиная с C++11) |
Параметры
| num | - | значение с плавающей точкой или целочисленное значение |
Возвращаемое значение
Если ошибки не возникают, возвращается натуральный логарифм (по основанию e) от num (ln(num) или loge(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::log(num) и std::log(static_cast<double>(num)).
Пример
#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";
}
Возможный вывод:
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
См. также
|
(C++11)(C++11) | вычисляет десятичный логарифм (по основанию 10) (\({\small\log_{10}{x}}\)log10(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)) (функция) |
|
(C++11)(C++11) | возвращает e в степени заданного числа (\({\small e^x}\)ex) (функция) |
| комплексный натуральный логарифм с разрезами вдоль отрицательной вещественной оси (шаблон функции) |
|
применяет функцию std::log к каждому элементу valarray (шаблон функции) |
|
Документация по C для log |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/math/log