LOG(3) | Library Functions Manual | LOG(3) |
log
, log2
,
log10
, log1p
, —
logarithm functions
#include
<math.h>
double
log
(double
x);
long double
logl
(long
double x);
float
logf
(float
x);
double
log2
(double
x);
long double
log2l
(long
double x);
float
log2f
(float
x);
double
log10
(double
x);
long double
log10l
(long
double x);
float
log10f
(float
x);
double
log1p
(double
x);
long double
log1pl
(long
double x);
float
log1pf
(float
x);
The
log
()
function computes the value of the natural logarithm of argument
x.
The
log2
()
function computes the value of the logarithm of argument
x to base 2.
The
log10
()
function computes the value of the logarithm of argument
x to base 10.
If x is nearly zero, then the
common expression
log
(1
+ x) will not be able to produce accurate results, as most (or all) of
the information in x will be lost by addition.
Instead, use log1p
(x) to
perform the same computation without undue loss of accuracy. If you find
yourself using this function, you are likely to also be interested in the
expm1
()
function.
log
(±0),
log2
(±0), and
log10
(±0) return
-infinity and raise the "divide-by-zero" floating-point
exception.
log
(1),
log2
(1), and
log10
(1) return +0.
log
(x),
log2
(x), and
log10
(x) return a NaN and
raise the "invalid" floating-point exception for x < 0.
log
(+infinity),
log2
(+infinity), and
log10
(+infinity) return
+infinity.
log1p
(±0)
returns ±0.
log1p
(-1)
returns -infinity and raises the "divide-by-zero" floating-point
exception.
log1p
(x)
returns a NaN and raises the "invalid" floating-point exception
for x < -1.
log1p
(+infinity)
returns +infinity.
If you need to apply the log
() functions
to SIMD vectors or arrays, using the following functions provided by the
Accelerate.framework may give significantly better performance:
#include
<Accelerate/Accelerate.h>
vFloat
vlogf
(vFloat
x);
vFloat
vlog1pf
(vFloat
x);
vFloat
vlog10f
(vFloat
x);
void
vvlogf
(float
*y, const float *x, const int
*n);
void
vvlog
(double
*y, const double *x, const int
*n);
void
vvlog1pf
(float
*y, const float *x, const int
*n);
void
vvlog1p
(double
*y, const double *x, const int
*n);
void
vvlog10f
(float
*y, const float *x, const int
*n);
void
vvlog10
(double
*y, const double *x, const int
*n);
void
vvlog2f
(float
*y, const float *x, const int
*n);
void
vvlog2
(double
*y, const double *x, const int
*n);
The log
(), log2
(),
log10,
() and log1p
()
functions conform to ISO/IEC 9899:2011.
August 16, 2012 | BSD 4 |