# log1mexp: Logarithms with an Unit Offset and Exponential Term

### Description

Computes `log(1 + exp(x))` and `log(1 - exp(-x))` accurately.

### Usage

 ```1 2``` ```log1mexp(x) log1pexp(x) ```

### Arguments

 `x` A vector of reals (numeric). Complex numbers not allowed since `expm1` and `log1p` do not handle these.

### Details

Computes `log(1 + exp(x))` and `log(1 - exp(-x))` accurately. An adjustment is made when x is away from 0 in value.

### Value

`log1mexp(x)` gives the value of log(1-exp(-x)).

`log1pexp(x)` gives the value of log(1+exp(x)).

### Note

If `NA` or `NaN` is present in the input, the corresponding output will be `NA`.

### Author(s)

This is a direct translation of the function in Martin Maechler's (2012) paper by Xiangjie Xue and T. W. Yee.

### References

Maechler, Martin (2012). Accurately Computing log(1-exp(-|a|)). Assessed from the Rmpfr package.

`log1p`, `expm1`, `exp`, `log`

### Examples

 ```1 2 3 4 5 6 7 8``` ```x <- c(10, 50, 100, 200, 400, 500, 800, 1000, 1e4, 1e5, 1e20, Inf, NA) log1pexp(x) log(1 + exp(x)) # Naive; suffers from overflow log1mexp(x) log(1 - exp(-x)) y <- -x log1pexp(y) log(1 + exp(y)) # Naive; suffers from inaccuracy ```

Search within the VGAM package
Search all R packages, documentation and source code

Questions? Problems? Suggestions? or email at ian@mutexlabs.com.

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.