As I was updating one of my packages (lamW), CRAN's reverse dependency
tests caught an error of my own making. For consistency, I was trying
to remove calls to std::numeric_limits and replace them with R magic
words (like R_NaN instead of
std::numeric_limits<double>::quiet_NaN()).

One of the changes I made was in a test for PosInf FROM:

if (x == std::numeric_limits<double>::infinity()) {
  result = std::numeric_limits<double>::infinity();
}

TO

if (Rcpp::traits::is_infinite<REALSXP>(x)) {
 result = R_PosInf;
}

The error, of course, is that NegInf is infinite too. My most
immediate question is which is preferable (speed, efficiency,
consistency, etc.). To revert back to checking equality using
std::numeric_limits or to use a compound if
(Rcpp::traits::is_infinite<REALSXP>(x) && x > 0.0)?

More generally, would it be of values to have sugar functions for
checking for PosInf vs. NegInf, or would that end up being a call to
std::numeric_limits anyway?

As always, thanks to Dirk, Romain, JJ, Kevin, and everyone!

Thank you,

Avi
_______________________________________________
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

Reply via email to