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.
Syntax
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.
Return Value
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.
Remarks
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.
Requirements
Routine | Required header |
---|---|
log, logf , log10 , log10f |
<math.h> |
For additional compatibility information, see Compatibility in the Introduction.
Libraries
All versions of the C run-time libraries.
Example
// 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 );
}
Output
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);
}
Output
Log base 2 of 65536.000000 is 16.000000
.NET Framework Equivalent
See Also
Floating-Point Support
exp, expf
_matherr
pow, powf, powl
_CIlog
_CIlog10