log10, log10f, log10l
Определено в заголовочном файле <math.h> | ||
|---|---|---|
float log10f( float arg ); | (1) | (начиная с C99) |
double log10( double arg ); | (2) | |
long double log10l( long double arg ); | (3) | (начиная с C99) |
Определено в заголовочном файле <tgmath.h> | ||
#define log10( arg ) | (4) | (начиная с C99) |
1-3) Вычисляет десятичный логарифм (по основанию 10) числа
arg.
4) Обобщённый по типу макрос: если
arg имеет тип long double, вызывается log10l. В противном случае, если arg имеет целочисленный тип или тип double, вызывается log10. В противном случае вызывается log10f.Параметры
| arg | - | значение с плавающей точкой |
Возвращаемое значение
Если ошибок не возникает, возвращается десятичный логарифм (по основанию 10) числа arg (log10(arg) или lg(arg)).
При возникновении ошибки области определения возвращается значение, определяемое реализацией (NaN, если поддерживается).
При возникновении ошибки полюса возвращается -HUGE_VAL, -HUGE_VALF или -HUGE_VALL.
Обработка ошибок
Об ошибках сообщается согласно спецификации в math_errhandling.
Ошибка области определения возникает, если arg меньше нуля.
Ошибка полюса может возникнуть, если arg равно нулю.
Если реализация поддерживает арифметику с плавающей точкой IEEE (IEC 60559),
- Если аргумент равен ±0, возвращается -∞ и возникает исключение
FE_DIVBYZERO. - Если аргумент равен 1, возвращается +0.
- Если аргумент отрицательный, возвращается NaN и возникает исключение
FE_INVALID. - Если аргумент равен +∞, возвращается +∞.
- Если аргумент равен NaN, возвращается NaN.
Пример
#include <errno.h>
#include <fenv.h>
#include <float.h>
#include <math.h>
#include <stdio.h>
// #pragma STDC FENV_ACCESS ON
int main(void)
{
printf("log10(1000) = %f\n", log10(1000));
printf("log10(0.001) = %f\n", log10(0.001));
printf("base-5 logarithm of 125 = %f\n", log10(125) / log10(5));
// special values
printf("log10(1) = %f\n", log10(1));
printf("log10(+Inf) = %f\n", log10(INFINITY));
// error handling
errno = 0; feclearexcept(FE_ALL_EXCEPT);
printf("log10(0) = %f\n", log10(0));
if (errno == ERANGE)
perror(" errno == ERANGE");
if (fetestexcept(FE_DIVBYZERO))
puts(" FE_DIVBYZERO raised");
}
Возможный вывод:
log10(1000) = 3.000000
log10(0.001) = -3.000000
base-5 logarithm of 125 = 3.000000
log10(1) = 0.000000
log10(+Inf) = inf
log10(0) = -inf
errno == ERANGE: Numerical result out of range
FE_DIVBYZERO raised
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
- 7.12.6.8 Функции log10 (стр.: TBD)
- 7.25 Обобщённая по типу математика <tgmath.h> (стр.: TBD)
- F.10.3.8 Функции log10 (стр.: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.12.6.8 Функции log10 (стр.: 179)
- 7.25 Обобщённая по типу математика <tgmath.h> (стр.: 272-273)
- F.10.3.8 Функции log10 (стр.: 380)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.12.6.8 Функции log10 (стр.: 245)
- 7.25 Обобщённая по типу математика <tgmath.h> (стр.: 373-375)
- F.10.3.8 Функции log10 (стр.: 522)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.12.6.8 Функции log10 (стр.: 225-226)
- 7.22 Обобщённая по типу математика <tgmath.h> (стр.: 335-337)
- F.9.3.8 Функции log10 (стр.: 459)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 4.5.4.5 Функция log10
См. также
|
(C99)(C99) | вычисляет натуральный логарифм (по основанию e) (\({\small \ln{x} }\)ln(x)) (функция) |
|
(C99)(C99)(C99) | вычисляет логарифм по основанию 2 (\({\small \log_{2}{x} }\)log2(x)) (функция) |
|
(C99)(C99)(C99) | вычисляет натуральный логарифм (по основанию e) суммы единицы и заданного числа (\({\small \ln{(1+x)} }\)ln(1+x)) (функция) |
Документация по C++ для log10 |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/numeric/math/log10