log, logf, logl
|
Definido en el encabezado
<math.h>
|
||
|
float
logf
(
float
arg
)
;
|
(1) | (desde C99) |
|
double
log
(
double
arg
)
;
|
(2) | |
|
long
double
logl
(
long
double
arg
)
;
|
(3) | (desde C99) |
|
Definido en el encabezado
<tgmath.h>
|
||
|
#define log( arg )
|
(4) | (desde C99) |
logl
es llamado. De lo contrario, si
arg
tiene tipo entero o el tipo
double
,
log
es llamado. De lo contrario,
logf
es llamado. Si
arg
es complejo o imaginario, entonces el macro invoca la función compleja correspondiente (
clogf
,
clog
,
clogl
).
Contenidos |
Parámetros
| arg | - | valor de punto flotante |
Valor de retorno
Si no ocurren errores, se devuelve el logaritmo natural (base- e ) de arg ( ln(arg) o log e (arg) ).
Si ocurre un error de dominio, se devuelve un valor definido por la implementación (NaN donde esté soportado).
Si ocurre un error de polo,
-HUGE_VAL
,
-HUGE_VALF
, o
-HUGE_VALL
es devuelto.
Manejo de errores
Los errores se reportan como se especifica en
math_errhandling
.
Error de dominio ocurre si arg es menor que cero.
Puede ocurrir un error de polo si arg es cero.
Si la implementación soporta aritmética de punto flotante IEEE (IEC 60559),
- Si el argumento es ±0, se devuelve -∞ y FE_DIVBYZERO se activa.
- Si el argumento es 1, se devuelve +0
- Si el argumento es negativo, se devuelve NaN y FE_INVALID se activa.
- Si el argumento es +∞, se devuelve +∞
- Si el argumento es NaN, se devuelve NaN.
Ejemplo
#include <errno.h> #include <fenv.h> #include <float.h> #include <math.h> #include <stdio.h> // #pragma STDC FENV_ACCESS ON int main(void) { printf("log(1) = %f\n", log(1)); printf("base-5 logarithm of 125 = %f\n", log(125) / log(5)); // special values printf("log(1) = %f\n", log(1)); printf("log(+Inf) = %f\n", log(INFINITY)); // error handling errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("log(0) = %f\n", log(0)); if (errno == ERANGE) perror(" errno == ERANGE"); if (fetestexcept(FE_DIVBYZERO)) puts(" FE_DIVBYZERO raised"); }
Salida:
log(1) = 0.000000
base-5 logarithm of 125 = 3.000000
log(1) = 0.000000
log(+Inf) = inf
log(0) = -inf
errno == ERANGE: Numerical result out of range
FE_DIVBYZERO raised
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 7.12.6.7 Las funciones log (p: TBD)
-
- 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: TBD)
-
- F.10.3.7 Las funciones log (p: TBD)
- Estándar C17 (ISO/IEC 9899:2018):
-
- 7.12.6.7 Las funciones log (p: 178-179)
-
- 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: 272-273)
-
- F.10.3.7 Las funciones log (p: 380)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.12.6.7 Las funciones log (p: 244-245)
-
- 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: 373-375)
-
- F.10.3.7 Las funciones log (p: 522)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 7.12.6.7 Las funciones log (p: 225)
-
- 7.22 Matemáticas genéricas de tipo <tgmath.h> (p: 335-337)
-
- F.9.3.7 Las funciones log (p: 459)
- Estándar C89/C90 (ISO/IEC 9899:1990):
-
- 4.5.4.4 La función log
Véase también
|
(C99)
(C99)
|
calcula el logaritmo común (base-
10
) (
log
10
(x)
)
(función) |
|
(C99)
(C99)
(C99)
|
calcula el logaritmo base-2 (
log
2
(x)
)
(función) |
|
(C99)
(C99)
(C99)
|
calcula el logaritmo natural (base-
e
) de 1 más el número dado (
ln(1+x)
)
(función) |
|
(C99)
(C99)
|
calcula
e
elevado a la potencia dada (
e
x
)
(función) |
|
(C99)
(C99)
(C99)
|
calcula el logaritmo natural complejo
(función) |
|
Documentación de C++
para
log
|
|