log, logf, logl, log10, log10f, log10l

Calcula logaritmos.

Sintaxis

double log(double x);
float logf(float x);
long double logl(double x);
double log10(double x);
float log10f (float x);
long double log10l(double x);
#define log(X) // Requires C11 or higher
#define log10(X) // Requires C11 or higher

float log(float x);  // C++ only
long double log(long double x);  // C++ only
float log10(float x);  // C++ only
long double log10(long double x);  // C++ only

Parámetros

x
Valor cuyo logaritmo hay que calcular.

Valor devuelto

Si se realiza correctamente, las funciones log devuelven el logaritmo natural (base e) de x. Las funciones log10 devuelven el logaritmo en base 10. Si x es negativo, estas funciones devuelven un valor indefinido (IND) de manera predeterminada. Si x es 0, devuelven infinito (INF).

Entrada Excepción SEH Excepción de _matherr
± QNaN, IND None _DOMAIN
± 0 ZERODIVIDE _SING
x < 0 INVALID _DOMAIN

log y log10 tienen una implementación que usa las Extensiones SIMD de streaming 2 (SSE2). Consulte _set_SSE2_enable para obtener información y conocer las restricciones sobre el uso de la implementación de SSE2.

Comentarios

Puesto que C++ permite las sobrecargas, es posible llamar a las sobrecargas de log y log10 que toman y devuelven los valores float o long double. En un programa de C, a menos que use la macro <tgmath.h> para llamar a esta función, log y log10 siempre toman y devuelven un valor double.

Si usa la macro <tgmath.h> log(), el tipo del argumento determina qué versión de la función se selecciona. Consulte Matemáticas de tipo genérico para obtener más información.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Requisitos

Routine Encabezado necesario
log, logf, logl, log10, log10f, log10l <math.h>
logMacro <tgmath.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

// crt_log.c
/* This program uses log and log10
* to calculate the natural logarithm and
* the base-10 logarithm of 9,000.
*/

#include <math.h>
#include <stdio.h>

int main( void )
{
   double x = 9000.0;
   double y;

   y = log( x );
   printf( "log( %.2f ) = %f\n", x, y );
   y = log10( x );
   printf( "log10( %.2f ) = %f\n", x, y );
}
log( 9000.00 ) = 9.104980
log10( 9000.00 ) = 3.954243

Para generar los logaritmos para otras bases, use la siguiente relación matemática: logaritmo base b de a == logaritmo natural (a) / logaritmo natural (b).

// logbase.cpp
#include <math.h>
#include <stdio.h>

double logbase(double a, double base)
{
   return log(a) / log(base);
}

int main()
{
   double x = 65536;
   double result;

   result = logbase(x, 2);
   printf("Log base 2 of %lf is %lf\n", x, result);
}
Log base 2 of 65536.000000 is 16.000000

Consulte también

Compatibilidad con matemáticas y punto flotante
exp, expf, expl
_matherr
pow, powf, powl
_CIlog
_CIlog10\