log
Logarithms and Exponentials
log
computes logarithms, by default natural logarithms,
log10
computes common (i.e., base 10) logarithms, and
log2
computes binary (i.e., base 2) logarithms.
The general form log(x, base)
computes logarithms with base
base
.
log1p(x)
computes $log(1+x)$ accurately also for
$x << 1$.
exp
computes the exponential function.
expm1(x)
computes $exp(x)  1$ accurately also for
$x << 1$.
 Keywords
 math
Usage
log(x, base = exp(1))
logb(x, base = exp(1))
log10(x)
log2(x)
log1p(x)
exp(x)
expm1(x)
Arguments
 x
 a numeric or complex vector.
 base
 a positive or complex number: the base with respect to which
logarithms are computed. Defaults to $e$=
exp(1)
.
Details
All except logb
are generic functions: methods can be defined
for them individually or via the Math
group generic.
log10
and log2
are only convenience wrappers, but logs
to bases 10 and 2 (whether computed via log
or the wrappers)
will be computed more efficiently and accurately where supported by the OS.
Methods can be set for them individually (and otherwise methods for
log
will be used).
logb
is a wrapper for log
for compatibility with S. If
(S3 or S4) methods are set for log
they will be dispatched.
Do not set S4 methods on logb
itself.
All except log
are primitive functions.
Value

A vector of the same length as x containing the transformed
values. log(0) gives Inf, and log(x) for
negative values of x is NaN. exp(Inf) is 0.For complex inputs to the log functions, the value is a complex number
with imaginary part in the range [\pi, \pi][pi, pi]: which
end of the range is used might be platformspecific.
S4 methods
exp
, expm1
, log
, log10
, log2
and
log1p
are S4 generic and are members of the
Math
group generic. Note that this means that the S4 generic for log
has a
signature with only one argument, x
, but that base
can
be passed to methods (but will not be used for method selection). On
the other hand, if you only set a method for the Math
group
generic then base
argument of log
will be ignored for
your class.
Source
log1p
and expm1
may be taken from the operating system,
but if not available there then they are based on the Fortran subroutine
dlnrel
by W. Fullerton of Los Alamos Scientific Laboratory (see
http://www.netlib.org/slatec/fnlib/dlnrel.f and (for small x) a
single Newton step for the solution of log1p(y) = x
respectively.
References
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
The New S Language.
Wadsworth & Brooks/Cole.
(for log
, log10
and exp
.)
Chambers, J. M. (1998)
Programming with Data. A Guide to the S Language.
Springer. (for logb
.)
See Also
Trig
,
sqrt
,
Arithmetic
.
Examples
library(base)
log(exp(3))
log10(1e7) # = 7
x < 10^(1+2*1:9)
cbind(x, log(1+x), log1p(x), exp(x)1, expm1(x))
Community examples
x1 < c(1.1, 2.3, 2.5, 0.5, 3.2, 4, 5.2, 2.2, 2.2, 3) y3 < log2(x1) y3