Rcpp 和 boost:它应该可以工作,但不能

2024-04-07

我对在以下位置找到的有趣帖子有疑问:

具有四精度计算的 Rcpp https://stackoverflow.com/questions/42262963/rcpp-with-quad-precision-computation

I use:

// [[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>();
// }

如果我理解正确的话,我不需要添加:

Sys.setenv("PKG_LIBS" = "-lmpfr -lgmp")

因为我只想使用 float128。当我编译时:

Rcpp::sourceCpp('/tmp/quadexp.cpp')

我收到一条错误消息:

c:/Rtools/mingw_64/bin/g++ -m64 -I"C:/PROGRA~1/MICROS~4/ROPEN~1/R-35~1.1/include" -DNDEBUG   -I"C:/Users/Jordi/Documents/R/win-library/3.5/Rcpp/include" -I"C:/Users/Jordi/Documents/R/win-library/3.5/BH/include" -I"C:/Users/Jordi/Documents"   -I"C:/swarm/workspace/External-R-3.5.1/vendor/extsoft/include"     -O2 -Wall  -mtune=core2 -c quadexp.cpp -o quadexp.o
c:/Rtools/mingw_64/bin/g++ -m64 -shared -s -static-libgcc -o sourceCpp_3.dll tmp.def quadexp.o -LC:/swarm/workspace/External-R-3.5.1/vendor/extsoft/lib/x64 -LC:/swarm/workspace/External-R-3.5.1/vendor/extsoft/lib -LC:/PROGRA~1/MICROS~4/ROPEN~1/R-35~1.1/bin/x64 -lR
quadexp.o:quadexp.cpp:(.text+0x1c9): undefined reference to `expq'
quadexp.o:quadexp.cpp:(.text+0x1df): undefined reference to `expq'
quadexp.o:quadexp.cpp:(.text+0x213): undefined reference to `expq'
quadexp.o:quadexp.cpp:(.text+0x2cc): undefined reference to `quadmath_snprintf'
quadexp.o:quadexp.cpp:(.text+0x30f): undefined reference to `quadmath_snprintf'
collect2.exe: error: ld returned 1 exit status
Error in Rcpp::sourceCpp("C:/Users/Jordi/Documents/quadexp.cpp") : 
  Error occurred building shared library.

我究竟做错了什么?先感谢您。


在 Linux 上“按原样”工作无需设置环境变量(取模一个充满警告的页面-pedantic我现在关闭了标志):

R> Rcpp::sourceCpp("/tmp/52876341/q.cpp")
[1] "0.731058578630004879251159241821836351"
R> qexp()
[1] "0.731058578630004879251159241821836351"
R>

您可能需要获取 Quadmath 库。不确定 Rtools g++ 是否有它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rcpp 和 boost:它应该可以工作,但不能 的相关文章

随机推荐

  • 使用 angularjs 在本地驱动器中上传文件

    我是 angularjs 的初学者 我读了很多关于文件上传等的内容 但找不到我将进一步描述的此案例的任何主题 我想在下面的代码中通过按钮 带有搜索名称 来选择一个文件 然后 当我们单击第二个按钮 带有上传名称 时 我选择在我制作的本地驱动器
  • 根据选择的选项更新输入值

    我正在尝试找出更新某些内容的最佳方法input值取决于从中选择的选项select 这是我想要实现的目标 我有一个显示域名详细信息的页面 我有一个表格input and select这允许更改价格 这input包含当前域名价格并允许用户输入新
  • Python 中的就地快速排序

    我必须用我选择的语言来实现作业的快速排序算法 所以我选择了 Python 在讲座中 我们被告知 QuickSort 内存效率高 因为它就地工作 即 它没有用于递归的输入数组部分的额外副本 考虑到这一点 我尝试在 Python 中实现 Qui
  • 使用 jquery 获取元素的可见高度而不是其实际高度

    这篇文章是相关的this one https stackoverflow com questions 14125303 change target of a link based on what is currently displayed
  • 无法在新 Mac 上打开 Xcode 项目

    我想我在这里犯了一个错误 几个月前我设计了一个应用程序 甚至在应用程序商店中找到了它 从那时起我就买了一台新的Mac 我将 Xcode 项目文件复制到我的新 Mac 上 我几个月来第一次回来看它 但什么也没有打开 我有时会收到无法解析的警告
  • 使用 JavaScript 更改 IE 中的 类型

    下面的代码适用于除 IE 之外的所有网络浏览器
  • 解决 Kotlin MPP 中的第三方 cocoapod 依赖关系

    我正在尝试设置一个用 Kotlin Multiplatform 编写的跟踪库来支持我们所有的移动客户端 Android 测试进展顺利 通过 gradle 集成 Snowplow 我还设法通过 cocoapods 将 Snowplow 集成到
  • java 负向前瞻

    我需要一个表达式来捕获这样的字符串 A 不是至少 5 且最多 6 位数字的字符串 B 换句话说 捕获不是以下内容的任何内容 A 0 9 0 9 0 9 0 9 0 9 B A 0 9 0 9 0 9 0 9 0 9 0 9 B 我尝试过消极
  • 如何检查libc++是否安装?

    我正在从源头构建一些东西 我的系统的 gcc 和 stdlibc 太旧了 但是我可以使用 clang 构建 默认情况下 clang 使用 stdlibc 但可以选择安装 libc 以供 clang 使用 检查 libc 是否与 clang
  • 调用未定义的函数 apache_request_headers()

    我刚刚将脚本切换到不同的服务器 在以前的服务器上 这工作得很好 现在我已经将它们切换到不同的服务器 我无法理解这个问题 我不确定这会有帮助 但这是相关的代码 headers apache request headers PHP版本是 PHP
  • 如何将SQL用户自定义函数添加到实体框架中?

    我可以像在 dbml 中那样向 edmx 文件添加 SQL 函数吗 如果可以的话 我该怎么做 如果我不能 有什么解决方法吗 我尝试谷歌 但找不到任何关于如何做到这一点的具体答案 根据给定的答案 我创建了一个存储过程并尝试添加 导入函数 但它
  • java 7 接口中默认方法的替代方案(仅在 Java 8 中)

    我想在我的一个接口类中使用默认方法 然后我意识到这仅在 Java 8 中可用 而我们正在使用 Java 7 在 Java 7 中实现类似的最佳方法是什么 将方法签名放在接口中 就像 Java 8 中一样 将您的方法默认实现放在实现该接口的抽
  • 无法通过代理建立隧道。代理通过 https 返回“HTTP/1.1 407”

    我尝试通过需要身份验证的 https 连接到服务器 此外 我中间有一个也需要身份验证的 http 代理 我使用 ProxyAuthSecurityHandler 向代理进行身份验证 使用 BasicAuthSecurityHandler 向
  • Rails 资源未更新

    我有一个 Rails 3 1 应用程序 由于某种原因 当我更改 CSS 时 更改不会显示 我做到了bundle exec rake assets precompile它曾经有帮助 但现在无论如何我都坚持使用旧的CSS 由于您的资产现已预编译
  • 如何使用 Window() 计算 PySpark 中的滚动中位数?

    如何计算前 3 个值的窗口大小的美元滚动中位数 输入数据 dollars timestampGMT 25 2017 03 18 11 27 18 17 2017 03 18 11 27 19 13 2017 03 18 11 27 20 2
  • “rails server”命令在终端中不起作用

    我对 Rails 还很陌生 正在尝试设置一个非常简单的测试站点 我使用以下命令创建了新的 Rails 应用程序目录rails new命令 但无法设置服务器以在浏览器中查看页面 以下是我尝试时收到的消息rails server MacBook
  • PyCryptodome 错误:MAC 检查失败

    我正在 Python 3 中使用 Pycryptodome 开发一个加密程序 我试图加密一个 字节 字符串 然后解密它并验证 MAC 标签 当我验证它时 会抛出错误 这是代码 from Crypto Cipher import AES fr
  • boost :仅迭代 ptree 的元素

    这应该很简单 我只是在学习提升 所以我错过了一些东西 我已经使用 json read 读取了一些简单的 JSON 现在有了一个 ptree 网络上的所有示例都显示使用 ptree get entry name 来获取条目 我想做的就是 pt
  • 在 AngularJS 中加载图像目录

    我正在尝试在我的 Angular 应用程序中实现一个图片库 我已经在这篇文章中管理了图片的上传 文件上传 如果目录不存在则创建 https stackoverflow com questions 30150646 file upload c
  • Rcpp 和 boost:它应该可以工作,但不能

    我对在以下位置找到的有趣帖子有疑问 具有四精度计算的 Rcpp https stackoverflow com questions 42262963 rcpp with quad precision computation I use Rc