4
我在使用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;
的問題是,當我打印殘差的總和:
cout << residuals.sum();
// output = 6.16951e-06
我得到不同的值,通過執行相同的操作使用R和相同的輸入矩陣。
通過使用R矩陣我得到-2.950208e-09
。儘管A
,B
和W
的元素總和在C++
和R
中都是相同的。
不幸的是,使用long double會得到相同的結果。如何檢查我的編譯器是否針對x87 FPU單元? – Nick
然後請更具體地說明A和B的實際值,以便我們可以重現。 – ggael