[ RDocumentation ](/)

Moon  [ ](https://github.com/datacamp/rdocumentation-2.0) [ Learn R
](https://www.datacamp.com/learn/r)

Search all packages and functions

[ base  (version  3.6.2  ) ](/packages/base/versions/3.6.2)

#  log: 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 \\(e\\)= ` exp(1) ` .

##  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
](/link/Math?package=base&version=3.6.2&to=%3DS4groupGeneric) ` 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.

##  Details

All except ` logb ` are generic functions: methods can be defined for them
individually or via the ` [ Math
](/link/Math?package=base&version=3.6.2&to=%3DS3groupGeneric) ` 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
](/link/primitive?package=base&version=3.6.2) functions.

##  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 ](/link/Trig?package=base&version=3.6.2) ` , ` [ sqrt
](/link/sqrt?package=base&version=3.6.2) ` , ` [ Arithmetic
](/link/Arithmetic?package=base&version=3.6.2) ` .

##  Examples

[ Run this code
](https://app.datacamp.com/workspace/preview?_tag=rdocs&rdocsPath=packages%2Fbase%2Fversions%2F3.6.2%2Ftopics%2Flog&utm_source=r-docs&utm_medium=docs&utm_term=log&utm_content=run_example_in_workspace)

    
    
    # 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  [ DataCamp Workspace
](https://app.datacamp.com/workspace/preview?_tag=rdocs&rdocsPath=packages%2Fbase%2Fversions%2F3.6.2%2Ftopics%2Flog&utm_source=r-docs&utm_medium=docs&utm_term=log&utm_content=run_example_in_workspace)

Powered by  [ DataCamp ](https://www.datacamp.com/)