`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| \ll 1\).

`exp`

computes the exponential function.

`expm1(x)`

computes \(\exp(x) - 1\) accurately also for
\(|x| \ll 1\).

```
log(x, base = exp(1))
logb(x, base = exp(1))
log10(x)
log2(x)
```log1p(x)

exp(x)
expm1(x)

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)`

.

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]\): which end of the range is used might be platform-specific.

`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.

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.

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`

.)

`Trig`

,
`sqrt`

,
`Arithmetic`

.

```
# NOT RUN {
log(exp(3))
log10(1e7) # = 7
x <- 10^-(1+2*1:9)
cbind(x, log(1+x), log1p(x), exp(x)-1, expm1(x))
# }
```

Run the code above in your browser using DataLab