log {base} | R Documentation |

## Logarithms and Exponentials

### Description

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

.

### 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 |

### 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]`

: which
end of the range is used might be platform-specific.

### 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
https://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

```
log(exp(3))
log10(1e7) # = 7
x <- 10^-(1+2*1:9)
cbind(deparse.level=2, # to get nice column names
x, log(1+x), log1p(x), exp(x)-1, expm1(x))
```

*base*version 4.4.1 Index]