0

我想在 Rcpp 中使用 boost/multiprecision。因此,我环顾四周,发现了有关 boost: onetwo的这些线程。关于四精度的第一个正是我想要使用的。问题是我无法编译给定的示例。但是,我可以从第二个线程编译示例,该线程仅使用 boost 包中的不同目录。所以我不知道出了什么问题。第一个线程的相关代码:

// [[Rcpp::depends(BH)]]
#include <Rcpp.h>
#include <boost/multiprecision/float128.hpp>
#include <boost/multiprecision/mpfr.hpp>

namespace mp = boost::multiprecision;

// [[Rcpp::export]]
std::string qexp(double da = -1500.0, double db = -1501.0)
{
    mp::float128 a(da), b(db);
    mp::float128 res = mp::exp(a) / (mp::exp(a) + mp::exp(b));
    return res.convert_to<std::string>();
}

// [[Rcpp::export]]
std::string mpfr_exp(double da = -1500.0, double db = -1501.0)
{
    mp::mpf_float_100 a(da), b(db);
    mp::mpf_float_100 res = mp::exp(a) / (mp::exp(a) + mp::exp(b));
    return res.convert_to<std::string>();
}

我得到的错误是:“.../R/win-library/3.3/BH/include/boost/multiprecision/gmp.hpp:21:17:致命错误:gmp.h:没有这样的文件或目录#include” . 但是当我浏览到:“.../R/win-library/3.3/BH/include/boost/multiprecision/”时,文件“gmp.hpp”就在那里。我已经尝试按照第一个线程中的描述运行“Sys.setenv("PKG_LIBS" = "-lmpfr -lgmp")",但没有运气。有什么建议么?万一这很重要,我正在使用Windows。

4

0 回答 0