我用Rcpp编写的C++函数给出了不同的输出,具体取决于我是否在代码中有一个Rcout或者Rprintf语句.1对于带有print语句的函数,下面的代码返回,这是正确的值H_sigma_1().但是,对于H_sigma_2()没有print语句的函数,函数返回2.我在Ubuntu 16.04.1以及CentOS 6.8上测试了这个.虽然,我无法在Windows 10上重现此错误.因此,这似乎是一个Linux问题.
library(Rcpp)
cppFunction (
"double H_sigma_1(IntegerVector sigma, NumericMatrix J, NumericVector h)
{
double first_sum, second_sum = 0;
int n = sigma.size();
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
// skip inside loop if i >= j to stop double counting
if(i >= j) {continue;}
first_sum += J(i, j) * sigma[i] * sigma[j];
Rcout << first_sum …Run Code Online (Sandbox Code Playgroud)