Nic*_*ick 5 c++ precision r matrix eigen
我在使用浮点精度时遇到麻烦 Eigen。
我有两个Eigen::MatrixXd; 第一个矩阵A(nx1)仅包含正整数,而第二个矩阵B(nx1)仅包含一列并填充相同的实数(例如:-0.714312)。
我需要计算以下内容Eigen::MatrixXd:
const auto exponential = [](double x)
{ return std::exp(x); };
MatrixXd W = B.unaryExpr(exponential);
MatrixXd residuals = A - W;
Run Code Online (Sandbox Code Playgroud)
问题是当我打印残差之和时:
cout << residuals.sum();
// output = 6.16951e-06
Run Code Online (Sandbox Code Playgroud)
通过使用R和相同的输入矩阵执行相同的操作,我得到了一个不同的值。
通过使用R矩阵,我得到-2.950208e-09。同时的元素的总和A,B并且W是相同的两个中C++和在R。
R 可能使用具有扩展精度(80 位)的 x87 FPU,而 Eigen 使用 SSE 单元(64 位/双精度)。您可以通过使用Matrix<long double,Dynamic,Dynamic>矩阵类型或确保您的编译器以 x87 FPU 单元为目标来进行检查。
| 归档时间: |
|
| 查看次数: |
1442 次 |
| 最近记录: |