diff --git a/gtsam/linear/JacobianFactor.cpp b/gtsam/linear/JacobianFactor.cpp index 56a5dc085..5cc626ffc 100644 --- a/gtsam/linear/JacobianFactor.cpp +++ b/gtsam/linear/JacobianFactor.cpp @@ -115,7 +115,7 @@ JacobianFactor::JacobianFactor(const HessianFactor& factor) : boost::tie(maxrank, success) = choleskyCareful(Ab_.matrix()); // Check for indefinite system - if (!success) + if (!success and maxrank < factor.rows() - 1) throw IndeterminantLinearSystemException(factor.keys().front()); // Zero out lower triangle diff --git a/gtsam_unstable/linear/tests/testQPSolver.cpp b/gtsam_unstable/linear/tests/testQPSolver.cpp index a5dde9951..2292c63d7 100644 --- a/gtsam_unstable/linear/tests/testQPSolver.cpp +++ b/gtsam_unstable/linear/tests/testQPSolver.cpp @@ -322,7 +322,7 @@ TEST(QPSolver, HS268) { // This test needs an extra order of magnitude of tolera CHECK(assert_equal(5.73107049e-07,error_actual, 1e-6)) } -TEST_DISABLED(QPSolver, QPTEST) { // REQUIRES Jacobian Fix +TEST(QPSolver, QPTEST) { // REQUIRES Jacobian Fix QP problem = QPSParser("QPTEST.QPS").Parse(); VectorValues actualSolution; boost::tie(actualSolution, boost::tuples::ignore) = QPSolver(problem).optimize();