We recommend using Visual Studio 2017

log, logf, log10, log10f

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at log, logf, log10, log10f.

Calculates logarithms.

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

Parameters

x
Value whose logarithm is to be found.

The log functions return the natural logarithm (base e) of x if successful. The log10 functions return the base-10 logarithm. If x is negative, these functions return an indefinite, by default. If x is 0, they return INF (infinite).

InputSEH ExceptionMatherr Exception
± QNAN,INDnone_DOMAIN
± 0ZERODIVIDE_SING
x < 0INVALID_DOMAIN

log and log10 has an implementation that uses Streaming SIMD Extensions 2 (SSE2). See _set_SSE2_enable for information and restrictions on using the SSE2 implementation.

C++ allows overloading, so you can call overloads of log and log10. In a C program, log and log10 always take and return a double.

RoutineRequired header
log, logf, log10, log10f<math.h>

For additional compatibility information, see Compatibility in the Introduction.

All versions of the C run-time libraries.

// 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  

To generate logarithms for other bases, use the mathematical relation: log base b of a == natural log (a) / natural log (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  

Floating-Point Support
exp, expf
_matherr
pow, powf, powl
_CIlog
_CIlog10

Show: