From 910f879a0b7065e307d615da96589c79a71efefa Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Thu, 30 Dec 2021 12:18:49 -0500 Subject: [PATCH] Fix compilation issues --- gtsam/linear/SubgraphPreconditioner.cpp | 2 +- gtsam/linear/SubgraphSolver.cpp | 4 ++-- tests/testSubgraphPreconditioner.cpp | 8 ++++---- tests/testSubgraphSolver.cpp | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gtsam/linear/SubgraphPreconditioner.cpp b/gtsam/linear/SubgraphPreconditioner.cpp index 3eb3f4576..6689cdbed 100644 --- a/gtsam/linear/SubgraphPreconditioner.cpp +++ b/gtsam/linear/SubgraphPreconditioner.cpp @@ -264,7 +264,7 @@ void SubgraphPreconditioner::build(const GaussianFactorGraph &gfg, const KeyInfo auto gfg_subgraph = buildFactorSubgraph(gfg, subgraph, true); /* factorize and cache BayesNet */ - Rc1_ = gfg_subgraph.eliminateSequential(); + Rc1_ = *gfg_subgraph.eliminateSequential(); } /*****************************************************************************/ diff --git a/gtsam/linear/SubgraphSolver.cpp b/gtsam/linear/SubgraphSolver.cpp index 9de630dc2..0156c717e 100644 --- a/gtsam/linear/SubgraphSolver.cpp +++ b/gtsam/linear/SubgraphSolver.cpp @@ -40,7 +40,7 @@ SubgraphSolver::SubgraphSolver(const GaussianFactorGraph &Ab, cout << "Split A into (A1) " << Ab1.size() << " and (A2) " << Ab2.size() << " factors" << endl; - auto Rc1 = Ab1.eliminateSequential(ordering, EliminateQR); + auto Rc1 = *Ab1.eliminateSequential(ordering, EliminateQR); auto xbar = Rc1.optimize(); pc_ = boost::make_shared(Ab2, Rc1, xbar); } @@ -62,7 +62,7 @@ SubgraphSolver::SubgraphSolver(const GaussianFactorGraph &Ab1, const GaussianFactorGraph &Ab2, const Parameters ¶meters, const Ordering &ordering) - : SubgraphSolver(Ab1.eliminateSequential(ordering, EliminateQR), Ab2, + : SubgraphSolver(*Ab1.eliminateSequential(ordering, EliminateQR), Ab2, parameters) {} /**************************************************************************************************/ diff --git a/tests/testSubgraphPreconditioner.cpp b/tests/testSubgraphPreconditioner.cpp index 534ef2f97..eeba38b68 100644 --- a/tests/testSubgraphPreconditioner.cpp +++ b/tests/testSubgraphPreconditioner.cpp @@ -77,7 +77,7 @@ TEST(SubgraphPreconditioner, planarGraph) { DOUBLES_EQUAL(0, error(A, xtrue), 1e-9); // check zero error for xtrue // Check that xtrue is optimal - GaussianBayesNet R1 = A.eliminateSequential(); + GaussianBayesNet R1 = *A.eliminateSequential(); VectorValues actual = R1.optimize(); EXPECT(assert_equal(xtrue, actual)); } @@ -96,7 +96,7 @@ TEST(SubgraphPreconditioner, splitOffPlanarTree) { LONGS_EQUAL(4, C.size()); // Check that the tree can be solved to give the ground xtrue - GaussianBayesNet R1 = T.eliminateSequential(); + GaussianBayesNet R1 = *T.eliminateSequential(); VectorValues xbar = R1.optimize(); EXPECT(assert_equal(xtrue, xbar)); } @@ -115,7 +115,7 @@ TEST(SubgraphPreconditioner, system) { // Eliminate the spanning tree to build a prior const Ordering ord = planarOrdering(N); - auto Rc1 = Ab1.eliminateSequential(ord); // R1*x-c1 + auto Rc1 = *Ab1.eliminateSequential(ord); // R1*x-c1 VectorValues xbar = Rc1.optimize(); // xbar = inv(R1)*c1 // Create Subgraph-preconditioned system @@ -279,7 +279,7 @@ TEST(SubgraphPreconditioner, conjugateGradients) { boost::tie(Ab1, Ab2) = splitOffPlanarTree(N, Ab); // Eliminate the spanning tree to build a prior - GaussianBayesNet Rc1 = Ab1.eliminateSequential(); // R1*x-c1 + GaussianBayesNet Rc1 = *Ab1.eliminateSequential(); // R1*x-c1 VectorValues xbar = Rc1.optimize(); // xbar = inv(R1)*c1 // Create Subgraph-preconditioned system diff --git a/tests/testSubgraphSolver.cpp b/tests/testSubgraphSolver.cpp index 336e01b9b..5d8d88775 100644 --- a/tests/testSubgraphSolver.cpp +++ b/tests/testSubgraphSolver.cpp @@ -123,7 +123,7 @@ TEST( SubgraphSolver, constructor3 ) std::tie(Ab1, Ab2) = example::splitOffPlanarTree(N, Ab); // The caller solves |A1*x-b1|^2 == |R1*x-c1|^2, where R1 is square UT - auto Rc1 = Ab1.eliminateSequential(); + auto Rc1 = *Ab1.eliminateSequential(); // The third constructor allows the caller to pass an already solved preconditioner Rc1_ // as a Bayes net, in addition to the "loop closing constraints" Ab2, as before