Use selfAdjoingView<Upper> in InvertPSDMatrix.
This restores some sensitive numerical tests.
Change-Id: I7e6fc0236e810b1c112af75067957740c40c8f36
diff --git a/internal/ceres/invert_psd_matrix.h b/internal/ceres/invert_psd_matrix.h
index 60f6a57..bbf52fe 100644
--- a/internal/ceres/invert_psd_matrix.h
+++ b/internal/ceres/invert_psd_matrix.h
@@ -61,9 +61,10 @@
// https://eigen.tuxfamily.org/dox/group__TutorialLinearAlgebra.html#title3
if (assume_full_rank) {
if (kSize > 0 && kSize < 5) {
- return m.inverse();
+ return m.inverse();
}
- return m.llt().solve(MType::Identity(size, size));
+ return m.template selfadjointView<Eigen::Upper>().llt().solve(
+ MType::Identity(size, size));
}
Eigen::JacobiSVD<MType> svd(m, Eigen::ComputeThinU | Eigen::ComputeThinV);