R: Logarithms and Exponentials

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| << 1 (and less accurately when x is approximately -1).

`exp` computes the exponential function.

`expm1(x)` computes exp(x) - 1 accurately also for |x| << 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 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.

### Value

A vector of the same length as `x` containing the transformed values. `log(0)` gives `-Inf`, and negative values give `NaN`.

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

### Note

`log` and `logb` are the same thing in R, but `logb` is preferred if `base` is specified, for S-PLUS compatibility.

### Source

`log1p` and `expm1` may be taken from the operating system, but if not available there 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

    log(exp(3))
    log10(1e7)# = 7

    x <- 10^-(1+2*1:9)
    cbind(x, log(1+x), log1p(x), exp(x)-1, expm1(x))

[Package base version 2.8.1 Index]