From e46e9d67c56a99e196de79853bde6b5f29c63a02 Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Tue, 31 Dec 2024 00:20:09 -0500 Subject: [PATCH] use DiscreteTableConditional in EliminateDiscrete --- gtsam/discrete/DiscreteFactorGraph.cpp | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/gtsam/discrete/DiscreteFactorGraph.cpp b/gtsam/discrete/DiscreteFactorGraph.cpp index 68892b1a4..3fcdf7bc6 100644 --- a/gtsam/discrete/DiscreteFactorGraph.cpp +++ b/gtsam/discrete/DiscreteFactorGraph.cpp @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -70,8 +71,7 @@ namespace gtsam { if (factor) { if (auto f = std::dynamic_pointer_cast(factor)) { result = result * (*f); - } - else if (auto dtf = + } else if (auto dtf = std::dynamic_pointer_cast(factor)) { result = TableFactor(result * (*dtf)); } @@ -253,18 +253,13 @@ namespace gtsam { sum->keys().end()); // now divide product/sum to get conditional -#if GTSAM_HYBRID_TIMING - gttic_(EliminateDiscreteDivide); -#endif - auto c = product / (*sum); -#if GTSAM_HYBRID_TIMING - gttoc_(EliminateDiscreteDivide); -#endif #if GTSAM_HYBRID_TIMING gttic_(EliminateDiscreteToDiscreteConditional); #endif - auto conditional = std::make_shared( - orderedKeys.size(), c.toDecisionTreeFactor()); + // auto conditional = std::make_shared( + // orderedKeys.size(), (product / (*sum)).toDecisionTreeFactor()); + auto conditional = + std::make_shared(product, *sum, orderedKeys); #if GTSAM_HYBRID_TIMING gttoc_(EliminateDiscreteToDiscreteConditional); #endif