gpt4 book ai didi

c++ - Eigen::MatrixXd 类型定义的替换

转载 作者:行者123 更新时间:2023-11-30 01:07:17 30 4
gpt4 key购买 nike

用具有 long double 的 vector 和矩阵替换所有 Eigen::MatrixXdEigen::VectorXd 的最简单方法是什么> 元素?

我代码中的每个基本浮点变量都是 long double 类型。此外,每次我使用矩阵或 vector 时,我都会使用以下类型定义。

typedef Eigen::VectorXd Vec;
typedef Eigen::MatrixXd Mat;

将这些 typedef 转换成什么最好?如果我让它们保持原样会怎样?

最佳答案

简单的根据Eigen自己的global matrix typedefs定义自己的typedefs .

如果您使用 Eigen::MatrixXd 并用 long double 类型的元素填充它,这些值将缩小以适应 double > 矩阵的元素,这会导致精度损失,或者在最坏的情况下会导致溢出错误。但是,在许多体系结构中, double 浮点运算是以 80 位扩展精度完成的,因此结果可能相同。你肯定不应该依赖这个!有关更多信息,请参见,例如 long double vs double .

#include <Eigen/Core>

typedef Eigen::Matrix< long double, Eigen::Dynamic, 1 > Vec;
typedef Eigen::Matrix< long double, Eigen::Dynamic, Eigen::Dynamic > Mat;

int main()
{
long double ld = 2;

Mat m(1,1);
m(0,0) = ld;
}

关于c++ - Eigen::MatrixXd 类型定义的替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44875345/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com