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 <stdio.h>
#include <math.h>
#include <float.h>
#include <errno.h>
#include <fenv.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

Справочные материалы

  • Стандарт 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) от 1 плюс заданное число (\({\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/w/c/numeric/math/log10

Spec-Zone.ru

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