From: Robin Hankin <r.hankin_at_soc.soton.ac.uk>

Date: Tue 08 Mar 2005 - 20:03:43 EST

}

(4) use identical(all.equal(b,as.integer(0)),TRUE)

Date: Tue 08 Mar 2005 - 20:03:43 EST

hi

Note that on almost all implementations of R the range of representable integers is restricted to about +/-2*10^9: 'double's can hold much larger integers exactly.

I am getting very confused as to when to use integers and when not to.
In my line

I need exact comparisons of large integer-valued arrays, so I often use
as.integer(),

but the above seems to tell me that doubles might be better.

Consider the following R idiom of Euclid's algorithm for the highest
common factor

of two positive integers:

gcd <- function(a, b){

if (b == 0){ return(a)} return(Recall(b, a%%b))

}

If I call this with gcd(10,12), for example, then a%%b is not an
integer, so the first

line of the function, testing b for being zero, isn't legitimate.

OK, so I have some options:

(1) stick in "a <- as.integer(a), b <- as.integer(b)" into the

function: then a%%b *will* be an

integer and the "==" test is appropriate(3) use identical(all.equal(b,0),TRUE) like it says in identical.Rd

(2) use some test like abs(b) < TOL for some suitable TOL (0.5?)

(4) use identical(all.equal(b,as.integer(0)),TRUE)

How does the List deal with this kind of problem?

Also, gcd() as written returns a non-integer. Would the List recommend
rewriting the last

line as

return(as.integer(Recall(b,a%%b)))

or not?

-- Robin Hankin Uncertainty Analyst Southampton Oceanography Centre European Way, Southampton SO14 3ZH, UK tel 023-8059-7743 ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.htmlReceived on Tue Mar 08 20:09:28 2005

*
This archive was generated by hypermail 2.1.8
: Fri 03 Mar 2006 - 03:30:41 EST
*