Rev 69170 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/base/man/is.finite.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2015 R Core Team% Distributed under GPL 2 or later\name{is.finite}\title{Finite, Infinite and NaN Numbers}\alias{is.finite}\alias{is.infinite}\alias{Inf}\alias{NaN}\alias{is.nan}\alias{finite} % for when people ask what 'finite' means.\alias{infinite}\description{\code{is.finite} and \code{is.infinite} return a vector of the samelength as \code{x}, indicating which elements are finite (not infiniteand not missing) or infinite.\code{Inf} and \code{-Inf} are positive and negative infinitywhereas \code{NaN} means \sQuote{Not a Number}. (These apply to numericvalues and real and imaginary parts of complex values but not tovalues of integer vectors.) \code{Inf} and \code{NaN} are\link{reserved} words in the \R language.}\usage{is.finite(x)is.infinite(x)is.nan(x)InfNaN}\arguments{\item{x}{\R object to be tested: the default methods handle atomicvectors.}}\details{\code{is.finite} returns a vector of the same length as \code{x} thejth element of which is \code{TRUE} if \code{x[j]} is finite (i.e., itis not one of the values \code{NA}, \code{NaN}, \code{Inf} or\code{-Inf}) and \code{FALSE} otherwise. Complexnumbers are finite if both the real and imaginary parts are.\code{is.infinite} returns a vector of the same length as \code{x} thejth element of which is \code{TRUE} if \code{x[j]} is infinite (i.e.,equal to one of \code{Inf} or \code{-Inf}) and \code{FALSE}otherwise. This will be false unless \code{x} is numeric or complex.Complex numbers are infinite if either the real or the imaginary part is.\code{is.nan} tests if a numeric value is \code{NaN}. Do not testequality to \code{NaN}, or even use \code{\link{identical}}, sincesystems typically have many different NaN values. One of these isused for the numeric missing value \code{NA}, and \code{is.nan} isfalse for that value. A complex number is regarded as \code{NaN} ifeither the real or imaginary part is \code{NaN} but not \code{NA}.All elements of logical, integer and raw vectors are considered not tobe NaN.All three functions accept \code{NULL} as input and return a lengthzero result. The default methods accept character and raw vectors, andreturn \code{FALSE} for all entries. Prior to \R version 2.14.0 theyaccepted all input, returning \code{FALSE} for most non-numericvalues; cases which are not atomic vectors are now signalled aserrors.All three functions are generic: you can write methods to handlespecific classes of objects, see \link{InternalMethods}.}\note{In \R, basically all mathematical functions (including basic\code{\link{Arithmetic}}), are supposed to work properly with\code{+/- Inf} and \code{NaN} as input or output.The basic rule should be that calls and relations with \code{Inf}sreally are statements with a proper mathematical \emph{limit}.Computations involving \code{NaN} will return \code{NaN} or perhaps\code{\link{NA}}: which of those two is not guaranteed and may dependon the \R platform (since compilers may re-order computations).}\value{A logical vector of the same length as \code{x}: \code{dim},\code{dimnames} and \code{names} attributes are preserved.}\seealso{\code{\link{NA}}, \sQuote{\emph{Not Available}} which is not a numberas well, however usually used for missing values and applies to manymodes, not just numeric and complex.\code{\link{Arithmetic}}, \code{\link{double}}.}\references{The IEC 60559 standard, also known as theANSI/IEEE 754 Floating-Point Standard.\url{https://en.wikipedia.org/wiki/NaN}.D. Goldberg (1991) \emph{What Every Computer Scientist Should Knowabout Floating-Point Arithmetic} ACM Computing Surveys, \bold{23(1)}.\crPostscript version available at\url{http://www.validlab.com/goldberg/paper.ps}Extended PDF version at \url{http://www.validlab.com/goldberg/paper.pdf}The C99 function \code{isfinite} is used for \code{is.finite}.}\examples{pi / 0 ## = Inf a non-zero number divided by zero creates infinity0 / 0 ## = NaN1/0 + 1/0 # Inf1/0 - 1/0 # NaNstopifnot(1/0 == Inf,1/Inf == 0)sin(Inf)cos(Inf)tan(Inf)}\keyword{programming}\keyword{math}