c++ - 是否可以将 GLM 与非基本类型一起使用?
问题描述
我有一些使用 glm 进行向量和矩阵数学的函数和数据结构。
现在我想计算关于输入变量的梯度。由于计算相当复杂,我想使用自动微分来验证我的手动梯度计算。
我找到了https://autodiff.github.io/,这正是我所需要的。它的标量变量基于一个struct
包含 ashared_ptr
到一个表达式。我想使用glm::vec<2, autodiff::Variable<float>
, 和类似的矩阵,以及所有有趣的 glm 函数。
我已经开始移植代码,但我遇到了问题。例如glm::dot
包含支票
template<length_t L, typename T, qualifier Q>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR T dot(vec<L, T, Q> const& x, vec<L, T, Q> const& y)
{
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'dot' accepts only floating-point inputs");
return detail::compute_dot<vec<L, T, Q>, T, detail::is_aligned<Q>::value>::call(x, y);
}
我相信在这种情况下,将支票替换为std::numeric_limits<T>::is_iec559 || GLM_CONFIG_UNRESTRICTED_GENTYPE
(以及提出拉取请求)是安全的,但我不确定,我当然也不知道所有其他地方。
在包含 glm 之前,我已经定义了以下内容:
#define GLM_FORCE_PURE
#define GLM_FORCE_XYZW_ONLY
#define GLM_FORCE_UNRESTRICTED_GENTYPE
一起使用 glm 和 autodiff 是否现实?
解决方案
推荐阅读
- java - Linux环境下命令行运行JUnit测试
- c++ - 在 Linux 中,recv() 有效,但 recvmsg() 无效
- sas - 如何将观察的数量打印到外部文件中 - 选择在哪里应用?
- mysql - SQL 语句问题 - 如何从 2 个链接表中检索数据
- c# - 使用 NReco HTML-to-PDF C# 更改 ToC 字体系列和大小
- python - Python re.compile 针对目录中的所有文件 - 不搜索所有文件
- python - 我们可以在收到所有参数之前使用关键字参数和咖喱吗?
- python - Twilio 与 Django 的 OTP
- php - Dompdf 0.8.3 未在 PHP 7.2 和 CodeIgniter 3 中获取远程 CSS
- amazon-web-services - AWS IOT:即时配置 (JITP),支持 Thing 中的其他属性