今天使用R进行运算时,发现小数位数较多时,计算的精度明显不符合,看如下示例:
使用矩阵和向量运算时:
test<- matrix(runif(12,0.000001,0.1111111),nrow = 4)
ttttt <- runif(3, 0.000001, 0.1111111)
test+ttttt
[,1] [,2] [,3]
[1,] 0.12989426 0.09735783 0.1353587
[2,] 0.08611409 0.11360696 0.1208149
[3,] 0.14625911 0.13526237 0.1777214
[4,] 0.03695250 0.09946161 0.1905938
使用Rcpp编写的程序运行结果:
Rcpp 代码:
//[[Rcpp::export]]
Rcpp::NumericMatrix matrixRowAddVector(Rcpp::NumericMatrix mat, Rcpp::NumericVector x) {
if (x.size() != mat.ncol()) {
Rcpp::stop("这里没有容错机制,矩阵的列的元素个数应该与向量的个数相同");
}
Rcpp::NumericMatrix result(mat.nrow(),mat.nco