is.finite                package:base                R Documentation

Finite, Infinite and NaN Numbers

Description:

     'is.finite' and 'is.infinite' return a vector of the same length
     as 'x', indicating which elements are finite (not infinite and not
     missing).

     'Inf' and '-Inf' are positive and negative "infinity" whereas
     'NaN' means "Not a Number".

Usage:

     is.finite(x)
     is.infinite(x)
     Inf
     NaN
     is.nan(x)

Arguments:

       x: (numerical) object to be tested.

Details:

     'is.finite' returns a vector of the same length as 'x' the jth
     element of which is 'TRUE' if 'x[j]' is finite (i.e., it is not
     one of the values 'NA', 'NaN', 'Inf' or '-Inf').  All elements of
     character and generic (list) vectors are false, so 'is.finite' is
     only useful for logical, integer, numeric and complex vectors. 
     Complex numbers are finite if both the real and imaginary parts
     are.

     'is.infinite' returns a vector of the same length as 'x' the jth
     element of which is 'TRUE' if 'x[j]' is infinite (i.e., equal to
     one of 'Inf' or '-Inf').

     'is.nan' tests if a numeric value is 'NaN'.  Do not test equality
     to 'NaN', or even use 'identical', since systems typically have
     many different NaN values. In most ports of R one of these is used
     for the numeric missing value 'NA'.  It is generic: you can write
     methods to handle specific classes of objects, see
     InternalMethods.

Note:

     In R, basically all mathematical functions (including basic
     'Arithmetic'), are supposed to work properly with '+/- Inf' and
     'NaN' as input or output.

     The basic rule should be that calls and relations with 'Inf's
     really are statements with a proper mathematical _limit_.

References:

     ANSI/IEEE 754 Floating-Point Standard.

     This link does not work any more (2003/12) Currently (6/2002),
     Bill Metzenthen's billm@suburbia.net tutorial and examples at 
      <URL: http://www.suburbia.net/~billm/>

See Also:

     'NA', '_Not Available_' which is not a number as well, however
     usually used for missing values and applies to many modes, not
     just numeric.

Examples:

     pi / 0 ## = Inf a non-zero number divided by zero creates infinity
     0 / 0  ## =  NaN

     1/0 + 1/0# Inf
     1/0 - 1/0# NaN

     stopifnot(
         1/0 == Inf,
         1/Inf == 0
     )
     sin(Inf)
     cos(Inf)
     tan(Inf)

