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).
| Input | SEH Exception | Matherr Exception |
|---|---|---|
| ± QNAN,IND | none | _DOMAIN |
| ± 0 | ZERODIVIDE | _SING |
| x < 0 | INVALID | _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.
| Routine | Required 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