diff --git a/gtsam/geometry/FundamentalMatrix.cpp b/gtsam/geometry/FundamentalMatrix.cpp index 5c5e027155..683e3d78f3 100644 --- a/gtsam/geometry/FundamentalMatrix.cpp +++ b/gtsam/geometry/FundamentalMatrix.cpp @@ -9,10 +9,6 @@ #include #include -#if defined(__GNUC__) && !defined(__clang__) -#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" -#endif - namespace gtsam { //************************************************************************* @@ -39,7 +35,10 @@ FundamentalMatrix::FundamentalMatrix(const Matrix3& U, double s, FundamentalMatrix::FundamentalMatrix(const Matrix3& F) { // Perform SVD - Eigen::JacobiSVD svd(F, Eigen::ComputeFullU | Eigen::ComputeFullV); + Eigen::JacobiSVD svd(F); + if (svd.info() != Eigen::ComputationInfo::Success) { + throw std::runtime_error("FundamentalMatrix::FundamentalMatrix: SVD computation failure."); + } // Extract U and V Matrix3 U = svd.matrixU(); diff --git a/gtsam/geometry/Rot2.cpp b/gtsam/geometry/Rot2.cpp index 9bf631e50e..29b1bb3ee9 100644 --- a/gtsam/geometry/Rot2.cpp +++ b/gtsam/geometry/Rot2.cpp @@ -131,7 +131,7 @@ Rot2 Rot2::relativeBearing(const Point2& d, OptionalJacobian<1, 2> H) { /* ************************************************************************* */ Rot2 Rot2::ClosestTo(const Matrix2& M) { - Eigen::JacobiSVD svd(M, Eigen::ComputeFullU | Eigen::ComputeFullV); + Eigen::JacobiSVD svd(M); const Matrix2& U = svd.matrixU(); const Matrix2& V = svd.matrixV(); const double det = (U * V.transpose()).determinant(); diff --git a/gtsam/geometry/SO3.cpp b/gtsam/geometry/SO3.cpp index a1947953ba..428a016970 100644 --- a/gtsam/geometry/SO3.cpp +++ b/gtsam/geometry/SO3.cpp @@ -200,7 +200,7 @@ SO3 SO3::AxisAngle(const Vector3& axis, double theta) { template <> GTSAM_EXPORT SO3 SO3::ClosestTo(const Matrix3& M) { - Eigen::JacobiSVD svd(M, Eigen::ComputeFullU | Eigen::ComputeFullV); + Eigen::JacobiSVD svd(M); const auto& U = svd.matrixU(); const auto& V = svd.matrixV(); const double det = (U * V.transpose()).determinant();