Note that the R function rpois() always returns an integer vector and thus commonly runs into problems when lambda is near or above 2^31 (the smallest positive integral double that cannot represented as a 32-bit signed integer).
> set.seed(1) > rpois(10, 2^31) [1] 2147454617 NA NA NA 2147412285 NA NA [8] NA 2147469496 2147446621 Warning message: In rpois(10, 2^31) : NAs produced > storage.mode(.Last.value) [1] "integer" Bill Dunlap TIBCO Software wdunlap tibco.com On Sat, Apr 25, 2015 at 9:33 AM, Michael Weylandt < michael.weyla...@gmail.com> wrote: > > On Apr 24, 2015, at 23:58, Christian Gunning <x...@unm.edu> wrote: > > Quick question, mainly out of curiousity. I get that Rcpp uses the R api > on the backend, and in the R api, R::rpois returns a double (and > Rcpp::rpois returns NumericVector). The R C code doesn't offer much in the > way of explanation of why double is returned, but always returns a floor() ( > https://svn.r-project.org/R/trunk/src/nmath/rpois.c). > > It seems to me that, in this case, upstream could (should?) cast to int. > Since it doesn't, downstream users like Rcpp and me must choose whether to > follow upstream convention or to cast. In this case, is the "best > practice" to cast-to-int right away, or to follow along and just use > doubles for everything? > > I've run into this recently with other RNG code that returns doubles for > everything, and I'm wondering if there's an obvious tradeoff that I'm > missing, like speed versus type-correctness? If anyone has any insights, > I'd love to hear them. > > > The set of integers exactly representable by a double is a superset of > those which can represented by a 32bit int. > > http://stackoverflow.com/questions/759201/representing-integers-in-doubles > > _______________________________________________ > Rcpp-devel mailing list > Rcpp-devel@lists.r-forge.r-project.org > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel >
_______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel