simplify multiplication

release/4.3a0
Varun Agrawal 2025-01-07 14:55:30 -05:00
parent 9dfdf552e1
commit 9c2ecc3c15
2 changed files with 3 additions and 14 deletions

View File

@ -19,6 +19,7 @@
#include <gtsam/discrete/DiscreteBayesNet.h>
#include <gtsam/discrete/DiscreteConditional.h>
#include <gtsam/discrete/DiscreteFactorGraph.h>
#include <gtsam/discrete/TableDistribution.h>
#include <gtsam/hybrid/HybridBayesNet.h>
#include <gtsam/hybrid/HybridValues.h>
@ -52,13 +53,7 @@ HybridBayesNet HybridBayesNet::prune(size_t maxNrLeaves) const {
// Multiply into one big conditional. NOTE: possibly quite expensive.
DiscreteConditional joint;
for (auto &&conditional : marginal) {
// The last discrete conditional may be a TableDistribution
if (auto dtc = std::dynamic_pointer_cast<TableDistribution>(conditional)) {
DiscreteConditional dc(dtc->nrFrontals(), dtc->toDecisionTreeFactor());
joint = joint * dc;
} else {
joint = joint * (*conditional);
}
joint = joint * (*conditional);
}
// Create the result starting with the pruned joint.

View File

@ -451,13 +451,7 @@ TEST(HybridBayesNet, UpdateDiscreteConditionals) {
DiscreteConditional joint;
for (auto&& conditional : posterior->discreteMarginal()) {
// The last discrete conditional may be a TableDistribution
if (auto dtc = std::dynamic_pointer_cast<TableDistribution>(conditional)) {
DiscreteConditional dc(dtc->nrFrontals(), dtc->toDecisionTreeFactor());
joint = joint * dc;
} else {
joint = joint * (*conditional);
}
joint = joint * (*conditional);
}
size_t maxNrLeaves = 3;