全部更换最简单的方法是什么Eigen::MatrixXd
s and Eigen::VectorXd
具有向量和矩阵long double
元素?
我的代码中的每个基本浮点变量都是类型long double
。另外,每次使用矩阵或向量时,我都会使用以下类型定义。
typedef Eigen::VectorXd Vec;
typedef Eigen::MatrixXd Mat;
将这些 typedef 切换到什么最好?如果我让它们保持原样会发生什么?
只需根据 Eigen 自己的 typedef 定义您自己的 typedef全局矩阵类型定义 https://eigen.tuxfamily.org/dox/group__matrixtypedefs.html.
如果你使用Eigen::MatrixXd
并用类型元素填充它long double
,这些值将被缩小以适应double
矩阵的元素,这会导致精度损失,或者在最坏的情况下导致溢出错误。然而,在许多体系结构上,双精度浮点运算是以 80 位扩展精度完成的,因此结果可能是相同的。你绝对不应该依赖这个!有关更多信息,请参阅,例如长双 vs 双 https://stackoverflow.com/questions/3454576.
#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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)