Spec-Zone.ru › C

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

См. также

loglogflogl
(C99)(C99)
вычисляет натуральный логарифм (по основанию e) (\({\small \ln{x} }\)ln(x))
(функция)
log2log2flog2l
(C99)(C99)(C99)
вычисляет логарифм по основанию 2 (\({\small \log_{2}{x} }\)log2(x))
(функция)
log1plog1pflog1pl
(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

Spec-Zone.ru

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