[Rcpp-devel] Incorrect result of NA_REAL and NA_INTEGER

Akhila Chowdary Kolla akhilakollasrinu424jf at gmail.com
Fri Sep 4 20:24:54 CEST 2020

Hello Everyone,

I am trying to use NA_REAL, NA_INTEGER, and R_NaN in my CPP code(doesn't
use R main). When I compile and run my code,* NA_REAL* it gives the value
as *nan* and *NA_INTEGER* gives the value as *-2147483648, and R_NaN as 0*.

I used the following code(from Rcpp FAQ):
Rcpp::IntegerVector Missing_I() {
  Rcpp::IntegerVector v(1);
  v[0] = NA_INTEGER; // NA
  return v;
Rcpp::NumericVector Missing_N() {
  Rcpp::NumericVector v(4);
  v[0] = R_NegInf; // -Inf
  v[1] = NA_REAL; // NA
  v[2] = R_PosInf; // Inf
  v[3] = R_NaN; // nan
  return v;

When I compile the functions using sourceCpp() I get the output as expected:
> sourceCpp("~/R/RcppDeepState/inst/extdata/filesave.cpp")
> Missing_I()
[1] NA
> Missing_N()
[1] -Inf   NA  Inf  NaN

But when I compile the code using the TestHarness it gives me the following
missing_n values: -inf nan inf 0
missing_i values: -2147483648

I saved the above functions(Missing_I, Missing_N) in a header file and made
a call to those functions from the testharness:

Rcpp::IntegerVector missing_i = Missing_I();
std::cout <<"missing_i values: "<< missing_i << std::endl;
Rcpp::NumericVector missing_n = Missing_N();
std::cout <<"missing_n values: "<< missing_n << std::endl;

How can I get the results as expected? Any help is appreciated.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20200904/f3b7c88e/attachment.html>

More information about the Rcpp-devel mailing list