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 () function computes the value of the natural logarithm of argument x.

The () function computes the value of the logarithm of argument x to base 2.

The () function computes the value of the logarithm of argument x to base 10.

If x is nearly zero, then the common expression (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 () function.

log(±0), log2(±0), and log10(±0) return -infinity and raise the "divide-by-zero" floating-point exception.

(1), log2(1), and log10(1) return +0.

(x), log2(x), and log10(x) return a NaN and raise the "invalid" floating-point exception for x < 0.

(+infinity), log2(+infinity), and log10(+infinity) return +infinity.

(±0) returns ±0.

(-1) returns -infinity and raises the "divide-by-zero" floating-point exception.

(x) returns a NaN and raises the "invalid" floating-point exception for x < -1.

(+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 (vFloat x);
vFloat (vFloat x);
vFloat (vFloat x);
void (float *y, const float *x, const int *n);
void (double *y, const double *x, const int *n);
void (float *y, const float *x, const int *n);
void (double *y, const double *x, const int *n);
void (float *y, const float *x, const int *n);
void (double *y, const double *x, const int *n);
void (float *y, const float *x, const int *n);
void (double *y, const double *x, const int *n);

exp(3), pow(3), math(3)

The log(), log2(), log10,() and log1p() functions conform to ISO/IEC 9899:2011.

August 16, 2012 BSD 4