log                   package: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 <URL:
     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))

